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

正文內(nèi)容

基于單片機的溫控報警器設計-文庫吧資料

2025-01-24 16:27本頁面
  

【正文】 ) //熄滅led燈define bell_off PORTDamp。(1PD2)) //設置讀PD2,數(shù)字位加信號define reduce (PINDamp。(1PB3)) //設置讀PB3define con (PINBamp。=~(1PB3) //設置PB3為輸入define DQ_SET PORTB|=(1PB3) //置高PB3電平define DQ_CLR PORTBamp。=~BIT(PD6) //1602的rw信號拉低電平define lcd_en_1 PORTD|=BIT(PD7) //1602的en信號置高電平define lcd_en_0 PORTDamp。特別注意的是,一定要按照指示加入延時功能,因為DS18B20的設備是特別敏感的時間設備參考文獻[1].DS18B20在溫控系統(tǒng)中的應用[J].農(nóng)機化研究,2005:01 [2]明德剛.DS18B20在單片機溫控系統(tǒng)中的應用[J].貴州大學學報(自然科學版) 2006:01 [3]張粵.倪偉 DSl8B20在分布式測溫系統(tǒng)中的應用[J].淮陰工學院學報 2002:10[4] 楊振江,馮軍:《單片機原理與實踐指導》,西安電子科技大學出版社,2008. [5]葉丹.基于單片機的自適應溫度控制系統(tǒng)[M].傳感器技術 2002:03[6]周興華.單片機c語言高級編程[M].北京:中國電力出版社,2011:5993[7]譚浩強.C程序設計(第二版)[M].北京:清華大學出版社,1999[8]馬潮.AVR單片機嵌入式系統(tǒng)原理與應用實踐[M] .北京:北京航空航天大學出版社,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。想要延遲過快或延緩晚。由于這個原因,在一開始的時候一直無法啟動DS18B20,已被寫入在參考和控制程序,發(fā)現(xiàn)差異并不大,在水平設置。 啟動調(diào)試DS18B20。因此,在調(diào)試時,位置數(shù)據(jù)顯示位置是不是我想要的。 液晶顯示器顯示位置的調(diào)試。這是因為按下按鍵時,水平不穩(wěn)定之間的轉(zhuǎn)換,那么將有很多次的電平轉(zhuǎn)換。由于按鍵沒有考慮防抖的漏洞,它必須加上防抖功能在軟件或硬件提供了一個按鍵的實時和準確性。在設計調(diào)試的問題很多,其中最重要的關鍵是按鈕防抖調(diào)試,液晶顯示位置調(diào)試和啟動DS18B20調(diào)試。不可接反或虛焊多焊。該系統(tǒng)的硬件調(diào)試主要是液晶顯示器LCD1602,DS18B20溫度傳感器之間的關系,分別與單片機ATmega16的調(diào)試。最后,對實時溫度進行判斷,當實時溫度大于設定溫度,燈亮、器鳴;當實時溫度小于設定溫度,燈滅并關閉蜂鳴器。 //關閉蜂鳴器 } }}整個程序的主函數(shù)就是該函數(shù),它讓整個程序不斷運行和為它服務。 //點亮led燈 } if(ttemperture) //當實時溫度比設定溫度低 { led_off。 //設定溫度顯示子函數(shù) if(temperture=t) //當實時溫度比設定溫度高 { bell_on。 //100us延時 ss()。 //將從18b20讀回來的數(shù)據(jù)傳入全局變量temperture中 displayl(temperture)。 //關led燈 bell_off。 //端口初始化 lcd_init()。 //將小數(shù)位,個位,十位和百位整合到全局變量t中} 主函數(shù)程序代碼如下:void main(void){ delay_ms(100)。 if(bai0) { bai=1。(sw==4)) ////當減1鍵按下并且轉(zhuǎn)換位變量sw等于4,百位減法變化 { delay_ms(100)。 } } if((reduce==0)amp。 bai++。amp。 if(shi0) { shi=9。(sw==3)) //當減1鍵按下并且轉(zhuǎn)換位變量sw等于3,十位減法變化 { delay_ms(100)。 } } if((reduce==0)amp。 shi++。amp。 //個位減1 if(ge0) //當個位減到1歸9 { ge=9。(sw==2)) //當減1鍵按下并且轉(zhuǎn)換位變量sw等于2 { delay_ms(100)。 } } if((reduce==0)amp。 ge++。amp。 //小數(shù)位減1 if(xs0) //當小數(shù)位減到1歸9 { xs=9。(sw==1)) //當減1鍵按下并且轉(zhuǎn)換位變量sw等于1 { delay_ms(100)。 } } if((reduce==0)amp。 xs++。amp。 //轉(zhuǎn)換位變量加1 if(sw4) //轉(zhuǎn)換位變量加到5歸0 { sw=0。 按鍵函數(shù)程序代碼如下:void sa(void){ if(con==0) //當轉(zhuǎn)換位鍵按下 { delay_ms(100)。此時進入LCD1602寫命令狀態(tài),然后將需要輸入一個8位命令數(shù)據(jù)輸入通過PC端的單片機LCD1602。當你進入該函數(shù)將檢測忙音信號是否為1,是必要的檢測忙信號等待LCD1602閑置1,0不要求檢測忙音信號。 lcd_en_0。 //拉高en電平 _NOP()。 //將要輸入到1602的命令放到PC端口 _NOP()。 //拉低rw電平 _NOP()。 } lcd_rs_0。 lcd1602的成在寫入數(shù)據(jù)的狀態(tài),將準備寫入的數(shù)據(jù)分配給PC口,延遲等待寫數(shù)據(jù),然后連接到一個下降沿完整的lcd1602的數(shù)據(jù)被寫入。 //拉低en電平}此功能的作用,微控制器,顯示數(shù)據(jù)輸入到LCD1602。_NOP()。 lcd_en_1。 //空命令,用于延時 dataport=w_data。 //拉高rs電平 lcd_rw_0。} LCD1602寫數(shù)據(jù)子函數(shù)程序代碼如下:void lcd_w_data(uchar w_data){ lcd_busy()。 display_str(0,1,set T:)。 display_str(0,0,realtime T:)。 //顯示光標右移設置,檢測忙信號 lcd_w_(0x0c,1)。 //關閉顯示,檢測忙信號 lcd_w_(0x01,1)。 lcd_w_(0x38,1)。 lcd_w_(0x38,0)。 //延時5ms lcd_w_(0x38,0)。 LCD1602顯示函數(shù) LCD1602初始化子函數(shù)程序代碼如下:void lcd_init(void){ lcd_w_(0x38,0)。再之后是設置引腳為輸入,讀一位數(shù)據(jù),當這位數(shù)據(jù)是1,我們便將變量的最高位設置為1。進入循環(huán)語句之后,首先要將變量右移一位,這里值得注意的是這個變量不需要給一個它初始值,因為無論初始值是什么并不影響數(shù)據(jù)的讀出。首先,定義一個8位局部變量用于數(shù)值的返回。 } return retd。 //設置PB3為輸入 if(DQ_R) //判斷輸入數(shù)據(jù)是否為1 { retd|=0x80。NOP()。NOP()。 //拉低電平 DQ_SET。 //數(shù)據(jù)右移一位 DQ_OUT。i8。 DS18B20讀一個字節(jié)數(shù)據(jù)子函數(shù)程序代碼如下:uchar read_18b20_byte(void){ uchar i,retd=0。接著就是延時50us等待傳感器反應,再接著是拉高電平指示這次的傳送完畢,后面跟著就是需要將命令右移一位。進入循環(huán)語句之后,我們將引腳設置為輸出并拉低引腳電平。 //延時這個是單片機向傳感器寫命令的函數(shù)。 //拉高電平 =1。 //拉低電平 } delay_10us(5)。0x01) //當命令的最低位為1 { DQ_SET。 //拉低PB3電平 NOP()。i++) //分別寫8次,這里一次寫一位 { DQ_OUT。 for(i=0。接著是初始化傳感器,說明一次的溫度轉(zhuǎn)換完成了。接著發(fā)出轉(zhuǎn)換命令之后,再次初始化傳感器,再發(fā)出讀溫度命令0xbe。這里首先要初始化傳感器,等待初始化完畢,我們發(fā)送轉(zhuǎn)換命令0x44。這是一個有返回值的函數(shù)。 //復位18b20 temp=(((temp28)|temp1)*)。 //讀取到溫度的前兩個字節(jié) temp2=read_18b20_byte()。 write_18b20_(0xbe)。 //發(fā)出轉(zhuǎn)換命令 init_18b20()。 //復位18b20 write_18b20_(0xcc)。 int temp。 //等待DS18B20返回來的高電平 while(!(DQ_R))。 //延時 DQ_IN。 //延時 DQ_SET。 //延時 DQ_CLR。 //設置PB3為輸出 DQ_SET。2鍵是用來設置溫度增加,3鍵來設定溫度下降,而4鍵是用于切換位數(shù)。圖11 蜂鳴器圖12 LED燈 按鍵設計本設計采用4個按鈕,其中之一是用于重置。如下圖11是蜂鳴器部分,1腳接單片機的PD4端口,2腳接電源地,這里用單片機高電平驅(qū)動蜂鳴器的方法。硬件上,利用一個有源蜂鳴器和一個led燈來進行聲光報警。這里的mega16單片機PD0口和PD1口是一種特殊的串行通信口,這倆端口可實現(xiàn)計算機與單片機之間的串口通信。圖10 串口設計圖如圖顯示有兩個引腳,分別是數(shù)據(jù)發(fā)送和接收。圖8 程序燒寫 電源端口這部分只需要外接一個2PIN的端子用于連接5V開關。如下圖,采用的是10PIN插針。包含了程序燒寫下載端口,3個按鍵,電源端口,預留串口通訊端、復位模塊和聲光報警模塊。下表顯示LCD1602的4腳到14腳和單片機引腳對應關系。LCD1602原理圖如下:圖6 LCD1602原理圖設計按照LCD1602的接口信號來連接引腳。因此,帶字符的lcd1602液晶顯示器對于今次設計來說,簡單直觀地實現(xiàn)效果。這里帶字符顯示的液晶顯示器里面已經(jīng)有一個解釋芯片,當收到字符數(shù)據(jù)時,自動識別出字符,不需要在單片機作解釋,但缺點就是這種帶字符的顯示器不能按照設計者的意思隨心所欲地顯示需要的圖案。還有在設計里面考慮到電源的不穩(wěn)定,穩(wěn)定電源。圖5 DS18B20原理圖這個是DS18B20傳感器的硬件設計。3 系統(tǒng)硬件設計 溫度傳感器設計 這部分設計用到了溫度傳感器DS18B20,這種傳感器是單數(shù)據(jù)總線傳感器,一共有三只引腳,一個引腳接電源VCC,一個引腳接地GND,還有一個就是數(shù)據(jù)總線引腳DQ接到單片機的其中一只引腳。并且支持串口、模數(shù)轉(zhuǎn)換等功能,擁有512字節(jié)的eeprom,1K字節(jié)片內(nèi)RAM,在外加RAM和ROM的情況完全可以運行到ucOS操作系統(tǒng)。ATmega16是AVR系列的8位單片機,雖然它是8位的單片機,但功能非常的強大。 第16腳:背光源負極。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第2腳:VDD接5V正電源。 DS18B20內(nèi)部結(jié)構(gòu)圖DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM 、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。(7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進行數(shù)據(jù)處理。(5)將數(shù)據(jù)線拉高“1”。(3)將數(shù)據(jù)線拉低“0”。 DS18B20的讀操作(1)將數(shù)據(jù)線拉高“1”。(6) 重復上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。(4) 延時時間為45微秒。(2) 延時確定的時間為15微秒。(8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。據(jù)該狀態(tài)可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時控制)。(5) 數(shù)據(jù)線拉到高電平“1”。(2) 延時(該時間要求的不是很嚴格,但是盡可能的短一點)(3) 數(shù)據(jù)線拉到低電平“0”。圖2 DS18B20封裝圖要注意的一點是,在DS18B20測溫程序設計中,向DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20 接觸不好或斷線,當程序讀該DS18B20 時,將沒有返回信號,程序進入死循環(huán),這一點在進行DS18B20硬件連接和軟件設計時也要給予一定的重視。3.VDD:可選擇的VDD引腳。開漏單總線接口引腳?!?,符合設計條件;它還有負電壓特性,電源極性接反時,溫度計不會因發(fā)熱燒
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1