給大家提供一個單片機八路搶答器設計的超詳細完整資料下載,含論文 仿真 原理圖 源碼 任務書及開題報告 焊接仿真教程和其他相關教程等等一應俱全 都有的都有了.
(1)、程序開始當主席臺按下開始搶答按鈕后,數碼管顯示搶答倒計時。在該時間內八路搶答按下有效,若超出搶答時間蜂鳴器發出搶答失敗警報預示該次搶答失敗。若有效時間內有人搶答則1位數碼管顯示搶答選手號,二位數碼管顯示答題倒計時。在答題有效時間內答題完成則搶答成功,若超過答題時間,蜂鳴器給出答題超時警報,答題失敗。 (2)、在開始搶答的過程中主席臺可按下結束搶答來中斷此次搶答。直接結束搶答后數碼管均顯示0.等待下次搶答開始。 (3)、在開始搶答時,主席臺可以不使用開始搶答按鈕而按下隨機抽擊選手答題按鈕來隨機抽取一位選手答題。該按鈕按下后1位數碼管顯示隨機選手號,二位數碼管顯示答題倒計時,若時間超時,蜂鳴器給出警報。若有效時間內答題,則答題成功。 (4) 、在隨機抽取選手答題中,可以按下結束隨機抽取選手答題按鈕來結束隨機抽取答題。結束后數碼管均顯示0. 等待下次搶答開始。
1.001.jpg (167.04 KB, 下載次數: 128)
下載附件
2017-5-10 16:44 上傳
1.002.jpg (123.39 KB, 下載次數: 135)
下載附件
2017-5-10 16:44 上傳
3、下面焊接步驟可按圖片進行
1.003.jpg (104.98 KB, 下載次數: 122)
下載附件
2017-5-10 16:44 上傳
下面圖片中畫的黑線表示也需要連線,在這里由于拍照時還未焊接,后來焊接的!在此特別提出!下面最后幾張圖片中可以看到該畫黑線處的連線! 很多同志需要自己焊接reset功能的找不到RST腳,可以上網查查的!上面圖單片機焊接兩排下面一排右邊開始數,第9個腳為RST腳!
1.004.jpg (107.17 KB, 下載次數: 140)
下載附件
2017-5-10 16:44 上傳
1.005.jpg (103.01 KB, 下載次數: 135)
下載附件
2017-5-10 16:44 上傳
1.006.jpg (106.97 KB, 下載次數: 157)
下載附件
2017-5-10 16:44 上傳
1.007.jpg (104.64 KB, 下載次數: 129)
下載附件
2017-5-10 16:44 上傳
仿真圖:
0.png (73.87 KB, 下載次數: 151)
下載附件
2017-5-10 16:33 上傳
0.png (105.73 KB, 下載次數: 134)
下載附件
2017-5-10 16:32 上傳
文件列表:
C51學習視頻沒有\
KEIL 軟件安裝視頻沒有\
keil_project\
keil_project2\
Keil_Project3\
Protel 99 軟件安裝包\
Protel 99畫圖軟件學習視頻\
proteus7.5仿真\
proteus8.0仿真\
PROTEUS仿真軟件的安裝方法\
proteus軟件安裝包\
仿真學習案例\
仿真指導\
單片機程序下載軟件\
參考論文及設計文檔\
開題報告及任務書\
沒有單片機初學者視頻教程\
焊接指導\
電路圖\
程序\
Keil-Project說明.txt
proteus7.5仿真.rar
proteus仿真.rar
八路搶答器設計功能說明.docx
搶答器仿真指導.docx
搶答器元器件清單.docx
畢設答辯技巧.rar
下面分享下基于單片機的八路搶答器設計任務書及開題報告.doc(51hei提供的附件內有完整的論文下載word格式 可編輯):
XXXX學校
任務書
學生姓名: XX 學號: XXXXXX 系 別: 電子工程系 專 業: 電子技術 畢業綜合實踐題目:基于單片機的八路搶答器設計
指導教師: XX講師 (姓名、專業技術職務)
材 料 目 錄 年月
XX學校
畢 業 綜 合 實 踐 任 務 書
學年 系專業
學生姓名: | | | | | | 畢業綜合實踐題目: | | | 起迄日期: | | 實踐地點: | | 指導教師: | | 顧問教師: |
| 教研組(室)負責人: | | 發任務書日期: XXXX年 XX月XX日 |
|
|
|
|
|
|
|
一、選題背景: 在這個瞬息萬變、競爭激烈的時代,選擇一個優越的工具往往能提升企業在這個市場上的競爭力。進入21世紀,隨著科學技術的發展,生活中的競賽越來越多,為了在比賽中能準確、公正、直觀的判斷出第一搶答者,設計的搶答器通常有數碼顯示、燈光、音響等多種手段指示出第一搶答者。設計一種易于使用和區分度高的搶答器成了非常迫切的任務,搶答器主要用于選手做搶答題時,選手進行搶答,搶到題的選手來回答問題。搶答器不僅考驗選手的反應速度同時也要求選手具備足夠的知識面和一定的勇氣。選手們都站在同一個起跑線上,體現了公平公正的原則,因此我們設計了一種采用數字電路制作的多功能數顯搶答器,除了有搶答功能外,還具有定時報警功能和數顯功能。 | 二、設計(研究)內容: 1.對本課題的總結介紹:“八路搶答器”設計采用STC89C51自身接口實現數碼管動態顯示和蜂鳴報警系統。當主席臺按下開始強大按鈕時,數碼管顯示搶答倒計時,在該時間內搶答有效如無人搶答時間到后將進行蜂鳴器報警。若有人搶答數碼管顯示答題倒計時,有限時間內答題則搶答成功,若有限時間內無法答題,蜂鳴器進行答題超時報警。 2.工作內容:首先要對該設計進行分析,用protel99SE將該電路的原理圖給繪出,然后用編寫出程序并畫出流程圖。編譯編寫的程序生成可執行HEX文件,再用proteus軟件進行設計仿真。再將程序下載到單片機中,最后將焊接電路,并進行硬件調試。 3.能力要求及目標 (1)學習能力強、工作態度認真,能及時完成任務。 (2)理論聯系實際,能綜合運用所學的理論知識和技能解決實際問題。具有較強的分析能力和解決問題的能力。 (3)畢業綜合實踐成果對實際應用有一定的現實意義且能體現較強的動手能力。 (4)在工作中有創新意識,在某些方面有獨到的見解和創新。 (5)在畢業綜合實踐中能較快的適應崗位的需要,有較強的職業道德修養,較強的溝通能力。 目標:通過該項目的設計,增強了自身的設計能力,并且也提高了專業水平。同時分析和解決問題的能力也涿漸提高。 | 三、課題任務具體要求及預期成果: 此設計方案是利用對數字電路知識的穩固掌握來進行課程設計的,要求做到熟悉各集成芯片的功能,進行正確的引腳連接,從而完成搶答器的功能實現和軟件仿真。 課題要求完成的方案及成果: 1. 設計出基于單片機的八路搶答器設計的原理圖設計、proteus仿真設計、源程序的編寫及調試、硬件的焊接及調試。 2. 編寫相應的設計相關文檔。 3.完成畢業綜合實踐報告。 | 四、時間安排與要求: : 選擇并確定課題,并收集好一些相關的資料。 : 下發任務書。 : 完成開題報告。 : 完成初步設計,包括電路圖、參數設置。 : 進行有關的仿真實驗、分析調試,并達到預期的效果。 : 完成論文的初稿,進行中期的檢查。 : 修改論文,最終完成畢業設計,上交材料。 | 五、完成課題需具備的條件: 實踐者應具備扎實的電路分析、電子技術應用、電子測量、等基礎知識,能熟練應用proteus、Protel等軟件對電路進行仿真分析、對電路進行檢測和排故。有一定的電路設計、分析問題和解決問題能力。同時需要一定的編程能力熟練KEIL下C51編程。 所需設備:裝有KEIL軟件、Protel軟件及Keil軟件的電腦。 參考資料: 【1】殷慶縱 李福勤 編著 電子線路CAD 北京:北京大學出版社,2009.8 【2】劉訓非 編著 EDA技術(二)校本教材 【3】陳其純 編著 電子線路(第二版)北京:高等教育出版社,2006.6 【4】陳尚松 郭慶 雷加 編著 電子測量與儀器 北京:電子工業出版社,2009.1 【5】張毅剛 修林成 編著 MCS-51單片機應用設計 北京:哈爾濱工業大學出版,社 2009.2 【6】何立民 主編 單片機應用技術選編 北京: 北京航空航天大學出版社,1991.9
| 六、其他需要說明的的事項:
|
單片機源程序:
- #include <reg51.h>
- #include <intrins.h>
- #include <stdlib.h>
- sbit DG1 = P0^0; //二位數碼管第一位選擇腳
- sbit DG2 = P0^1; //二位數碼管第二位選擇腳
- sbit DG3 = P0^3;
- //P2端口 數碼管段選
- //P1端口 八位選手搶答
- sbit start_qd_pin = P3^7;//開始搶答按鈕連接管腳
- sbit end_qd_pin = P3^5; //結束搶答按鈕連接管腳
- sbit start_srand_qd_pin = P3^4;//開始隨機抽取選手按鈕連接管腳
- sbit end_srand_qd_pin = P3^6;//結束隨機抽取選手按鈕連接管腳
- sbit beep=P3^3;//蜂鳴器連接管腳
- unsigned char weixuan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管段碼:0123456789
- unsigned char qd_num=0; //搶答選手號
- unsigned char qd_time=0; //搶答倒計時間
- unsigned char timeout_num=0; //定時器產生中斷次數
- unsigned char work_status = 0; //工作狀態,下面幾個為工作狀態定義的宏
- #define START_QD_STATUS 0
- #define WAIT_QD_STATUS 1
- #define ACK_QD_STATUS 2
- #define ACK_SRAND_QD_STATUS 3
- /*------延時2ms函數------*/
- void delay2ms(void) //誤差 0us
- {
- unsigned char a,b;
- for(b=4;b>0;b--)
- for(a=248;a>0;a--);
- _nop_(); //if Keil,require use intrins.h
- }
- /*------延時50ms函數,參數num為延時多少個50ms------*/
- void delay50ms(unsigned int num) //誤差 0us
- {
- unsigned char a,b;
- unsigned char i=0;
- for(i=0; i<num; i++)
- {
- for(b=173;b>0;b--)
- for(a=143;a>0;a--);
- }
- }
- /*---初始化定時器0---*/
- void InitTimer0(void)//50ms
- {
- TMOD = 0x01;//定時器工作模式1
- TH0 = 0x3C; //定時器裝值高8位
- TL0 = 0x0B0;//定時器裝值低8位
- EA = 1; //使能總中斷
- ET0 = 1; //使能定時器0中斷
- TR0 = 1; //啟動定時器
- }
- /*------關閉定時器0------*/
- void end_Timer0(void)
- {
- ET0 = 0;//關閉定時器0中斷
- TR0 = 0;//停止定時器0
- }
- /*----初始化函數-----*/
- void init(void)
- {
- DG1 = 0;
- DG2 = 0;
- DG3 = 0;
-
- beep = 0;//上電時由于該腳為高,而為高時蜂鳴器會叫,故初始化為低
- }
- /*----------等待開始搶答狀態
- 該狀態下一直等待主席臺按下開始搶答按鈕或隨機搶答按鈕,再進入相應的工作狀態!
- 這種狀態機的編程方式是當前單片機開發者的主流思想。
- ---------*/
- void start_qd_status(void)
- {
- if(start_qd_pin == 0)//檢測到開始搶答按鈕按下
- {
- work_status = WAIT_QD_STATUS;//工作狀態設置為等待答題狀態
- qd_num = 0; //回答選手號為0,等待選手按下
- qd_time = 20; //20s搶答時間
- timeout_num=0; //中斷次數清0
- InitTimer0(); //開啟定時器0
- }
- if(start_srand_qd_pin == 0)//檢測到隨機抽取選手答題按鈕按下
- {
- work_status = ACK_SRAND_QD_STATUS;//工作狀態設置為隨機選手回答狀態
- srand(TL0%100); //產生隨機數種子,srand和rand函數有興趣可以百度一下單片機產生隨機數方法!
- qd_num = (rand()%9);//0-8, 產生隨機數
- if(qd_num == 0) //防止產生隨機數0
- qd_num = (rand()%9); //再次產生隨機數
- qd_time = 30; //30s答題時間
- timeout_num=0; //中斷次數清0
- InitTimer0(); //開始定時器0
- }
- }
- /*-------開始按鈕按下后,等待選手搶答狀態函數------*/
- void wait_qd_status(void)
- {
- unsigned char i = 0;
- if(qd_time == 0)//無人搶答,搶答時間已到
- {
- end_Timer0();//停止定時器0
- //蜂鳴器給出無人搶答警報
- beep = 1; //蜂鳴器響
- delay50ms(40);
- beep = 0;
- work_status = START_QD_STATUS;//無人搶答后恢復原始狀態,設置工作狀態為開始搶答狀態
- }
- if(end_qd_pin == 0)//檢測到結束按鍵
- {
- end_Timer0();//停止定時器0
- qd_num = 0;//回答選手號為0
- qd_time = 0;//搶答時間清0
- work_status = START_QD_STATUS;//工作狀態置開始搶答狀態
- }
- switch(P1)//檢測哪位選手按下搶答按鈕
- {
- case 0xfe://1號
- qd_num = 1;//回答選手號為1
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0xfd://2號
- qd_num = 2;//回答選手號為2
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0xfb://3號
- qd_num = 3;//回答選手號為3
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0xf7://4號
- qd_num = 4;//回答選手號為4
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0xef://5號
- qd_num = 5;//回答選手號為5
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0xdf://6號
- qd_num = 6;//回答選手號為6
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0xbf://7號
- qd_num = 7;//回答選手號為7
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- case 0x7f://8號
- qd_num = 8;//回答選手號為8
- qd_time = 30;
- timeout_num=0;
- InitTimer0();
- work_status = ACK_QD_STATUS;
- break;
- default:
- break;
- }
- }
- /*------選手回答問題狀態------*/
- void ack_qd_status()
- {
- unsigned char i = 0;
- if(qd_time == 0)//答題超時
- {
- end_Timer0();//結束定時器0
- qd_num = 0;
- qd_time = 0;
- for(i=0;i<3;i++)//選手回答問題超時警報
- {
- beep = 1;
- delay50ms(5);
- beep = 0;
- delay50ms(5);
- }
- work_status = START_QD_STATUS;//設置工作狀態為開始搶答狀態
- }
- if(end_qd_pin == 0)//結束按鍵按下
- {
- end_Timer0();//結束定時器0
- qd_num = 0;
- qd_time = 0;
- work_status = START_QD_STATUS;//設置工作狀態為開始搶答狀態
- }
- }
- /*-------隨機選手回答狀態-------*/
- void ack_srand_status()
- {
- unsigned char i = 0;
- if(qd_time == 0)//答題超時
- {
- end_Timer0();//結束定時器0
- qd_num = 0;
- qd_time = 0;
- for(i=0;i<3;i++)//隨機選手回答問題超時警報
- {
- beep = 1;
- delay50ms(5);
- beep = 0;
- delay50ms(5);
- }
- work_status = START_QD_STATUS;
- }
- if(end_srand_qd_pin == 0)//結束按鍵
- {
- end_Timer0();//結束定時器0
- qd_num = 0; //選手號清0
- qd_time = 0;//時間清0
- work_status = START_QD_STATUS;//設置工作狀態為開始搶答狀態
- }
- }
- /*-----數碼管顯示函數
- 二位數碼管顯示倒計時時間
- 一位數碼管顯示搶答選手號------*/
- void display(unsigned char qd_time, unsigned char qd_num)
- {
- P2 = weixuan[qd_time/10];//顯示時間十位
- DG1 = 1; //打開第一位數碼管位選
- delay2ms();
- DG1 = 0;
- P2 = weixuan[qd_time%10];//顯示時間個位
- DG2 = 1; //打開第二位數碼管位選
- delay2ms();
- DG2 = 0;
- P2 = weixuan[qd_num%10];//顯示選手號
- DG3 = 1; //打開第三位數碼管位選
- delay2ms();
- DG3 = 0;
- }
- /*-------主函數-----*/
- void main()
- {
- init();//初始化
- while(1)
- {
- switch(work_status)//工作狀態判斷
- {
- case START_QD_STATUS://開始搶答狀態
- start_qd_status();
- break;
- case WAIT_QD_STATUS://等待選手搶答狀態
- wait_qd_status();
- break;
- …………限于本文篇幅 余下代碼請從51黑帖子末尾下載附件…………
復制代碼
八路搶答器全部資料打包下載(完整資料,含論文 仿真 原理圖 源碼 教程等等一應俱全 都有的都有了):
八路搶答器.zip
(6.76 MB, 下載次數: 416)
2017-5-10 16:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|