久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2474|回復: 0
打印 上一主題 下一主題
收起左側

單片機紅外熱釋電傳感器報警程序與Proteus仿真圖

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg52.h>           

  2. #define uchar unsigned char  
  3. #define uint  unsigned int   

  4. #define key_io P1

  5. uchar key_can;  

  6. sbit beep=P2^3;         
  7. sbit red=P2^2;      
  8. sbit green=P2^1;        
  9. sbit yellow=P2^0;        
  10. sbit hw=P1^3;      

  11. bit flag_300ms=0;
  12.    
  13. void key()
  14. {
  15.         static uchar key_new=0,key_old=0,key_value=0;
  16.         if(key_new == 0)      
  17.         {
  18.                 if((key_io&0x07)==0x07)
  19.                 key_value ++;
  20.                 else
  21.                 key_value=0;
  22.                 if(key_value>=5)   
  23.                 {
  24.                         key_value=0;
  25.                         key_new=1;   
  26.                 }
  27.         }
  28.         else
  29.         {
  30.                 if((key_io&0x07)!=0x07)   
  31.                 key_value ++;
  32.                 else
  33.                 key_value=0;
  34.                 if(key_value>=5)   
  35.                 {
  36.                         key_value=0;
  37.                         key_new=0;      
  38.                 }
  39.         }
  40.         key_can=20;
  41.         if((key_new==0)&&(key_old==1))
  42.         {
  43.                 switch(key_io&0x07)
  44.                 {
  45.                         case 0x06: key_can=1; break;      
  46.                         case 0x05: key_can=2; break;     
  47.                         case 0x03: key_can=3; break;      
  48.                 }
  49.         }           
  50.         key_old = key_new;   

  51. }

  52. void time_init()     
  53. {
  54.         EA=1;         
  55.         TMOD=0X01;      
  56.         ET0=1;         
  57.         TR0=1;         
  58. }
  59. uchar flag_alarm ;   
  60. uchar flag_bufang ;   
  61. uchar flag_bufang_en ;
  62. uint  flag_value;      
  63.      
  64. void hongwai_dis()
  65. {
  66.         if(flag_alarm==1)      
  67.         {
  68.                 red=~red;         
  69.                 beep=~beep;      
  70.         }   
  71.         if(flag_bufang_en==1)
  72.         {
  73.                 green=~green;      
  74.         }
  75.         if(flag_bufang==1)
  76.         {
  77.                 green=0;      
  78.                 if(hw==1)         
  79.                 {
  80.                         flag_alarm=1;   
  81.                 }
  82.         }
  83. }
  84.      
  85. void key_with()
  86. {
  87.         if(key_can==1)   
  88.         {
  89.                 flag_alarm=1;     
  90.         }
  91.         if(key_can==2)   
  92.         {
  93.                 flag_bufang_en=1;      
  94.         }
  95.         if(key_can==3)   
  96.         {
  97.                 flag_alarm=0;
  98.                 flag_bufang=0;
  99.                 flag_bufang_en=0;   
  100.                 flag_value=0;   
  101.                 P2=0xff;     
  102.         }           
  103. }
  104.    
  105. void main()
  106. {
  107.         time_init();
  108.         while(1)
  109.         {
  110.                 key();         
  111.                 yellow=~hw;   
  112.                 if(key_can<10)
  113.                 {
  114.                         key_with();   
  115.                 }
  116.                 if(flag_300ms==1)
  117.                 {
  118.                         flag_300ms=0;
  119.                         hongwai_dis();     
  120.                 }   
  121.         }
  122. }

  123. void time0_int() interrupt 1
  124. {   
  125.         static uint value;
  126.         TH0=0x3c;
  127.         TL0=0xb0;      
  128.         value++;
  129.         if(value%6==0)
  130.         {
  131.                 flag_300ms=1;
  132.         }
  133.         if(flag_bufang_en==1)
  134.         {
  135.                 flag_value ++;
  136.                 if(flag_value>=600)
  137.                 {
  138.                         flag_bufang=1;
  139.                         flag_bufang_en=0;
  140.                         flag_value=0;   
  141.                 }
  142.         }
  143. }
復制代碼

Keil5代碼與Proteus8.8仿真下載:
紅外.zip (39.19 KB, 下載次數: 35)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品欧美久久久久久久 | 国产在线观看一区 | 日韩精品免费在线观看 | 精品日韩一区 | 亚洲一区二区三区四区视频 | 91视频在线 | 一级特黄色毛片 | 国产区在线 | 国产乱码一二三区精品 | 亚洲视频中文字幕 | 久久精品视频网站 | 久久久精品影院 | 国产精品视频导航 | 久久国产精品精品国产色婷婷 | 热久久999| 久久精品小视频 | 婷婷亚洲综合 | 色伊人久久 | 免费精品视频 | 99久久精品一区二区毛片吞精 | 日韩在线观看视频一区 | 人人做人人澡人人爽欧美 | 免费一级欧美在线观看视频 | 亚洲人精品午夜 | 中文一区 | 欧美6一10sex性hd | 久久亚洲春色中文字幕久久久 | 国产成人精品区一区二区不卡 | 亚洲免费在线视频 | 夜夜干夜夜操 | 成人精品一区二区三区 | 九色porny自拍视频 | 亚洲精品中文字幕av | 精品久久香蕉国产线看观看亚洲 | av一区在线 | 成人免费视频在线观看 | 97超碰人人 | 亚洲黄色在线 | 四色永久| 日本三级全黄三级三级三级口周 | 久久久久国产精品免费免费搜索 |