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

標(biāo)題: 基于51單片機(jī)的溫度火災(zāi)煙霧報(bào)警器proteus仿真及程序 [打印本頁]

作者: 易宇王    時(shí)間: 2017-3-31 15:41
標(biāo)題: 基于51單片機(jī)的溫度火災(zāi)煙霧報(bào)警器proteus仿真及程序
這個(gè)溫度火災(zāi)煙霧報(bào)警器設(shè)計(jì)的51單片機(jī)程序及注釋和protus仿真都有,非常好用.
煙霧傳感器仿真中沒有,其實(shí)就是傳感器檢測時(shí)相應(yīng)的電阻值會(huì)變化,用滑動(dòng)電位器代替就ok


單片機(jī)源程序:
  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. * 名稱 : delay_1ms()
  20. * 功能 : 延時(shí)1ms函數(shù)
  21. * 輸入 : q
  22. * 輸出 : 無
  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ì)只用到液晶的寫操作,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. //寫命令
  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. //寫數(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.               選擇寫入位置
  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.               寫入字符串函數(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);        //萬位
  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指令簡介
  135.   write_com(0x38);//屏幕初始化
  136.   write_com(0x0c);//打開顯示 無光標(biāo) 無光標(biāo)閃爍
  137.   write_com(0x0d);//打開顯示 陰影閃爍
  138.   write_com(0x0d);//打開顯示 陰影閃爍
  139. */
  140. //1602初始化
  141. void Init1602()
  142. {
  143.   uchar i=0;
  144.   write_com(0x38);//屏幕初始化
  145.   write_com(0x0c);//打開顯示 無光標(biāo) 無光標(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ī)引腳,簡化電路所以輸入輸出連接在同一個(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;         //拉高總線
  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. /*****寫一個(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);  //跳過讀序號(hào)列號(hào)的操作
  313.   WriteOneChar(0x44);  //啟動(dòng)溫度轉(zhuǎn)換
  314.   Init_DS18B20();
  315.   WriteOneChar(0xCC);  //跳過讀序號(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. 按鍵檢測相關(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ù)帶松手檢測,按下鍵返回一次鍵值后返回0,直至第二次按鍵按下
  357. //========================================================================
  358. u8 Key_Scan()
  359. {         
  360.         static u8 key_up=1;//按鍵按松開標(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;// 無按鍵按下
  372. }



  373. void main (void)
  374. {
  375.         u8 key;
  376.         wendu=check_wendu();                  //初始化時(shí)調(diào)用溫度讀取函數(shù) 防止開機(jī)85°C
  377.         Init1602();                          //調(diào)用初始化顯示函數(shù)
  378.         LCD_Write_String(0,0,"SET T:00   E:000");  //開機(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ù) 防止開機(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;                                                  //打開蜂鳴器報(bào)警
  412.                                         Led_Yellow=0;                                          //打開溫度報(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語句才成立)
  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);                                                        //打開顯示 無光標(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.                                        
  454. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼


源碼下載:
1__c程序 注釋.zip (84.62 KB, 下載次數(shù): 1984)

仿真是Proteus7.5版本的(dsn文件)
4__protus仿真.zip (67.5 KB, 下載次數(shù): 1616)

作者: kirby004    時(shí)間: 2017-4-4 13:29
剛才下載一個(gè)有問題的,這個(gè)不知道能不能用。
作者: xxz    時(shí)間: 2017-4-16 21:46
謝謝分享好資料,51黑有你更精彩!!!
作者: ljs1148087929    時(shí)間: 2017-5-2 16:39
下來看看
作者: zqy181818    時(shí)間: 2017-5-3 12:37
很全面的資料!
作者: 太難了!!!!    時(shí)間: 2017-6-10 22:59
先看看
作者: 太難了!!!!    時(shí)間: 2017-6-10 23:00
先看看,是否會(huì)用到
作者: 1102396223    時(shí)間: 2017-6-12 22:10
很無奈
作者: 1102396223    時(shí)間: 2017-6-12 22:10
能用的嗎?
作者: 1102396223    時(shí)間: 2017-6-13 12:22
下載了,試試看有沒有用。
作者: hehung    時(shí)間: 2017-6-21 10:09
看看
作者: 小武過河    時(shí)間: 2017-6-23 18:20
看看。。。。。
作者: DZSJD    時(shí)間: 2017-6-24 21:37
有沒有用呢
作者: zhangkun13    時(shí)間: 2017-6-26 23:49
馬克一波

作者: Mooooing    時(shí)間: 2017-7-9 11:58
好棒!
作者: houzi19870822    時(shí)間: 2017-8-20 16:28
終于找到你 我的 天啊 真累
作者: yangyanru    時(shí)間: 2017-9-26 10:57
可是不懂這個(gè)的原理,有人能解釋一下嗎
作者: 大撒發(fā)    時(shí)間: 2017-9-26 22:22
為什么下不了

作者: ants133    時(shí)間: 2017-9-27 12:43
謝謝!
作者: 666hyx    時(shí)間: 2017-10-6 16:51
好東西
作者: 1844384039    時(shí)間: 2017-10-13 23:15
kirby004 發(fā)表于 2017-4-4 13:29
剛才下載一個(gè)有問題的,這個(gè)不知道能不能用。

你發(fā)給我看一下
私聊
作者: 殘夢不就    時(shí)間: 2017-10-31 10:34
很不錯(cuò)的程序
作者: zhuyinhan    時(shí)間: 2017-11-1 10:48
這個(gè)可以用么?
作者: 千矢    時(shí)間: 2017-11-29 16:14
很不錯(cuò)
作者: VincentL    時(shí)間: 2017-11-30 09:24
謝謝分享
作者: yilinghai    時(shí)間: 2017-11-30 14:07
親測可以用。溫度報(bào)警限定50℃,煙霧報(bào)警限定100,不錯(cuò)

1.jpg (492.42 KB, 下載次數(shù): 258)

1.jpg

作者: 422445665    時(shí)間: 2017-12-10 21:21
謝謝樓主
對我很有用


作者: zr7802    時(shí)間: 2017-12-11 23:44
謝謝樓主
作者: ID_DZAHZ666    時(shí)間: 2017-12-16 17:07
謝謝,一看就是好東西
作者: 1343094737    時(shí)間: 2017-12-17 13:55
不是c51嗎這里怎么是c52
作者: 1343094737    時(shí)間: 2017-12-17 13:56
程序不是c51嗎這里怎么是c52啊

作者: 15556501820    時(shí)間: 2017-12-17 15:21
程序很棒 ,仿真圖也好
作者: a0407852    時(shí)間: 2017-12-18 15:18
樓主能說下這個(gè)程序的作用嗎?看不太懂
void LCD_WriteData(u8 dat)         
{
        if(dat&0x01)D0=1;else D0=0;
        if(dat&0x02)D1=1;else D1=0;
        if(dat&0x04)D2=1;else D2=0;
        if(dat&0x08)D3=1;else D3=0;
        if(dat&0x10)D4=1;else D4=0;
        if(dat&0x20)D5=1;else D5=0;
        if(dat&0x40)D6=1;else D6=0;
        if(dat&0x80)D7=1;else D7=0;
}
作者: xiaoyun107    時(shí)間: 2018-1-10 12:36
很好,挺實(shí)在
作者: 3329745996    時(shí)間: 2018-1-10 18:05
贊一個(gè)!
作者: 明明不是我    時(shí)間: 2018-3-18 09:45
希望有用,畢業(yè)論文參考
作者: 嗨你好    時(shí)間: 2018-3-25 11:57
yilinghai 發(fā)表于 2017-11-30 14:07
親測可以用。溫度報(bào)警限定50℃,煙霧報(bào)警限定100,不錯(cuò)

在嗎
可以把東西分享下嗎
作者: qweruio    時(shí)間: 2018-4-5 09:18
怎么用proteus打開仿真啊
作者: 張慧杰    時(shí)間: 2018-4-9 21:00
給力強(qiáng)強(qiáng)強(qiáng)強(qiáng)
作者: qweruio    時(shí)間: 2018-4-10 18:54
我的為什么運(yùn)行有問題啊

QQ截圖20180410185348.png (17.24 KB, 下載次數(shù): 186)

QQ截圖20180410185348.png

作者: qwertyuio111    時(shí)間: 2018-4-13 16:41
寫的很不錯(cuò)啊
作者: qwertyuio111    時(shí)間: 2018-4-13 16:42
可以用的
作者: tudouchen    時(shí)間: 2018-4-17 20:12
看起來不錯(cuò)呀。
作者: tudouchen    時(shí)間: 2018-4-18 13:33
不錯(cuò)的文件,可以正常運(yùn)行。
作者: 18830266820    時(shí)間: 2018-4-22 15:19
很給力,贊一個(gè)
作者: 統(tǒng)一    時(shí)間: 2018-4-23 13:03
很有用,幫助我打開了思路,贊一個(gè)
作者: smile555    時(shí)間: 2018-4-24 15:30
下載來看看能不能用!!
作者: 617129170    時(shí)間: 2018-4-25 17:12
怎么換成12864的顯示屏啊

作者: GHN    時(shí)間: 2018-4-26 16:38
感謝分享。

作者: 統(tǒng)一    時(shí)間: 2018-4-27 15:05
下面三個(gè)按鍵有什么作用
作者: 51heiRay    時(shí)間: 2018-4-27 19:23
謝謝分享
作者: 523    時(shí)間: 2018-5-4 11:49
感謝 拿來借鑒看看  x'w
作者: 523    時(shí)間: 2018-5-4 20:18
第20行的引腳仿真里頭沒有連接 有什么用
作者: 15120252250    時(shí)間: 2018-5-5 17:39
哇塞,太感謝樓主了,,我們一直畫不出那個(gè)煙霧傳感器部分
作者: Armxmr    時(shí)間: 2018-5-6 09:02
做的真不錯(cuò)啊,樓主給力
作者: 淅瀝瀝    時(shí)間: 2018-5-6 10:36
謝謝分享
作者: 瘦成大雞腿    時(shí)間: 2018-5-8 14:46
很好!解決了我的問題
作者: 瘦成大雞腿    時(shí)間: 2018-5-8 14:54
qweruio 發(fā)表于 2018-4-10 18:54
我的為什么運(yùn)行有問題啊

.hex路徑有問題重新載入一次
作者: 小胖子、    時(shí)間: 2018-5-8 21:37
博主,謝謝你的資料,但我的畢設(shè)是基于單片機(jī)的語音數(shù)字聯(lián)網(wǎng)火災(zāi)報(bào)警系統(tǒng)設(shè)計(jì),你知道關(guān)于聯(lián)網(wǎng)這個(gè)功能該如何實(shí)現(xiàn)嗎?哪有這個(gè)方面的鏈接嗎?
作者: zhangyanxue    時(shí)間: 2018-5-9 10:56
謝謝樓主
作者: Armxmr    時(shí)間: 2018-5-9 18:10
ADDI=channel&0x1;這個(gè)好象有問題吧,如果通道0的話,就成了差分輸入了,樓主可以解疑下嗎
作者: Armxmr    時(shí)間: 2018-5-9 18:10
a0407852 發(fā)表于 2017-12-18 15:18
樓主能說下這個(gè)程序的作用嗎?看不太懂
void LCD_WriteData(u8 dat)         
{

同問,這個(gè)子函數(shù)功能
作者: Armxmr    時(shí)間: 2018-5-9 20:42
        for(i=0;i<8;i++)
        {
                dat|=ADDO;//收數(shù)據(jù)
                ADCLK=1;
                _nop_();
                _nop_();
                ADCLK=0;//形成一次時(shí)鐘脈沖
                _nop_();
                _nop_();
                dat<<=1;
                if(i==7)dat|=ADDO;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO;//收數(shù)據(jù)
                ADCLK=1;
                _nop_();
                _nop_();
                ADCLK=0;//形成一次時(shí)鐘脈沖
                _nop_();
                _nop_();
                j=j<<7;
                ndat=ndat|j;
                if(i<7)ndat>>=1;
        }
這有問題啊,先收的數(shù)據(jù)是高位開始的,然后接受低位,感覺有問題啊,求大神解釋
作者: Armxmr    時(shí)間: 2018-5-9 20:43
1102396223 發(fā)表于 2017-6-13 12:22
下載了,試試看有沒有用。

仿真能用,但是實(shí)際不清楚,感覺有些問題
作者: zhangyanxue    時(shí)間: 2018-5-10 11:30
仿真時(shí)現(xiàn)這種錯(cuò)誤是怎么回事

IMG_20180510_101749.jpg (74.45 KB, 下載次數(shù): 543)

IMG_20180510_101749.jpg

作者: wen1234567890    時(shí)間: 2018-5-10 13:30
很合適,下載看看
作者: danpianji愛好    時(shí)間: 2018-5-10 19:00
ljs1148087929 發(fā)表于 2017-5-2 16:39
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

可以發(fā)一份嗎
作者: zw178    時(shí)間: 2018-5-14 01:06
厲害了大兄弟
作者: qq1324200472    時(shí)間: 2018-5-17 20:35
謝謝
作者: 風(fēng)箏之上    時(shí)間: 2018-5-19 08:37
謝謝樓主分享
作者: only大煞風(fēng)景    時(shí)間: 2018-5-22 22:12
程序怎么下啊
作者: only大煞風(fēng)景    時(shí)間: 2018-5-22 22:19
好,程序怎么有點(diǎn)問題
作者: 2我42323412    時(shí)間: 2018-5-24 20:10
學(xué)習(xí)了
作者: 萌東東    時(shí)間: 2018-5-26 17:15
很全面
作者: 517949772    時(shí)間: 2018-5-29 19:55

51Hei(51黑)論壇有你更精彩
作者: 徐路    時(shí)間: 2018-6-3 15:59
贊一個(gè)
作者: xiancv123    時(shí)間: 2018-6-3 17:42
謝謝分享,收藏了
作者: stevia    時(shí)間: 2018-6-4 16:33
感謝樓主給力
作者: echoness    時(shí)間: 2018-6-6 19:25
厲害了我的哥

作者: bilibili02    時(shí)間: 2018-6-6 22:23
哇 剛好老師叫我們做這個(gè) 謝謝樓主
作者: 誒呦誒呦    時(shí)間: 2018-6-7 19:17
特別感謝
作者: 阿瓦發(fā)是發(fā)    時(shí)間: 2018-6-11 11:53
程序怎么有點(diǎn)問題
作者: 子子兮林    時(shí)間: 2018-6-22 14:31
等待下載試試 希望可以用到

作者: edura    時(shí)間: 2018-7-2 10:35
ants133 發(fā)表于 2017-9-27 12:43
謝謝!

啦啦啦。。謝謝
作者: edura    時(shí)間: 2018-7-2 11:56
DZSJD 發(fā)表于 2017-6-24 21:37
有沒有用呢

很有用,真的!
作者: edura    時(shí)間: 2018-7-2 12:04
這個(gè)很有用的,謝謝!
作者: 馮大壯    時(shí)間: 2018-7-5 19:04
很好的程序哈哈
作者: 馮大壯    時(shí)間: 2018-7-5 19:07
想問一下,確定可以使用嗎,還有這個(gè)是at89s52嘛,單片機(jī)的芯片?
作者: 譚小哥    時(shí)間: 2018-7-5 19:13
666,不錯(cuò)不錯(cuò)
作者: 馮大壯    時(shí)間: 2018-7-5 19:31
想問一下,這個(gè)程序用keil跑的話,選擇哪個(gè)芯片型號(hào)?
作者: kkkkllu    時(shí)間: 2018-9-13 08:58
想問一下 如果不用adc模塊的話 要如何接入
作者: 蘇沐秋    時(shí)間: 2018-9-14 19:49
很好用
作者: 不妥    時(shí)間: 2018-9-14 22:02
厲害了,樓主
作者: 不妥    時(shí)間: 2018-9-14 22:02
真的厲害
作者: 可不可以    時(shí)間: 2018-10-11 10:00
希望能用
作者: danaofu    時(shí)間: 2018-10-11 10:49
很完整 有點(diǎn)c點(diǎn)個(gè)贊
作者: danaofu    時(shí)間: 2018-10-11 10:50
很完整 我下載試試
作者: heshan1    時(shí)間: 2018-11-8 09:59
kirby004 發(fā)表于 2017-4-4 13:29
剛才下載一個(gè)有問題的,這個(gè)不知道能不能用。

nengyong
作者: heshan1    時(shí)間: 2018-11-8 10:06
經(jīng)典很實(shí)用啊
作者: TTQ001    時(shí)間: 2018-11-12 04:50
很全面, 謝謝分享






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲一区中文字幕在线观看 | 国产电影一区二区 | 久久久91精品国产一区二区三区 | 精品美女| 亚洲第一网站 | 亚洲欧美成人在线 | 免费观看羞羞视频网站 | 久草成人| 完全免费在线视频 | 一区二区三区免费 | 中文字幕高清在线 | 亚洲精品在线视频 | 国产精品夜夜夜一区二区三区尤 | 真人女人一级毛片免费播放 | 亚洲综合在线播放 | 国产三级精品三级在线观看四季网 | 国产精品亚洲综合 | 亚洲永久字幕 | 91观看 | 韩国av网站在线观看 | 亚洲欧美一区二区三区情侣bbw | 欧美一区二区三 | 亚洲国产精品一区二区第一页 | 亚洲综合在线播放 | 免费色网址 | 中文字幕影院 | 国产欧美精品一区二区色综合朱莉 | 免费一看一级毛片 | 欧美亚洲国产一区二区三区 | 精品视频一区二区三区 | 欧美激情国产日韩精品一区18 | 久久视频免费看 | 黄色毛片一级 | 日韩欧美在线一区 | 在线播放一区 | 国产精品成人一区二区三区夜夜夜 | 久久99精品久久久久子伦 | 欧美a区 | 91久久精品国产91久久 | 日韩精品一二三 | 在线免费看91 |