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

正文內(nèi)容

畢業(yè)設(shè)計-基于單片機(jī)的溫濕度計的設(shè)計-文庫吧

2025-01-02 01:08 本頁面


【正文】 成的單片機(jī)系統(tǒng)原理圖如圖 5所示。 圖中 DATA引腳為溫濕度傳感器單總線引腳, K K K K4為四只調(diào)節(jié)按鍵,用以調(diào)整溫濕度上限值。 L L L5為三只報警燈,其中 L3為超溫報警,L4為超濕報警, L5 保留給用戶定義。 8 圖 5 單片機(jī)系統(tǒng)原理圖 顯示電路 顯示部分采用 SMC 1602液晶屏進(jìn)行數(shù)據(jù)顯示,其主要技術(shù)參數(shù)為: 表 2 液晶屏技術(shù)指標(biāo) 湖南人文科技學(xué)院畢業(yè)設(shè)計 9 接口信號說明如表 3所示。 表 3 液晶屏接口信號說明 與單片機(jī)接口電路如圖 6所示。 10 圖 6 LCD與單片機(jī)接口電路 溫濕度上限存儲 溫濕度閾值存儲在 EEPROM芯片 AT24C04 中,并可以通過 K1— K4 按鍵調(diào)節(jié)并保存,其中 K1為溫度上限增加, K2為 溫度上限減小, K3為濕度上限增加,K4為濕度上限減小。 AT24C04是 IIC芯片,其電路如圖 7所示。 圖 7 EEPROM 存儲電路 供電及程序下載電路 本設(shè)計采用 USB 接口供電,電源電壓 5V。同時, USB 接口通過內(nèi)含 PL2303芯片的轉(zhuǎn)換電路對單片機(jī)進(jìn)行程序編寫。其電路 原理如圖 8 所示。 圖 8 供電及程序下載電路 湖南人文科技學(xué)院畢業(yè)設(shè)計 11 三、 軟件編程 軟件流程圖 本設(shè)計軟件主程序流程圖如圖 9 所示。 數(shù) 據(jù) 初 始 化定 時 器 初 始 化顯 示 初 始 化進(jìn) 入 后 臺 w h i l e 循 環(huán)溫 濕 度 轉(zhuǎn) 換超 過 閾 值 嗎 ?有 鍵 按 下 嗎 ? 按 鍵 處 理溫 濕 度 數(shù) 值 顯 示報 警是是否否有 轉(zhuǎn) 換 標(biāo) 志 嗎 ?是否 圖 9 主程序流程圖 主程序 下面介紹 主程序編寫,其他程序略。 (1) 頭文件和一些宏定義 include include 12 include include (2) 管腳定義 sbit Led_qushi=P1^6。 //去濕燈 sbit Led_jiangwen=P1^5。 //降溫?zé)? sbit Led_shengwen=P1^4。 //升溫?zé)? sbit Key_TH1 = P3^2。 sbit Key_TH2 = P3^3。 sbit Key_HH1 = P3^4。 sbit Key_HH2 = P3^5。 (3) 常量、變量定義 //定義標(biāo)識 volatile bit FlagStartRH = 0。 //開始溫濕度轉(zhuǎn)換標(biāo)志 volatile bit FlagKeyPress = 0。 //有鍵按下 //定義溫濕度傳 感器用外部變量 extern U8 U8FLAG,k。 extern U8 U8count,U8temp。 extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata。 extern U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp。 extern U8 U8checkdata_temp。 extern U8 U8data。 extern U8 count, count_r。 U16 temp。 S16 temperature, humidity。 S16 idata TH, HH。 //溫度上限和濕度上限 char * pSave。 U8 keyvalue, keyTH1, keyTH2, keyHH1, keyHH2。 U16 RHCounter。 (4) 各子程序 //數(shù)據(jù)初始化 void Data_Init() { RHCounter = 0。 湖南人文科技學(xué)院畢業(yè)設(shè)計 13 Led_qushi = 1。 Led_jiangwen = 1。 Led_shengwen = 1。 TH = 40。 HH = 85。 keyvalue = 0。 keyTH1 = 1。 keyTH2 = 1。 keyHH1 = 1。 keyHH2 = 1。 } //定時器 0 初始化 void Timer0_Init() { ET0 = 1。 //允許定時器 0 中斷 TMOD = 1。 //定時器工作方式選擇 TL0 = 0x06。 TH0 = 0xf8。 //定時器賦予初值 TR0 = 1。 //啟動定時器 } //定時器 0 中斷 void Timer0_ISR (void) interrupt 1 using 0 { TL0 = 0x06。 TH0 = 0xf8。 //定時器賦予初值 //每 2 秒鐘啟動一次溫濕度轉(zhuǎn)換 RHCounter ++。 if (RHCounter = 1000) { FlagStartRH = 1。 RHCounter = 0。 } } //存入 設(shè)定值、 14 void Save_Setting() { pSave = (char *)amp。TH。 //地址低位對應(yīng)低 8 位,高位對應(yīng)高 8 位 wrteeprom(0, *pSave)。 //存溫度上限值 TH 低 8 位 DELAY(500)。 pSave ++。 wrteeprom(1, *pSave)。 //存溫度上限值 TH 高 8 位 DELAY(500)。 pSave = (char *)amp。HH。 wrteeprom(2, *pSave)。 //存濕度 上限值 RH 低 8 位 DELAY(500)。 pSave ++。 wrteeprom(3, *pSave)。 //存濕度上限值 RH 高 8 位 DELAY(500)。 } //載入設(shè)定值、 void Load_Setting() { pSave = (char *)amp。TH。 *pSave++ = rdeeprom(0)。 *pSave = rdeeprom(1)。 pSave = (char *)amp。HH。 *pSave++ = rdeeprom(2)。 *pSave = rdeeprom(3)。 if ((TH99)||(TH0)) TH = 40。 if ((HH99)||(HH0)) HH = 85。 } void KeyProcess(uint num) { switch (num) { case 1: if (TH99) TH++。 L1602_char(1, 15, TH/10+48)。 L1602_char(1, 16, TH%10+48)。 break。 湖南人文科技學(xué)院畢業(yè)設(shè)計 15 case 2: if (TH1) TH。 L1602_char(1, 15, TH/10+48)。 L1602_char(1, 16, TH%10+48)。 break。 case 3: if (HH99) HH++。 L1602_char(2, 15, HH/10+48)。 L1602_char(2, 16, HH%10+48)。 break。 case 4: if (HH1) HH。 L1602_char(2, 15, HH/10+48)。 L1602_char(2, 16, HH%10+48)。 break。 default: break。 } Save_Setting()。 } (5) main()函數(shù) void main() { U16 i, j, testnum。 EA = 0。 Timer0_Init()。 //定時器 0 初始化 Data_Init()。 EA = 1。 L1602_init()。 L1602_string(1,1, Wele to Tamp。H )。 L1602_string(2,1, Control System! )。 //延時 for (i=0。i1000。i++) for (j=0。j1000。j++) {。} 16 //清屏 L1602_string(1,1, )。 L1602_string(2,1, )。 L1602_string(1,1,Tem: C TH:)。 L1602_string(2,1,Hum: % HH:)。 //載入溫度上限和濕度上限設(shè)定值 Load_Setting()。 L1602_char(1, 15, TH/10+48)。 L1602_char(1, 16, TH%10+48)。 L1602_char(2, 15, HH/10+48)。 L1602_char(2, 16, HH%10+48)。 while(1) { //溫濕度轉(zhuǎn)換標(biāo)志檢查 if (FlagStartRH == 1) { TR0 = 0。 testnum = RH()。 FlagStartRH = 0。 TR0 = 1。 //讀出溫濕度,只取整數(shù)部分 humidity = U8RH_data_H。 temperature = U8T_data_H。 //顯示溫濕度 L1602_int(1,5,temperature)。 L1602_int(2,5,humidity)。 } //溫濕度控制 if (temperature TH) Led_jiangwen = 0。 else Led_jiangwen = 1。 //降溫 if (humidity HH) Led_qushi = 0。 else Led_qushi = 1。 //去濕 //鍵盤查詢,在彈起時響應(yīng) if ((Key_TH1)amp。amp。(keyTH1==0)) {FlagKeyPress = 1。 keyvalue = 1。} else if ((Key_TH2)amp。amp。(keyTH2==0)) {FlagKeyPress = 1。 keyvalue = 2。} 湖南人文科技學(xué)院畢業(yè)設(shè)計 17 else if ((Key_HH1)amp。amp。(keyHH1==0)) {FlagKeyPress = 1。 keyvalue = 3。} else if ((Key_HH2)amp。amp。(keyHH2==0)) {FlagKeyPress = 1。 keyvalue = 4。} if (FlagKeyPress == 1) { KeyProcess(keyvalue)。 FlagKeyPress = 0。 } if (!Key_TH1) keyTH1 = 0。 else keyTH1 = 1。 if (!Key_TH2) keyTH2 = 0。 else keyTH2 = 1。 if (!Key_HH1) keyHH1 = 0。 else keyHH1 = 1。 if (!Key_HH2) keyHH2 = 0。 else keyHH2 = 1。 } } 四、 下載與調(diào)試 提供例程在 uVision4 環(huán)境下編譯,如果是其他版本 uVision,只需將所有 .c和 .h 文件 拷貝至新建項目,重新編譯即可。當(dāng)編譯生成 .hex 文件后,就可以下載并進(jìn)行調(diào)試了。 USB 轉(zhuǎn)串口驅(qū)動安裝 打開 USB 驅(qū)動文件夾下的 安裝文件,按提示安裝 USB 轉(zhuǎn)串口驅(qū)動程序。安裝完成后,插入 USB 下載線后,在 [開始 ][控制面板 ][打印機(jī)和其他硬件 ][設(shè)備管理器 ],在“端口”分支下有( P
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1