找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9572|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机30S倒计时显示程序+电路图

[复制链接]
跳转到指定楼层
楼主
ID:85192 发表于 2015-7-10 02:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式






  1. //计时程序,要求有两个定时器,要有声音(蜂鸣器就行),显示(数码管)
  2. //2016 04 29      E:\DPJ_C\OTHER\30S倒计时\30s.c
  3. #include <reg52.h>
  4. #define uchar unsigned char
  5. sbit BZ = P1^2;
  6. sbit P20=P2^0;
  7. sbit P21=P2^1;
  8. uchar a=30,b,c,time,flag;
  9. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  10. void delay_ms(unsigned int ms)  //1ms延时
  11. {
  12.     while(ms--)
  13. for(b=123;b>0;b--);
  14. }

  15. void disp();

  16. void t0intinit()
  17. {
  18.   TMOD=0x11;
  19.   TH0=0x3c;
  20.   TL0=0xb0;
  21.   TH1=0xfe;
  22.   TL1=0x0c;
  23.   EA=1;
  24.   ET0=1;
  25.   ET1=1;
  26.   TR0=1;
  27. }

  28. void main(void)
  29. {
  30.   t0intinit();
  31. while(1)
  32. {
  33.   disp();
  34.   while(flag)
  35.   {
  36.    disp();
  37.    TR1=1;
  38.    if(c==3)   //蜂鸣3s后停止
  39.    {
  40.     flag=0;
  41.     TR0=0;
  42.     TR1=0;
  43.    }
  44.   }
  45. }
  46. }

  47. void disp( )
  48. {
  49.    P0=tab[a%10];
  50. P21=0;
  51.   delay_ms(1);
  52. P21=1;
  53. P0=tab[a/10];
  54. P20=0;
  55.   delay_ms(1);
  56. P20=1;
  57. }

  58. void t0int(void) interrupt 1
  59. {
  60.   TH0=0x3c;
  61. TL0=0xb0;
  62. time++;
  63. if(time==20)
  64. {
  65.   time=0;
  66.   if(a!=0)
  67.   a--;
  68.   else
  69.   {
  70.    flag=1;
  71.    c++;
  72.   }
  73. }
  74. }


  75. void t1int(void) interrupt 3 //定时器T1作1kz蜂鸣
  76. {
  77.   TH1=0xfe;     //0.5ms定时
  78. TL1=0x0c;
  79. if(flag==1)
  80. BZ=~BZ;
  81. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:998167 发表于 2021-12-29 12:39 | 只看该作者
有完整的电路图吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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