freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

室內一氧化碳濃度檢測報警器的設計畢業(yè)論文-資料下載頁

2025-06-29 10:46本頁面

【導讀】作所取得的成果。除文中已經注明引用的內容外,本論文不含任何其他個人或集體已。經發(fā)表或撰寫過的作品成果。對本文的研究做出重要貢獻的個人和集體,均已在文中。以明確方式標明。本人完全意識到本聲明的法律結果由本人承擔。學校有權保留并向國家有關部門或機構送交論文的復印件,允許學位論文被。保密論文注釋:本學位論文屬于保密范圍,在2年解密后適用本授權書。AT89C52單片機,選擇MQ-2一氧化碳傳感器。一氧化碳傳感器將檢測到的信號傳遞給。計原理和硬件電路,若臥室的一氧化碳濃度超過設定值,報警電路發(fā)出警報。我國每年都有人因為煤氣中毒搶救不及時而失去生命,煤氣的主要。大量的一氧化碳被吸入人和動物體內,會與肺部的血紅。毒和嚴重性中毒。分患者可發(fā)生繼發(fā)性腦病。們的安全增加一道屏障。用AT89C52和MQ-2完成要求,很大程度上降低了功耗,提高了精度。

  

【正文】 bit CLK=P2^2。 sbit DO=P2^3。 sbit DI=P2^4。//數(shù)據輸入 uchar flog4,temp,a。 uchar code tab1[]={BrAC: PPM}。 //測量值顯示的固定字符 uchar code tab2[]={setD: PPM}。//報警值顯示的固定字符 uint set_D=50。 //報警初始值的設定 uchar XX[3]={0,0,0}。 uchar MQ_data[3]。 25 uchar temp,i。 uint MQ,MQ1。 void delay_1ms(uint xms)//延時函數(shù) , 有參函數(shù) { uint x,y。 for(x=xms。x0。x) for(y=124。y0。y)。 } //****液晶寫入指令函數(shù) ****// void write_1602(uchar ) { rs=0。//數(shù)據 /指令選擇置為指令 P0=。//送入數(shù)據 delay_1ms(12)。 en=1。//拉高使能端,為制造有效的下降沿做準備 delay_1ms(12)。 en=0。//en 由高變低,產生下降沿,液晶執(zhí)行命令 } //***液晶寫入數(shù)據函數(shù) ****// void write_1602dat(uchar dat) { rs=1。//數(shù)據 /指令選擇置為數(shù)據 P0=dat。//送入數(shù)據 delay_1ms(12)。 en=1。 //en 置高電平,為制造下降沿做準備 delay_1ms(12)。 26 en=0。 //en 由高變低,產生下降沿,液晶執(zhí)行命令 } //***液晶初始化函數(shù) ****// void lcd_init() { write_1602(0x38)。//設置液晶工作模式,意思: 16*2 行顯示, 5*7 點陣, 8 位數(shù)據 write_1602(0x0c)。//開顯示不顯示光標 write_1602(0x06)。//整屏不移動,光標自動右移 write_1602(0x01)。//清顯示 write_1602(yh+0)。//顯示固定符號從第一行第 1 個位置之后開始顯示 for(a=0。a11。a++) { write_1602dat(tab1[a])。//向液晶屏寫顯示的固定符號部分 } write_1602(er+0)。// 顯示第二行固定符號 for(a=0。a11。a++) { write_1602dat(tab2[a])。// } } void pros_data() { XX[0]=set_D/100。 XX[1]=set_D%100/10。 XX[2]=set_D%10。 write_1602(er+5)。 27 for(a=0。a3。a++) { write_1602dat(XX[a]+0x30)。 } } void startADC() { CS=1。 _nop_()。 _nop_()。 CLK=0。 _nop_()。 _nop_()。 CS=0。 _nop_()。 _nop_()。 DI=1。 _nop_()。 _nop_()。 CLK=1。 _nop_()。 _nop_()。 DI=0。 _nop_()。 _nop_()。 28 CLK=0。 _nop_()。 _nop_()。 } void choiceADC(uint CH)//CH 為 0 選擇通道 ch0,為 1,選擇 ch1 進行 AD 轉換 { startADC()。 if(CH==0) { DI=1。 _nop_()。 CLK=1。//上升沿 DI=1 _nop_()。 CLK=0。//1 個下降沿 DI=1 _nop_()。 DI=0。 _nop_()。 CLK=1。 _nop_()。 CLK=0。//第 3 個上升沿 DI=0 _nop_()。 } else { CLK=0。 _nop_()。 DI=1。 29 _nop_()。 CLK=1。//上升沿 DI=1 _nop_()。 CLK=0。//1 個下降沿 DI=1 _nop_()。 DI=1。 _nop_()。 CLK=1。//第 3 個上升沿 DI=0 _nop_()。 } /********通道選擇結束開始讀取轉換后的二進制數(shù) ****/ CLK=1。 _nop_()。 CLK=0。//下降沿讀數(shù),一下進行判斷和處理 ,共 8 次 for(i=0。i8。i++) { DI=1。 if(DO) { temp|=0x01。 } else { tempamp。=0xfe。 } CLK=0。 _nop_()。 30 CLK=1。 temp=temp1。 } MQ=temp。 } /********** 報警處理函數(shù) ******************/ void baojing() { if(MQ1set_D)//判斷是否有報警 如果有就進入函數(shù) 然后再判斷具體是哪個值報警 { speak=0。 led1=0。 } else { led1=1。 speak=1。 } } /**********顯示函數(shù) ******************/ void display1() //設置報警值顯示 { pros_data()。 } void display2() //測量顯示 { 31 choiceADC(0)。 delay_1ms(1)。 if(MQ210) { MQ=210。 } MQ1=(210MQ)*。 MQ_data[0]=MQ1/100。 MQ_data[1]=MQ1%100/10。 MQ_data[2]=MQ1%10。 write_1602(yh+5)。 for(a=0。a3。a++) { write_1602dat(MQ_data[a]+0x30)。 } } /**********主函數(shù) ******************/ void main() { led1=1。 speak=1。 lcd_init()。 display1()。 while(1) { if(set_key==0) 32 { delay_1ms(5)。 if(set_key==0) { flog4=!flog4。 while(set_key==0)。 } } if(flog4==1) { if(add_key==0) { delay_1ms(5)。 if(add_key==0) { set_D=set_D+1。 while(add_key==0)。 if(set_D210) { set_D=210。 } } } if(cut_key==0) { delay_1ms(5)。 if(cut_key==0) 33 { set_D=set_D1。 while(cut_key==0)。 if(set_D=0) { set_D=0。 } } } display1()。 } if(flog4==0) { display2()。 baojing()。 } } }
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1