2020藍橋杯省賽微控制器2

2021-10-02 17:22:29 字數 2149 閱讀 7893

xbye寫法由於暫時不了解其內部工作原理,在國信長天2020版本的51板子上 p42 p44與按鍵相連。如果用xbyte數碼管顯示雖然方便但如果在中斷中有矩陣鍵盤寫法的按鍵掃瞄,使p42 p44強制拉低或拉高 會出現亂七八糟的的不可預判的bug,如數碼管不可顯示 矩陣鍵盤失效。

推薦直接用p埠寫法,在架構處列出

三行按鍵掃瞄這種大佬級的玩意,發明的人固然兩個字 nb 但如果p3其他埠有pwm(特別是p34 專門空出來接排針) 這個三行按鍵掃瞄就是乙個bug 裡面的trg 和 cont值就不是可以預判的了,推薦使用國信長天的矩陣鍵盤程式,超好用

三行按鍵掃瞄:

//pinb是某個埠 

unsigned

char trg =0;

unsigned

char cont =0;

void

keyread

(void

)

串列埠》pwm>數碼管顯示(數碼管顯示最低)

與時代接軌,與其他物件導向程式設計語言接軌

函式:小寫_小寫_小寫()

如: void oled_show(void);

變數:小寫直接組合起來

如:timebuff[0]

#define:全部大寫

如:#define chwei(); p2 &= 0x1f; p2 |= 0xbf;

當然單詞太長了可以簡寫

#include

"headfile.h"

#define chwei(); p2 &= 0x1f; p2 |= 0xc0;

#define chduan(); p2 &= 0x1f; p2 |= 0xe0;

#define chled(); p2 &= 0x1f; p2 |= 0x80;

#define ch0(); p2 &= 0x1f;

void

main

(void

)else

if(keyval == ***x)}}

void

isrt_imer0

(void

)void

temp_show

(void

)void

read_keyboard

(void

)break

;case1:

else

if(p42 ==0)

else

if(p35 ==0)

else

if(p34 ==0)

}break

;case2:

else

if(p42 ==0)

else

if(p35 ==0)

else

if(p34 ==0)

}break

;case3:

else

if(p42 ==0)

else

if(p35 ==0)

else

if(p34 ==0)

}break

;case4:

else

if(p42 ==0)

else

if(p35 ==0)

else

if(p34 ==0)

}break;}

}else

}break

;case2:

break;}

}

①讀寫eeprom記得完成一次加點delay

②ds18b20單匯流排延遲那個函式要在while 裡面寫個

for (i = 0; i < 12; i++)

③從stc_isp複製的定時器** 要注意晶振大小和記得加!!!

et0 =1;

//開定時器0中斷

ie2 |

=0x04

;//開定時器2中斷

ea =1;

//開總中斷

1-7屆省賽中有客觀題、ad畫圖、程式題 部分,所以說程式部分比較簡單

8屆及以後僅有程式和客觀題 所以說程式題要難些

也有人說 第十屆省賽難度 = 第七屆國賽

藍橋杯微控制器國賽 長按和短按

第九屆藍橋杯微控制器設計與開發專案決賽有這一部分 s7 定義為引數 設定 按鍵,按下此按鍵,進入電壓閾值引數設定介面 圖6 在閾值設定介面下,s6 回顯 按鍵定義為閾值調整功能 備註 非閾值設定介面下,s6按鍵為回顯功能 每次按下s6,電壓閾值增加0.1v,長按0.8秒以上,可實現快速增加功能 備註...

關於微控制器藍橋杯 EEPROM

eeprom運用了iic協議,我們在藍橋杯上寫eeprom時,應該注意他給的延時是不是15個 nop 然後,在他給的iic協議的基礎上,我們自己新增兩個eeprom write與eeprom read兩個讀寫函式 void eeprom write uchar add,uchar dat iic s...

藍橋杯 微控制器 中斷程式設計

使用程式前,將跳線j5調整為btn模式 2 3引腳短接使第一列按鍵一端接地 將跳線j13調整為io模式 2 3引腳短接使u25或非門輸入訊號wr接地 按下p32 int0引腳對應的按鍵s5,l1狀態翻轉 按下p33 int1引腳對應的按鍵s4,l2狀態翻轉 include reg52.h unsig...