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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10104|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的火災(zāi)報(bào)警器設(shè)計(jì)參考文檔 附程序PCB文件

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:436945 發(fā)表于 2019-12-24 12:53 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
隨著現(xiàn)代家庭用火、用電量的增加,家庭火災(zāi)發(fā)生的頻率越來(lái)越高。火災(zāi)報(bào)警器也隨之被廣泛應(yīng)用于各種場(chǎng)合。
本課題所研究的無(wú)線(xiàn)多功能火災(zāi)報(bào)警器采用STC89C51為核心控制器,利用氣體傳感器MQ-2、ADC0832模數(shù)轉(zhuǎn)換器、DS18B20溫度傳感器等實(shí)現(xiàn)基本功能。通過(guò)這些傳感器和芯片,當(dāng)環(huán)境中可燃?xì)怏w濃度或溫度等發(fā)生變化時(shí)系統(tǒng)會(huì)發(fā)出相應(yīng)的燈光報(bào)警信號(hào)和聲音報(bào)警信號(hào),以此來(lái)實(shí)現(xiàn)火災(zāi)報(bào)警,智能化提示。


目錄
摘要        0
Abstract        1
目錄        2
1 緒論        3
1.1 課題的研究背景        3
1.2 課題的研究目的與意義        4
1.3 火災(zāi)報(bào)警器的發(fā)展與現(xiàn)狀        4
1.4課題的研究?jī)?nèi)容        5
2 火災(zāi)報(bào)警器的總體方案設(shè)計(jì)        6
2.1系統(tǒng)的功能要求        6
2.2 系統(tǒng)的技術(shù)要求        6
2.3 系統(tǒng)的組成及方案設(shè)計(jì)        7
3 系統(tǒng)的硬件設(shè)計(jì)        8
3.1 主控電路        9
3.2 煙霧探測(cè)電路的設(shè)計(jì)        12
3.2.1 MQ-2介紹        12
3.2.2 ADC0832介紹        14
3.3 液晶顯示電路設(shè)計(jì)        15
3.4 聲光報(bào)警提示電路        18
3.4.1 燈光提示電路        18
3.4.2 聲音報(bào)警電路        19
3.5 溫度采集電路        20
3.5.1 DS18B20概述        20
3.5.2 DS18B20引腳介紹        21
3.5.3 DS18B20的內(nèi)部結(jié)構(gòu)        22
3.5.4 DS18B20的程序流程圖        22
3.6 按鍵電路        23
4 系統(tǒng)的軟件設(shè)計(jì)        24
4.1 軟件介紹        24
4.2 系統(tǒng)程序流程圖        27
5火災(zāi)報(bào)警器的測(cè)試結(jié)果及結(jié)論        28
5.1 調(diào)試        28
5.2 結(jié)論        28
致謝        30
參考文獻(xiàn)        31
源程序        32

