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

正文內(nèi)容

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

2024-12-23 20:58 本頁面
 

【文章內(nèi)容簡介】 部分設(shè)計用到了溫度傳感器 DS18B20,這種傳感器是單數(shù)據(jù)總線傳感器,一共有三只引腳,一個引腳接電源 VCC,一個引腳接地 GND,還有一個就是數(shù)據(jù)總線引腳 DQ 接到單片機的其中一只引腳。 設(shè)計圖如下 。 圖 5 DS18B20 原理圖 14 這個是 DS18B20 傳感器的硬件設(shè)計。 1 腳接電源 VCC, 2 腳是數(shù)據(jù)總線的引腳用于接到單片機 ATmega16 的 PB3 引腳, 3 腳用于接地 GND。還有在設(shè)計里面考慮到電源的不穩(wěn)定,所以在接近插槽的電源 VCC 和 地 GND 之間加了一個 的電容用于濾波 ,穩(wěn)定電源 。 LCD1602 顯示部分設(shè)計 這部分設(shè)計用到了帶字符的液晶顯示器 LCD1602,這種液晶顯示器是16*2 顯示規(guī)格的帶字符顯示器。這里帶字符顯示 的 液晶顯示器里面已經(jīng)有一個解釋芯片,當(dāng)收到字符數(shù)據(jù)時,自動識別出字符, 不 需要在單片機作解釋,但缺點就是這種帶字符的顯示器不能按照設(shè)計者的意思隨心所欲地顯示需要的圖案。不過今次設(shè)計液晶顯示器的功能是用于顯示實時溫度和設(shè)定溫度,并不需要特殊圖案。因此,帶字符的 lcd1602 液晶顯示器對于今次設(shè)計來說, 簡單直觀地 實 現(xiàn)效果。 所以 我選擇用帶字符的液晶顯示器。 LCD1602 原理圖如下: 圖 6 LCD1602 原理圖 15 設(shè)計按照 LCD1602 的接口信號來連接引腳。 1 腳是電源地 GND; 2 腳接電源正極 VCC; 3腳接液晶顯示偏壓信號,利用兩個 1k 的電阻進行分壓; 4腳到 6腳接單片機 ATmega16 的 PD5到 PD7,分別代表接到 LCD1602 的 RS、 RW、 EN的引腳;7腳到 14 腳接按順序接到單片機 ATmega16 的 PB0到 PB7 引腳, 15 腳背光源正極接電源正極 VCC; 16 腳背光源負極接正源地 GND。下表顯示 LCD1602 的 4腳到 14腳和單片機引腳對應(yīng)關(guān)系。 表 單片機與 LCD1602 引腳對應(yīng)表 單片機 ATmega16 LCD1602 單片機 ATmega16 LCD1602 PD5 引腳 4( RS) PB3 引腳 10( Data3) PD6 引腳 5( RW) PB4 引腳 11( Data4) PD7 引腳 6( EN) PB5 引腳 12( Data5) PB0 引腳 7( Data0) PB6 引腳 13( Data6) PB1 引腳 8( Data1) PB7 引腳 14( Data7) PB2 引腳 9( Data2) ATmega16 原理圖設(shè)計 這部分是整個單片機 ATmega16 的設(shè)計 總圖 。包含了程序燒寫下載端口, 3個按鍵,電源端口,預(yù)留串口通訊端、復(fù)位模塊和聲光報警模塊。 圖 7 設(shè)計部分原理圖 16 程序燒寫 這部分設(shè)計是用于將在電腦端的編寫好的程序燒寫到單片機 ATmega16,今次設(shè)計的下載用 ASP 下載方式。如下圖,采用的是 10PIN 插針。 1腳連接單片機的 MOSI 端; 2 腳空接; 3腳接單片機 RESET 端; 4腳接單片機 SCK 端; 5腳接單片機 MISO 端; 6腳到 9 腳均接電源地 GND; 10 腳接 VCC。 圖 8 程序燒寫 電源端口 這部分只需要外接一個 2PIN 的端子用于連接 5V 開關(guān)。用一個 100u 和一個 的電容接電源和電源正極 。如下圖: 圖 9 電源端口接線原理圖 串口通訊端的設(shè)計 此設(shè)計目的是為了能夠使系統(tǒng)在硬件上得到擴展型設(shè)計,方便通過串口RS485 或者 RS232 上傳數(shù)據(jù)。 圖 10 串口設(shè)計圖 17 如圖顯示有兩個引腳,分別是數(shù)據(jù)發(fā)送和接收。 1腳 RXD連接到單片機 mega16港口 PD0,引腳 2連接到端口 TXD 單片機 mega16 PD1。這里的 mega16 單片機 PD0口和 PD1 口是一種特殊的串行通信口, 這倆 端口可實現(xiàn)計算機與單片機之間的串口通信。 報警設(shè)計 采用的是聲光報警的方式來提示實時溫度已經(jīng)達到設(shè)定的溫度。硬件上,利用一個有源蜂鳴器和一個 led 燈來進行聲光報警。當(dāng)實時溫度到了設(shè)定的溫度,那么蜂鳴器響 led 燈亮。如下圖 11 是蜂鳴器部分, 1 腳接單片機的 PD4 端口, 2腳接電源地 ,這里用單片機高電平驅(qū)動蜂鳴器的方法。如圖 12 是 led 燈部分,連接電源正極和單片機的 PB4 端口,這里用單片機低電平驅(qū)動 led 的方法。 圖 11 蜂鳴器 圖 12 LED 燈 按鍵設(shè)計 本設(shè)計采用 4 個按鈕,其中之一是用于重置。其他三個按鈕用來設(shè)置設(shè)定溫度。 2 鍵是用來設(shè)置溫度增加, 3 鍵來設(shè)定溫度下降, 而 4 鍵是用于切換位數(shù) 。 18 4 系統(tǒng)軟件設(shè)計 開始 初始化芯片 聲光報警 初始化 DS18B20 設(shè)定數(shù)值加 1 設(shè)定數(shù)值減 1 設(shè)定數(shù)值位數(shù)切換 鍵 4 是否按下 鍵 2 是否按下 鍵 3 是否按下 判斷數(shù)值是否達到設(shè)定數(shù)值 初始化 LCD1602 19 5 溫度 數(shù)據(jù)處理函數(shù) 初始化函數(shù) 程序代碼如下: void init_18b20(void) { DQ_OUT。 //設(shè)置 PB3 為輸出 DQ_SET。 //拉高 PB3 電平 delay_10us(1)。 //延時 DQ_CLR。 //拉低 PB3 電平 delay_10us(75)。 //延時 DQ_SET。 //再次拉高 PB3 電平 delay_10us(6)。 //延時 DQ_IN。 //設(shè)置 PB3為輸入 while(DQ_R)。 //等待 DS18B20 返回來的高電平 while(!(DQ_R))。 //等待 DS18B20 初始化完畢 DS18B20 的子函數(shù) 程序代碼如 下: uint read_18b20_temp(void) { uchar temp1,temp2。 int temp。 init_18b20()。 //復(fù)位 18b20 20 write_18b20_(0xcc)。 //忽略 rom 配置 write_18b20_(0x44)。 //發(fā)出轉(zhuǎn)換命令 init_18b20()。 write_18b20_(0xcc)。 write_18b20_(0xbe)。 //發(fā)出讀溫度命令 temp1=read_18b20_byte()。 //讀取到溫度的前兩個字節(jié) temp2=read_18b20_byte()。 init_18b20()。 //復(fù)位 18b20 temp=(((temp28)|temp1)*)。 //設(shè)置輸出形式為小數(shù)點后一位 return temp。 這是一個有返回值的函數(shù)。由單片機發(fā)出信號,等待傳感器返回溫度數(shù)值,再將返回的數(shù)值進行處理。這里首先要初始化傳感器,等待初始化完畢,我們發(fā)送轉(zhuǎn)換命令 0x44。這里有個需要注意的是命令 0xcc,這是一個忽略單片機 rom配 置噶命令,原本 rom 配置命令是當(dāng)有多個傳感器的時候要用到選擇傳感器的ID,但設(shè)計中只有一個傳感器,所以就不需要理會 rom配置了。接著發(fā)出轉(zhuǎn)換命令之后,再次初始化傳感器,再發(fā)出讀溫度命令 0xbe。接著就是將讀回來兩次數(shù)據(jù)分別裝進兩個全部變量里面。接著是初始化傳感器,說明一次的溫度轉(zhuǎn)換完成了。 傳感器 DS18B20 寫命令子函數(shù) 程序代碼如下: void write_18b20_(uchar ) { uchar i。 for(i=0。i8。i++) //分別寫 8次,這里一次寫一位 { DQ_OUT。 //設(shè)置 PB3 為輸出 21 DQ_CLR。 //拉低 PB3 電平 NOP()。 if(amp。0x01) //當(dāng)命令的最低位為 1 { DQ_SET。 //拉高 PB3電平 } else //當(dāng)命令的最低位不為 1 { DQ_CLR。 //拉低電平 } delay_10us(5)。 //延時 DQ_SET。 //拉高電平 =1。 //命令右移一位 } delay_10us(5)。 //延時 這個是單片機向傳感器寫 命令的函數(shù)。這里我們一開始就是一個循環(huán)語句,因為這里需要傳送的命令都為 8 位,一次只能傳送一位到傳感器,所以需要分別傳送 8次。進入循環(huán)語句之后,我們將引腳設(shè)置為輸出并拉低引腳電平。之后就是進入一個判斷語句,判斷命令的最后一位是否為 1,當(dāng)為 1拉高引腳電平,但不為 1拉低引腳電平。接著就是延時 50us 等待傳感器反應(yīng),再接著是拉高電平指示這次的傳送完畢,后面跟著就是需要將命令右移一位。這樣直到整個命令完全傳送到傳感器中,再然后延時等待傳感器反應(yīng)。 DS18B20 讀一個字節(jié)數(shù)據(jù)子函數(shù) 程序代碼如下: uchar read_18b20_byte(void) { 22 uchar i,retd=0。 for(i=0。i8。i++) //分別讀 8次,這里一次讀一位 { retd=1。 //數(shù)據(jù)右移一位 DQ_OUT。 //設(shè)置 PB3 為輸出 DQ_CLR。 //拉低電平 DQ_SET。 //拉高電平 NOP()。NOP()。NOP()。NOP()。 //延時 DQ_IN。 //設(shè)置 PB3 為輸入 if(DQ_R) //判斷輸入數(shù)據(jù)是否為 1 { retd|=0x80。 //數(shù)據(jù)變量的最高位為 1 } delay_10us(5)。 } return retd。 //返回數(shù)據(jù)變量 } 這個函數(shù)是用于讀取傳感器一個字節(jié)的數(shù)據(jù),就是一個 8 位數(shù)據(jù)。首先,定義一個 8位局部變量用于數(shù)值的返回。這里有一個循環(huán)語句,同樣是 8次,一次只能讀一位的數(shù)據(jù)。進入循環(huán)語句之后,首先要將變量右移一位,這里值得注意的是這個變量不需要給一個它初始值,因為無論初始值是什么并不影響數(shù)據(jù)的讀出。右移一位之后,設(shè)置引腳為輸出并拉低電平,緊接就是拉高電平,延時等待傳感器反應(yīng)。再之后是設(shè)置引腳為輸入,讀一位 數(shù)據(jù),當(dāng)這位數(shù)據(jù)是 1,我們便將變量的最高位設(shè)置為 1。延時 50us 等待傳感器,當(dāng)循環(huán)語句結(jié)束,返回數(shù)據(jù)變量給相關(guān)的函數(shù)、語句使用。 23 顯示函數(shù) LCD1602 初始化子函數(shù) 程序代碼如下: void lcd_init(void) { lcd_w_(0x38,0)。 //8 位數(shù)據(jù)傳輸, 2 行顯示, 5*7 字形,不檢測忙信號 delay_ms(5)。 //延時 5ms lcd_w_(0x38,0)。 delay_ms(5)。 lcd_w_(0x38,0)。 delay_ms(5)。 lcd_w_(0x38,1)。 //8 位數(shù)據(jù)傳輸, 2 行顯示, 5*7 字形,檢測忙信號 lcd_w_(0x08,1)。 //關(guān)閉顯示,檢測忙信號 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)容 24 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 級別(對應(yīng)引腳查找表 ),并拉低的 RW 級延時等待 LCD1602 反應(yīng)。 lcd1602 的成在寫入數(shù)據(jù)的狀態(tài),將準(zhǔn)備寫入的數(shù)據(jù) 分配給 PC 口,延遲等待寫數(shù)據(jù),然后連接到一個下降沿完整的 lcd1602
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1