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

正文內(nèi)容

基于單片機(jī)的溫控報(bào)警器設(shè)計(jì)-預(yù)覽頁(yè)

 

【正文】 溫度,但是精度低,使 用不夠方便,顯示不夠直觀,數(shù)字溫度計(jì)的出現(xiàn)可以讓人們直觀的了解自己想知道的溫度到底是多少度。隨著世界的科 技發(fā)展,對(duì)于溫度的測(cè)量要求也是越來(lái)越嚴(yán)格了,但是測(cè)量溫度的環(huán)境也越來(lái)越惡劣。 所以,溫度的測(cè)量是一個(gè)很重要的物理參數(shù),它能直接告訴人們所需要的溫度的大小。 本文將要介紹的是和采用 DS18B20作為溫度傳感器,自動(dòng)測(cè)量當(dāng)前溫度,由單片機(jī) avr mega16 進(jìn)行處理控制,并通過(guò) lCD1602 顯示設(shè)定溫度和當(dāng)前溫度,若當(dāng)前溫度超過(guò)設(shè)定溫度,系統(tǒng)將會(huì) 進(jìn)行比較簡(jiǎn)單的聲光報(bào)警。溫度的測(cè)量不僅僅局限于外出穿衣的指標(biāo)上了,在現(xiàn)實(shí)的社會(huì)中,溫度的測(cè)量和控制無(wú)處不在,例如家庭里面都能看見(jiàn)的冰箱的自動(dòng)溫度調(diào)節(jié)。這次溫度報(bào)警器的設(shè)計(jì)與制作,闡明了該裝置進(jìn)行設(shè)計(jì)與制作的具體過(guò)程以及方法。往往會(huì)超過(guò)或低于允許值,致使大批良種的報(bào)廢,耽誤農(nóng)時(shí),影響 生產(chǎn)。一般的電子產(chǎn)品都是發(fā)熱快,若散熱設(shè)施做的不夠及時(shí)而令機(jī)房?jī)?nèi)溫度短時(shí)間內(nèi)超出設(shè)備正常的溫度,就會(huì)導(dǎo)致系統(tǒng)癱瘓或者火災(zāi)的事故 發(fā)生。它 采用溫度敏感元件也就是溫度傳感器(如鉑電阻,熱電偶,半導(dǎo)體,熱敏電阻等),將溫度的變化轉(zhuǎn)換成電信號(hào)的變化,如電壓和電流的變化,溫度變化和電信號(hào)的變化有一定的關(guān)系,如線性關(guān)系,一定的曲線關(guān)系等,這個(gè)電信號(hào)可以使用模數(shù)轉(zhuǎn)換的電路即AD 轉(zhuǎn)換電路將模擬信號(hào)轉(zhuǎn)換為數(shù) 字信號(hào),數(shù)字信號(hào)再送給處理單元,如單片機(jī)或者 PC 機(jī)等,處理單元經(jīng)過(guò)內(nèi)部的軟件計(jì)算將這個(gè)數(shù)字信號(hào)和溫度聯(lián)系起來(lái),成為可以顯示出來(lái)的溫度數(shù)值,如 攝氏度,然后通過(guò)顯示單元,如 LED,LCD或者電腦屏幕等顯示出來(lái)給人觀察。可以采用集成化的溫度傳感器直接傳輸數(shù)據(jù)由單片機(jī)處理,或者用熱敏電阻來(lái)達(dá)到預(yù)期的效果。 擬解決的主要問(wèn)題 擬解決的問(wèn)題: 1. 確定采用哪種傳感器進(jìn)行設(shè)計(jì)。 6. 通過(guò)仿真以及調(diào)試,找出未解決問(wèn)題。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。 且經(jīng)過(guò)按鍵設(shè)定報(bào)警溫度并同將設(shè)定溫度打印到 LCD1602 上 ,這 里用采集回來(lái)的數(shù)據(jù)跟設(shè)定的數(shù)據(jù)作對(duì)比。例如傳感器的溫度為 100176。 C 時(shí),不在安全溫度范圍之內(nèi),蜂鳴器進(jìn)行報(bào)警,發(fā)光二極管發(fā)光顯示。 其引腳功能描述見(jiàn)下: 1. GND 地信號(hào) 電源 LED MEGA16 DS18B20 LCD1602 報(bào)警 收集 /輸入數(shù)據(jù) 輸出數(shù)據(jù) 10 2. DQ:數(shù)據(jù)輸入 /輸出引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。 ( 4) 延時(shí) 750 微秒(該時(shí)間 的時(shí)間范圍可以從 480 到 960 微秒)。 ( 7) 若 單片機(jī) 讀到了數(shù)據(jù)線上的低電平 “0” 后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第( 5)步的時(shí)間算起)最少要 480 微秒。 ( 3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。 ( 7) 最后將數(shù)據(jù)線拉高。 ( 4)延時(shí) 3微秒。 ( 8)延時(shí) 60 微秒。 第 3 腳: VL 為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生 “鬼影”,使用時(shí)可以通過(guò)一個(gè) 10K 的電位器調(diào)整對(duì)比度。 第 6 腳: E 端為使能端,當(dāng) E 端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 13 LCD1602的指令說(shuō)明及時(shí)序 基本操作時(shí)序 :輸入: RS=L,RW=H,E=H 輸出: D0~D7=狀態(tài)字 :輸入: RS=L,R/W=L,D0~D7=指令碼 ,E=高脈沖 輸出:無(wú) :輸入: RS=H,R/W=H,E=H 輸出: =數(shù)據(jù) :輸入: RS=H,R/W=L,D0~D7=數(shù)據(jù) ,E=高 脈沖 輸出:無(wú) 單片機(jī)介紹 這次的設(shè)計(jì),要用到的是單片機(jī) ATmega16。 然而設(shè)計(jì)要用的功能并不多,端口的復(fù)用功能基本用不上,只需要安排足夠的普 通 I/O 端口給溫度傳感器和液晶顯示便可以了。 1 腳接電源 VCC, 2 腳是數(shù)據(jù)總線的引腳用于接到單片機(jī) ATmega16 的 PB3 引腳, 3 腳用于接地 GND。不過(guò)今次設(shè)計(jì)液晶顯示器的功能是用于顯示實(shí)時(shí)溫度和設(shè)定溫度,并不需要特殊圖案。 1 腳是電源地 GND; 2 腳接電源正極 VCC; 3腳接液晶顯示偏壓信號(hào),利用兩個(gè) 1k 的電阻進(jìn)行分壓; 4腳到 6腳接單片機(jī) ATmega16 的 PD5到 PD7,分別代表接到 LCD1602 的 RS、 RW、 EN的引腳;7腳到 14 腳接按順序接到單片機(jī) ATmega16 的 PB0到 PB7 引腳, 15 腳背光源正極接電源正極 VCC; 16 腳背光源負(fù)極接正源地 GND。 圖 7 設(shè)計(jì)部分原理圖 16 程序燒寫 這部分設(shè)計(jì)是用于將在電腦端的編寫好的程序燒寫到單片機(jī) ATmega16,今次設(shè)計(jì)的下載用 ASP 下載方式。用一個(gè) 100u 和一個(gè) 的電容接電源和電源正極 。這里的 mega16 單片機(jī) PD0口和 PD1 口是一種特殊的串行通信口, 這倆 端口可實(shí)現(xiàn)計(jì)算機(jī)與單片機(jī)之間的串口通信。如下圖 11 是蜂鳴器部分, 1 腳接單片機(jī)的 PD4 端口, 2腳接電源地 ,這里用單片機(jī)高電平驅(qū)動(dòng)蜂鳴器的方法。 2 鍵是用來(lái)設(shè)置溫度增加, 3 鍵來(lái)設(shè)定溫度下降, 而 4 鍵是用于切換位數(shù) 。 //延時(shí) DQ_CLR。 //延時(shí) DQ_IN。 int temp。 //發(fā)出轉(zhuǎn)換命令 init_18b20()。 //讀取到溫度的前兩個(gè)字節(jié) temp2=read_18b20_byte()。 這是一個(gè)有返回值的函數(shù)。接著發(fā)出轉(zhuǎn)換命令之后,再次初始化傳感器,再發(fā)出讀溫度命令 0xbe。 for(i=0。 //拉低 PB3 電平 NOP()。 //拉低電平 } delay_10us(5)。 //延時(shí) 這個(gè)是單片機(jī)向傳感器寫 命令的函數(shù)。接著就是延時(shí) 50us 等待傳感器反應(yīng),再接著是拉高電平指示這次的傳送完畢,后面跟著就是需要將命令右移一位。i8。 //拉低電平 DQ_SET。NOP()。 } return retd。進(jìn)入循環(huán)語(yǔ)句之后,首先要將變量右移一位,這里值得注意的是這個(gè)變量不需要給一個(gè)它初始值,因?yàn)闊o(wú)論初始值是什么并不影響數(shù)據(jù)的讀出。 23 顯示函數(shù) LCD1602 初始化子函數(shù) 程序代碼如下: void lcd_init(void) { lcd_w_(0x38,0)。 lcd_w_(0x38,0)。 //關(guān)閉顯示,檢測(cè)忙信號(hào) lcd_w_(0x01,1)。 display_str(0,0,realtime T:)。 } LCD1602 寫數(shù)據(jù)子函數(shù) 程序代碼如下: void lcd_w_data(uchar w_data) { lcd_busy()。 //空命令,用于延時(shí) dataport=w_data。_NOP()。 lcd1602 的成在寫入數(shù)據(jù)的狀態(tài),將準(zhǔn)備寫入的數(shù)據(jù) 分配給 PC 口,延遲等待寫數(shù)據(jù),然后連接到一個(gè)下降沿完整的 lcd1602的數(shù)據(jù)被寫入。 //拉低 rw電平 _NOP()。 //拉高 en電平 _NOP()。當(dāng)你進(jìn)入該函數(shù)將檢測(cè) 忙音信號(hào) 是否 為 1,是必要的檢測(cè)忙信號(hào)等待 LCD1602 閑置 1, 0 不要求檢測(cè)忙音信號(hào)。 程序代碼如下: void sa(void) { if(con==0) //當(dāng)轉(zhuǎn)換位鍵按下 { delay_ms(100)。amp。 } } if((reduce==0)amp。 //小數(shù)位減 1 if(xs0) //當(dāng)小數(shù)位減到 1歸 9 { xs=9。 ge++。(sw==2)) //當(dāng)減 1 鍵按下并且轉(zhuǎn)換位變量 sw等于 2 { delay_ms(100)。amp。 } } if((reduce==0)amp。 if(shi0) { shi=9。 bai++。(sw==4)) ////當(dāng)減 1 鍵按下并且轉(zhuǎn)換位變量 sw 等于4,百位減法變化 { delay_ms(100)。 //將小數(shù)位,個(gè)位,十位和百位整合到全局變量 t 中 } 程序代碼如下: void main(void) 29 { delay_ms(100)。 //關(guān) led 燈 bell_off。 //100us 延時(shí) ss()。 //點(diǎn)亮 led 燈 } if(ttemperture) //當(dāng)實(shí)時(shí)溫度比設(shè)定溫度低 { led_off。最后,對(duì)實(shí)時(shí)溫度進(jìn)行判斷,當(dāng)實(shí)時(shí)溫度大于設(shè)定溫度,燈亮、器鳴;當(dāng)實(shí)時(shí)溫度小于設(shè)定溫度,燈滅并關(guān) 閉蜂鳴器。 不可接反 或 虛焊多焊 。由于 按鍵沒(méi)有 考慮防抖的 漏洞 , 它必須加上防抖功能在軟件或硬件提供了一個(gè)按鍵的實(shí)時(shí)和準(zhǔn)確性。 液晶顯示器 顯示位置的調(diào)試。 啟動(dòng)調(diào)試 DS18B20。想要延遲過(guò)快或延緩?fù)怼?~BIT(PD6) //1602 的 rw信號(hào)拉低電平 define lcd_en_1 PORTD|=BIT(PD7) //1602 的 en信號(hào)置高電平 define lcd_en_0 PORTDamp。(1PB3)) //設(shè)置讀 PB3 define con (PINBamp。=~(1PB4) //點(diǎn)亮 led 燈 define bell_on PORTD|=(1PD4) //打開蜂鳴器 define led_off PORTB|=(1PB4) //熄滅 led 燈 35 define bell_off PORTDamp。 //全局變量,設(shè)定溫度總變量,初始值為 50 int xs=0,ge=0,shi=5,bai=0,sw=0。 void lcd_busy(void)。 void locate(char posx,char posy)。 void write_18b20_(uchar val)。 void ss(void)。 } } void delay_ms(uint ms) //ms 級(jí)別子函數(shù) { uint i=0,j=0。j(uint)(xtal*1432)。 DDRC=0xff。 DDRB|=(14)。 } /*****************************************************************/ void locate(char posx,char posy) //1602 位置顯示子函數(shù) { uchar temp。 //y 軸為 1 時(shí),加十六位的 40 } 38 temp|=0x80|posx。 } //字符串 lcd1602 顯示子函數(shù) void display_str(uchar x,uchar y,uchar *s) { while(*s != 39。 if((y == 0) amp。 } else if((y == 1) amp。 dataport=0xff。 lcd_en_1。 val=PINC。 DDRC=0xff。 //拉低 rw電平 _NOP()。 //拉高 en電平 _NOP()。 //檢測(cè) lcd 是否處于忙狀態(tài) lcd_rs_1。 //將要輸入到 lcd1602 的數(shù)據(jù)放到 PC端口 _NOP()。 lcd_en_0。 delay_ms(5)。 //8 位數(shù)據(jù)傳輸, 2 行顯示, 5*7 字形,檢測(cè)忙信號(hào) lcd_w_(0x08,1)。 //顯示屏打開,光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào) delay_ms(5)。 //第二行要顯示的初始內(nèi)容 42 delay_ms(5)。 //lcd1602 初始化 led_off。 //實(shí)時(shí)溫度顯示子函數(shù) delay_us(100)。 //打開蜂鳴器 led_on。 //設(shè)置 lcd顯示位置是第一行,第 12 個(gè)位 delay_ms(5)。 //設(shè)置 lcd顯 示位置是第一行,第 13 個(gè)位 delay_ms(5)。 //設(shè)置 lcd顯示位置是第一行,第 14 個(gè)位 delay_ms(5)。 //設(shè)置 lcd顯示位置是第一行,第 16 個(gè)位 delay_ms(5)。 } while(i) { NOP()。 } } //18b20 初始化(復(fù)位)子函數(shù) void init_18b20(void) { 45 DQ_OUT。 //拉低 PB3 電平 delay
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1