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

正文內(nèi)容

基于單片機的溫控報警器設計-預覽頁

2024-12-19 20:58 上一頁面

下一頁面
 

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