因?yàn)槠邢蓿噘Y料,請(qǐng)?jiān)诟郊邢螺d,(包含,原理圖、pcb圖、程序源碼、文檔)
  1. #include <reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
  2. #include "intrins.h"                                                                                          

  3. #define     u8                          unsigned char
  4. #define     u16                   unsigned int
  5. #define     uchar                          unsigned char
  6. #define     uint                   unsigned int

  7. uchar yushe_wendu=50;                                //溫度預(yù)設(shè)值
  8. uchar yushe_yanwu=45;                                //煙霧預(yù)設(shè)值
  9. uint wendu;                                                                 //溫度值全局變量
  10. uchar yanwu;                                                                 //用于讀取ADC數(shù)據(jù)

  11. //運(yùn)行模式  
  12. uchar Mode=0;                                                                 //=1是設(shè)置溫度閥值  =2是設(shè)置煙霧閥值        =0是正常監(jiān)控模式
  13. //管腳聲明
  14. sbit Led_Reg                 =P2^2;                                 //紅燈
  15. sbit Led_Yellow  =P2^4;                                 //黃燈
  16. sbit Buzzer             =P2^0;                                 //蜂鳴器
  17. sbit Fan                      =P3^3;                                 //


  18. /********************************************************************
  19. * 名稱(chēng) : delay_1ms()
  20. * 功能 : 延時(shí)1ms函數(shù)
  21. * 輸入 : q
  22. * 輸出 : 無(wú)
  23. ***********************************************************************/
  24. void delay_ms(uint q)
  25. {
  26.         uint i,j;
  27.         for(i=0;i<q;i++)
  28.                 for(j=0;j<110;j++);
  29. }
  30. /***********************************************************************************************************
  31. LCD1602相關(guān)函數(shù)
  32. ***********************************************************************************************************/

  33. //LCD管腳聲明 (RW引腳實(shí)物直接接地,因?yàn)楸驹O(shè)計(jì)只用到液晶的寫(xiě)操作,RW引腳一直是低電平)
  34. sbit LCDRS = P2^7;
  35. sbit LCDEN = P2^6;
  36. sbit D0                 = P0^0;
  37. sbit D1                 = P0^1;
  38. sbit D2                 = P0^2;
  39. sbit D3                 = P0^3;
  40. sbit D4                 = P0^4;
  41. sbit D5                 = P0^5;
  42. sbit D6                 = P0^6;
  43. sbit D7                 = P0^7;



  44. //LCD延時(shí)
  45. void LCDdelay(uint z)                  //該延時(shí)大約100us(不精確,液晶操作的延時(shí)不要求很精確)
  46. {
  47.   uint x,y;
  48.   for(x=z;x>0;x--)
  49.     for(y=10;y>0;y--);
  50. }
  51. void LCD_WriteData(u8 dat)         
  52. {
  53.         if(dat&0x01)D0=1;else D0=0;
  54.         if(dat&0x02)D1=1;else D1=0;
  55.         if(dat&0x04)D2=1;else D2=0;
  56.         if(dat&0x08)D3=1;else D3=0;
  57.         if(dat&0x10)D4=1;else D4=0;
  58.         if(dat&0x20)D5=1;else D5=0;
  59.         if(dat&0x40)D6=1;else D6=0;
  60.         if(dat&0x80)D7=1;else D7=0;
  61. }
  62. //寫(xiě)命令
  63. void write_com(uchar com)
  64. {
  65.   LCDRS=0;                                 
  66.         LCD_WriteData(com);
  67. //  DAT=com;
  68.   LCDdelay(5);
  69.   LCDEN=1;
  70.   LCDdelay(5);
  71.   LCDEN=0;
  72. }
  73. //寫(xiě)數(shù)據(jù)
  74. void write_data(uchar date)
  75. {
  76.   LCDRS=1;
  77.         LCD_WriteData(date);
  78. //  DAT=date;
  79.   LCDdelay(5);
  80.   LCDEN=1;
  81.   LCDdelay(5);
  82.   LCDEN=0;
  83. }

  84. /*------------------------------------------------
  85.               選擇寫(xiě)入位置
  86. ------------------------------------------------*/
  87. void SelectPosition(unsigned char x,unsigned char y)
  88. {     
  89.         if (x == 0)
  90.         {     
  91.                 write_com(0x80 + y);     //表示第一行
  92.         }
  93.         else
  94.         {      
  95.                 write_com(0xC0 + y);      //表示第二行
  96.         }        
  97. }
  98. /*------------------------------------------------
  99.               寫(xiě)入字符串函數(shù)
  100. ------------------------------------------------*/
  101. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  102. {     
  103.         SelectPosition(x,y) ;
  104.         while (*s)
  105.         {     
  106.                 write_data( *s);     
  107.                 s ++;     
  108.         }
  109. }
  110. //========================================================================
  111. // 函數(shù): void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l)
  112. // 應(yīng)用: LCD_Write_Char(0,1,366,4) ;
  113. // 描述: 在第0行第一個(gè)字節(jié)位置顯示366的后4位,顯示結(jié)果為 0366
  114. // 參數(shù): x:行,y:列,s:要顯示的字,l:顯示的位數(shù)
  115. // 返回: none.
  116. // 版本: VER1.0
  117. // 日期: 2013-4-1
  118. // 備注: 最大顯示65535
  119. //========================================================================
  120. void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l)
  121. {     
  122.         SelectPosition(x,y) ;

  123.         if(l>=5)
  124.                 write_data(0x30+s/10000%10);        //萬(wàn)位
  125.         if(l>=4)
  126.                 write_data(0x30+s/1000%10);                //千位
  127.         if(l>=3)
  128.                 write_data(0x30+s/100%10);                //百位
  129.         if(l>=2)
  130.                 write_data(0x30+s/10%10);                        //十位
  131.         if(l>=1)
  132.                 write_data(0x30+s%10);                //個(gè)位

  133. }
  134. /*1602指令簡(jiǎn)介
  135.   write_com(0x38);//屏幕初始化
  136.   write_com(0x0c);//打開(kāi)顯示 無(wú)光標(biāo) 無(wú)光標(biāo)閃爍
  137.   write_com(0x0d);//打開(kāi)顯示 陰影閃爍
  138.   write_com(0x0d);//打開(kāi)顯示 陰影閃爍
  139. */
  140. //1602初始化
  141. void Init1602()
  142. {
  143.   uchar i=0;
  144.   write_com(0x38);//屏幕初始化
  145.   write_com(0x0c);//打開(kāi)顯示 無(wú)光標(biāo) 無(wú)光標(biāo)閃爍
  146.   write_com(0x06);//當(dāng)讀或?qū)懸粋(gè)字符是指針后一一位
  147.   write_com(0x01);//清屏
  148.       
  149. }

  150. void Display_1602(yushe_wendu,yushe_yanwu,c,temp)
  151. {
  152.         //顯示預(yù)設(shè)溫度
  153.         LCD_Write_Char(0,6,yushe_wendu,2) ;
  154.       
  155.         //顯示預(yù)設(shè)煙霧
  156.         LCD_Write_Char(0,13,yushe_yanwu,3) ;
  157.       
  158.         //時(shí)時(shí)溫度
  159.         LCD_Write_Char(1,6,c/10,2) ;
  160.         write_data('.');
  161.         LCD_Write_Char(1,9,c%10,1) ;
  162.       
  163.         //時(shí)時(shí)煙霧
  164.         LCD_Write_Char(1,13,temp,3) ;
  165. }



  166. /***********************************************************************************************************
  167. ADC0832相關(guān)函數(shù)
  168. ***********************************************************************************************************/
  169. sbit ADCS         =P1^5; //ADC0832 片選
  170. sbit ADCLK  =P1^2; //ADC0832 時(shí)鐘
  171. sbit ADDI         =P1^3; //ADC0832 數(shù)據(jù)輸入                /*因?yàn)閱纹瑱C(jī)的管腳是雙向的,且ADC0832的數(shù)據(jù)輸入輸出不同時(shí)進(jìn)行,
  172. sbit ADDO         =P1^3; //ADC0832 數(shù)據(jù)輸出                /*為節(jié)省單片機(jī)引腳,簡(jiǎn)化電路所以輸入輸出連接在同一個(gè)引腳上



  173. //========================================================================
  174. // 函數(shù): unsigned int Adc0832(unsigned char channel)
  175. // 應(yīng)用:                 temp=Adc0832(0);
  176. // 描述: 讀取0通道的AD值
  177. // 參數(shù): channel:通道0和通道1選擇
  178. // 返回: 選取通道的AD值
  179. // 版本: VER1.0
  180. // 日期: 2015-05-29
  181. // 備注:
  182. //========================================================================
  183. unsigned int Adc0832(unsigned char channel)
  184. {
  185.         uchar i=0;
  186.         uchar j;
  187.         uint dat=0;
  188.         uchar ndat=0;
  189.         uchar  Vot=0;

  190.         if(channel==0)channel=2;
  191.         if(channel==1)channel=3;
  192.         ADDI=1;
  193.         _nop_();
  194.         _nop_();
  195.         ADCS=0;//拉低CS端
  196.         _nop_();
  197.         _nop_();
  198.         ADCLK=1;//拉高CLK端
  199.         _nop_();
  200.         _nop_();
  201.         ADCLK=0;//拉低CLK端,形成下降沿1
  202.         _nop_();
  203.         _nop_();
  204.         ADCLK=1;//拉高CLK端
  205.         ADDI=channel&0x1;
  206.         _nop_();
  207.         _nop_();
  208.         ADCLK=0;//拉低CLK端,形成下降沿2
  209.         _nop_();
  210.         _nop_();
  211.         ADCLK=1;//拉高CLK端
  212.         ADDI=(channel>>1)&0x1;
  213.         _nop_();
  214.         _nop_();
  215.         ADCLK=0;//拉低CLK端,形成下降沿3
  216.         ADDI=1;//控制命令結(jié)束
  217.         _nop_();
  218.         _nop_();
  219.         dat=0;
  220.         for(i=0;i<8;i++)
  221.         {
  222.                 dat|=ADDO;//收數(shù)據(jù)
  223.                 ADCLK=1;
  224.                 _nop_();
  225.                 _nop_();
  226.                 ADCLK=0;//形成一次時(shí)鐘脈沖
  227.                 _nop_();
  228.                 _nop_();
  229.                 dat<<=1;
  230.                 if(i==7)dat|=ADDO;
  231.         }
  232.         for(i=0;i<8;i++)
  233.         {
  234.                 j=0;
  235.                 j=j|ADDO;//收數(shù)據(jù)
  236.                 ADCLK=1;
  237.                 _nop_();
  238.                 _nop_();
  239.                 ADCLK=0;//形成一次時(shí)鐘脈沖
  240.                 _nop_();
  241.                 _nop_();
  242.                 j=j<<7;
  243.                 ndat=ndat|j;
  244.                 if(i<7)ndat>>=1;
  245.         }
  246.         ADCS=1;//拉低CS端
  247.         ADCLK=0;//拉低CLK端
  248.         ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)
  249.         dat<<=8;
  250.         dat|=ndat;

  251.         return(dat);            //return ad data
  252. }

  253. /***********************************************************************************************************
  254. DS18B20相關(guān)函數(shù)
  255. ***********************************************************************************************************/

  256. sbit DQ = P1^0;                                 //ds18b20的數(shù)據(jù)引腳



  257. /*****延時(shí)子程序:該延時(shí)主要用于ds18b20延時(shí)*****/
  258. void Delay_DS18B20(int num)
  259. {
  260.   while(num--) ;
  261. }
  262. /*****初始化DS18B20*****/
  263. void Init_DS18B20(void)
  264. {
  265.   unsigned char x=0;
  266.   DQ = 1;         //DQ復(fù)位
  267.   Delay_DS18B20(8);    //稍做延時(shí)
  268.   DQ = 0;         //單片機(jī)將DQ拉低
  269.   Delay_DS18B20(80);   //精確延時(shí),大于480us
  270.   DQ = 1;         //拉高總線(xiàn)
  271.   Delay_DS18B20(14);
  272.   x = DQ;           //稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗
  273.   Delay_DS18B20(20);
  274. }
  275. /*****讀一個(gè)字節(jié)*****/
  276. unsigned char ReadOneChar(void)
  277. {
  278.   unsigned char i=0;
  279.   unsigned char dat = 0;
  280.   for (i=8;i>0;i--)
  281.   {
  282.     DQ = 0;     // 給脈沖信號(hào)
  283.     dat>>=1;
  284.     DQ = 1;     // 給脈沖信號(hào)
  285.     if(DQ)
  286.     dat|=0x80;
  287.     Delay_DS18B20(4);
  288.   }
  289.   return(dat);
  290. }
  291. /*****寫(xiě)一個(gè)字節(jié)*****/
  292. void WriteOneChar(unsigned char dat)
  293. {
  294.   unsigned char i=0;
  295.   for (i=8; i>0; i--)
  296.   {
  297.     DQ = 0;
  298.     DQ = dat&0x01;
  299.     Delay_DS18B20(5);
  300.     DQ = 1;
  301.     dat>>=1;
  302.   }
  303. }
  304. /*****讀取溫度*****/
  305. unsigned int ReadTemperature(void)
  306. {
  307.   unsigned char a=0;
  308.   unsigned char b=0;
  309.   unsigned int t=0;
  310.   float tt=0;
  311.   Init_DS18B20();
  312.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  313.   WriteOneChar(0x44);  //啟動(dòng)溫度轉(zhuǎn)換
  314.   Init_DS18B20();
  315.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  316.   WriteOneChar(0xBE);  //讀取溫度寄存器
  317.   a=ReadOneChar();     //讀低8位
  318.   b=ReadOneChar();    //讀高8位
  319.   t=b;
  320.   t<<=8;
  321.   t=t|a;
  322.   tt=t*0.0625;
  323.   t= tt*10+0.5;     //放大10倍輸出并四舍五入
  324.   return(t);
  325. }
  326. //=====================================================================================
  327. //=====================================================================================
  328. //=====================================================================================


  329. /*****校準(zhǔn)溫度*****/
  330. u16 check_wendu(void)
  331. {
  332.         u16 c;
  333.         c=ReadTemperature()-5;                          //獲取溫度值并減去DS18B20的溫漂誤差
  334.         if(c<1) c=0;
  335.         if(c>=999) c=999;
  336.         return c;
  337. }

  338. /***********************************************************************************************************
  339. 按鍵檢測(cè)相關(guān)函數(shù)
  340. ***********************************************************************************************************/
  341. //按鍵
  342. sbit Key1=P1^6;                                 //設(shè)置鍵
  343. sbit Key2=P1^7;                                 //加按鍵
  344. sbit Key3=P3^2;                                 //減按鍵



  345. #define KEY_SET                 1                //設(shè)置
  346. #define KEY_ADD                        2                //加
  347. #define KEY_MINUS                3                //減


  348. //========================================================================
  349. // 函數(shù): u8 Key_Scan()
  350. // 應(yīng)用: temp=u8 Key_Scan();
  351. // 描述: 按鍵掃描并返回按下的鍵值
  352. // 參數(shù): NONE
  353. // 返回: 按下的鍵值
  354. // 版本: VER1.0
  355. // 日期: 2015-05-29
  356. // 備注: 該函數(shù)帶松手檢測(cè),按下鍵返回一次鍵值后返回0,直至第二次按鍵按下
  357. //========================================================================
  358. u8 Key_Scan()
  359. {         
  360.         static u8 key_up=1;//按鍵按松開(kāi)標(biāo)志
  361.         if(key_up&&(Key1==0||Key2==0||Key3==0))
  362.         {
  363.                 delay_ms(10);//去抖動(dòng)
  364.                 key_up=0;
  365.                 if(Key1==0)                        return 1;
  366.                 else if(Key2==0)return 2;
  367.                 else if(Key3==0)return 3;
  368.         }
  369.         else if(Key1==1&&Key2==1&&Key3==1)
  370.                 key_up=1;            
  371.         return 0;// 無(wú)按鍵按下
  372. }



  373. void main (void)
  374. {
  375.         u8 key;
  376.         wendu=check_wendu();                  //初始化時(shí)調(diào)用溫度讀取函數(shù) 防止開(kāi)機(jī)85°C
  377.         Init1602();                          //調(diào)用初始化顯示函數(shù)
  378.         LCD_Write_String(0,0,"SET T:00   E:000");  //開(kāi)機(jī)界面
  379.         LCD_Write_String(1,0,"NOW T:00.0 E:000");  
  380.         delay_ms(1000);
  381.         wendu=check_wendu();                  //初始化時(shí)調(diào)用溫度讀取函數(shù) 防止開(kāi)機(jī)85°C
  382.         while (1)                                                //主循環(huán)
  383.         {
  384.                 key=Key_Scan();                                        //按鍵掃描
  385.                 yanwu=Adc0832(0);                                //讀取煙霧值
  386.                 wendu=check_wendu();          //讀取溫度值
  387.                
  388.                 if(key==KEY_SET)
  389.                 {
  390.                         Mode++;
  391.                 }
  392.                
  393.                 switch(Mode)                                                //判斷模式的值
  394.                 {
  395.                         case 0:                                                                //監(jiān)控模式
  396.                         {
  397.                                 Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu);  //顯示預(yù)設(shè)溫度,預(yù)設(shè)煙霧,溫度值,煙霧值
  398.                                 if(yanwu>=yushe_yanwu)          //煙霧值大于等于預(yù)設(shè)值時(shí)
  399.                                 {
  400.                                         Led_Reg=0;                                          //煙霧指示燈亮
  401.                                         Fan=0;
  402.                                         Buzzer=0;                                                  //蜂鳴器報(bào)警
  403.                                 }
  404.                                 else                                                                                  //煙霧值小于預(yù)設(shè)值時(shí)
  405.                                 {
  406.                                         Led_Reg=1;                                          //關(guān)掉報(bào)警燈
  407.                                         Fan=1;
  408.                                 }
  409.                                 if(wendu>=(yushe_wendu*10))          //溫度大于等于預(yù)設(shè)溫度值時(shí)(為什么是大于預(yù)設(shè)值*10:因?yàn)槲覀円@示的溫度是有小數(shù)點(diǎn)后一位,是一個(gè)3位數(shù),25.9°C時(shí)實(shí)際讀的數(shù)是259,所以判斷預(yù)設(shè)值時(shí)將預(yù)設(shè)值*10)
  410.                                 {
  411.                                         Buzzer=0;                                                  //打開(kāi)蜂鳴器報(bào)警
  412.                                         Led_Yellow=0;                                          //打開(kāi)溫度報(bào)警燈
  413.                                 }
  414.                                 else                                                                                  //溫度值小于預(yù)設(shè)值時(shí)
  415.                                 {
  416.                                         Led_Yellow=1;                                          //關(guān)閉報(bào)警燈
  417.                                 }
  418.                                 if((yanwu<yushe_yanwu)&&(wendu<(yushe_wendu*10)))          //當(dāng)煙霧小于預(yù)設(shè)值并且溫度也小于預(yù)設(shè)值時(shí) (&&:邏輯與,左右兩邊的表達(dá)式都成立(都為真,也就是1)時(shí),該if語(yǔ)句才成立)
  419.                                 {
  420.                                         Buzzer=1;                                                  //停止報(bào)警
  421.                                 }
  422.                                 break;
  423.                         }
  424.                         case 1://預(yù)設(shè)溫度模式
  425.                         {
  426.                                 SelectPosition(0,5) ;                                        //指定位置
  427.                            write_com(0x0d);                                                        //陰影閃爍
  428.                                 if(key==KEY_ADD)                                                        //加鍵按下
  429.                                 {
  430.                                         yushe_wendu++;                                            //預(yù)設(shè)溫度值(閥值)加1
  431.                                         if(yushe_wendu>=99)                                         //當(dāng)閥值加到大于等于99時(shí)
  432.                                         yushe_wendu=99;                                                         //閥值固定為99
  433.                                         LCD_Write_Char(0,6,yushe_wendu,2) ;//顯示預(yù)設(shè)溫度
  434.                                 }
  435.                                 if(key==KEY_MINUS)                                                 //減鍵按下
  436.                                 {
  437.                                         if(yushe_wendu<=1)                                        //當(dāng)溫度上限值減小到1時(shí)
  438.                                         yushe_wendu=1;                          //固定為1
  439.                                         yushe_wendu--;                                                        //預(yù)設(shè)溫度值減一,最小為0
  440.                                         LCD_Write_Char(0,6,yushe_wendu,2) ;//顯示預(yù)設(shè)溫度
  441.                                 }
  442.                                 break;                                                                                          //執(zhí)行后跳出switch
  443.                         }
  444.                         case 2:                                //預(yù)設(shè)煙霧模式
  445.                         {
  446.                                 SelectPosition(0,12) ;                                //指定位置      
  447.                            write_com(0x0d);                                                        //打開(kāi)顯示 無(wú)光標(biāo) 光標(biāo)閃爍
  448.                                 if(key==KEY_ADD)                                                        //加鍵按下
  449.                                 {
  450.                                         if(yushe_yanwu>=255)        //當(dāng)閥值加到大于等于255時(shí)
  451.                                         yushe_yanwu=254;            //閥值固定為254
  452.                                         yushe_yanwu++;                                            //預(yù)設(shè)煙霧值(閥值)加1,最大為255
  453.                                         LCD_Write_Char(0,13,yushe_yanwu,3) ;//顯示預(yù)設(shè)煙霧
  454.                                 }
  455.                                 if(key==KEY_MINUS)                                                //減鍵按下
  456.                                 {
  457.                                         if(yushe_yanwu<=1)                                        //當(dāng)煙霧上限值減小到1時(shí)
  458.                                                 yushe_yanwu=1;                  //固定為1
  459.                                         yushe_yanwu--;                                                        //預(yù)設(shè)溫度值減一,最小為0         
  460.                                         LCD_Write_Char(0,13,yushe_yanwu,3) ;//顯示預(yù)設(shè)煙霧
  461.                                 }
  462.                                 break;
  463.                         }
  464.                         default        :      
  465.                         {
  466.                                 write_com(0x38);//屏幕初始化
  467.                                 write_com(0x0c);//打開(kāi)顯示 無(wú)光標(biāo) 無(wú)光標(biāo)閃爍
  468.                                 Mode=0;                        //恢復(fù)正常模式
  469.                                 break;
  470.                         }
  471.                 }
  472.                
  473.         }

  474. }
