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

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

QQ登錄

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

搜索
查看: 1668|回復(fù): 1
收起左側(cè)

單片機(jī)的可燃?xì)怏w報(bào)警傳感器設(shè)計(jì)

[復(fù)制鏈接]
ID:519189 發(fā)表于 2019-4-23 19:48 | 顯示全部樓層 |閱讀模式
本人上周才完成了單片機(jī)的可燃?xì)怏w報(bào)警傳感器。
用了一周時(shí)間才算完成。附件中包含了源碼程序以及PCB電路設(shè)計(jì)。
皆為原創(chuàng)作品 請(qǐng)大家多多指導(dǎo)。
  1. /*頭文件*/

  2. #include<reg52.h>
  3. #include <intrins.h>

  4. /*AD寄存器定義*/
  5. sfr ADC_CONTR=0xBC;
  6. sfr ADC_DATA=0xBD;
  7. sfr ADC_LOW2=0xBE;
  8. sfr P1_ADC_EN=0x9D;
  9. sfr P4=0xC0;
  10. /*****************宏定義******************/
  11. #define uint unsigned int
  12. #define uchar unsigned char
  13. #define ADC_POWER 0x80
  14. #define ADC_FLAG 0x10
  15. #define ADC_START 0x08
  16. #define ADC_SPEEDHH 0x00
  17. #define ADC_SPEEDH 0x20
  18. #define ADC_SPEEDL 0x40
  19. #define ADC_SPEEDLL 0x60
  20. #define uint unsigned int
  21. #define uchar unsigned char
  22. uint ad_value,NH4_value;
  23. float AN_value;
  24. /***********位操作端口定義**************/
  25. sbit set_key=P1^4;          //“設(shè)置”鍵 K1
  26. sbit add_key=P1^5;           //“加”鍵 K2
  27. sbit cut_key=P1^7;           //  “減”鍵 K3
  28. sbit speak=P3^7;          //   蜂鳴器
  29. sbit JK=P3^6;                 //           繼電器
  30. sbit qian_wei=P1^0;
  31. sbit bai_wei=P1^1;
  32. sbit shi_wei=P1^2;
  33. sbit ge_wei=P1^3;
  34. uchar y_data[4];   //儲(chǔ)存煙霧的數(shù)據(jù)
  35. int set_data=50;   //報(bào)警初始值的設(shè)定
  36. uchar temp[4]={0,0,0,0};
  37. uchar bianma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  38. uchar flog4;
  39. void delay_1ms(uchar i)
  40. {
  41.           uint x,y;
  42.         for(x=i;x>0;x--)
  43.                 for(y=124;y>0;y--);
  44. }

  45. void display()
  46. {
  47.         qian_wei=0;
  48.         bai_wei=1;
  49.         shi_wei=1;
  50.         ge_wei=1;
  51.         P2=bianma[y_data[0]];
  52.         delay_1ms(5);
  53.         qian_wei=1;
  54.         bai_wei=0;
  55.         shi_wei=1;
  56.         ge_wei=1;
  57.         P2=bianma[y_data[1]];
  58.         delay_1ms(5);
  59.         P2=0xff;
  60.         qian_wei=1;
  61.         bai_wei=1;
  62.         shi_wei=0;
  63.         ge_wei=1;
  64.         P2=bianma[y_data[2]];
  65.         delay_1ms(5);
  66.         P2=0xff;
  67.         qian_wei=1;
  68.         bai_wei=1;
  69.         shi_wei=1;
  70.         ge_wei=0;
  71.         P2=bianma[y_data[3]];
  72.         delay_1ms(5);
  73.         P2=0xff;
  74. }
  75. void display2()
  76. {
  77.         temp[0]=set_data/1000;                  
  78.         temp[1]=(set_data%1000)/100;
  79.         temp[2]=(set_data%100)/10;
  80.         temp[3]=set_data%10;
  81.         qian_wei=0;
  82.         bai_wei=1;
  83.         shi_wei=1;
  84.         ge_wei=1;
  85.         P2=bianma[temp[0]];
  86.         delay_1ms(5);
  87.         P2=0xff;
  88.         qian_wei=1;
  89.         bai_wei=0;
  90.         shi_wei=1;
  91.         ge_wei=1;
  92.         P2=bianma[temp[1]];
  93.         delay_1ms(5);
  94.         P2=0xff;
  95.         qian_wei=1;
  96.         bai_wei=1 ;
  97.         shi_wei=0;
  98.         ge_wei=1;
  99.         P2=bianma[temp[2]];
  100.         delay_1ms(5);
  101.         P2=0xff;
  102.         qian_wei=1;
  103.         bai_wei=1;
  104.         shi_wei=1;
  105.         ge_wei=0;
  106.         P2=bianma[temp[3]];
  107.         delay_1ms(5);
  108.         P2=0xff;
  109. }

  110. /********** 模數(shù)轉(zhuǎn)換初始換函數(shù)******************/
  111. void init_ADC()
  112. {
  113.         P1_ADC_EN=0x40;
  114.         ADC_DATA=0;
  115.         ADC_LOW2=0;
  116.         ADC_CONTR=ADC_SPEEDLL|ADC_POWER;
  117.         delay_1ms(20);
  118. }
  119. /********** 模數(shù)轉(zhuǎn)換函數(shù)******************/
  120. uint  ADC(uchar num)  //參數(shù)num用于指定是哪個(gè)模擬量轉(zhuǎn)換
  121. {
  122.         ADC_CONTR=ADC_POWER|ADC_SPEEDLL|num|ADC_START;
  123.         _nop_();_nop_();_nop_();_nop_();
  124.         while(!(ADC_CONTR&ADC_FLAG));

  125.         ADC_CONTR&=~ADC_FLAG;
  126.         ad_value=ADC_DATA*4+ADC_LOW2;    //轉(zhuǎn)換的結(jié)果是十位的 高八位放在ADC_DATA中 低兩位放在ADC_LOW2
  127.         return ad_value;                                 //        將轉(zhuǎn)換后的數(shù)字量返回
  128. }
  129. /********** 模數(shù)轉(zhuǎn)換后數(shù)據(jù)處理函數(shù)******************/
  130. void pos_AD()
  131. {
  132.         AN_value=ADC(6); //          裝換氨氣的濃度 把轉(zhuǎn)換后的數(shù)字量結(jié)果賦給AN_value
  133.         delay_1ms(5);
  134. //        /***對(duì)轉(zhuǎn)換后的數(shù)字量進(jìn)行矯正***/
  135.         if(AN_value>900)
  136.         {
  137.                 AN_value=900;
  138.         }
  139.         NH4_value=(900-AN_value)*0.9765625;
  140.         y_data[0]=NH4_value/1000;                   //將氣體濃度值的個(gè)位 十位 百位 千位 分開(kāi)  用于顯示
  141.         y_data[1]=(NH4_value%1000)/100;
  142.         y_data[2]=(NH4_value%100)/10;
  143.         y_data[3]=NH4_value%10;
  144. }
  145. /********** 報(bào)警處理函數(shù)******************/
  146. void baojing()
  147. {
  148.           if(set_data<NH4_value) //判斷是否有報(bào)警 如果有就進(jìn)入函數(shù)
  149.           {
  150.                         speak=0;
  151.                         JK=0;
  152.           }
  153.           else                   //沒(méi)有報(bào)警情況的出現(xiàn)
  154.           {   
  155.                  speak=1;                                 
  156.                  JK=1;                       
  157.           }          
  158. }
  159. /**********主函數(shù)******************/
  160. void main()
  161. {       
  162.         init_ADC();           //模數(shù)轉(zhuǎn)換初始化
  163.         speak=1;                                 
  164.         JK=1;
  165.         while(1)
  166.         {
  167.                 if(set_key==0)
  168.          {
  169.                  delay_1ms(5);
  170.                 if(set_key==0)
  171.                 {                 
  172.                         flog4=!flog4;
  173.                         while(set_key==0);
  174.                 }
  175.         }
  176.         if(flog4==1)
  177.         {
  178.                  if(add_key==0)
  179.                         {
  180.                          delay_1ms(5);
  181.                          if(add_key==0)
  182.                          {
  183.                                  set_data=set_data+1;
  184.                                 while(add_key==0);
  185.                                 if(set_data>5000)
  186.                                         {
  187.                                                 set_data=5000;
  188.                                         }
  189.                          }
  190.                         }
  191.                         if(cut_key==0)
  192.                         {
  193.                          delay_1ms(5);
  194.                          if(cut_key==0)
  195.                          {
  196.                                  set_data=set_data-1;
  197.                                 while(cut_key==0);
  198.                                 if(set_data<=0)
  199.                                 {
  200.                                         set_data=0;
  201.                                 }
  202.                          }
  203.                         }
  204.                           display2();
  205.                   }
  206.                 else
  207.                 {
  208.                     pos_AD();
  209.                         display();
  210.                         baojing();
  211.                 }
  212.                 }                         

  213. }
