標(biāo)題: 藍橋杯歷年省賽試題解析,長貼,持續(xù)更新 [打印本頁]
作者: 13122031726 時間: 2018-3-5 19:42
標(biāo)題: 藍橋杯歷年省賽試題解析,長貼,持續(xù)更新
【藍橋杯單片機設(shè)計與開發(fā)】(18)省賽試題解析 2011第三屆 溫度記錄器(上)從本章開始,我將開始為大家講解歷年的省賽真題的編程思路以及編程原理,通過這種方式讓大家學(xué)習(xí)邊熟悉這種多模塊協(xié)同的綜合題目的編程方式。
2011年第三屆藍橋杯 單片機類 省賽試題是按照任務(wù)要求設(shè)計一個“溫度監(jiān)控器”,因為后續(xù)內(nèi)容每個模塊都有較多的代碼,故我們將每一個題目分成兩章來發(fā)布。
功能簡述 “溫度監(jiān)控器”可以實現(xiàn)環(huán)境溫度檢測及報警功能;通過 EEPROM 存儲上下限溫度數(shù)值,溫度上下限數(shù)值可通過外部按鍵更改。系統(tǒng)硬件電路主要有單片機控制電路、數(shù)碼管顯示電路、EEPROM 存儲電路、直流電機驅(qū)動電路(設(shè)計部分)、鍵控制電路及繼電器組成,系統(tǒng)框圖如圖 1 所示:
MCS-51 單片機匯編指令集、C51 關(guān)鍵字、DS18B20 和 AT24C02 芯片部分驅(qū)動、CT107D考試平臺電路原理圖以及本題所涉及到的芯片數(shù)據(jù)手冊,可參考計算機上的電子文檔。
設(shè)計任務(wù)要求1.數(shù)碼管顯示通過 8 位共陽數(shù)碼管顯示溫度信息,包括設(shè)定的溫度上下限數(shù)值和當(dāng)前溫度值,顯示格式如圖 2 所示:
示例代碼:display.c
- /************************************************************/
- /************************智術(shù)靈慧****************************/
- /******************藍橋杯2011年省賽試題**********************/
- /***********************溫度監(jiān)控器***************************/
- /*******************聯(lián)系QQ:1149809374***********************/
- /*************聯(lián)系郵箱:418224424@aliyun.com*****************/
- /*****************官方博客:www.bkoak.com********************/
- /************************************************************/
-
- #include "stc15f2k60s2.h"
- #include "display.h"
- #include "at24c02.h"
- #include "ds18b20.h"
-
- uchar code tab[] =
- {0XC0,0XF9,0XA4,0XB0,0X99,0X92,
- 0X82,0XF8,0X80,0X90,0XBF,0XFF};
- uchar strtab[8];
- uchar temp_value;
- uint i;
-
- void display(char max,char min)
- {
- strtab[0] = tab[max / 10];
- strtab[1] = tab[max % 10];
- strtab[2] = tab[min / 10];
- strtab[3] = tab[min % 10];
- strtab[4] = tab[11];
- strtab[5] = tab[11];
- strtab[6] = tab[temp_value / 10];
- strtab[7] = tab[temp_value % 10];
- }
-
- void Timer0Init(void) //5毫秒@11.0592MHz
- {
- AUXR |= 0x80;//定時器時鐘1T模式
- TMOD &= 0xF0;//設(shè)置定時器模式
- TL0 = 0x00;//設(shè)置定時初值
- TH0 = 0x28;//設(shè)置定時初值
- TF0 = 0;//清除TF0標(biāo)志
- TR0 = 1;//定時器0開始計時
- }
-
- void Timer0_int() interrupt 1 using 0
- {
- static uchar num;
- TH0 = 0xcd;
- TL0 = 0xd4;
-
- switch (num)
- {
- case 0: P2 = ((P2&0x1f)|0xc0); P0 = 0x01;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 1: P2 = ((P2&0x1f)|0xc0); P0 = 0x02;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 2: P2 = ((P2&0x1f)|0xc0); P0 = 0x04;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 3: P2 = ((P2&0x1f)|0xc0); P0 = 0x08;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 4: P2 = ((P2&0x1f)|0xc0); P0 = 0x10;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 5: P2 = ((P2&0x1f)|0xc0); P0 = 0x20;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 6: P2 = ((P2&0x1f)|0xc0); P0 = 0x40;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- case 7: P2 = ((P2&0x1f)|0xc0); P0 = 0x80;
- P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
- default: break;
- }
- num++;
- if (num == 8)
- num = 0;
- }
-
- void Timer1Init(void) //5毫秒@11.0592MHz
- {
- AUXR |= 0x40; //定時器時鐘1T模式
- TMOD &= 0xF0; //設(shè)置定時器模式
- TL1 = 0x00; //設(shè)置定時初值
- TH1 = 0x28; //設(shè)置定時初值
- TF1 = 0; //清除TF0標(biāo)志
- TR1 = 1; //定時器0開始計時
- }
-
- void Timer1_int() interrupt 3
- {
- i++;
- if(i == 400)
- {
- i = 0;
- temp_value = ReadTemp();
- }
- }
復(fù)制代碼
示例代碼:display.h- /************************************************************/
- /************************智術(shù)靈慧****************************/
- /******************藍橋杯2011年省賽試題**********************/
- /***********************溫度監(jiān)控器***************************/
- /*******************聯(lián)系QQ:1149809374***********************/
- /*************聯(lián)系郵箱:418224424@aliyun.com*****************/
- /*****************官方博客:www.bkoak.com********************/
- /************************************************************/
-
- #ifndef __DISPLAY_H_
- #define __DISPLAY_H_
-
- void display(uchar max,uchar min);
- void Timer0Init(void);
- void Timer1Init(void);
-
- #endif
復(fù)制代碼
2.溫度測量單元通過 DS18B20 數(shù)字溫度芯片測量環(huán)境溫度。
示例代碼:ds18b20.c
- /************************************************************/
- /************************智術(shù)靈慧****************************/
- /******************藍橋杯2011年省賽試題**********************/
- /***********************溫度監(jiān)控器***************************/
- /*******************聯(lián)系QQ:1149809374***********************/
- /*************聯(lián)系郵箱:418224424@aliyun.com*****************/
- /*****************官方博客:www.bkoak.com********************/
- /************************************************************/
-
- #ifndef __DELAY_H_
- #define __DELAY_H_
-
- void Delay5us();
- void Delay10ms();
- void Delay500us();
-
- #endif
復(fù)制代碼- /************************************************************/
- /************************智術(shù)靈慧****************************/
- /******************藍橋杯2011年省賽試題**********************/
- /***********************溫度監(jiān)控器***************************/
- /*******************聯(lián)系QQ:1149809374***********************/
- /*************聯(lián)系郵箱:418224424@aliyun.com*****************/
- /*****************官方博客:www.bkoak.com********************/
- /************************************************************/
- #include "delay.h"
- #include "intrins.h"
-
- void Delay5us() //@11.0592MHz
- {
- unsigned char i;
-
- _nop_();
- i = 11;
- while (--i);
- }
-
- void Delay10ms() //@11.0592MHz
- {
- unsigned char i, j;
-
- i = 108;
- j = 145;
- do
- {
- while (--j);
- } while (--i);
- }
-
- void Delay500us() //@11.0592MHz
- {
- unsigned char i, j;
-
- _nop_();
- _nop_();
- i = 6;
- j = 93;
- do
- {
- while (--j);
- } while (--i);
- }
復(fù)制代碼
本章內(nèi)容到這里就先結(jié)束了,剩下的程序和文檔將在下一部分一同發(fā)出,希望大家先對這一部分內(nèi)容進行加深理解,只有將每一部分都了解透徹才能更好地完成比賽的要求。
更多資訊關(guān)注公眾號:智術(shù)靈慧(zslh_dyh)
QQ交流群:693211073

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

