找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3472|回复: 0
收起左侧

单片机厨房定时报警系统源程序与proteus仿真设计等详细资料

[复制链接]
ID:296634 发表于 2018-5-22 10:00 | 显示全部楼层 |阅读模式
以51单片机为核心设计一个厨房定时报警器。具有倒计时计时,时间设置,完成蜂鸣器报警提示功能。系统主要由51单片机进行控制各个电路的配合,从而完成倒计时计时报警提示功能。电路包括:单片机最小系统电路,按键设置电路,数码管显示电路,蜂鸣器报警电路。
0.png

51单片机做的厨房定时报警器的设计说明如下:
屏幕截图(11).png 屏幕截图(12).png 屏幕截图(13).png 屏幕截图(14).png 屏幕截图(15).png 屏幕截图(16).png

单片机源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. void delay(uint z);
  4. sbit P20=P2^0;             //数码管公共端1
  5. sbit P21=P2^1;             //数码管公共端2
  6. sbit P22=P2^2;             //数码管公共端3
  7. sbit P23=P2^3;             //数码管公共端4
  8. sbit FMQ=P1^4;                 //蜂鸣器
  9. sbit zanting=P1^0;         //暂停
  10. sbit qidong=P1^1;         //启动
  11. sbit jia=P1^2;                 //加
  12. sbit jian=P1^3;             //减
  13. char time=100;                 //初值
  14. char i=0,h;
  15. unsigned char code led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管0~9

  16. void delay(uint z)        //延时
  17. {
  18.         uint x,y;
  19.         for(x=z;x>0;x--);
  20.         for(y=100;y>0;y--);
  21. }

  22. void main()
  23. {
  24.         FMQ=1;    //关闭蜂鸣器
  25.         EA=1;     //总中断开关
  26.         ET0=1;    //开启计数
  27.         ET1=1;    //开启计数
  28.         TMOD=0X11;//计时器方式控制
  29.         TR0=1;    //运行控制器
  30.         TR1=1;    //运行控制器

  31.         TH0=0x3c;
  32.         TL0=0xb0; //初值重装
  33.         
  34.         TH1=0xec;
  35.         TL1=0x78; //初值重装

  36.         IT0=1;    //中断开启
  37.         IT1=1;    //中断开启

  38.         EX0=1;    //中断允许
  39.         EX1=1;    //中断允许

  40.         while(1);
  41. }

  42. void zhongt() interrupt 1
  43. {
  44.         TH0=0x3c;       //重装初值 50ms定时
  45.         TL0=0xb0;
  46.         h++;

  47.         if(zanting==0)  //判断暂停按键是否按下
  48.     {        
  49.                 delay(500);
  50.                 TR0=0;      //运行控制器
  51.         }
  52.         if(jia==0)  //判断按键是否按下
  53.     {        
  54.                 delay(500);
  55.                 time++;
  56.                 while(jia == 0);   
  57.         }
  58.         if(jian==0)  //判断按键是否按下
  59.     {        
  60.                 delay(500);
  61.                 time--;
  62.                 while(jian == 0);              
  63.         }
  64.         if(h==20)       //循环20次  延时1s
  65.         {        
  66.             h=0;            //计数值复位
  67.             time--;            //数减一
  68.             if(time==0) //如果数为0时
  69.             {        
  70.                         P0= led[0];                //显0
  71.                         P2=0xff;                //位选全选,全显0
  72.                 while(1)
  73.                     {
  74.                                  FMQ=0;
  75.                                   delay(50000);
  76.                                   FMQ=1;
  77.                                   delay(50000);
  78.                           }
  79.                 }
  80.         }
  81. }

  82. void zhont() interrupt 3
  83. {
  84.         TH1=0xf8;     //重装初值 高八位
  85.         TL1=0x30;     //低八位        动态数码管延时2ms
  86.         i++;
  87.         
  88.         if(qidong==0) //判断启动按键是否按下
  89.         {
  90.                 TR0=1;
  91.         }

  92.         if(jia==0)  //判断按键是否按下
  93.     {        
  94.                 delay(500);
  95.                 time++;
  96.                 while(jia == 0);
  97.                      
  98.         }
  99.          
  100.         if(jian==0)  //判断按键是否按下
  101.     {        
  102.                 delay(500);
  103.                 time--;
  104.                 while(jian == 0);     
  105.         }
  106.         if(i==1)     //百位数码管
  107.         {
  108.                 P20=0;
  109.                 P21=0;
  110.                 P22=0;
  111.                 P23=0;
  112.                 P0=led[time/1000];//位
  113.                 //delay(5);
  114.                P20=1;
  115.         }
  116.         if(i==2)     //位数码管
  117.         {
  118.                 P20=0;
  119.                 P21=0;
  120.                 P22=0;
  121.                 P23=0;
  122.                 P0=led[time/100%10];//百位
  123.                 //delay(5);
  124.                P21=1;
  125.         }
  126.         if(i==3)     //十位位数码管
  127.         {
  128.                 P20=0;
  129.                 P21=0;
  130.                 P22=0;
  131.                 P23=0;
  132.                 P0=led[time/10%10]; //十位
  133.                 //delay(5);
  134.                 P22=1;
  135.         }         
  136. ……………………

  137. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
厨房定时器.zip (114.82 KB, 下载次数: 76)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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