基于STM32的6路搶答器Proteus仿真設(shè)計(jì)(仿真+程序+設(shè)計(jì)報(bào)告+講解視頻)
仿真圖proteus 8.9
程序編譯器:keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):C0116
1. 主要功能
設(shè)計(jì)一個(gè)基于單片機(jī)的多路智力搶答器系統(tǒng)。主要功能包括:
(1)6路;
(2)具有數(shù)據(jù)鎖存和顯示的功能;
(3)電路仿真。
詳細(xì)功能要求:
以STM32單片機(jī)為核心,設(shè)計(jì)一個(gè)6路競(jìng)賽搶答器:同時(shí)供6名選手或6個(gè)代表隊(duì)比賽,分別用矩陣按鍵1-6表示。
1.設(shè)置一個(gè)系統(tǒng)復(fù)位RST和搶答控制開關(guān)STAT,開關(guān)由主持人控制。
2.搶答器具有鎖存與顯示功能。即選手按按鈕,鎖存相應(yīng)的編號(hào),并在優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。
3.搶答器具有倒計(jì)時(shí)功能,且一次搶答的時(shí)間由主持人設(shè)定(默認(rèn)20秒)。默認(rèn)倒計(jì)時(shí)時(shí)間可以通過(guò)按鍵+和按鍵-設(shè)置。
4.當(dāng)主持人啟動(dòng)“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。
參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。
5.如果在主持人啟動(dòng)"開始"鍵前搶答 ,搶答無(wú)效。且顯示器上會(huì)顯示搶答選手編號(hào),蜂鳴器報(bào)警。
6.如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。
主要硬件設(shè)備:STM32F103C6+矩陣按鍵+LED+蜂鳴器+數(shù)碼管
資料下載鏈接(可點(diǎn)擊):
通過(guò)網(wǎng)盤分享的文件:KEY_C0116
鏈接: https://pan.baidu.com/s/1wlLQUtkveCcQ780kLbmCxg?pwd=j6fu
提取碼: j6fu
2.仿真
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。
主持人控制第一行按鍵控制搶答器的啟停和調(diào)整包括按鍵+和按鍵-設(shè)置倒計(jì)時(shí)時(shí)間,系統(tǒng)復(fù)位RST和搶答控制開關(guān)STAT。
開始搶答前選手違規(guī)搶答會(huì)顯示顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。
當(dāng)主持人啟動(dòng)“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。如果在主持人啟動(dòng)"開始"鍵前搶答 ,搶答無(wú)效。且顯示器上會(huì)顯示搶答選手編號(hào),蜂鳴器報(bào)警。如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。
搶答器具有鎖存與顯示功能。即選手按按鈕,鎖存相應(yīng)的編號(hào),并在優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。
3. 程序
程序是用keil5 mdk版本打開的,如果打開有問(wèn)題,核實(shí)下keil的版本。程序是HAL版本編寫的,有stm32cubemx配置文件。有注釋可以結(jié)合講解視頻理解。
key_num=KEY_SCAN();
if(key_num>=1){
if(key_num==1){
if(counter_num>0&&state==0){
counter_num--;//搶答開始倒計(jì)時(shí)-1
}
}else if(key_num==2){
if(counter_num<99&&state==0){
counter_num++;//搶答開始倒計(jì)時(shí)+1
}
}else if(key_num==3){//復(fù)位按鍵
if(state==0||state==2){
counter_num=STAT_TIME;
LED1=LED2=LED3=LED4=LED5=LED6=1;
num=0;
BEEP=0;
if(state==2)state=0;
}
}else if(key_num==4){
if(state==0){
state=1;//開始搶答
LED1=LED2=LED3=LED4=LED5=LED6=1;//所有燈關(guān)閉
num=0;
BEEP=0;
}else if(state==2){
state=1;
counter_num=STAT_TIME;
LED1=LED2=LED3=LED4=LED5=LED6=1;//所有燈關(guān)閉
}
}else if(key_num==5){//1號(hào)搶答
if(state==0){//開始前按下?lián)尨疰I,違規(guī)搶答
num=1;
LED1=ON;
BEEP=1; //蜂鳴器長(zhǎng)響
}else if(state==1){//搶答倒計(jì)時(shí)按下
LED1=ON;
BEEP=1;
HAL_Delay(10);
BEEP=0; //蜂鳴器短暫響一下
state =2; //搶答倒計(jì)時(shí)結(jié)束
num=1;
}
}else if(key_num==6){//2號(hào)搶答
if(state==0){//開始前按下?lián)尨疰I,違規(guī)搶答
num=2;
LED2=ON;
BEEP=1; //蜂鳴器長(zhǎng)響
}else if(state==1){//搶答倒計(jì)時(shí)按下
LED2=ON;
BEEP=1;
HAL_Delay(10);
BEEP=0; //蜂鳴器短暫響一下
state =2; //搶答倒計(jì)時(shí)結(jié)束
num=2;
}
}else if(key_num==7){//3號(hào)搶答
if(state==0){//開始前按下?lián)尨疰I,違規(guī)搶答
num=3;
LED3=ON;
BEEP=1; //蜂鳴器長(zhǎng)響
}else if(state==1){//搶答倒計(jì)時(shí)按下
LED3=ON;
BEEP=1;
HAL_Delay(10);
BEEP=0; //蜂鳴器短暫響一下
state =2; //搶答倒計(jì)時(shí)結(jié)束
num=3;
}
}else if(key_num==8){//4號(hào)搶答
if(state==0){//開始前按下?lián)尨疰I,違規(guī)搶答
num=4;
LED4=ON;
BEEP=1; //蜂鳴器長(zhǎng)響
}else if(state==1){//搶答倒計(jì)時(shí)按下
LED4=ON;
BEEP=1;
HAL_Delay(10);
BEEP=0; //蜂鳴器短暫響一下
state =2; //搶答倒計(jì)時(shí)結(jié)束
num=4;
}
}else if(key_num==9){//5號(hào)搶答
if(state==0){//開始前按下?lián)尨疰I,違規(guī)搶答
num=5;
LED5=ON;
BEEP=1; //蜂鳴器長(zhǎng)響
}else if(state==1){//搶答倒計(jì)時(shí)按下
LED5=ON;
BEEP=1;
HAL_Delay(10);
BEEP=0; //蜂鳴器短暫響一下
state =2; //搶答倒計(jì)時(shí)結(jié)束
num=5;
}
}else if(key_num==10){//6號(hào)搶答
if(state==0){//開始前按下?lián)尨疰I,違規(guī)搶答
num=6;
LED6=ON;
BEEP=1; //蜂鳴器長(zhǎng)響
}else if(state==1){//搶答倒計(jì)時(shí)按下
LED6=ON;
BEEP=1;
HAL_Delay(10);
BEEP=0; //蜂鳴器短暫響一下
state =2; //搶答倒計(jì)時(shí)結(jié)束
num=6;
}
}
}
// memset(smgbuf, 0, sizeof(smgbuf));
smgbuf[4]=gsmg_code[num];
smgbuf[5]=0x40;//顯示-
smgbuf[6]=gsmg_code[counter_num/10];
smgbuf[7]=gsmg_code[counter_num%10];
SMG_Display(smgbuf,1);
}
4. 設(shè)計(jì)報(bào)告
10488字設(shè)計(jì)報(bào)告,內(nèi)容包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、結(jié)論等。
隨著電子技術(shù)的迅猛發(fā)展和普及,智能競(jìng)賽搶答器作為一種集成先進(jìn)科技與傳統(tǒng)競(jìng)賽元素的創(chuàng)新產(chǎn)品,在各類知識(shí)競(jìng)賽、辯論賽、以及豐富多彩的趣味活動(dòng)中逐漸占據(jù)了不可或缺的地位。這一轉(zhuǎn)變,不僅標(biāo)志著競(jìng)賽工具的技術(shù)革新,更深刻地影響著比賽的公平性、互動(dòng)性和觀賞性。
在傳統(tǒng)的手動(dòng)搶答方式中,選手需要依靠自身反應(yīng)速度迅速按下按鈕以表明搶答意愿,但這種方式往往受限于人為因素,如反應(yīng)速度慢、判斷不準(zhǔn)確,甚至存在作弊的可能性,從而影響了競(jìng)賽的公正性和效率。相比之下,基于STM32單片機(jī)的智能競(jìng)賽搶答器,憑借其高精度、高速度和強(qiáng)大的數(shù)據(jù)處理能力,從根本上解決了這些問(wèn)題。
5. 資料清單&下載鏈接
0、常見使用問(wèn)題及解決方法–必讀!?。?!
1、程序代碼
2、Proteus仿真
3、功能要求
4、開題報(bào)告
5、設(shè)計(jì)報(bào)告
6、講解視頻
7、框圖
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接(可點(diǎn)擊):
鏈接: https://pan.baidu.com/s/1wlLQUtkveCcQ780kLbmCxg?pwd=j6fu
提取碼: j6fu