微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手遇到动态数码管显示问题求解答

新手遇到动态数码管显示问题求解答

时间:10-02 整理:3721RD 点击:
                #include<reg52.h>
                        #define p0du P0        //选段口
                        #define p2we P2        //选位口       
                        void Didisplay(); //动态显示函数
                        unsigned char code we[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 位数组
                        unsigned char code du[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                                                           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //段数组
                        unsigned char display[8];
                        void main ()
                        {
                                unsigned int i;
                                for(i=0;i<8;i++)
                                        {
                                         
                                         display[i]=du[i];
                                        }
                       
                                while(1)
                                 {
                                         Didisplay();
                                 }
                       
                        }
                         
                        void Didisplay()
                        {
                                unsigned char i;
                                unsigned int j;
                                for (i=0;i<8;i++)
                                        {
                                                p2we=we[i];
                                                p0du=display[i]; //         发送段码
                                                j=10; // 扫描时间
                                                while(j--);
                                                p0du=0x00; //消影
                                        }
                                                                          
                        }

这个程序运行的过程是怎样的,,尤其帮我解释一下动态显示函数部分和while(1)中循环的部分。麻烦大家乐

为什么发了这么久。没有大神肯教一下呢

大神么。路过的。顺便帮我看看

加qq1209362668.。

自己写的

效果是延时啊!

           void main ()
                        {
                                unsigned int i;//定义两个变量
                                for(i=0;i<8;i++)//循环语句
                                        {
                                         
                                         display[i]=du[i];循环9次,依次把du[0-9]中的元素赋值给display[0-9]
                                        }
                        
                                while(1)//大循环
                                 {
                                         Didisplay(); 循环显示display[0-9]的元素
                                 }
                        
                        }

谢谢了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top