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

正文內(nèi)容

基于單片機(jī)數(shù)字溫度計(jì)(編輯修改稿)

2025-01-11 05:40 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 把 E2RAM 中的 TH、 TL 字節(jié) 寫(xiě)到暫存器 TH、 TL 字節(jié) 讀電源供電方式 B4H 啟動(dòng) DS18B20 發(fā)送電源供電方式的信號(hào)給主 CPU 第 16 頁(yè) 圖 37 測(cè)溫電路 整機(jī)工作原理 當(dāng)接通電源以后,溫度傳感器正常工作,溫度傳感器將根據(jù)被測(cè)溫度的不同來(lái)采集不同的 數(shù)據(jù),然后將所采集到的數(shù)據(jù)傳送到比較器到中,然后由比較器將采集到的數(shù)據(jù)轉(zhuǎn)變成高低電平,在送入單片機(jī),單片機(jī)通過(guò)控制各個(gè)引腳電平的高低來(lái)來(lái)控制溫度的顯示輸出,當(dāng)溫度顯示 TH 為 110176。C, TL為 —20176。C,通過(guò)矩陣鍵盤(pán)電路可以調(diào)節(jié) TH 和TL 的初始值,并且還可以調(diào)節(jié)當(dāng)前的顯示的溫度值,按一次鍵盤(pán) TH 和 TL 的值自加一或自減一,當(dāng)減到低于 20176。C 或高于 110176。時(shí),將自動(dòng)返回初始值。 整機(jī)電路圖如圖 38所示 p 3 .7P3.7+ 5 VP 3 .7G NDp 1 .0p 1 .1p 1 .2p 1 .3p 1 .4p 1 .5p 1 .6p 1 .7p 1 .2p 1 .3p 1 .1p 1 .0p 1 .4p 1 .5p 1 .6p 1 .7X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .0 /T 21P 1 .1 /T 2 E X2P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 /R D17P 3 .6 /W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 /A 821P 2 .1 /A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1AT89C52+ 5 V234567891R P 11 0 K+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1L M 0 1 6 LDQ2V C C3G ND1U3DS 1 8 B 2 0+ 5 VR24 .7 kC13 0 pC23 0 pX1CR Y S T A LC31 0 u FR11 0 kG NDVCCR2 VCC DQ GND +5V GND 圖 38整機(jī)電路圖 第 17 頁(yè) 第 4 章 軟件設(shè)計(jì) 整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型的時(shí)候軟件也基本定下拉了,從 軟件的功能不同,可以分為兩的類(lèi):一是主程序,它是整個(gè)軟件的核心,專(zhuān)門(mén)用來(lái)協(xié)調(diào)各個(gè)執(zhí)行模塊和操作者的聯(lián)系。二是子程序,它是用來(lái)完成各種實(shí)質(zhì)性的工作的,如測(cè)量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件就是一個(gè)小的執(zhí)行模塊,這里將每一個(gè)模塊一一列出來(lái),并為每個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好以后,就可以規(guī)劃監(jiān)控軟件了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的主程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的條件,合理安排監(jiān)控軟件和執(zhí)行軟件之間的調(diào)度關(guān)系。 主程序模塊 主程序主要完成硬件初始化,子程序調(diào)用等功能 圖 41 主程序流程圖開(kāi)始 設(shè)置定時(shí) /計(jì)數(shù)器初值 從 DS18B20 中讀取數(shù)據(jù) 等待 數(shù)據(jù)拆字 顯示溫度 第 18 頁(yè) 主程序函數(shù)如下: Void main() { setds18b20(TH,TL,RS)。 //設(shè)置上下限報(bào)警溫度和分辨率 delay(100)。 while(1) { pt=ReadTemperature()。 temper_LCD()。 user_temper_LCD(user_temper)。 alarm_LCD(TH,TL)。 LCD_Initial()。 LCD_Print(0,0,TempBuffer0)。 LCD_Print(0,1,TempBuffer1)。 scan_full()。 //看有無(wú)鍵按下 if(key_ok) //如有鍵按下則看到底哪個(gè)鍵按下 { key_value=key_scan()。 //調(diào)用鍵盤(pán)掃描程序 key_mand(key_value)。 //鍵盤(pán)命令處理函數(shù) } } 第 19 頁(yè) 圖 42 DS18B20 初始化流程圖 DS18B20 初始化函數(shù) void Init_DS18B20(void) { unsigned char x=0。 DQ = 0。 //單片機(jī)將 DQ 拉低 delay_18B20(80)。 //精確延時(shí) 大于 480us DQ = 1。 //拉高總線 delay_18B20(14)。 x=DQ。 delay_18B20(20)。 等待 50us 讀入 DQ 的狀態(tài) 等待 200us DQ 置 1 初始化結(jié)束 DS18B20 初始化 DQ 置 1 D0 清零,發(fā)復(fù)位脈沖 延時(shí) 600us DQ 置 1 第 20 頁(yè) } /***********ds18b20 讀一個(gè)字節(jié) **************/ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { DQ = 0。 // 給脈沖信號(hào) dat=1。 DQ = 1。 // 給脈沖信號(hào) if(DQ) dat|=0x80。 delay_18B20(4)。 } return(dat)。 } 溫度測(cè)量的結(jié)果以二進(jìn)補(bǔ)碼形式來(lái)存放,分辨力 12 位的測(cè)量結(jié)果用帶 5 個(gè)符號(hào)的 16 位二進(jìn)制格式來(lái)表示,高低 8 位分別存儲(chǔ)在兩個(gè) RAM 單元中,前面 5 位 S 代表符號(hào)位, DS18B20 函數(shù)的作用就是完成這一過(guò)程的 第 21 頁(yè) N 圖 43DS18B20 寫(xiě)字節(jié)流程圖 DS18B20 寫(xiě)函數(shù) void setds18b20(unsigned char TH,unsigned char TL,unsigned char RS) { Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x4E)。 WriteOneChar(TH)。 //寫(xiě)入想設(shè)定的溫度報(bào)警上限 WriteOneChar(TL)。 //寫(xiě)入想設(shè)定的溫度報(bào)警下限 WriteOneChar(RS)。 } 8位數(shù)據(jù)送完否? DS18B20寫(xiě)入結(jié)束 延時(shí) 15us DQ置 1設(shè)置為恢復(fù)狀態(tài) 寫(xiě)入一位數(shù)據(jù) 延時(shí) 15us DQ清零,將 DQ總線電平拉低 設(shè) 置串行位數(shù)為 8 DS18B20寫(xiě)開(kāi)始 第 22 頁(yè) LCD上電時(shí),都必須按照一定的時(shí)序?qū)?LCD進(jìn)行初始化操作,主要任務(wù)是設(shè)置 LCD的工作方式,顯示狀態(tài),清屏,輸入方式,光標(biāo)位置等。 圖 43LCD 初始化流程圖 功能設(shè)置命令 調(diào)用寫(xiě)入指令到 LCD子程序 開(kāi)始 子程序返回 調(diào)用寫(xiě)入指令到 LCD子程 調(diào)用寫(xiě)入指令到 LCD子程 設(shè)置顯示狀態(tài) 清屏 設(shè)定工作方式 調(diào)用寫(xiě)入指令到 LCD子程 設(shè)置輸入方式 LCD 初始化程序 void LCD_Initial() { LcdEn=0。 LCD_Write(LCD_COMMAND,0x38)。 //8 位數(shù)據(jù)端口 LCD_Write(LCD_COMMAND,0x38)。 LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR)。 //開(kāi)啟顯示 , 無(wú)光標(biāo) LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN)。 //清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE)。 //AC 遞增 , 畫(huà)面不動(dòng) } //*********************************************** void GotoXY(unsigned char x, unsigned char y) { if(y==0) LCD_Write(LCD_COMMAND,0x80|x)。 if(y==1) LCD_Write(LCD_COMMAND,0x80|(x0x40))。 } void Print(unsigned char *str) { while(*str!=39。\039。) { LCD_Write(LCD_DATA,*str)。 str++。 } } void LCD_Print(unsigned char x, unsigned char y, unsigned char *str) 第 23 頁(yè) 要想把顯示字符顯示在某一指定位置,就必須先將 顯示數(shù)據(jù)寫(xiě)在相應(yīng)的 DDRAM 地址中,寫(xiě)數(shù)據(jù)操作函數(shù)就是完成這一過(guò)程的函數(shù) 圖 44LCD 寫(xiě)數(shù)據(jù)流程圖 void LCD_Wait(void) { LcdRs=0。 //RS=0 表示選擇指令寄存器 LcdRw=1。 _nop_()。//RW=1 表示進(jìn)行讀操作 LcdEn=1。 _nop_()。 //在 EN 為下降沿的時(shí)候鎖存據(jù) while(DBPortamp。0x80) { LcdEn=0。 _nop_()。 _nop_() LcdEn=1。 _nop_()。 _nop_()。 } LcdEn=0。 } 開(kāi)始 當(dāng) RS=1時(shí),選擇數(shù)據(jù)寄存器 把顯示數(shù)據(jù)送至 P0口 讀 /寫(xiě)標(biāo)志位 R/W=0時(shí),進(jìn)行寫(xiě)操作 LCD使能信號(hào) E至高電平后再過(guò)兩個(gè)時(shí)鐘周期至低電平,產(chǎn)生一個(gè)下降沿信號(hào),使 LCD寫(xiě)入顯示數(shù)據(jù) 第 24 頁(yè) LCD 要能讀寫(xiě)數(shù)據(jù),必須對(duì) LCD 進(jìn)行讀寫(xiě)操作,讀操作時(shí),先設(shè)置 RS 和 R/W 狀態(tài),在設(shè)置 E 信號(hào)為高,這時(shí)從數(shù)據(jù)口讀取數(shù)據(jù),寫(xiě)操作時(shí),使能 E 信號(hào)下降沿有效 圖 45LCD 讀寫(xiě)操作流程圖 LCD 寫(xiě)指令函數(shù) define LCD_COMMAND define LCD
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1