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

正文內(nèi)容

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

2025-04-07 09:06上一頁面

下一頁面
  

【正文】 ........................15 五、 課程設(shè)計(jì)體會(huì) ..................................................................................................15 附錄: .............................................................................................................................18 3 一、 引言: 隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便是不可否定的,各種數(shù)字系統(tǒng)的應(yīng)用也使人們的生活更加舒適。 報(bào)警同時(shí)采取 風(fēng)扇降溫措施 。開關(guān)復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,用按鈕開關(guān)操作使單片機(jī)復(fù)位。在判斷有鍵按下后,要有一定的延時(shí),防止鍵盤抖動(dòng)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。 176。 ( 4) 測量溫度范圍在- 55。其電路簡圖如 下圖: 連線 連接孔 1 連接孔 2 2 SD18B20端口 7 圖 : 溫度檢測電路 4. 顯示電路 ( 1) LED 數(shù)碼管顯示電路 顯示電路主要是用于顯示時(shí)間。 當(dāng)用 PIC5X 驅(qū)動(dòng)八段管時(shí),是用 I/O 方式驅(qū)動(dòng),所以,驅(qū)動(dòng)方式開關(guān)撥到“外驅(qū)”方式, PB0~PB7 接八段的 A~H 段, PC0~PC5 接 G0~G5。圖形液晶顯示模塊有兩種連接方式。這種間接控制方式的電路簡單,控制時(shí)序通過編程來實(shí)現(xiàn)。 直流電動(dòng)機(jī)與驅(qū)動(dòng)電路如下圖 : 連線 連接孔 1 連接孔 2 8 驅(qū)動(dòng)輸入 9 驅(qū)動(dòng)輸出 直流電機(jī)電壓輸入 圖 : 直流電動(dòng)機(jī)及驅(qū)動(dòng)電路 連線 連接孔 1 連接孔 2 7 喇叭輸入 11四、 軟件設(shè)計(jì)分析 1. 主函數(shù) 模塊 主程序模塊主要負(fù)責(zé)將各個(gè)子程序調(diào)用并連接在一起 , 用過中斷函數(shù)不斷刷新讀取溫度并將數(shù)據(jù)送達(dá)顯示模塊進(jìn)行顯示 ,驅(qū)動(dòng)數(shù)碼管把實(shí)時(shí)溫度值送出在LED 數(shù)碼管顯示查詢記錄溫度值子程序,將當(dāng)前設(shè)定溫度實(shí)時(shí)顯示在液晶顯示屏,溫度超過設(shè)定溫度上限,單片機(jī)驅(qū)動(dòng)蜂鳴器報(bào)警,同時(shí)驅(qū)動(dòng)二極管發(fā)光、點(diǎn)陣屏顯示、直流電動(dòng)機(jī)轉(zhuǎn)動(dòng)。 鍵盤掃描程序框圖如下 : 圖 : 鍵盤掃描程序框圖 144. LCD 液晶顯示模塊 LCD 液晶顯示屏初始化時(shí)就開始在第一頁顯示初始設(shè)定的文字 (“設(shè)定報(bào)警溫度”),當(dāng)檢測到程序進(jìn)入溫度設(shè)定程序時(shí),每當(dāng)輸入一個(gè)數(shù)據(jù),液晶顯示屏同步顯示到相應(yīng)的位置,輸入三個(gè)數(shù)字后液晶屏顯示設(shè)定溫度如“ ℃”,達(dá)到設(shè)計(jì)的目的。本設(shè)計(jì)采用 89C51 單片機(jī)作為控制芯片,輔助鍵盤和顯示,實(shí)現(xiàn)了溫度檢測和報(bào)警的功能。 // 頁地址寄存器 D1,DO:頁地址 unsigned char Code_ 。 // 寫指令代碼地址 (E2) xdata unsigned char DWADD2 _at_ 0x9005。 sbit IN=P1^0。 unsigned char v=1。 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬 x 高 =8x16 */ {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}, /* 文字 : 1 */ /* 宋體 12。 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬 x 高 =8x16 */ {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00}, /* 文字 : 9 */ /* 宋體 12。 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬 x 高 =16x16 */ 0x20,0x1A,0xFA,0xAF,0xAA,0xEF,0x0A,0xFA,0x10,0x8F,0x54,0x24,0x5C,0x84,0x04,0x00, 0x02,0x02,0x02,0xEA,0xAA,0xAA,0xAB,0xAA,0xAB,0xAA,0xAA,0xEA,0x02,0x02,0x03,0x00, /* 文字 : 溫 */ /* 宋體 12。 IN=0。 //初始化成功 } void Ds18b20WriteByte(unsigned char dat) { unsigned int i,j。 while(i)。 //先將總線拉低 1us i++。 //讀取完之后等待 48us 再接著讀取下一個(gè)數(shù) while(i)。 Ds18b20WriteByte(0xcc)。 //再讀高字節(jié) temp=tmh。 uchar i。 } while ((i != 0) amp。 else if (k amp。 0x80)。 } // (E2) void WriteCommandE2() { while(CRADD2 amp。 LCDData = DRADD2。 Command = 0xa9。 WriteCommandE2()。 WriteCommandE2()。 } while(j !=0)。 WriteCommandE2()。 // 設(shè)置列地址值 LCDData = CHARCCTERTAB[Code_][i]。 } // 數(shù)字顯示子程序 void WriteNum16x8() { unsigned char i,j,k。 // 列地址值 while(k Column + 8){ if (k PD1) { // 為左半屏顯示區(qū)域 (E1) Command = k。 // 寫字模數(shù)據(jù) }。i5。 Code_ = 0x00。 Code_ = 0x02。 Code_ = 0x04。 static unsigned char j=0。break。i++。 } j++ 。 //寫出一行數(shù)據(jù) 32ColHigh = ~ CRYSTALTAB[w][k*2+1]。 } if(w==0) { WAR = ~WAR。 TMOD = 0x01。 LEDBUF[1] = 0x00。 //列驅(qū)動(dòng)高有效 RowHigh= 0x00。 y[2] = 0。 cod2[4]=11。 LEDBUF[2] = LEDBUF[2]|0x80。amp。 LEDBUF[4] =LEDMAP[CurTemp/1000%10]。 LEDBUF[3] = LEDMAP[CurTemp/100%10]。 LEDBUF[1] = LEDMAP[CurTemp%10]。 LEDBUF[2] =LEDMAP[CurTemp/10%10]|0x80。 } } } a = x[0]*100+x[1]*10+x[2]。 34 if(key10){ LEDBUF[3i] = LEDMAP[x[i]amp。 LEDBUF[5] = 0x00。 y[0] = 0。 //行驅(qū)動(dòng)低有效 ColHigh= 0xff。 XBYTE[0x8002] = 0x01。 Clear()。 //移位 ,指向下一行 if(k15) { k=0。 //首先清屏 RowHigh = 0x00。i=0。break。 switch(i) { case 0 : XBYTE[0x8002] = 0x01。 displayLCD(68,0)。 Page_ = 0x02。 Page_ = 0x02。 } } //液晶屏數(shù)字刷新顯示 void DisplayL() { Page_ = 0x02。 } //液晶屏刷新顯示 30void displayLCD(unsigned char nCol,unsigned char nPage ) { unsigned char i,j。 // 設(shè)置列地址值 LCDData = NUMTAB[Code_][i]。 WriteCommandE2()。 j++。 // 寫字模數(shù)據(jù) } else{ // 為右半屏顯示區(qū)域 (E2) Command = kPD1。 0x03) | 0xb8。 // 顯示數(shù)據(jù)為 0 WriteDataE1()。 do { Command = (i + 0xb8)。 Command = 0xc0。 WriteCommandE1()。 } // (E2) void ReadDataE2() { while(CRADD2 amp。 0x80)。 // 取出鍵碼 } else return(0xff)。 else if (k amp。 k = ~XBYTE[0x8001] amp。 0x0f)。 //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 tml=Ds18b20ReadByte()。 //溫度轉(zhuǎn)換命令 } void Ds18b20ReadTempCom() { Ds18b20Init()。*/ byte=(byte1)|(bi7)。j0。0x01。 if(i5000) //等待 5MS return 0。 i)。 此字體下對(duì)應(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。 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬 x 高 =8x16 */ {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00}, /* 文字 : 7 */ /* 宋體 12。 此字體下對(duì)應(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, }。 unsigned int c。 //列低八位地址 xdata unsigned char
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1