找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机99秒定时报警器proteus仿真

[复制链接]
跳转到指定楼层
楼主
报警系统99秒定时报警器

proteus仿真原理图:


单片机源程序:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit k1=P1^0;
  5. sbit k2=P1^1;
  6. sbit k3=P1^2;
  7. sbit k4=P1^3;
  8. sbit buz=P3^0;
  9. uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  10. uchar count,shi,ge,dcount,dicount;
  11. void delay(int ms)
  12. {
  13.         uchar i,j;
  14.         for(i=ms;i>0;i--)
  15.                 for(j=200;j>0;j--);
  16. }
  17. void init()
  18. {
  19.         P0=0x6f;
  20.         P2=0x6f;
  21.         P1=0xff;
  22.         buz=0;
  23.         TMOD=0x01;
  24.         IE=0x82;
  25.         TH0=(65536-50000)/256;
  26.         TL0=(65536-50000)%256;
  27.         TR0=1;
  28.         dcount=99;       
  29. }
  30. void keyscan()
  31. {
  32.         if(k1==0)
  33.         {       
  34.                
  35.                 delay(5);
  36.                 if(k1==0)
  37.                 {
  38.                         TR0=0;
  39.                 }
  40.         }               
  41.                 if(TR0==0)
  42.                 {
  43.                         if(k2==0)
  44.                         {
  45.                                 delay(5);
  46.                                 if(k2==0)
  47.                                 {
  48.                                        
  49.                                         dcount++;
  50.                                         if(dcount==100)
  51.                                                 dcount=0;
  52.                                 while(!k2)
  53.                                         {       
  54.                                         shi=dcount/10;
  55.                                         ge=dcount%10;
  56.                                         P0=duan[shi];
  57.                                         P2=duan[ge];
  58.                                         }
  59.                                 }
  60.                         }
  61.        
  62.                         if(k3==0)
  63.                         {
  64.                                 delay(5);
  65.                                 if(k3==0)
  66.                                 {
  67.                                         dcount--;
  68.                                         if(dcount==-1)
  69.                                                 dcount=99;
  70.                                 while(!k3)
  71.                                         {
  72.                                         shi=dcount/10;
  73.                                         ge=dcount%10;
  74.                                         P0=duan[shi];
  75.                                         P2=duan[ge];
  76.                                         }
  77.                                 }
  78.                                
  79.                         }
  80.                 }
  81.                        
  82.                         if(k4==0)
  83.                         {
  84.                                 delay(5);
  85.                                 if(k4==0)
  86.                                 {
  87.                                 TR0=1;
  88.                                
  89.                                 }
  90.                         }                               
  91.                
  92.        
  93. }
  94. void timer0() interrupt 1
  95. {
  96.         TH0=(65536-50000)/256;
  97.         TL0=(65536-50000)%256;
  98.         if(++count==20)
  99.         {
  100.         count=0;
  101.         dcount--;
  102.         if(dcount==-1)
  103.         {
  104.         TR0=0;
  105.         while(k1!=0)
  106.                 {
  107.                 P0=0x00;
  108.                 P2=0x00;
  109.                 buz=1;
  110.                 delay(1000);
  111.                 P0=0xff;
  112.                 P2=0xff;
  113.                 buz=0;
  114.                 delay(1000);
  115.                 }
  116.         dcount=99;
  117.         }
  118.         shi=dcount/10;
  119.         ge=dcount%10;
  120.         P0=duan[shi];
  121.         P2=duan[ge];
  122.         }
  123.                
  124. }
  125. void main()
  126. {
  127.        
  128.         init();
  129.         while(1)
  130.         {
  131.                 keyscan();
  132.         }
  133.        
  134. }
复制代码

下载:
定时报警器.rar (32.15 KB, 下载次数: 119)

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

使用道具 举报

沙发
ID:443751 发表于 2018-12-11 00:16 | 只看该作者
正好有需要,非常感谢。
回复

使用道具 举报

板凳
ID:841317 发表于 2020-11-16 15:00 | 只看该作者
代码又完整的吗?
回复

使用道具 举报

地板
ID:844183 发表于 2021-3-29 15:37 | 只看该作者
这个是延时多少秒进行报警的,貌似没有99秒
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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