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

正文內(nèi)容

基于單片機(jī)的溫控報警器設(shè)計(編輯修改稿)

2025-02-14 16:27 本頁面
 

【文章內(nèi)容簡介】 測忙信號 lcd_w_(0x01,1)。 //清屏,檢測忙信號 lcd_w_(0x06,1)。 //顯示光標(biāo)右移設(shè)置,檢測忙信號 lcd_w_(0x0c,1)。 //顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號 delay_ms(5)。 display_str(0,0,realtime T:)。 //第一行要顯示的初始內(nèi)容 delay_ms(5)。 display_str(0,1,set T:)。 //第二行要顯示的初始內(nèi)容 delay_ms(5)。} LCD1602寫數(shù)據(jù)子函數(shù)程序代碼如下:void lcd_w_data(uchar w_data){ lcd_busy()。 //檢測lcd是否處于忙狀態(tài) lcd_rs_1。 //拉高rs電平 lcd_rw_0。 //拉低rw電平 _NOP()。 //空命令,用于延時 dataport=w_data。 //將要輸入到lcd1602的數(shù)據(jù)放到PC端口 _NOP()。 lcd_en_1。 //拉高en電平 _NOP()。_NOP()。 lcd_en_0。 //拉低en電平}此功能的作用,微控制器,顯示數(shù)據(jù)輸入到LCD1602。檢測LCD1602是在一個繁忙的狀態(tài),當(dāng)LCD1602閑置無效的RS級別(),并拉低的RW級延時等待LCD1602反應(yīng)。 lcd1602的成在寫入數(shù)據(jù)的狀態(tài),將準(zhǔn)備寫入的數(shù)據(jù)分配給PC口,延遲等待寫數(shù)據(jù),然后連接到一個下降沿完整的lcd1602的數(shù)據(jù)被寫入。 LCD1602寫命令子函數(shù)程序代碼如下:void lcd_w_(uchar ,uchar attribc){ if(attribc) //attribc為是否需要判斷l(xiāng)cd1602忙信號 { lcd_busy()。 } lcd_rs_0。 //拉低rs電平 lcd_rw_0。 //拉低rw電平 _NOP()。 //空指令,延時 dataport=。 //將要輸入到1602的命令放到PC端口 _NOP()。 lcd_en_1。 //拉高en電平 _NOP()。 _NOP()。 lcd_en_0。 //拉低en電平}這個函數(shù)是一個單片機(jī)的寫命令到LCD1602功能并有兩個參數(shù),輸入命令COM,如果你想檢測忙音信號則用attribc寫命令。當(dāng)你進(jìn)入該函數(shù)將檢測忙音信號是否為1,是必要的檢測忙信號等待LCD1602閑置1,0不要求檢測忙音信號。后RS水平被拉低,并拉低RW水平,延緩LCD1602反應(yīng)。此時進(jìn)入LCD1602寫命令狀態(tài),然后將需要輸入一個8位命令數(shù)據(jù)輸入通過PC端的單片機(jī)LCD1602。其次延遲等待命令完成,給一個下降沿LCD1602寫命令完成。 按鍵函數(shù)程序代碼如下:void sa(void){ if(con==0) //當(dāng)轉(zhuǎn)換位鍵按下 { delay_ms(100)。 /軟件防抖,延時 sw++。 //轉(zhuǎn)換位變量加1 if(sw4) //轉(zhuǎn)換位變量加到5歸0 { sw=0。 } } if((plus==0)amp。amp。(sw==1)) //當(dāng)加1鍵按下并且轉(zhuǎn)換位變量sw等于1 { delay_ms(100)。 xs++。 //小數(shù)位加1 if(xs9) //當(dāng)小數(shù)位加到10歸0 { xs=0。 } } if((reduce==0)amp。amp。(sw==1)) //當(dāng)減1鍵按下并且轉(zhuǎn)換位變量sw等于1 { delay_ms(100)。 xs。 //小數(shù)位減1 if(xs0) //當(dāng)小數(shù)位減到1歸9 { xs=9。 } } if((plus==0)amp。amp。(sw==2)) //當(dāng)加1鍵按下并且轉(zhuǎn)換位變量sw等于2 { delay_ms(100)。 ge++。 //個位加1 if(ge9) //當(dāng)個位加到10歸0 { ge=0。 } } if((reduce==0)amp。amp。(sw==2)) //當(dāng)減1鍵按下并且轉(zhuǎn)換位變量sw等于2 { delay_ms(100)。 ge。 //個位減1 if(ge0) //當(dāng)個位減到1歸9 { ge=9。 } } if((plus==0)amp。amp。(sw==3)) //當(dāng)加1鍵按下并且轉(zhuǎn)換位變量sw等于3,十位加法變化 { delay_ms(100)。 shi++。 if(shi9) { shi=0。 } } if((reduce==0)amp。amp。(sw==3)) //當(dāng)減1鍵按下并且轉(zhuǎn)換位變量sw等于3,十位減法變化 { delay_ms(100)。 shi。 if(shi0) { shi=9。 } } if((plus==0)amp。amp。(sw==4)) //當(dāng)加1鍵按下并且轉(zhuǎn)換位變量sw等于4,百位加法變化 { delay_ms(100)。 bai++。 if(bai1) { bai=0。 } } if((reduce==0)amp。amp。(sw==4)) ////當(dāng)減1鍵按下并且轉(zhuǎn)換位變量sw等于4,百位減法變化 { delay_ms(100)。 bai。 if(bai0) { bai=1。 } } t=(bai*1000)+(shi*100)+(ge*10)+(xs)。 //將小數(shù)位,個位,十位和百位整合到全局變量t中} 主函數(shù)程序代碼如下:void main(void){ delay_ms(100)。 //100ms延時port_init()。 //端口初始化 lcd_init()。 //lcd1602初始化 led_off。 //關(guān)led燈 bell_off。 //關(guān)蜂鳴器 while(1) { temperture=read_18b20_temp()。 //將從18b20讀回來的數(shù)據(jù)傳入全局變量temperture中 displayl(temperture)。 //實時溫度顯示子函數(shù) delay_us(100)。 //100us延時 ss()。 //溫度設(shè)定子函數(shù) display_2(t)。 //設(shè)定溫度顯示子函數(shù) if(temperture=t) //當(dāng)實時溫度比設(shè)定溫度高 { bell_on。 //打開蜂鳴器 led_on。 //點(diǎn)亮led燈 } if(ttemperture) //當(dāng)實時溫度比設(shè)定溫度低 { led_off。 //關(guān)閉led燈 bell_off。 //關(guān)閉蜂鳴器 } }}整個程序的主函數(shù)就是該函數(shù),它讓整個程序不斷運(yùn)行和為它服務(wù)。在最后的死循環(huán)當(dāng)中,程序在做一個不斷的掃描,把讀回來的溫度數(shù)據(jù)賦予全局變量temperature,然后顯示函數(shù)顯示讀回來的實時溫度,判斷分析按鍵是否按下。最后,對實時溫度進(jìn)行判斷,當(dāng)實時溫度大于設(shè)定溫度,燈亮、器鳴;當(dāng)實時溫度小于設(shè)定溫度,燈滅并關(guān)閉蜂鳴器。6 系統(tǒng)調(diào)試 軟硬件調(diào)試以及分析在本節(jié)中,設(shè)計調(diào)試。該系統(tǒng)的硬件調(diào)試主要是液晶顯示器LCD1602,DS18B20溫度傳感器之間的關(guān)系,分別與單片機(jī)ATmega16的調(diào)試。首先,設(shè)計時,必須根據(jù)原理圖來連接每個設(shè)備。不可接反或虛焊多焊。其次,你必須確定組件元件完好,在其他系統(tǒng)上運(yùn)行或檢測每個組件的工作情況是否良好。在設(shè)計調(diào)試的問題很多,其中最重要的關(guān)鍵是按鈕防抖調(diào)試,液晶顯示位置調(diào)試和啟動DS18B20調(diào)試。 按鍵防抖調(diào)試是調(diào)試設(shè)定溫度,實時和準(zhǔn)確度是否良好。由于按鍵沒有考慮防抖的漏洞,它必須加上防抖功能在軟件或硬件提供了一個按鍵的實時和準(zhǔn)確性。在開始的時候沒有加入防抖功能,會有一個連續(xù)變化或不穩(wěn)定的關(guān)鍵值。這是因為按下按鍵時,水平不穩(wěn)定之間的轉(zhuǎn)換,那么將有很多次的電平轉(zhuǎn)換。影像穩(wěn)定器的軟件和硬件,應(yīng)用軟件防抖在這個設(shè)計中,單片機(jī)檢測后約100ms的延遲進(jìn)行電平轉(zhuǎn)換的關(guān)鍵水平變動后不讀,要收取穩(wěn)定的觸發(fā)電平轉(zhuǎn)換,直到所需的功能。 液晶顯示器顯示位置的調(diào)試。在開始沒有考慮到LCD1602的性質(zhì)。因此,在調(diào)試時,位置數(shù)據(jù)顯示位置是不是我想要的。經(jīng)過學(xué)習(xí)后LCD1602的功能性質(zhì)的毫秒級后,每完成的數(shù)據(jù)延遲是用來等待LCD1602一次寫入數(shù)據(jù)的動作完成,解決顯示不匹配的位置和設(shè)計。 啟動調(diào)試DS18B20。事實上,這里也是一個時間的問題,在設(shè)計之初就沒有很好地明白,原來DS18B20這樣一個敏感的設(shè)備耽誤工作。由于這個原因,在一開始的時候一直無法啟動DS18B20,已被寫入在參考和控制程序,發(fā)現(xiàn)差異并不大,在水平設(shè)置。所以,延遲不起作用。想要延遲過快或延緩?fù)怼K宰龅男薷脑谘舆t方面,一如預(yù)期,只要根據(jù)第一部分第二章調(diào)試可以啟動DS18B20的方法延遲。特別注意的是,一定要按照指示加入延時功能,因為DS18B20的設(shè)備是特別敏感的時間設(shè)備參考文獻(xiàn)[1].DS18B20在溫控系統(tǒng)中的應(yīng)用[J].農(nóng)機(jī)化研究,2005:01 [2]明德剛.DS18B20在單片機(jī)溫控系統(tǒng)中的應(yīng)用[J].貴州大學(xué)學(xué)報(自然科學(xué)版) 2006:01 [3]張粵.倪偉 DSl8B20在分布式測溫系統(tǒng)中的應(yīng)用[J].淮陰工學(xué)院學(xué)報 2002:10[4] 楊振江,馮軍:《單片機(jī)原理與實踐指導(dǎo)》,西安電子科技大學(xué)出版社,2008. [5]葉丹.基于單片機(jī)的自適應(yīng)溫度控制系統(tǒng)[M].傳感器技術(shù) 2002:03[6]周興華.單片機(jī)c語言高級編程[M].北京:中國電力出版社,2011:5993[7]譚浩強(qiáng).C程序設(shè)計(第二版)[M].北京:清華大學(xué)出版社,1999[8]馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實踐[M] .北京:北京航空航天大學(xué)出版社,2007[9]ATMEL.Atmega48 Data Book[M].[10]Mao H,Lee FredC.Review of power factor correction techniques[C] .Proceedings of IPEMC’97,Hangzhou,1997 附錄附錄1 系統(tǒng)原理圖 附錄2 系統(tǒng)PCB圖 附錄3 系統(tǒng)軟件程序include include define uchar unsigned chardefine uint unsigned intdefine lcd_rs_1 PORTD|=BIT(PD5) //1602的rs信號置高電平define lcd_rs_0 PORTDamp。=~BIT(PD5) //1602的rs信號拉低電平define lcd_rw_1 PORTD|=BIT(PD6) //1602的rw信號拉高電平define lcd_rw_0 PORTDamp。=~BIT(PD6) //1602的rw信號拉低電平define lcd_en_1 PORTD|=BIT(PD7) //1602的en信號置高電平define lcd_en_0 PORTDamp。=~BIT(PD7) //1602的en信號拉低電平define DQ_OUT DDRB|=(1PB3) //設(shè)置PB3為輸出define DQ_IN DDRBamp。=~(1PB3) //設(shè)置PB3為輸入define DQ_SET PORTB|=(1PB3) //置高PB3電平define DQ_CLR PORTBamp。=~(1PB3) //拉低PB3電平define DQ_R (PINBamp。(1PB3)) //設(shè)置讀PB3define con (PINBamp。(1PB2)) //設(shè)置讀PB2,數(shù)字位轉(zhuǎn)換信號define plus (PINDamp。(1PD2)) //設(shè)置讀PD2,數(shù)字位加信號define reduce (PINDamp。(1PD3)) //設(shè)置讀PD3,數(shù)字位減信號define led_on PORTBamp。=~(1PB4) //點(diǎn)亮led燈define bell_on PORTD|=(1PD4) //打開蜂鳴器define led_off PORTB|=(1PB4) //熄滅led燈define bell_off PORTDamp。=~(1PD4) //關(guān)閉蜂鳴器/***********************************************************/define dataport PORTC //設(shè)置dataport代表PORTCdefine busy 0x80 //lcd1602忙信號代碼define xtal 1//==============================================================uchar display[]=0123456789。 //用于顯示的數(shù)組int temperture=0。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1