找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机数字电子钟 每秒led闪烁一次,整点报时 Proteus仿真程序

查看数: 2266 | 评论数: 4 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-5-9 23:26

正文摘要:

实现功能:每秒led闪烁一次,整点报时Proteus仿真,数码管显示

回复

ID:939260 发表于 2021-6-17 12:23
wulin 发表于 2021-5-10 20:46
按楼主的意图改成这样试试。

厉害啊
ID:139866 发表于 2021-5-12 09:53
birdzhyli 发表于 2021-5-10 21:26
通篇无注释,高手

我最讨厌的事情有两件,一件是别人的程序不写注释,另一件是让我敲代码的时候写注释
ID:889094 发表于 2021-5-10 21:26
通篇无注释,高手
ID:213173 发表于 2021-5-10 20:46
按楼主的意图改成这样试试。
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar sec,min,hour,num,num1,t;
  5. bit sign=0;
  6. sbit fm=P1^0;
  7. sbit led0=P1^6;
  8. sbit key1=P3^0;
  9. sbit key2=P3^1;
  10. sbit key3=P3^2;
  11. unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  12. unsigned char a[]={0,0,0x40,0,0,0x40,0,0};
  13. /*
  14. void delay(unsigned char z)
  15. {
  16.         unsigned char x,y;
  17.         for(x=0;x<z;x++)
  18.                 for(y=0;y<255;y++);
  19. }*/
  20. void time ()  interrupt 1
  21. {
  22.         TH0=(65536-50000)/256;
  23.         TL0=(65536-50000)%256;
  24.         num++;
  25.         if(num>=20)   
  26.         {
  27.                 num=0;
  28.                 sec++;
  29.                 if(sec>=60)
  30.                 {
  31.                         sec=0;
  32.                         min++;
  33.                         if(min>=60)
  34.                         {
  35.                                 min=0;
  36.                                 hour++;
  37.                                 if(hour>=24)
  38.                                         hour=0;  
  39.                         }
  40.                 }
  41.         }              
  42. }

  43. void led()
  44. {         
  45.         if(num>10)
  46.                 led0=1;
  47.         else
  48.                 led0=0;
  49.         if(min==0&&sec<=5)//整点报时5秒
  50.                 fm=1;
  51.         else fm=0;
  52. }

  53. void display()
  54. {
  55.         a[0]=table[hour/10];
  56.         a[1]=table[hour%10];
  57.         a[3]=table[min/10];
  58.         a[4]=table[min%10];
  59.         a[6]=table[sec/10];
  60.         a[7]=table[sec%10];
  61.         P0=0x00;
  62.         P2=~(0x01<<t);
  63.         P0=a[t];
  64.         t=++t%8;
  65. }
  66. void key()
  67. {       
  68.         if(!key1||!key2||!key3)
  69.         {
  70.                 if(++num1>=250&&sign==0)
  71.                 {
  72.                         sign=1;
  73.                         if(!key1)sec=++sec%60;
  74.                         if(!key2)min=++min%60;
  75.                         if(!key3)hour=++hour%24;
  76.                 }
  77.         }
  78.         else
  79.         {
  80.                 num1=0;
  81.                 sign=0;
  82.         }
  83. }
  84. void main()
  85. {
  86.         fm=0;
  87.         TMOD=1;
  88.         TH0=(65536-50000)/256;
  89.         TL0=(65536-50000)%256;
  90.         EA=1;
  91.         ET0=1;
  92.         TR0=1;
  93.         while(1)
  94.         {
  95.                 led();
  96.                 display();
  97.                 key();
  98.         }
  99. }
复制代码



评分

参与人数 1黑币 +5 收起 理由
2823126132 + 5 赞一个!

查看全部评分

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表