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

正文內(nèi)容

基于c51單片機(jī)的數(shù)字溫度報(bào)警器的設(shè)計(jì)畢業(yè)設(shè)計(jì)-wenkub

2023-03-09 09:06:01 本頁面
 

【正文】 于 AT89C51 單片機(jī)進(jìn)行溫度傳測定及報(bào)警等功能的設(shè)計(jì),利用數(shù)字溫度傳感器 DS18B20 的測溫系統(tǒng),通過 LED 數(shù)碼管和 LCD 液晶顯示屏同時(shí)顯示實(shí)時(shí)溫度和報(bào)警預(yù)設(shè)溫度,報(bào)警指示通過蜂鳴器的聲音和 16X16 點(diǎn)陣屏同時(shí)報(bào)警 , 并能采取降溫措施 (直流電動(dòng)機(jī)啟動(dòng))。 同時(shí)本次設(shè)計(jì)的報(bào)警溫度采用鍵盤輸入的方式 , 確保各種報(bào)警溫度可以方便的設(shè)定和調(diào)節(jié) 。其中數(shù)字溫度計(jì)就是一個(gè)典型的例子。報(bào)警通過揚(yáng)聲器和發(fā)光二極管顯示。 另外 DS18B20 具有 3 引腳的小體積封裝,測溫范圍為 55℃ ~+125℃攝氏度,測溫分辨率可達(dá) 攝氏度,其測量范圍與精度都能符合設(shè)計(jì)要求。 復(fù)位通常有 2 種基本形式:上電復(fù)位和開關(guān)復(fù)位。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使 RST 持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作。如果有鍵按下 ,則相應(yīng)行的值應(yīng)為低 ,如果無鍵按下,由于上拉的作用,行碼為高。做鍵盤和 LED 實(shí)驗(yàn)時(shí),需將 KEY/LED CS 接到相應(yīng)的地址譯碼上。 鍵盤在由單片機(jī)控制的溫度報(bào)警器系統(tǒng)中的主要作用是通過按鍵向單片機(jī)輸入指令,其中主要是輸入控制溫度的上下限,是人工控制單片機(jī)的主要手段。現(xiàn)在,新一代的 DS18B20 體積更小、更經(jīng)濟(jì)、更靈活。 C,在 10~ +85176。現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提 高了系統(tǒng)的抗干擾性。 ( 2) 在 DS18B20 中的每個(gè)器件上都有獨(dú)一無二的序列號(hào)。 C 之間。系統(tǒng)對 DS18B20 的各種操作必須按協(xié)議進(jìn)行。 (2)發(fā)光響應(yīng)時(shí)間極短 ( s),高頻特性好,單色性好,亮度高。 8 位段碼、 6 位位碼是由兩片 74LS374 輸出。 實(shí)驗(yàn)儀中 8 位段碼輸出地址為 0X004H,位碼輸出地址為 0X002H。例如,將 KEY/LED CS 接到 CS0上,則段碼地址為 08004H,位碼地址為 08002H。本實(shí)驗(yàn)儀采用直接控制方式。地址映射如下(地址中的 X 由 LCD CS 決定,可參見地址譯碼部分說明) 0X000H 0X001H 0X002H 0X003H 0X004H 0X005 0X006H 0X007H 寫 E1 指令 寫 E1 數(shù)據(jù) 讀 E1 狀態(tài) 讀 E1 數(shù)據(jù) 寫 E2 指令 寫 E2 數(shù)據(jù) 讀 E2 狀態(tài) 讀 E2 數(shù)據(jù) 間接控制方式是計(jì)算機(jī)通過自身的或系統(tǒng)的并行接口與液晶顯示模塊連接,如 MCS51 的 P1 口和 P3 口, 8255 等并行接口芯片。每個(gè)行與每個(gè)列可以選中一個(gè)發(fā)光管,共有 256 個(gè)發(fā)光管,采用動(dòng)態(tài)驅(qū)動(dòng)方式。聲音的頻率由端口輸出時(shí)延時(shí)控制。 主函數(shù)部分程序框圖如下: 圖 : 主函數(shù)框圖 N Y 開始 達(dá)到上限? DS18B20 讀取溫度 初始化 檢測按鍵 是否按下 ? 讀取鍵值 LCD 顯示設(shè)定溫度 轉(zhuǎn)換溫度 小風(fēng)扇轉(zhuǎn)動(dòng) 顯示實(shí)時(shí)溫度 N Y 蜂鳴器報(bào)警 點(diǎn)陣屏 顯示 指示燈顯示 122. 溫度檢測模塊 DSl8B20 必須嚴(yán)格按照單總線通信協(xié)議,以保證數(shù)據(jù)的完整性。 圖 : DS18B20 溫度檢測框圖 133. 鍵盤掃描模塊 鍵盤掃描通過檢測按鍵狀態(tài),當(dāng)有按鍵按下時(shí),鍵盤掃描程序?qū)存I轉(zhuǎn)換成鍵值,將鍵值返回到主函數(shù),并記錄按鍵的數(shù)值,轉(zhuǎn)換成設(shè)定溫度。 中斷模塊包含三部分內(nèi)容,一是進(jìn)行初始溫度的轉(zhuǎn)化,二是進(jìn)行點(diǎn)陣屏的刷新,實(shí)時(shí)顯示需要顯示的內(nèi)容,三是進(jìn)行報(bào)警判斷,根據(jù)需要使蜂鳴器報(bào)警或停止報(bào)警。 16經(jīng)過十天的資料查找和設(shè)計(jì),我已完成了計(jì)算機(jī)控制的課程設(shè)計(jì)。 在論文完成之際,我 要 對各位老師和各位學(xué)長 表示最真摯的謝意。 define PD1 61 // 122/2 分成左右兩半屏 (122x32) unsigned char Column。 // 指令寄存器 unsigned char LCDData。 // 讀狀態(tài)字地址 (E1) xdata unsigned char DRADD1 _at_ 0x9003。 // 讀狀態(tài)字地址 (E2) xdata unsigned char DRADD2 _at_ 0x9007。 //列低八位地址 xdata unsigned char ColHigh _at_ 0xb001。 sbit RUN=P1^4。 unsigned int c。 //********************************數(shù)碼表 **********************************// unsigned char LEDBUF[6]= {0x00,0x00,0x00,0x00,0x00,0x00}。 此字體下對應(yīng)的點(diǎn)陣為:寬 x 高 =16x16 */ 0x40,0x10,0xA0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x90,0x20,0x50, 0x20,0x30,0xFE,0x1B,0x00,0x0C,0x00,0x88,0x00,0x40,0xFC,0x31,0x00,0x1C,0x00,0x08, }。 此字體下對應(yīng)的點(diǎn)陣為:寬 x 高 =8x16 */ {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00}, /* 文字 : 3 */ /* 宋體 12。 此字體下對應(yīng)的點(diǎn)陣為:寬 x 高 =8x16 */ {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00}, /* 文字 : 7 */ /* 宋體 12。 此字體下對應(yīng)的點(diǎn)陣為:寬 x 高 =8x16 */ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,}, /* 文字 : c */ /* 宋體 12。 此字體下對應(yīng)的點(diǎn)陣為:寬 x 高 =16x16 */ 0x00,0x10,0x0C,0xA4,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x14,0x0C,0x04,0x00, 0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7F,0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00, /* 文字 : 報(bào) */ /* 宋體 12。 此字體下對應(yīng)的點(diǎn)陣為:寬 x 高 =16x16 */ 0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00, 0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00, }。 i)。 while(i)。 if(i5000) //等待 5MS return 0。j8。0x01。 //然后釋放總線,至少 1us 給總線恢復(fù)時(shí)間才能接著寫入第二個(gè)數(shù)值 dat=1。j0。 //然后釋放總線 i++。*/ byte=(byte1)|(bi7)。 } void Ds18b20ChangTemp() { Ds18b20Init()。 //溫度轉(zhuǎn)換命令 } void Ds18b20ReadTempCom() { Ds18b20Init()。 //發(fā)送讀取溫度命令 } int Ds18b20ReadTemp() 24{ int temp=0。 //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 tml=Ds18b20ReadByte()。 temp|=tml。 0x0f)。 i = 6。 k = ~XBYTE[0x8001] amp。 (k == 0))。 else if (k amp。 XBYTE[0x8002] = 0。 // 取出鍵碼 } else return(0xff)。 } // (E1) void WriteDataE1() { while(CRADD1 amp。 0x80)。 CWADD2 = Command。 } // (E2) void ReadDataE2() { while(CRADD2 amp。 Command = 0xe2。 WriteCommandE1()。 WriteCommandE2()。 Command = 0xc0。 WriteCommandE1()。 do { Command = (i + 0xb8)。 // 列地址設(shè)置為 0 WriteCommandE1()。 // 顯示數(shù)據(jù)為 0 WriteDataE1()。 // 頁地址暫存器加一 // 顯示區(qū)清零循環(huán) } // 中文顯示子程序 void WriteCHN16x16() { unsigned char i,j,k。 0x03) | 0xb8。 // 列地址值 while(k Column + 16){ if (k PD1) { // 為左半屏顯示區(qū)域 (E1) Command = k。 // 寫字模數(shù)據(jù) } else{ // 為右半屏顯示區(qū)域 (E2) Command = kPD1。 // 寫字模數(shù)據(jù) }。 j++。 j = 0。 WriteCommandE2()。 // 設(shè)置列地址 值 LCDData = NUMTAB[Code_][i]。 // 設(shè)置列地址值 LCDData = NUMTAB[Code_][i]。 if( ++k = PD1 * 2) break。 } //液晶屏刷新顯示 30void displayLCD(unsigned char nCol,unsigned char nPage ) { unsigned char i,j。 Column = nCol+8*i。 } } //液晶屏數(shù)字刷新顯示 void DisplayL() { Page_ = 0x02。 Page_ = 0x02。 Page_ = 0x02。 Page_ = 0x02。 Page_ = 0x02。 31 Page_ = 0x02。 displayLCD(68,0)。 XBYTE[0x8004] = 0x00。 switch(i) { case 0 : XBYTE[0x8002] = 0x01。i++。break。 case 4 : XBYTE[0x8002] = 0x10。i=0。amp。 //首先清屏 RowHigh = 0x00。 0xff。 //移位 ,指向下一行 if(k15) {
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1