标题: 51单片机0到9999数码管显示的Proteus仿真+代码 [打印本页]

作者: zhang1314hong    时间: 2018-12-13 09:39
标题: 51单片机0到9999数码管显示的Proteus仿真+代码


单片机源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define wei=P2;
  5. #define duan=P0;
  6. sbit led=P1^0;
  7. sbit S2=P3^0;
  8. sbit S3=P3^1;
  9. sbit S4=P3^2;
  10. uchar sec,num;
  11. uint cnt=0; //全局变量,控制数码管显示的数字的变化
  12. uint ge,shi,qian,bai;
  13. uchar code arry[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  14. void delay(uint i);//软件延时函数
  15. void display(); //数码管显示函数
  16. void delay(uint i)//软件延时函数
  17. {
  18.         uint a,c;
  19.         for(a =i;a>0;a--)
  20.         {
  21.                 for(c=114;c>0;c--);
  22.         }
  23. }

  24. void display()
  25. {
  26.         qian=cnt/1000;
  27.         bai=(cnt%1000)/100;
  28.         shi=((cnt%1000)%100)/10;
  29.         ge=        ((cnt%1000)%100)%10;
  30.         P2=0xf7;
  31.         P0=arry[ge];
  32.         delay(5);  //防止重影
  33.         P2=0xfb;
  34.         P0=arry[shi];
  35.         delay(5);
  36.         P2=0xfd;
  37.         P0=arry[bai];
  38.         delay(5);
  39.         P2=0xfe;
  40.         P0=arry[qian];
  41.         delay(5);
  42. }

  43. void Timer0Init()
  44. {
  45.         TMOD|=0X11;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
  46.         TH0=0X3c;        //给定时器赋初值,定时1ms
  47.         TL0=0Xb0;
  48.         TH1=0X3C;
  49.         TL1=0XB0;
  50.         ET1=1;       
  51.         ET0=1;//打开定时器0中断允许
  52.         EA=1;//打开总中断
  53.                
  54. }
  55. void Timer0() interrupt 1
  56. {
  57.        
  58.         TH0=0X3c;        //
  59.         TL0=0Xb0;
  60.         sec++;
  61.         if(sec==20)
  62.         {
  63.                
  64.                 TF0=0;
  65.                 sec=0;
  66.                 cnt++;
  67.                
  68.         }
  69.                 if(cnt==9999)
  70.                 {
  71.                   
  72.                  cnt=9999;
  73.                         TR0=0;
  74.                         TF0=0;
  75.                 }
  76. }

  77. void Timer1() interrupt 3
  78. {
  79.        
  80.         TH1=0X3c;        //
  81.         TL1=0Xb0;
  82.         num++;
  83.         if(num==10)
  84.         {
  85.                 num=0;
  86.                 TF1=0;
  87.                 led=~led;
  88.                
  89.         }
  90. }       

  91. void main()//主函数
  92. {
  93.         Timer0Init();
  94.         while(1)
  95.         {
  96.                 display();
  97.                 if(S2==0)//开始/复位
  98.         {
  99.                   delay(10);
  100.                         if(S2==0)
  101.                         {
  102.                                 sec = 0;
  103.                                 num=0;
  104.                     cnt=0;
  105.                               TR0=1;
  106.                                 TR1=1;
  107.                         }   
  108.         }
  109.         if(S3==0)//暂停
  110.         {
  111.                   delay(10);
  112.                         if(S3==0)
  113.                         {
  114.                                 TR0 = 0;    //关闭定时器
  115.                          TF0 = 0;
  116.                                 TR1=0;
  117.                                 TF1=0;
  118.                         }
  119.                                        
  120.         }
  121.                 if(S4==0)//继续开始
  122.         {
  123.                   delay(10);
  124.                         if(S4==0)
  125.                         {
  126.                                 sec = 0;
  127.                                 num=0;
  128.                                 TR0=1;
  129.                                 TR1=1;
  130.                         }
  131.                                                   
  132.         }
  133.                                        
  134.        
  135.      }
  136. }
复制代码

所有资料51hei提供下载:
51单片机0到9999数码管显示的Proteus仿真 代码.dsn.zip (77.43 KB, 下载次数: 82)




作者: panwentao    时间: 2020-5-23 11:56
谢谢,非常厉害




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1