-
-
第三屆 溫度記錄器.rar
2018-3-6 17:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
207.56 KB, 下載次數(shù): 40, 下載積分: 黑幣 -5
作者: 13122031726 時間: 2018-3-9 14:46
【藍橋杯單片機設(shè)計與開發(fā)】(20)省賽模擬題解析 2012第四屆 自動售水機(簡析)“自動售水機”設(shè)計任務(wù)書功能簡述通過競賽硬件平臺模擬小區(qū)自動售水機的工作流程:通過按鍵控制售水機水流出和停止;通過數(shù)碼管顯示費率、出水量及總費用;通過光敏電阻檢測環(huán)境亮度,在亮度過低的情況下,自動開燈。系統(tǒng)硬件電路主要由單片機控制電路、數(shù)碼管顯示電路、A/D 轉(zhuǎn)換電路及功能按鍵組成。系統(tǒng)框圖如圖 1 所示:
單總線驅(qū)動程序、CT107D 單片機考試平臺電路原理圖以及本題所涉及到的芯片數(shù)據(jù)手冊,可參考計算機上的電子文檔。程序流程圖及相關(guān)工程文件請以考生號命名,并保存在計算機上的考生文件夾中(文件夾名為考生準(zhǔn)考證號,文件夾位于 windows 桌面上)。
設(shè)計任務(wù)及要1. 溫度檢測溫度檢測采用 DS18B20 溫度傳感器,數(shù)據(jù)經(jīng)過單片機處理后,與用戶設(shè)定的溫度上限(T MAX )和溫度下限(T MIN )比較,確定當(dāng)前溫度所處的區(qū)間,數(shù)碼管溫度顯示格式如圖 2 所示:
關(guān)于溫度區(qū)間的說明 :
溫度區(qū)間 0:當(dāng)前溫度<T MIN
溫度區(qū)間 1:T MIN ≤當(dāng)前溫度≤T MAX
溫度區(qū)間 2:當(dāng)前溫度>T MAX
可設(shè)定的最大溫度區(qū)間:0℃~99℃
2. 用戶輸入-3 ×4 矩陣鍵盤通過矩陣鍵盤設(shè)定系統(tǒng)的工作參數(shù),各個按鍵的功能定義如圖 3 所示:
“設(shè)置”按鍵按下后,進入工作參數(shù)設(shè)定界面,如圖 4 所示,依次按下設(shè)定的數(shù)值,再次按下“設(shè)置”按鍵,保存當(dāng)前輸入的數(shù)據(jù),并退出工作參數(shù)設(shè)定界面。
3. 執(zhí)行機構(gòu)執(zhí)行機構(gòu)由指示燈 L1 和繼電器組成,用于報警和連接外部高低溫執(zhí)行機構(gòu)。
3.1 實時溫度處在溫度區(qū)間 0,繼電器關(guān)閉,指示燈 L1 以 0.8 秒為間隔閃爍;
3.2 實時溫度處在溫度區(qū)間 1,繼電器關(guān)閉,指示燈 L1 以 0.4 秒為間隔閃爍;
3.3 實時溫度處在溫度區(qū)間 2,繼電器打開,指示燈 L1 以 0.2 秒為間隔閃爍。
4. 初始化狀態(tài)說明系統(tǒng)默認的溫度上限為 30℃(T MAX ),溫度下限為 20℃(T MIN ),可以通過矩陣鍵盤修改。
5. 電路原理圖設(shè)計假定一個光敏電阻,在光線充足的狀態(tài)下,阻值為 5KΩ,擋光狀態(tài)下阻值≥45 KΩ,使用簡單阻容元件、晶體管、運算放大器等設(shè)計一個光敏電路開關(guān)電路,擋光狀態(tài)下電路驅(qū)動 5V繼電器 K1 吸合,反之,繼電器斷開。設(shè)計過程中,請考慮信號抖動等因素,簡述電路的工作原理與設(shè)計思路,并繪制出電路原理圖。
本章資料下載地址無黑幣見原文,有的直接這里就行。
本章關(guān)于2012年省賽模擬試題“自動售水機”的源碼請各位下載查看,不懂得地方留言或者加群交流。
更多資訊關(guān)注公眾號:智術(shù)靈慧(zslh_dyh)
QQ交流群:693211073

