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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

利用51單片機技術開發的一款家庭安全系統(防盜、防火、防有害氣體泄漏)

[復制鏈接]
跳轉到指定樓層
樓主
帶lcd液晶顯示,熱釋電紅外線、溫度傳感器、有害氣體傳感器部分代碼(全部代碼和原理圖等請下載附件)



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

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

  5. sfr ISP_DATA  = 0xe2;                                        // 數據寄存器
  6. sfr ISP_ADDRH = 0xe3;                                        // 地址寄存器高八位
  7. sfr ISP_ADDRL = 0xe4;                                        // 地址寄存器低八位
  8. sfr ISP_CMD   = 0xe5;                                        // 命令寄存器
  9. sfr ISP_TRIG  = 0xe6;                                        // 命令觸發寄存器
  10. sfr ISP_CONTR = 0xe7;                                        // 命令寄存器

  11. sbit Anf_P    = P1^0;                                        // 人體安防模塊
  12. sbit DQ       = P1^1;                                        // 溫度傳感器的引腳
  13. sbit ADC_CS   = P1^2;                                 // ADC0832的CS引腳
  14. sbit ADC_CLK  = P1^3;                                 // ADC0832的CLK引腳
  15. sbit ADC_DAT  = P1^4;                                 // ADC0832的DI/DO引腳
  16. sbit LcdRs_P  = P2^7;                     // 1602液晶的RS管腳      
  17. sbit LcdRw_P  = P2^6;                     // 1602液晶的RW管腳
  18. sbit LcdEn_P  = P2^5;                     // 1602液晶的EN管腳
  19. sbit Key1_P   = P3^2;                                        // 設置按鍵
  20. sbit Key2_P   = P3^3;                                        // 減按鍵
  21. sbit Key3_P   = P3^4;                                        // 加按鍵
  22. sbit Key4_P   = P3^5;                                        // 布防/撤防按鍵
  23. sbit Buzzer_P = P2^0;                                        // 蜂鳴器
  24. sbit Led1_P   = P2^3;                                        // 報警燈1,人體報警
  25. sbit Led2_P   = P2^2;                                        // 報警燈2,溫度報警
  26. sbit Led3_P   = P2^1;                                        // 報警燈3,煙霧報警


  27. uchar gFlag=0;                                                                // 為0是撤防,為1是布防
  28. uchar gMqAlarm;                                                                // 煙霧報警值
  29. int   gTempAlarm;                                                        // 溫度報警值



  30. /*********************************************************/
  31. // 單片機內部EEPROM不使能
  32. /*********************************************************/
  33. void ISP_Disable()
  34. {
  35.         ISP_CONTR = 0;
  36.         ISP_ADDRH = 0;
  37.         ISP_ADDRL = 0;
  38. }


  39. /*********************************************************/
  40. // 從單片機內部EEPROM讀一個字節,從0x2000地址開始
  41. /*********************************************************/
  42. unsigned char EEPROM_Read(unsigned int add)
  43. {
  44.         ISP_DATA  = 0x00;
  45.         ISP_CONTR = 0x83;
  46.         ISP_CMD   = 0x01;
  47.         ISP_ADDRH = (unsigned char)(add>>8);
  48.         ISP_ADDRL = (unsigned char)(add&0xff);
  49.         // 對STC89C51系列來說,每次要寫入0x46,再寫入0xB9,ISP/IAP才會生效
  50.         ISP_TRIG  = 0x46;           
  51.         ISP_TRIG  = 0xB9;
  52.         _nop_();
  53.         ISP_Disable();
  54.         return (ISP_DATA);
  55. }


  56. /*********************************************************/
  57. // 往單片機內部EEPROM寫一個字節,從0x2000地址開始
  58. /*********************************************************/
  59. void EEPROM_Write(unsigned int add,unsigned char ch)
  60. {
  61.         ISP_CONTR = 0x83;
  62.         ISP_CMD   = 0x02;
  63.         ISP_ADDRH = (unsigned char)(add>>8);
  64.         ISP_ADDRL = (unsigned char)(add&0xff);
  65.         ISP_DATA  = ch;
  66.         ISP_TRIG  = 0x46;
  67.         ISP_TRIG  = 0xB9;
  68.         _nop_();
  69.         ISP_Disable();
  70. }


  71. /*********************************************************/
  72. // 擦除單片機內部EEPROM的一個扇區
  73. // 寫8個扇區中隨便一個的地址,便擦除該扇區,寫入前要先擦除
  74. /*********************************************************/
  75. void Sector_Erase(unsigned int add)         
  76. {
  77.         ISP_CONTR = 0x83;
  78.         ISP_CMD   = 0x03;
  79.         ISP_ADDRH = (unsigned char)(add>>8);
  80.         ISP_ADDRL = (unsigned char)(add&0xff);
  81.         ISP_TRIG  = 0x46;
  82.         ISP_TRIG  = 0xB9;
  83.         _nop_();
  84.         ISP_Disable();
  85. }



  86. /*********************************************************/
  87. // 毫秒級的延時函數,time是要延時的毫秒數
  88. /*********************************************************/
  89. void DelayMs(uint time)
  90. {
  91.         uint i,j;
  92.         for(i=0;i<time;i++)
  93.                 for(j=0;j<112;j++);
  94. }


  95. /*********************************************************/
  96. // 延時15微秒
  97. /*********************************************************/
  98. void Delay15us(void)
  99. {
  100.         _nop_();
  101.         _nop_();
  102.         _nop_();
  103.         _nop_();
  104.         _nop_();
  105.         _nop_();
  106.         _nop_();
  107.         _nop_();
  108.         _nop_();
  109.         _nop_();
  110.         _nop_();
  111.         _nop_();
  112.         _nop_();
  113.         _nop_();
  114.         _nop_();
  115. }


  116. /*********************************************************/
  117. // 復位DS18B20(初始化)
  118. /*********************************************************/
  119. void DS18B20_ReSet(void)
  120. {
  121.         uchar i;
  122.         DQ=0;
  123.         i=240;
  124.         while(--i);
  125.         DQ=1;
  126.         i=30;
  127.         while(--i);
  128.         while(~DQ);
  129.         i=4;
  130.         while(--i);
  131. }


  132. /*********************************************************/
  133. // 向DS18B20寫入一個字節
  134. /*********************************************************/
  135. void DS18B20_WriteByte(uchar dat)
  136. {
  137.         uchar j;
  138.         uchar btmp;
  139.         
  140.         for(j=0;j<8;j++)
  141.         {
  142.                 btmp=0x01;
  143.                 btmp=btmp<<j;
  144.                 btmp=btmp&dat;
  145.                
  146.                 if(btmp>0)                // 寫1
  147.                 {
  148.                         DQ=0;
  149.                         Delay15us();
  150.                         DQ=1;
  151.                         Delay15us();
  152.                         Delay15us();
  153.                         Delay15us();
  154.                         Delay15us();
  155.                 }
  156.                 else                        // 寫0
  157.                 {
  158.                         DQ=0;
  159.                         Delay15us();
  160.                         Delay15us();
  161.                         Delay15us();
  162.                         Delay15us();
  163.                         DQ=1;
  164.                         Delay15us();
  165.                 }
  166.         }
  167. }
