【藍橋杯單片機設計與開發(fā)】(19)省賽試題解析 2011第三屆 溫度記錄器(下) 從本章我們繼續(xù)上一章的內容,我將開始為大家講解歷年的省賽真題的編程思路以及編程原理,通過這種方式讓大家學習邊熟悉這種多模塊協同的綜合題目的編程方式。 2011年第三屆藍橋杯 單片機類 省賽試題是按照任務要求設計一個“溫度監(jiān)控器”第二章。 功能簡述 “溫度監(jiān)控器”可以實現環(huán)境溫度檢測及報警功能;通過 EEPROM 存儲上下限溫度數值,溫度上下限數值可通過外部按鍵更改。系統硬件電路主要有單片機控制電路、數碼管顯示電路、EEPROM 存儲電路、直流電機驅動電路(設計部分)、鍵控制電路及繼電器組成,系統框圖如圖 1 所示: MCS-51 單片機匯編指令集、C51 關鍵字、DS18B20 和 AT24C02 芯片部分驅動、CT107D考試平臺電路原理圖以及本題所涉及到的芯片數據手冊,可參考計算機上的電子文檔。 設計任務要求3.EEPROM 記錄單元系統通過 AT24C02 存儲溫度信息,AT24C02 內部存儲地址 0x00 和 0x01 分別存儲
溫度上下限數據信息;溫度上下限數據可通過外部按鍵進行修改,并通過數碼管實時顯
示。數據存儲格式如圖 3 所示: 示例代碼:at24c02.c - /************************************************************/
- /************************智術靈慧****************************/
- /******************藍橋杯2011年省賽試題**********************/
- /***********************溫度監(jiān)控器***************************/
- /*******************聯系QQ:1149809374***********************/
- /*************聯系郵箱:418224424@aliyun.com*****************/
- /*****************官方博客:www.bkoak.com********************/
- /************************************************************/
-
- #ifndef __AT24C02_H_
- #define __AT24C02_H_
-
- #define SlaveAddrW 0xA0
- #define SlaveAddrR 0xA1
-
- void IIC_Start(void);
- void IIC_Stop(void);
- void IIC_Ack(unsigned char ackbit);
- bit IIC_WaitAck(void);
- void IIC_SendByte(unsigned char byt);
- unsigned char IIC_RecByte(void);
- void WriteByte_AT24C02(uchar add,uchar date);
- uchar ReadByte_AT24C02(uchar add);
-
- #endif
復制代碼
4.按鍵控制單元(見main.c)獨立按鍵 S4 設定為“加上限”按鍵;每按下一次,溫度上限值增加 1℃; 獨立按鍵 S5 設定為“加下限”按鍵;每按下一次,溫度下限值增加 1℃; 獨立按鍵 S6 設定為“減上限”按鍵;每按下一次,溫度上限值減少 1℃; 獨立按鍵 S7 設定為“減下限”按鍵;每按下一次,溫度下限值減少 1℃。 5.按直流電機驅動電路設計(見main.c)設計一個直流電機驅動電路與單片機 P34 引腳連接。 6.溫控單元(見main.c)若當前溫度數值超過 EEPROM 中存儲的溫度上限數據,通過單片機 P34 口產生周期為 1KHz 占空比為 30%的 PWM 信號驅動直流電機工作。待溫度恢復到上下限閾值內時,P34 口輸出高電平,直流電機停止工作。
若當前溫度低于 EEPROM 中存儲的溫度下限數據,繼電器打開,當溫度恢復到上
3下限閾值內時,繼電器自動關閉。 7.系統初始狀態(tài)說明(見main.c)上、下限溫度值需要設定在 0℃到 99℃范圍內,下限值不大于上限值。系統上電后,從 EEPROM 中讀取溫度上、下限數值,并實時顯示當前溫度。 示例代碼:main.c 本章資料下載地址 本章關于2011年省賽試題“溫度監(jiān)控器”的講解到這里就結束了,如果有不理解的可以加群,找我或者群里的朋友交流。
更多資訊關注公眾號:智術靈慧(zslh_dyh) QQ交流群:693211073 
|