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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的紅外防盜報警程序源碼設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:319495 發表于 2018-4-30 18:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一個基于51單片機的人體紅外防盜報警設計,模塊接P1^6引腳上面的.
單片機源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char                // 以后unsigned char就可以用uchar代替
  3. #define uint  unsigned int                // 以后unsigned int 就可以用uint 代替

  4. sbit Module    = P1^6;                        // 安防模塊
  5. sbit Buzzer    = P1^7;                        // 蜂鳴器
  6. sbit Key1      = P3^2;                        // 按鍵1,報警模式切換
  7. sbit Key2      = P3^3;                        // 按鍵2,布防/撤防切換
  8. sbit Key3      = P3^4;                        // 按鍵3,緊急報警
  9. sbit LedRed    = P2^0;                        // 紅色led燈,報警指示燈
  10. sbit LedGreen  = P2^1;                        // 綠色led燈,布防/撤防指示燈
  11. sbit LedYellow = P2^2;                        // 黃色led燈,報警模式指示燈


  12. /*********************************************************/
  13. // 毫秒級的延時函數,time是要延時的毫秒數
  14. /*********************************************************/
  15. void DelayMs(uint time)
  16. {
  17.         uint i,j;
  18.         for(i=0;i<time;i++)
  19.                 for(j=0;j<112;j++);
  20. }

  21. /*********************************************************/
  22. // 等待所有按鍵釋放
  23. /*********************************************************/
  24. void WaitKey()
  25. {
  26.         DelayMs(10);                                // 消除按鍵按下的抖動
  27.         while(Key1==0);                        // 等待按鍵1釋放
  28.         while(Key2==0);                        // 等待按鍵2釋放
  29.         while(Key3==0);                        // 等待按鍵3釋放
  30.         DelayMs(10);                                // 消除按鍵松開的抖動
  31. }

  32. /*********************************************************/
  33. // 緊急報警
  34. /*********************************************************/
  35. void EmergencyAlarm()
  36. {
  37.         Buzzer=0;                                        // 啟動蜂鳴器報警
  38.         while(1)
  39.         {
  40.                 LedRed=0;                        // 紅燈亮
  41.                 LedGreen=0;                        // 綠燈亮
  42.                 LedYellow=0;                        // 黃燈亮
  43.                 DelayMs(150);                        // 延時150毫秒
  44.                 LedRed=1;                        // 紅燈滅                        
  45.                 LedGreen=1;                        // 綠燈滅
  46.                 LedYellow=1;                        // 黃燈滅
  47.                 DelayMs(150);                        // 延時150毫秒
  48.         }
  49. }

  50. /*********************************************************/
  51. // 布防過程,正常是30秒左右
  52. /*********************************************************/
  53. uchar AnFang()
  54. {
  55.         uchar i,j;
  56.         LedGreen=0;                                        // 綠燈亮
  57.         WaitKey();                                        // 等待按鍵釋放
  58.         for(i=0;i<60;i++)                                // 延時并掃描按鍵
  59.         {
  60.                 LedGreen=~LedGreen;                // 綠燈狀態取反(亮滅交換)
  61.                 for(j=0;j<50;j++)
  62.                 {
  63.                         if(Key2==0)                        // 如果按下按鍵2
  64.                                 return 2;                        // 則返回2
  65.                         if(Key3==0)                        // 如果按下按鍵3
  66.                                 return 3;                        // 則返回3
  67.                         DelayMs(10);                        // 延時10毫秒
  68.                 }
  69.         }
  70.         return 0;                                                // 程序正常結束,返回0
  71. }
  72.         
  73. /*********************************************************/
  74. // 主函數
  75. /*********************************************************/
  76. void main(void)
  77. {
  78.         uint  i;
  79.         uchar ret;
  80.         Buzzer=0;                                                                // 蜂鳴器鳴叫

  81.         DelayMs(200);                                                        // 延時0.2秒
  82.         Buzzer=1;                                                                // 停止蜂鳴器
  83.         while(1)
  84.         {
  85.                 /* 按鍵1檢測 */
  86.                 if(Key1==0)                                                // 如果按鍵1被按下                        
  87.                 {
  88.                         LedYellow=~LedYellow;                        // 黃色等狀態取反
  89.                         WaitKey();                                        // 等待按鍵釋放
  90.                 }
  91.                
  92.                 /* 按鍵2檢測 */
  93.                 if(Key2==0)                                                // 如果按鍵2被按下                        
  94.                 {
  95.                         if(LedGreen==1)                                // 如果當前沒有布置安防
  96.                         {
  97.                                 ret=AnFang();                                // 開始安防
  98.                                 if(ret==0)                                        // 如果返回0
  99.                                 {
  100.                                         LedGreen=0;                        // 綠燈亮,啟動安防
  101.                                 }
  102.                                 if(ret==2)                                        // 如果返回2
  103.                                 {
  104.                                         LedGreen=1;                        // 綠燈滅,說明安防過程被取消
  105.                                         WaitKey();                        // 等待按鍵釋放
  106.                                 }
  107.                                 if(ret==3)                                        // 如果返回3
  108.                                 {
  109.                                         EmergencyAlarm();                // 說明安防過程按下了緊急報警按鍵
  110.                                 }
  111.                         }
  112.                         else                                                        // 如果當前為安防狀態
  113.                         {
  114.                                 LedGreen=1;                                // 綠燈滅,撤防
  115.                                 WaitKey();                                // 等待按鍵釋放
  116.                         }
  117.                 }
  118.                
  119.                 /* 按鍵3檢測 */
  120.                 if(Key3==0)                                                // 如果按鍵3被按下                        
  121.                 {        
  122.                         EmergencyAlarm();                                // 啟動緊急報警
  123.                 }               
  124.                
  125.                 /* 安防檢測 */
  126.                 if((LedGreen==0)&&(Module==1))                // 如果安防已啟動并且檢測到有人
  127.                 {
  128.                         // 短報警處理
  129.                         if(LedYellow==1)                                // 如果黃燈是滅的                                                               
  130.                         {
  131.                                 LedRed=0;                                // 紅燈亮
  132.                                 Buzzer=0;                                        // 蜂鳴器響
  133.                                 for(i=0;i<400;i++)                        // 短報警并進行按鍵掃描
  134.                                 {
  135.                                         if(Key2==0)                        // 如果按鍵按鍵2
  136.                                         {
  137.                                                 LedGreen=1;                // 綠燈滅,表示撤防
  138.                                                 LedRed=1;                // 紅燈滅
  139.                                                 Buzzer=1;                        // 蜂鳴器停止鳴叫
  140.                                                 WaitKey();                // 等待按鍵釋放
  141.                                                 break;                        // 退出報警
  142.                                         }
  143.                                         DelayMs(10);                        // 延時10毫秒
  144.                                 }
  145.                                 LedRed=1;                                // 紅燈滅
  146.                                 Buzzer=1;                                        // 蜂鳴器停止鳴叫
  147.                         }
  148.                         // 長報警處理
  149.                         else                                                                        
  150.                         {
  151.                                 LedRed=0;                                // 紅燈亮
  152.                                 Buzzer=0;                                        // 蜂鳴器響
  153.                                 while(1)
  154.                                 {        
  155.                                         if(Key2==0)                        // 如果按鍵按鍵2
  156.                                         {
  157.                                                 LedGreen=1;                // 綠燈滅,表示撤防
  158.                                                 LedRed=1;                // 紅燈滅
  159.                                                 Buzzer=1;                        // 蜂鳴器停止鳴叫
  160.                                                 WaitKey();                // 等待按鍵釋放
  161.                                                 break;                        // 退出報警
  162.                                         }
  163.                                 }
  164.                         }
  165.                 }
  166.         }
  167. }
