微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么让数码管 逢十进一 程序

怎么让数码管 逢十进一 程序

时间:10-02 整理:3721RD 点击:
求改正,,,
#include<reg51.h>
#define  uchar  unsigned char
#define  uint unsigned  int
uchar  code  tale[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f       
};
uchar  code  tame[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f       
};
uchar  num;
void  delayms(uint);
void  main()
{
        uint  j0,j8,j;
               
                for(j0=0;j0<10;j0++) /*定义循环次数*/
                    
                        {
                            P1=0xfe;                /*定义那位显示*/
                            P0=tale[j0];   /*定义 显示什么数字  调用函数实现*/                    
                            delayms(500); /*延时函数*/
                            ++j8;
                    
                   if(j8==10)          /*定义循环条件8*/
                   {
                       ++j;
                            P1=0xfd;                  
                                P0=tale[j];                       
                                delayms(1);                                 
                                                          
                                                       
                        }
                 
        }                 
}                         
void  delayms(uint   xsm)
        {
                uint  q,w;
                for(q=xsm;q>0;q--)
                  for(w=110;w>0;w--);
       }                              
                  

程序中做处理,判断你的段显到9 的时候,置0,并把高一位置一

你这个程序是静态数码管显示,只适合一位显示,学一下扫描显示就可以很好实现!

#include<reg51.h>
#define  uchar  unsigned char
#define  uint unsigned  int
void dispaly();
uchar  code  tale[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f        
};
uchar  num;
void  delayms(uint);
uint  j0,j8,j;
void  main()
{
        
        while(1)
                {
                  dispaly();
                }
}
void dispaly()
{
                for(j0=0;j0<=10;j0++)//j0低位计数
                {
                        for(j=0;j<20;j++)//一个状态多显示几次,维持亮度
                        {
                                P2=1;//数码管第几位数低位
                                P0=tale[j0];
                                delayms(4);
                                P0=0x00;//消残影
                                delayms(4);
                                if(j0==10)
                                {j0=0;j8++;}//逢10进1,低位清0
                                P2=0;//数码管高位
                            P0=tale[j8];
                                delayms(4);
                                P0=0x00;
                                delayms(4);
                                if(j8==10)
                                {j8=0;}
                        }
                }
}                          
void  delayms(uint   xsm)
        {
                uint  q,w;
                for(q=xsm;q>0;q--)
                  for(w=110;w>0;w--);
       }   

我是试试  ,,,谢谢了

我用的是P0  P1口  没有什么区别吧  和P2口

我有12864电子钟的套件需要不,只要70RMB,可以下载程序学习,当电子钟用,PCB板与12864液晶尺寸一样大,非常美观的。我QQ:176798246  

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

网站地图

Top