復(fù)制代碼



全部資料51hei下載地址:
煙霧報(bào)警器資料.7z (463.98 KB, 下載次數(shù): 277)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:694218 發(fā)表于 2020-2-18 11:45 | 只看該作者
調(diào)不出來(lái)啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:694218 發(fā)表于 2020-2-18 12:28 | 只看該作者
圖和程序不對(duì)應(yīng)吧,程序中引腳用的AT89C51吧?
回復(fù)

使用道具 舉報(bào)

地板
ID:737540 發(fā)表于 2020-4-26 11:38 | 只看該作者
源程序有錯(cuò)誤吧
回復(fù)

使用道具 舉報(bào)

5#
ID:519059 發(fā)表于 2020-5-5 10:12 | 只看該作者
壓縮文件里怎么沒(méi)有文檔呀?
回復(fù)

使用道具 舉報(bào)

6#
ID:742435 發(fā)表于 2020-5-5 11:17 | 只看該作者
請(qǐng)問(wèn)電源應(yīng)該接哪幾個(gè)端口
回復(fù)

使用道具 舉報(bào)

7#
ID:758429 發(fā)表于 2020-5-22 16:00 | 只看該作者
為什么壓縮包調(diào)不出來(lái)
回復(fù)

使用道具 舉報(bào)