復制代碼

所有資料51hei提供下載:
單片機程序.doc (31 KB, 下載次數: 38)


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

使用道具 舉報

沙發
ID:293762 發表于 2018-5-9 22:36 | 只看該作者
謝謝樓主的分享!認真學習。
回復

使用道具 舉報

板凳
ID:438819 發表于 2018-12-3 22:53 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 完全免费在线视频 | 毛片大全 | 韩日在线| av黄色片在线观看 | 亚洲精品久久久久avwww潮水 | 日本高清视频在线播放 | 亚洲福利一区 | 蜜臀久久 | 亚洲精品一区二区另类图片 | www国产成人免费观看视频,深夜成人网 | 国产馆| 一级毛片视频 | 久久99久久久久 | 成人久久18免费网站麻豆 | 青青草免费在线视频 | 免费观看一级毛片 | 欧美一区免费 | 久久久夜色精品亚洲 | 国产91 在线播放 | eeuss国产一区二区三区四区 | 久久精品日产第一区二区三区 | 一区二区三区不卡视频 | 天堂网中文字幕在线观看 | 在线成人免费视频 | av色站 | 91亚洲国产亚洲国产 | 国产精品亚洲成在人线 | 国产一区二区三区在线 | 一区二区av在线 | 精品国产乱码久久久久久蜜臀 | 毛片免费看 | 成人久久18免费网站麻豆 | 久久成| 亚洲欧美中文日韩在线 | 中文字幕成人 | 天天干天天操天天射 | 国产精品美女久久久久aⅴ国产馆 | 在线观看第一页 | 免费精品在线视频 | 久久久久久精 | 国产激情精品视频 |