版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1 設(shè)計(jì)任務(wù)及要求分析11.1 設(shè)計(jì)任務(wù)11.2 任務(wù)分析12 方案比較及認(rèn)證說明22.1 方案比較22.2 認(rèn)證說明23 系統(tǒng)設(shè)計(jì)33.1 設(shè)計(jì)方案結(jié)構(gòu)圖33.2 系統(tǒng)原理43.2.1 按鍵部分43.2.2 單片機(jī)控制部分43.2.3 數(shù)碼顯示部分53.3 系統(tǒng)總體接線圖64 軟件設(shè)計(jì)74.1 系統(tǒng)總體流程圖74.2 系統(tǒng)軟件設(shè)計(jì)85 系統(tǒng)仿真95.1 搶答仿真95.2 無人搶答仿真105.3 結(jié)果分析116 總結(jié)12參考文獻(xiàn)13附錄 程序清單141 設(shè)計(jì)任務(wù)及要求分析1.1 設(shè)計(jì)任務(wù) 初始條件:計(jì)算機(jī)、單片機(jī)、EDA實(shí)驗(yàn)箱。要求:設(shè)計(jì)智能搶答器,使用8位按鍵,分別模擬搶答者位數(shù)。當(dāng)在提
2、問時(shí)所有的按鍵均是被封鎖的,即按下無響應(yīng)。在要求回答時(shí),所有按鍵同時(shí)開放,當(dāng)某按鍵最先按下時(shí),立即保持該按鍵信號(hào)封鎖其它所有按鍵,用BCD碼形式顯示該按鍵。記錄搶答過程的時(shí)間(毫秒)并顯示。1.2 任務(wù)分析 分析設(shè)計(jì)題目可知應(yīng)采用51單片機(jī)進(jìn)行系統(tǒng)總體控制。其中,我們可選擇單片機(jī)的P0、P1、P2口輸入、輸出信號(hào),將10個(gè)控制鍵信號(hào)輸入單片機(jī),經(jīng)處理后,再將51單片機(jī)的控制信號(hào)輸出來驅(qū)動(dòng)數(shù)碼管顯示部分。在設(shè)計(jì)任務(wù)中,最關(guān)鍵的問題是對(duì)輸入信號(hào)的取入及處理。我們可以采用鍵盤掃描函數(shù)取入主持人按鍵信息及搶答按鍵信息,復(fù)位按鍵信息則可直接輸入,然后我們可以利用51單片機(jī)分別完成:對(duì)搶答器的開啟控制,啟
3、動(dòng)后顯示搶答時(shí)間,以及對(duì)最先按下按鍵的搶答者進(jìn)行號(hào)碼鎖存以及最終顯示搶答者號(hào)碼和搶答時(shí)間。按照這樣的思路來進(jìn)行設(shè)計(jì),就可以完成設(shè)計(jì)要求。 2 方案比較及認(rèn)證說明2.1 方案比較 方案一:在按鍵信號(hào)檢測(cè)方面,將8位搶答者的按鍵狀態(tài)分別輸入到P0.0-P0.7八位P0口中,然后單獨(dú)對(duì)每個(gè)按鍵進(jìn)行檢測(cè)并定義,使1-8八個(gè)按鍵按下后,能對(duì)應(yīng)產(chǎn)生1-8八個(gè)數(shù)字。再將數(shù)字返回到數(shù)碼管顯示子程序中,顯示搶答者號(hào)碼。在數(shù)碼管顯示時(shí),采用4位和1位的靜態(tài)顯示方式。 方案二:在按鍵信號(hào)檢測(cè)方面,將8位搶答者的按鍵狀態(tài)分別輸入到P0.0-P0.7八位P0口中,然后對(duì)8個(gè)按鍵進(jìn)行集中檢測(cè),將8個(gè)按鍵的狀態(tài)組成一個(gè)8位
4、的二進(jìn)制數(shù),設(shè)計(jì)一個(gè)鍵盤掃描程序,使1-8八個(gè)按鍵中某一個(gè)按下后能對(duì)應(yīng)產(chǎn)生1-8八個(gè)數(shù)字。再將數(shù)字返回到數(shù)碼管顯示子程序中,顯示搶答者號(hào)碼。在數(shù)碼管顯示時(shí),采用4位和1位的動(dòng)態(tài)掃描方式。 2.2 認(rèn)證說明 方案一中單獨(dú)對(duì)8個(gè)按鍵進(jìn)行檢測(cè),而不對(duì)8個(gè)按鍵整體檢測(cè),這樣需要對(duì)P0.0-P0.7八位P0口分別檢測(cè)然后對(duì)應(yīng)產(chǎn)生1-8八個(gè)數(shù)字,這樣會(huì)使單片機(jī)程序顯得冗長(zhǎng)。方案一中數(shù)碼管采用靜態(tài)顯示,由于使用的數(shù)碼管較多,占用的輸出口較多,使電路的硬件設(shè)計(jì)變得麻煩;方案二中對(duì)8個(gè)按鍵組成的整體進(jìn)行檢測(cè),這樣程序簡(jiǎn)潔,而且確保在第一個(gè)搶答者按下按鍵后,數(shù)碼管能準(zhǔn)確顯示搶答者的號(hào)碼。方案二中采用動(dòng)態(tài)掃描方式進(jìn)
5、行數(shù)字顯示,這樣數(shù)碼管占用的輸出口只有7個(gè),節(jié)省了電路的硬件開銷。故采用方案二。3 系統(tǒng)設(shè)計(jì)3.1 設(shè)計(jì)方案結(jié)構(gòu)圖 系統(tǒng)設(shè)計(jì)方案結(jié)構(gòu)圖如圖3.1所示。 時(shí)間顯示 搶答按鍵 51 單 片 機(jī) 控 制復(fù)位 開啟按鍵 號(hào)碼顯示 圖3.1 系統(tǒng)總原理圖3.2 系統(tǒng)原理3.2.1 按鍵部分本系統(tǒng)設(shè)計(jì)有10個(gè)按鍵,其中代表8位搶答者的按鍵接單片機(jī)的P1口,主持人按鍵接單片機(jī)的控制口P2.5來對(duì)搶答進(jìn)行開啟控制,復(fù)位鍵的輸出信號(hào)接單片機(jī)的RST位來對(duì)搶答器進(jìn)行復(fù)位控制。按鍵部分接線圖如圖3.2.1所示。圖3.2.1 按鍵部分接線圖3.2.2 單片機(jī)控制部分本設(shè)計(jì)中單片機(jī)從P1口接收來自代表8位搶答者的按鍵的
6、信號(hào),P2.5接收開啟控制信號(hào),RST位接收復(fù)位信號(hào)。通過調(diào)用單片機(jī)程序,單片機(jī)P0口接上拉電阻后將控制數(shù)碼管的段選,P2.0則將進(jìn)行顯示優(yōu)先搶答者號(hào)碼的數(shù)碼管的位選控制,P2.1-2.4進(jìn)行顯示時(shí)間的數(shù)碼管的位選,從而實(shí)現(xiàn)單片機(jī)對(duì)搶答器系統(tǒng)的控制。 單片機(jī)控制部分接線圖如圖3.2.2所示。圖3.2.2 單片機(jī)控制部分接線圖3.2.3 數(shù)碼顯示部分 顯示優(yōu)先搶答者號(hào)碼的數(shù)碼管和顯示時(shí)間的數(shù)碼管的七位段選是共用的,位選則分別由P2.0和P2.1-2.4控制,采用動(dòng)態(tài)顯示。 數(shù)碼顯示部分接線圖如圖3.2.3所示。圖3.2.3 數(shù)碼顯示部分接線圖3.3 系統(tǒng)總體接線圖 完成系統(tǒng)各部分功能設(shè)計(jì)以后,則
7、可將系統(tǒng)各部分組合起來,得到系統(tǒng)總體硬件接線圖。 系統(tǒng)總體接線圖如圖3.3所示。圖3.3 系統(tǒng)總體接線圖4 軟件設(shè)計(jì)4.1 系統(tǒng)總體流程圖 系統(tǒng)設(shè)計(jì)方案結(jié)構(gòu)圖如圖4.1所示。 開始開始鍵 按下?數(shù)碼管顯示0 N 搶答環(huán)節(jié)開始 開始計(jì)時(shí) Y 顯示 計(jì)時(shí) 結(jié)束 數(shù)碼管 顯示9999 到定時(shí) 時(shí)間? Y N N 數(shù)碼管顯示號(hào)碼 有人搶 答? 數(shù)碼管顯示時(shí)間 搶答環(huán)節(jié)結(jié)束 關(guān)閉計(jì)時(shí) Y圖4.1 系統(tǒng)總體流程圖4.2 系統(tǒng)軟件設(shè)計(jì) 系統(tǒng)設(shè)計(jì)的代表8位搶答者的按鍵,將信號(hào)輸入到單片機(jī)的P1.0-P1.7口后,鍵盤掃描程序取入P1口的輸入值,通過使用switch語句,將按鍵信息變?yōu)閮?yōu)先搶答者的號(hào)碼送入數(shù)碼管
8、顯示。在鍵盤掃描程序中,加入了延遲程序進(jìn)行消抖,使按鍵檢測(cè)更可靠。系統(tǒng)的開啟按鍵則可在輸入P2.5口后,可直接在主程序中加入if語句進(jìn)行控制。在數(shù)碼管時(shí)間顯示部分,數(shù)碼管采用動(dòng)態(tài)掃描方式,并使用了T0定時(shí)器計(jì)數(shù)。T0定時(shí)器的單次計(jì)時(shí)時(shí)間為1ms,每記一次時(shí),數(shù)碼管時(shí)間顯示數(shù)值加一,實(shí)現(xiàn)了數(shù)碼管毫秒計(jì)時(shí)的功能。 具體程序見附錄。5 系統(tǒng)仿真5.1 搶答仿真 當(dāng)計(jì)時(shí)時(shí)間未到9999,有人按下?lián)尨鸢存I時(shí),系統(tǒng)可顯示優(yōu)先搶答者的號(hào)碼以及計(jì)時(shí)時(shí)間。搶答仿真結(jié)果如圖5.1所示。圖5.1 搶答仿真結(jié)果圖5.2 無人搶答仿真 當(dāng)計(jì)時(shí)時(shí)間到9999,仍未有人按下?lián)尨鸢存I時(shí),系統(tǒng)顯示優(yōu)先搶答者的號(hào)碼為0,計(jì)時(shí)時(shí)間
9、為9999。無人搶答仿真結(jié)果如圖5.2所示。圖5.2 無人搶答仿真結(jié)果圖5.3 結(jié)果分析 通過仿真可以看出,系統(tǒng)的工作過程為:在開啟按鍵按下之前,數(shù)碼管顯示優(yōu)先搶答者的號(hào)碼為0,計(jì)時(shí)時(shí)間為0,直到開啟按鍵按下時(shí),搶答器才開始計(jì)時(shí),如果計(jì)時(shí)到9999之前,有搶答者按下按鍵進(jìn)行搶答,則數(shù)碼管顯示優(yōu)先搶答者的號(hào)碼以及計(jì)時(shí)時(shí)間。若計(jì)時(shí)到9999,則系統(tǒng)顯示優(yōu)先搶答者的號(hào)碼為0,計(jì)時(shí)時(shí)間為9999,表示無人搶答。從搶答器的工作過程可以看出,系統(tǒng)設(shè)計(jì)符合預(yù)期要求,而且可以準(zhǔn)確、可靠工作。6 總結(jié)經(jīng)過多次艱難的嘗試,我終于完成了能力拓展訓(xùn)練任務(wù)。在剛剛看到課程設(shè)計(jì)任務(wù)書時(shí),由于對(duì)單片機(jī)的編程及綜合使用不是很
10、熟悉,我都感覺有點(diǎn)無從下手。帶著一個(gè)個(gè)的疑問我認(rèn)真地去圖書館查閱了相關(guān)資料、上網(wǎng)去了解單片機(jī)編程、仿真相關(guān)的內(nèi)容,同時(shí)也和其他同學(xué)溝通、交流,互相學(xué)習(xí),漸漸的感覺有了些頭緒。雖然我的課程設(shè)計(jì)不是很成熟,仍然還有很多不足之處,但我仍然感覺自己還是有所收獲,因?yàn)樵谕瓿烧n程設(shè)計(jì)的過程中讓我不僅學(xué)到了很多課本上沒有的東西,還讓我學(xué)會(huì)了如何利用各種資源去學(xué)習(xí)自己不熟悉的知識(shí)。這次課程設(shè)計(jì)真是讓我獲益匪淺。參考文獻(xiàn)1 張義和.王敏男等編著.例說51單片機(jī).北京:人民郵電出版社.20082 張靖武.周靈彬編著.單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真. 北京:電子工業(yè)出版社,2007.3頂明亮.唐前輝編著.51
11、單片機(jī)應(yīng)用設(shè)計(jì)與仿真:基于keil與proteus.北京:北京航空航天大學(xué)出版社,20094蘇衛(wèi)斌.8050系列單片機(jī)應(yīng)用手冊(cè)M.北京:科學(xué)出版社,1997.5徐仁貴.微型計(jì)算機(jī)接口技術(shù)及應(yīng)用M.北京:機(jī)械工業(yè)出版社,1996.6高鋒.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)及實(shí)用技術(shù)M.北京:機(jī)械工業(yè)出版社,2004.附錄 程序清單#includesbit seg_1 = P20; /顯示選手的數(shù)碼管 sbit seg_2 = P21; /顯示計(jì)時(shí)的千位sbit seg_3 = P22; /顯示計(jì)時(shí)的百位sbit seg_4 = P23; /顯示計(jì)時(shí)的十位sbit seg_5 = P24; /顯示計(jì)時(shí)的個(gè)位 sb
12、it key_1 = P25; /開始按鍵 #define dat P0 #define Key_port P1 /設(shè)置八組搶答按鍵,P1.0P1.7分別對(duì)應(yīng)組號(hào)18 unsigned int T0count=0; /計(jì)數(shù)器計(jì)數(shù) long int Time= 0; /計(jì)時(shí)時(shí)間 bit flag1 = 0; /當(dāng)開始按下按鍵時(shí),標(biāo)志位置1bit flag2 = 0; /當(dāng)有選手按下按鍵時(shí),標(biāo)志位置1const unsigned char code seg_dat= /時(shí)間的數(shù)碼管的顯示,對(duì)應(yīng)數(shù)字0f0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
13、,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff, ; unsigned char key_scan(void); /鍵盤掃描函數(shù),返回值為按下的鍵的序號(hào) void dis_1(unsigned char num1); /數(shù)碼管的顯示函數(shù) 顯示的是哪一位選手按下了 void dis_4(long int num4); /數(shù)碼管的顯示函數(shù) 顯示的是計(jì)時(shí)時(shí)間 void delayms(unsigned int i); /延時(shí)大約imsvoid delayus(unsigned int i); /延時(shí)大約ius unsigned char key_scan(void) /鍵盤掃
14、描函數(shù) ,返回值為按下的鍵的序號(hào)unsigned char get_port = 0; /清零 Key_port = 0xff; /每次掃描前,先將接鍵盤的引腳口拉高 key_1 = 1; /開始按鍵,每次掃描前先拉高 get_port = Key_port; /從端口采回值 if(get_port != 0xff) /如果檢測(cè)到有鍵按下 delayms(10); /延時(shí)10ms,進(jìn)行消抖操作。 get_port = Key_port; /再次采回端口值 if(get_port != 0xff) get_port = Key_port;switch (Key_port) /標(biāo)志位置位 并返回相
15、應(yīng)的值 case 0xfe:flag2 = 1;return 1;case 0xfd:flag2 = 1;return 2;case 0xfb:flag2 = 1;return 3;case 0xf7:flag2 = 1;return 4; case 0xef:flag2 = 1;return 5; case 0xdf:flag2 = 1;return 6;case 0xbf:flag2 = 1;return 7;case 0x7f:flag2 = 1;return 8;while(!Key_port); /松手檢測(cè) if(key_1 = 0) /如果開始鍵按下 delayms(10); /延
16、時(shí)10ms if(key_1 = 0) /再次判斷是否確實(shí)按下按鍵 flag1 = 1; /標(biāo)志位置1 return 9; /返回值為9 while(!key_1); /松手檢測(cè) return 0;void dis_1(unsigned char num1) /1位LED數(shù)碼管的顯示函數(shù) seg_1 = 1; /開數(shù)碼管的顯示 seg_2 = 0;seg_3 = 0;seg_4 = 0;seg_5 = 0;dat = seg_datnum1; /讓數(shù)碼管顯示對(duì)應(yīng)的數(shù)值 delayms(5); /短暫的延時(shí)可以增加亮度 dat = seg_dat16; /關(guān)閉顯示,避免對(duì)下一次的值造成干擾。 v
17、oid dis_4(long int num4) /四位LED數(shù)碼管的顯示函數(shù) unsigned char shi,ge,bai,qian;qian = num4/1000; /提取出每位的值bai = num4%1000/100;shi = num4%100/10; ge = num4%10; seg_1 = 0; seg_2 = 0;seg_3 = 0; seg_4 = 0;seg_5 = 1; /開數(shù)碼管的顯示dat = seg_datge; /讓數(shù)碼管顯示個(gè)位的數(shù)值 delayms(5); /短暫的延時(shí)可以增加亮度 dat = seg_dat16; /關(guān)閉顯示,避免對(duì)下一次的值造成干擾
18、。 seg_1 = 0; seg_2 = 0; seg_3 = 0;seg_4 = 1; /開數(shù)碼管的顯示seg_5 = 0;dat = seg_datshi; /讓數(shù)碼管顯示十位的數(shù)值 delayms(5); /短暫的延時(shí)增加亮度 dat = seg_dat16; /關(guān)閉顯示,避免對(duì)下一次的值造成干擾。 seg_1 = 0; seg_2 = 0;seg_3 = 1; /開數(shù)碼管的顯示seg_4 = 0;seg_5 = 0; dat = seg_datbai; /讓數(shù)碼管顯示百位的數(shù)值 delayms(5); /短暫的延時(shí)可以增加亮度 dat = seg_dat16; /關(guān)閉顯示,避免對(duì)下一次的值造成干擾。seg_1 = 0; seg_2 = 1; /開數(shù)碼管的顯示seg_3 = 0;seg_4 = 0;seg_5 = 0;dat = seg_datqian; /讓數(shù)碼管顯示千位的數(shù)值 delayms(5); /短暫的延時(shí)增加亮度 dat = seg_dat16; /關(guān)閉顯示,避免對(duì)下一次的值造成干
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 本地商業(yè)中心保安工作總結(jié)與服務(wù)改進(jìn)計(jì)劃
- 河北省2024屆高三年級(jí)上冊(cè)1月期末質(zhì)量檢測(cè)地理試卷(含答案)
- 電子設(shè)備租賃委托合同三篇
- 高中化學(xué)鹵素知識(shí)點(diǎn)
- 2025年中考數(shù)學(xué)高分拓展必刷題之圖形旋轉(zhuǎn)問題
- 內(nèi)分泌科主治醫(yī)師考試模擬題(151~200)
- 六年級(jí)下冊(cè)數(shù)學(xué)教案
- 家電行業(yè)客戶滿意度提升方案
- 書店店長(zhǎng)文化活動(dòng)策劃方案
- 食品檢驗(yàn)員培訓(xùn)
- 學(xué)習(xí)國(guó)企好干部二十字的思想認(rèn)識(shí)(通用6篇)
- 山東省濟(jì)南市歷下區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期中物理試卷
- 安全生產(chǎn)隱患識(shí)別圖集 問題圖片和整改圖片對(duì)比 危險(xiǎn)源識(shí)別(中)
- OSA患者圍術(shù)期管理的專家共識(shí)
- 陜西省西安市碑林區(qū)2023-2024學(xué)年三年級(jí)上學(xué)期期中數(shù)學(xué)試卷
- 河北省滄衡八校聯(lián)盟2023-2024學(xué)年高二上學(xué)期11月期中數(shù)學(xué)試題
- 我的家鄉(xiāng)湖北咸寧介紹
- 幼教培訓(xùn)課件:《幼兒園班級(jí)區(qū)域創(chuàng)設(shè)》
- 行政辦公室行政辦公管理檢查開展情況匯報(bào)
- 大課間跑操評(píng)分表
- 老舊小區(qū)改造室外給排水工程施工方案和技術(shù)措施
評(píng)論
0/150
提交評(píng)論