復制代碼

單片機程序.rar

362.94 KB, 下載次數: 74, 下載積分: 黑幣 -5

帶源程序文件和word版

原理圖word版.rar

38.12 KB, 下載次數: 63, 下載積分: 黑幣 -5

模塊和總和

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:770773 發表于 2020-6-5 22:50 | 只看該作者
非常感謝
回復

使用道具 舉報

板凳
ID:1078332 發表于 2023-6-12 21:59 | 只看該作者
問一下作者是用什么軟件畫的圖
回復

使用道具 舉報

地板
ID:1084086 發表于 2023-6-14 16:15 | 只看該作者
這是用AD畫的原理圖
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区三区在线播放 | 成人教育av | 草草草影院 | 国产精品天堂 | 国产成人精品一区二区三区视频 | 国产精品亚洲视频 | 久久小视频 | 美女爽到呻吟久久久久 | 欧美一级在线 | 欧美一区二区成人 | 精品一区二区在线视频 | 日韩免费福利视频 | 日韩欧美在线一区二区 | 国产精品久久久久久一区二区三区 | 国产精品一区一区 | 欧美日韩欧美 | 国产精品日韩在线观看 | 欧美一区二区三区视频在线观看 | 久久国产视频网站 | 国产一级久久久久 | 欧美日韩精品一区二区三区四区 | 欧美亚洲一区二区三区 | 国产视频一区二区 | 97精品一区二区 | 91视频a | 日日骚网 | 在线成人av | 99自拍视频| 欧美日韩三区 | 欧美成人高清 | 亚洲国产精品一区二区三区 | 国产精品69毛片高清亚洲 | 欧产日产国产精品视频 | 中文字幕在线播放第一页 | 黄视频国产 | 激情欧美一区二区三区 | 亚洲精品欧美 | 欧美日韩一区二区三区在线观看 | 亚洲精品电影网在线观看 | 日韩成人av在线 | 成人免费视频播放 |