復(fù)制代碼


原理圖.pdf

153.37 KB, 下載次數(shù): 40, 下載積分: 黑幣 -5

原理圖

煙霧報(bào)警器.rar

1.56 KB, 下載次數(shù): 34, 下載積分: 黑幣 -5

源碼

回復(fù)

使用道具 舉報(bào)

ID:520134 發(fā)表于 2019-4-24 03:44 來(lái)自觸屏版 | 顯示全部樓層
學(xué)習(xí)了啊是不是
回復(fù)

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区在线观看 | 在线成人免费视频 | av日韩高清 | 国产高清免费视频 | 亚洲福利在线观看 | 欧美精品在线一区二区三区 | 亚洲免费精品一区 | 中文字幕视频三区 | 成人午夜毛片 | 午夜寂寞影院在线观看 | 精品国产乱码久久久久久88av | 日韩在线免费 | 久久久久久91香蕉国产 | 亚洲视频一区二区三区四区 | 亚洲区一区二区 | 久久精品91久久久久久再现 | 精品久久久久久久久久 | 人妖一区 | 亚洲综合婷婷 | 亚洲女人天堂成人av在线 | 中文字幕在线剧情 | 久久综合av | 一区网站| 欧美激情va永久在线播放 | 亚洲成人自拍 | 亚洲经典一区 | 亚洲国产精品视频 | 亚洲国产高清免费 | 欧美在线视频一区二区 | 成人在线视频免费观看 | 国产视频三区 | 欧美精品久久久久久久久久 | 精精国产xxxx视频在线播放 | 国产欧美日韩 | 国产精品九九九 | 成人免费观看男女羞羞视频 | 色综合色综合色综合 | 精品国产一区二区三区成人影院 | 久久精品黄色 | 中日韩av| 99精品国产一区二区三区 |