-
-
第四屆 自動售水機.rar
2018-3-9 14:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
565.26 KB, 下載次數(shù): 20, 下載積分: 黑幣 -5
作者: 13122031726 時間: 2018-3-9 16:15
【藍橋杯單片機設(shè)計與開發(fā)】(20)省賽模擬題解析 2012第四屆 自動售水機(簡析)“自動售水機”設(shè)計任務(wù)書功能簡述通過競賽硬件平臺模擬小區(qū)自動售水機的工作流程:通過按鍵控制售水機水流出和停止;通過數(shù)碼管顯示費率、出水量及總費用;通過光敏電阻檢測環(huán)境亮度,在亮度過低的情況下,自動開燈。系統(tǒng)硬件電路主要由單片機控制電路、數(shù)碼管顯示電路、A/D 轉(zhuǎn)換電路及功能按鍵組成。系統(tǒng)框圖如圖 1 所示:
單總線驅(qū)動程序、CT107D 單片機考試平臺電路原理圖以及本題所涉及到的芯片數(shù)據(jù)手冊,可參考計算機上的電子文檔。程序流程圖及相關(guān)工程文件請以考生號命名,并保存在計算機上的考生文件夾中(文件夾名為考生準(zhǔn)考證號,文件夾位于 windows 桌面上)。
設(shè)計任務(wù)及要1. 溫度檢測溫度檢測采用 DS18B20 溫度傳感器,數(shù)據(jù)經(jīng)過單片機處理后,與用戶設(shè)定的溫度上限(T MAX )和溫度下限(T MIN )比較,確定當(dāng)前溫度所處的區(qū)間,數(shù)碼管溫度顯示格式如圖 2 所示:
關(guān)于溫度區(qū)間的說明 :
溫度區(qū)間 0:當(dāng)前溫度<T MIN
溫度區(qū)間 1:T MIN ≤當(dāng)前溫度≤T MAX
溫度區(qū)間 2:當(dāng)前溫度>T MAX
可設(shè)定的最大溫度區(qū)間:0℃~99℃
2. 用戶輸入-3 ×4 矩陣鍵盤通過矩陣鍵盤設(shè)定系統(tǒng)的工作參數(shù),各個按鍵的功能定義如圖 3 所示:
“設(shè)置”按鍵按下后,進入工作參數(shù)設(shè)定界面,如圖 4 所示,依次按下設(shè)定的數(shù)值,再次按下“設(shè)置”按鍵,保存當(dāng)前輸入的數(shù)據(jù),并退出工作參數(shù)設(shè)定界面。
3. 執(zhí)行機構(gòu)執(zhí)行機構(gòu)由指示燈 L1 和繼電器組成,用于報警和連接外部高低溫執(zhí)行機構(gòu)。
3.1 實時溫度處在溫度區(qū)間 0,繼電器關(guān)閉,指示燈 L1 以 0.8 秒為間隔閃爍;
3.2 實時溫度處在溫度區(qū)間 1,繼電器關(guān)閉,指示燈 L1 以 0.4 秒為間隔閃爍;
3.3 實時溫度處在溫度區(qū)間 2,繼電器打開,指示燈 L1 以 0.2 秒為間隔閃爍。
4. 初始化狀態(tài)說明系統(tǒng)默認的溫度上限為 30℃(T MAX ),溫度下限為 20℃(T MIN ),可以通過矩陣鍵盤修改。
5. 電路原理圖設(shè)計假定一個光敏電阻,在光線充足的狀態(tài)下,阻值為 5KΩ,擋光狀態(tài)下阻值≥45 KΩ,使用簡單阻容元件、晶體管、運算放大器等設(shè)計一個光敏電路開關(guān)電路,擋光狀態(tài)下電路驅(qū)動 5V繼電器 K1 吸合,反之,繼電器斷開。設(shè)計過程中,請考慮信號抖動等因素,簡述電路的工作原理與設(shè)計思路,并繪制出電路原理圖。
本章資料下載地址無黑幣見原文,有的直接這里就行。
本章關(guān)于2012年省賽模擬試題“自動售水機”的源碼請各位下載查看,不懂得地方留言或者加群交流。
更多資訊關(guān)注公眾號:智術(shù)靈慧(zslh_dyh)
QQ交流群:693211073

-
-
第四屆 自動售水機.rar
2018-3-9 16:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
565.26 KB, 下載次數(shù): 28, 下載積分: 黑幣 -5
作者: lzDestiny 時間: 2019-3-20 17:24
樓主停更了么?
作者: hfj2011 時間: 2019-6-12 10:50
期待更新,點贊
作者: abc111111 時間: 2019-6-12 13:17
怎么不用lcd12864當(dāng)顯示呢?學(xué)習(xí)不來
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |