找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2210|回复: 1
收起左侧

51单片机定时器实现24秒计时程序

[复制链接]
ID:293544 发表于 2019-6-25 16:32 | 显示全部楼层 |阅读模式
stc89c51单片机定时器实现24秒计时

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit du=P2^6;
  5. sbit s1=P3^0;
  6. sbit s2=P3^1;
  7. sbit s3=P3^2;
  8. sbit di=P3^7;
  9. sbit shiwe=P2^1;
  10. sbit gewe=P2^2;
  11. sbit dianwe=P2^3;
  12. sbit deng=P1^1;
  13. uchar code dd[]={
  14.                                         0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  15.                                         0x7d,0x07,0x7f,0x6f,0x77,0x7c,
  16.                                         0x39,0x5e,0x79,0x71,0x00
  17.                                 };
  18. uchar shi,ge,dian,num,tt,flag,flag1,i;
  19. void delay(uint x)
  20. {
  21.         uint y;
  22.         for(;x>0;x--)
  23.                 for(y=124;y>0;y--);
  24. }
  25. void display()
  26. {
  27.          shi=num/100;
  28.          ge=num/10%10;
  29.          dian=num%10;
  30.          P0=dd[shi];
  31.          du=1;
  32.          du=0;
  33.          shiwe=1;
  34.          delay(10);
  35.          shiwe=0;
  36.          P0=dd[ge]|0x80;
  37.          du=1;
  38.          du=0;
  39.          gewe=1;
  40.          delay(10);
  41.          gewe=0;
  42.          P0=dd[dian];
  43.          du=1;
  44.          du=0;
  45.          dianwe=1;
  46.          delay(10);
  47.          dianwe=0;
  48.          
  49. }
  50. void init()
  51. {
  52.         flag=0;
  53.         num=240;
  54.         TMOD=0x01;
  55.         TH0=(65536-50000)/256;
  56.         TL0=(65536-50000)%256;
  57.         EA=1;
  58.         TR0=0;
  59.         ET0=1;
  60. }
  61. void main()
  62. {
  63.          while(1)
  64.          {         
  65.                  display();
  66.                  TR0=0;
  67.                  if(s1==0)
  68.                  TR0=1;
  69.                          if(s2==0)
  70.                 {
  71.                         delay(5);
  72.                         if(s2==0)
  73.                         {
  74.                                 flag++;
  75.                                 while(!s2);
  76.                                 if(flag==1)
  77.                                 {
  78.                                         TR0=0;
  79.                                 }
  80.                                 else
  81.                                 {
  82.                                         flag=0;
  83.                                         TR0=1;
  84.                                 }
  85.                         }
  86.                    if(flag1==1)
  87.                    {
  88.                             for(i=3;i>0;i--)
  89.                          {
  90.                                  deng=1;
  91.                                 delay(500);
  92.                                 deng=0;
  93.                          }

  94.                    }
  95.                 }
  96.          

  97.          }
  98. }
  99. void as() interrupt 1
  100. {
  101.         TH0=(65536-50000)/256;
  102.         TL0=(65536-50000)%256;
  103.         tt++;
  104.         if(tt==20)
  105.         {
  106.                 num=num-10;
  107.                 display();
  108.                 if(num==0)
  109.                 flag1=1;
  110.         }

  111. }
复制代码

程序工程文件51hei提供下载:
24秒计时.rar (10.85 KB, 下载次数: 20)
回复

使用道具 举报

ID:85743 发表于 2020-2-12 21:23 | 显示全部楼层
内容很好,学习中,谢谢楼主。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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