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

正文內(nèi)容

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

2025-01-11 05:40 本頁面
 

【文章內(nèi)容簡介】 把 E2RAM 中的 TH、 TL 字節(jié) 寫到暫存器 TH、 TL 字節(jié) 讀電源供電方式 B4H 啟動 DS18B20 發(fā)送電源供電方式的信號給主 CPU 第 16 頁 圖 37 測溫電路 整機工作原理 當(dāng)接通電源以后,溫度傳感器正常工作,溫度傳感器將根據(jù)被測溫度的不同來采集不同的 數(shù)據(jù),然后將所采集到的數(shù)據(jù)傳送到比較器到中,然后由比較器將采集到的數(shù)據(jù)轉(zhuǎn)變成高低電平,在送入單片機,單片機通過控制各個引腳電平的高低來來控制溫度的顯示輸出,當(dāng)溫度顯示 TH 為 110176。C, TL為 —20176。C,通過矩陣鍵盤電路可以調(diào)節(jié) TH 和TL 的初始值,并且還可以調(diào)節(jié)當(dāng)前的顯示的溫度值,按一次鍵盤 TH 和 TL 的值自加一或自減一,當(dāng)減到低于 20176。C 或高于 110176。時,將自動返回初始值。 整機電路圖如圖 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整機電路圖 第 17 頁 第 4 章 軟件設(shè)計 整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當(dāng)硬件基本定型的時候軟件也基本定下拉了,從 軟件的功能不同,可以分為兩的類:一是主程序,它是整個軟件的核心,專門用來協(xié)調(diào)各個執(zhí)行模塊和操作者的聯(lián)系。二是子程序,它是用來完成各種實質(zhì)性的工作的,如測量、計算、顯示、通訊等。每一個執(zhí)行軟件就是一個小的執(zhí)行模塊,這里將每一個模塊一一列出來,并為每個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好以后,就可以規(guī)劃監(jiān)控軟件了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的主程序結(jié)構(gòu),然后根據(jù)實時性的條件,合理安排監(jiān)控軟件和執(zhí)行軟件之間的調(diào)度關(guān)系。 主程序模塊 主程序主要完成硬件初始化,子程序調(diào)用等功能 圖 41 主程序流程圖開始 設(shè)置定時 /計數(shù)器初值 從 DS18B20 中讀取數(shù)據(jù) 等待 數(shù)據(jù)拆字 顯示溫度 第 18 頁 主程序函數(shù)如下: Void main() { setds18b20(TH,TL,RS)。 //設(shè)置上下限報警溫度和分辨率 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()。 //看有無鍵按下 if(key_ok) //如有鍵按下則看到底哪個鍵按下 { key_value=key_scan()。 //調(diào)用鍵盤掃描程序 key_mand(key_value)。 //鍵盤命令處理函數(shù) } } 第 19 頁 圖 42 DS18B20 初始化流程圖 DS18B20 初始化函數(shù) void Init_DS18B20(void) { unsigned char x=0。 DQ = 0。 //單片機將 DQ 拉低 delay_18B20(80)。 //精確延時 大于 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ù)位脈沖 延時 600us DQ 置 1 第 20 頁 } /***********ds18b20 讀一個字節(jié) **************/ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { DQ = 0。 // 給脈沖信號 dat=1。 DQ = 1。 // 給脈沖信號 if(DQ) dat|=0x80。 delay_18B20(4)。 } return(dat)。 } 溫度測量的結(jié)果以二進補碼形式來存放,分辨力 12 位的測量結(jié)果用帶 5 個符號的 16 位二進制格式來表示,高低 8 位分別存儲在兩個 RAM 單元中,前面 5 位 S 代表符號位, DS18B20 函數(shù)的作用就是完成這一過程的 第 21 頁 N 圖 43DS18B20 寫字節(jié)流程圖 DS18B20 寫函數(shù) void setds18b20(unsigned char TH,unsigned char TL,unsigned char RS) { Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0x4E)。 WriteOneChar(TH)。 //寫入想設(shè)定的溫度報警上限 WriteOneChar(TL)。 //寫入想設(shè)定的溫度報警下限 WriteOneChar(RS)。 } 8位數(shù)據(jù)送完否? DS18B20寫入結(jié)束 延時 15us DQ置 1設(shè)置為恢復(fù)狀態(tài) 寫入一位數(shù)據(jù) 延時 15us DQ清零,將 DQ總線電平拉低 設(shè) 置串行位數(shù)為 8 DS18B20寫開始 第 22 頁 LCD上電時,都必須按照一定的時序?qū)?LCD進行初始化操作,主要任務(wù)是設(shè)置 LCD的工作方式,顯示狀態(tài),清屏,輸入方式,光標位置等。 圖 43LCD 初始化流程圖 功能設(shè)置命令 調(diào)用寫入指令到 LCD子程序 開始 子程序返回 調(diào)用寫入指令到 LCD子程 調(diào)用寫入指令到 LCD子程 設(shè)置顯示狀態(tài) 清屏 設(shè)定工作方式 調(diào)用寫入指令到 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)。 //開啟顯示 , 無光標 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN)。 //清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE)。 //AC 遞增 , 畫面不動 } //*********************************************** 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 頁 要想把顯示字符顯示在某一指定位置,就必須先將 顯示數(shù)據(jù)寫在相應(yīng)的 DDRAM 地址中,寫數(shù)據(jù)操作函數(shù)就是完成這一過程的函數(shù) 圖 44LCD 寫數(shù)據(jù)流程圖 void LCD_Wait(void) { LcdRs=0。 //RS=0 表示選擇指令寄存器 LcdRw=1。 _nop_()。//RW=1 表示進行讀操作 LcdEn=1。 _nop_()。 //在 EN 為下降沿的時候鎖存據(jù) while(DBPortamp。0x80) { LcdEn=0。 _nop_()。 _nop_() LcdEn=1。 _nop_()。 _nop_()。 } LcdEn=0。 } 開始 當(dāng) RS=1時,選擇數(shù)據(jù)寄存器 把顯示數(shù)據(jù)送至 P0口 讀 /寫標志位 R/W=0時,進行寫操作 LCD使能信號 E至高電平后再過兩個時鐘周期至低電平,產(chǎn)生一個下降沿信號,使 LCD寫入顯示數(shù)據(jù) 第 24 頁 LCD 要能讀寫數(shù)據(jù),必須對 LCD 進行讀寫操作,讀操作時,先設(shè)置 RS 和 R/W 狀態(tài),在設(shè)置 E 信號為高,這時從數(shù)據(jù)口讀取數(shù)據(jù),寫操作時,使能 E 信號下降沿有效 圖 45LCD 讀寫操作流程圖 LCD 寫指令函數(shù) define LCD_COMMAND define LCD
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1