8#
ID:785091 發(fā)表于 2020-6-26 17:49 | 只看該作者
Fan是什么意思
回復(fù)

使用道具 舉報(bào)

9#
ID:790946 發(fā)表于 2020-6-27 14:34 | 只看該作者
猛呀
大神級(jí)的操作
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品美女视频在线观看免费软件 | 午夜在线视频一区二区三区 | 国产精品永久免费视频 | 美女一级毛片 | 在线中文字幕av | 在线亚洲免费 | 天堂色 | 天堂一区二区三区四区 | 国产91成人 | 久久久久久久99 | 国产美女视频黄a视频免费 国产精品福利视频 | www.一区二区三区 | 久久精品国产一区二区电影 | 亚洲视频在线看 | 精品久久久久久久久久久 | 日韩三区在线观看 | 成人网在线看 | 九一精品| 国产精品久久国产精品 | 免费一区| 五月激情婷婷六月 | 殴美成人在线视频 | 亚洲精品一区国产精品 | 国产在线一区二区 | 欧美视频在线播放 | 午夜电影网 | 精品久久一 | 成人av一区二区亚洲精 | 在线观看免费av网 | 亚洲欧美在线观看 | 综合另类 | 国产精品视频一二三区 | 欧美一区视频 | 女同videos另类 | 天天操操 | 爱爱小视频 | 亚洲天堂二区 | 超碰最新在线 | 亚洲成年在线 | 欧美vide| 亚洲a在线观看 |