版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 1任務(wù)和要求1</b></p><p> 2設(shè)計(jì)思想與原理1</p><p><b> 2.1設(shè)計(jì)思想1</b></p><p> 2.2 設(shè)計(jì)原理1</p><p>
2、;<b> 3 流程圖3</b></p><p><b> 4硬件電路圖4</b></p><p><b> 5仿真圖5</b></p><p><b> 6課程設(shè)計(jì)心得8</b></p><p><b> 7參考文獻(xiàn)8<
3、;/b></p><p><b> 8致 謝8</b></p><p><b> 9附錄:9</b></p><p><b> 1任務(wù)和要求</b></p><p> 1.設(shè)計(jì)一個(gè)可供6-8組參賽隊(duì)的智力競(jìng)賽搶答器,每組設(shè)置一個(gè)搶答按鈕。</p>
4、<p> 2.電路具有第一搶答信號(hào)的鑒別和鎖存功能。即保持該信號(hào)不變,同時(shí)使后輸入的信號(hào)無(wú)效。</p><p> 3.在發(fā)出“搶答開(kāi)始”命令后計(jì)時(shí),規(guī)定的搶答時(shí)間到后無(wú)人搶答,發(fā)出“搶答時(shí)間到”信號(hào),并鎖定輸入電路,使各路搶答信號(hào)無(wú)法再輸入。</p><p> 4.設(shè)置計(jì)分電路,每組預(yù)置為100分或其他,答對(duì)一次加10分,答錯(cuò)減10分(此項(xiàng)可選)。</p>
5、<p><b> 2設(shè)計(jì)思想與原理</b></p><p><b> 2.1設(shè)計(jì)思想</b></p><p> 我的設(shè)計(jì)思路是競(jìng)賽搶答器要有報(bào)警系統(tǒng),要是在規(guī)定時(shí)間內(nèi)還沒(méi)有參賽者搶答或回答出問(wèn)題時(shí)就會(huì)發(fā)出報(bào)警聲,倒計(jì)時(shí)為設(shè)定為30S。并且如果出現(xiàn)犯規(guī)搶答時(shí)也會(huì)發(fā)出報(bào)警并且顯示該犯規(guī)選手的編號(hào)。這個(gè)搶答器可同時(shí)供不大于8名選手或8個(gè)
6、代表隊(duì)參加比賽,各用一個(gè)搶答按鈕,按鈕的編號(hào)與選手的編號(hào)是相對(duì)應(yīng)的,分別是S1、S2、S3、S4、S5、S6、S7、S8;給節(jié)目主持人設(shè)置二個(gè)控制按鈕開(kāi)關(guān),用來(lái)控制系統(tǒng)的清零和搶答的開(kāi)始; 該八路搶答器具有程序存儲(chǔ)、數(shù)據(jù)鎖存和顯示功能,搶答開(kāi)始后,若有選手按動(dòng)搶答按鈕,編號(hào)立即鎖存, 并在數(shù)碼管上顯示出選手的編號(hào),參賽選手在設(shè)定的時(shí)間內(nèi)搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答時(shí)刻的時(shí)間, 并保持到主持人將系統(tǒng)清零
7、; 如果定時(shí)搶答30S后,卻沒(méi)有選手搶答時(shí),系統(tǒng)持續(xù)報(bào)警,直到定時(shí)搶答的時(shí)間為零, 本次搶答無(wú)效,并封鎖輸入電路,禁止選手超時(shí)后搶答,時(shí)間顯示器上顯示FFF 犯規(guī)處理:如果主持人沒(méi)按"開(kāi)始"鍵,就有選手搶答,則顯示選手編碼,并持續(xù)報(bào)警。</p><p> 如果已經(jīng)有選手搶答了,別的選手則按鍵無(wú)效。直到主持人重新復(fù)位按下開(kāi)始鍵為止。主持人可以根據(jù)不同的問(wèn)答方式設(shè)定不同的搶答時(shí)間和回答
8、時(shí)間。</p><p><b> 2.2 設(shè)計(jì)原理</b></p><p> 1. 本電路采用單片機(jī)AT89C51作為控制芯片,單片機(jī)的P0口外接七段顯示數(shù)碼管,數(shù)碼管用來(lái)顯示八位選手的號(hào)碼。并在各個(gè)外接電路上并接開(kāi)關(guān)按鍵,按鍵另一端接地。發(fā)光二極管采用共陽(yáng)極接法,由于P0口為高電平呈輸入狀態(tài),當(dāng)有按鍵按下時(shí),P0口呈低電平與按鍵對(duì)應(yīng)的發(fā)光二極管滿(mǎn)足點(diǎn)亮條件點(diǎn)亮。
9、在程序編程上采用查詢(xún),查詢(xún)P1口P1.0到P1.7的八個(gè)端口呈低電平,即查詢(xún)是哪個(gè)選手先按鍵,然后將選手號(hào)碼送至數(shù)碼管上顯現(xiàn)出來(lái)。 2. 蜂鳴器是利用三極管處于開(kāi)關(guān)狀態(tài)是的導(dǎo)通與截止工作,在三極管導(dǎo)通時(shí)蜂鳴器工作,三極管截止時(shí)蜂鳴器不工作。三極管采用8550 PNP型基極接于P3.7口置其低電平時(shí)三極管導(dǎo)通,置其高電平時(shí)三極管截止。 3. 數(shù)碼管采用共陰極七段顯
10、示,其內(nèi)部發(fā)光二極管為共陰極接低電平。在主持人按下開(kāi)始鍵后,10秒倒計(jì)時(shí)在數(shù)碼管上顯示。搶答選手按下鍵的時(shí)候,其號(hào)碼被送往數(shù)碼管進(jìn)行顯示。選手答題的時(shí)候,15S倒計(jì)時(shí)也送往顯示。</p><p> 4. 軟件設(shè)計(jì)分析首先在程序的開(kāi)始為選手設(shè)置了一段違規(guī)程序,該程序的作用是為了防止選手在主持人沒(méi)有按下?lián)尨疰I時(shí),有的選手已經(jīng)提前搶答了,本次搶答為無(wú)效搶答,并有報(bào)警和記錄下該位選手的選號(hào),做違規(guī)處理。如果在主持人按下
11、搶答鍵后規(guī)定時(shí)間內(nèi)搶答,該次搶答被視為有效搶答,在主持按下回答問(wèn)題的鍵時(shí)選手就可以在規(guī)定的時(shí)間內(nèi)回答問(wèn)題了。</p><p><b> 3 流程圖</b></p><p><b> 4硬件電路圖</b></p><p> 圖4.1 硬件電路圖</p><p> 電路工作原理和過(guò)程說(shuō)明:上圖為
12、仿真的總頁(yè)面圖,選用的單片機(jī)為89c51,LED顯示器等待。P1.0到p1.7為八個(gè)搶答開(kāi)關(guān),p3.2到p3.5為時(shí)間設(shè)計(jì)開(kāi)關(guān).p3.0為開(kāi)始開(kāi)關(guān),p3.2為停止控制端。當(dāng)加載好程序后,按下開(kāi)始鍵就可以開(kāi)始搶答了。同時(shí)顯示器上會(huì)選手的號(hào)碼和回答的時(shí)間開(kāi)始倒計(jì)時(shí),搶答時(shí)間以及回答時(shí)間都可以重新設(shè)定。當(dāng)有犯規(guī)搶答時(shí)會(huì)發(fā)出報(bào)警聲,并顯示犯規(guī)選手的編號(hào)。</p><p><b> 5仿真圖 </b>
13、;</p><p> 說(shuō)明:當(dāng)加載好程序后,按下仿真桌面的左下角的play鍵出現(xiàn)下圖5.1的現(xiàn)象</p><p><b> 圖5.1</b></p><p> 說(shuō)明:按下開(kāi)始鍵后出現(xiàn)下圖5.2的現(xiàn)象顯示為40s,</p><p><b> 圖5.2</b></p><p&
14、gt; 說(shuō)明:當(dāng)按下開(kāi)始鍵后,如圖5.3顯示二號(hào)正確搶答并顯示四號(hào)的號(hào)碼以及回答的時(shí)間80s</p><p><b> 圖5.3</b></p><p> 說(shuō)明:四號(hào)選手犯規(guī)搶答顯示如下圖5.4,顯示出四號(hào)的號(hào)碼并不斷閃爍,發(fā)出聯(lián)續(xù)不斷的報(bào)警聲</p><p><b> 圖5.4</b></p>&l
15、t;p> 說(shuō)明:如下圖5.5在主持人有必要的時(shí)候可以調(diào)整搶答的時(shí)間,這樣也就非常方便的適用于各種不同的游戲環(huán)境</p><p><b> 圖5.5</b></p><p> 說(shuō)明:如下圖5.6按下回答時(shí)間調(diào)整開(kāi)關(guān)時(shí)間從80S減到60S回答時(shí)間同時(shí)也可以調(diào)整</p><p><b> 圖5.6</b></
16、p><p><b> 6課程設(shè)計(jì)心得</b></p><p> 這次課程設(shè)計(jì)消耗了許多的時(shí)間和精力,真是沒(méi)少發(fā)功夫。同時(shí)從這次課程設(shè)計(jì)我也深深的感受到;搞計(jì)算機(jī)的一定要有個(gè)嚴(yán)禁的態(tài)度來(lái)對(duì)待事情。這次單片機(jī)課程設(shè)計(jì)我們?cè)O(shè)計(jì)的是競(jìng)賽搶答器的設(shè)計(jì),這也是許多競(jìng)賽場(chǎng)合所必須的。</p><p> 其實(shí)搞這種電路是非常有趣的事情,但是它要求思維過(guò)于嚴(yán)謹(jǐn)
17、我我覺(jué)的要從事這方面的工作必須要做一定的心里準(zhǔn)備,因?yàn)檎娴氖呛苄量唷R欢斡么竽X。同時(shí)成功完成這次課程設(shè)計(jì)之后,我對(duì)我的未來(lái)又多拾回了一份信心。</p><p><b> 7參考文獻(xiàn)</b></p><p> [1] 蔡美琴,張為民,沈新群等.MCS51系列單片機(jī)系統(tǒng)及其應(yīng)用[M].北京:高等教育出版社,1992.</p><p> ?。?
18、]何立民.單片機(jī)應(yīng)用技術(shù)選篇(5)[M].北京:北京航空航天大學(xué)出版社,1997.</p><p> [3]楊光友. 單片機(jī)微型計(jì)算機(jī)原理及接口技術(shù)[M].北京:中國(guó)水利水電出版社,2002</p><p> ?。?]李廣弟.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1994</p><p> ?。?]閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). 北京:高等教育出版社
19、,1989</p><p><b> 8 致 謝</b></p><p> 在這次課程設(shè)計(jì)中,我要特別感謝我的指導(dǎo)老師——申壽云,他不斷的諄諄教誨,就算是很夜深我們?nèi)?wèn)他,他也不會(huì)感覺(jué)到煩。只要你用心去做,他都會(huì)幫你用心的解答,他是真的希望每個(gè)同學(xué)都能認(rèn)真完成課程設(shè)計(jì),學(xué)到真正的知識(shí)。同時(shí)我也要感謝我的組員,沒(méi)有他們的支持我也不會(huì)堅(jiān)持這么久來(lái)做課程設(shè)計(jì)。</
20、p><p><b> 9附錄:</b></p><p><b> 程序設(shè)計(jì)源程序:</b></p><p> OK EQU 20H;搶答開(kāi)始標(biāo)志位</p><p> RING EQU 22H;響鈴標(biāo)志位</p><p><b> ORG 0000H</b
21、></p><p><b> AJMP MAIN</b></p><p><b> ORG 0003H</b></p><p> AJMP INT0SUB</p><p><b> ORG 000BH</b></p><p> AJMP
22、T0INT</p><p><b> ORG 0013H</b></p><p> AJMP INT1SUB</p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p><p><b> ORG 0040H<
23、/b></p><p> MAIN: MOV R1,#40;初設(shè)搶答時(shí)間為40s</p><p> MOV R2,#80;初設(shè)答題時(shí)間為80s</p><p> MOV TMOD,#11H;設(shè)置未定時(shí)器/模式1</p><p> MOV TH0,#0F0H</p><p> MOV TL0,#0FFH;
24、越高發(fā)聲頻率越高,越尖</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H;50ms為一次溢出中斷</p><p><b> SETB EA</b></p><p><b> SETB ET0</b></p><p><b&
25、gt; SETB ET1</b></p><p><b> SETB EX0</b></p><p> SETB EX1;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p><b> CLR OK</b></p><p><b> CLR RING</
26、b></p><p><b> SETB TR1</b></p><p> SETB TR0;一開(kāi)始就運(yùn)行定時(shí)器,以開(kāi)始顯示FFF.如果想重新計(jì)數(shù),重置TH1/TL1就可以了</p><p> ;=====查詢(xún)程序=====</p><p> START: MOV R5,#0BH</p>&l
27、t;p> MOV R4,#0BH</p><p> MOV R3,#0BH</p><p> ACALL DISPLAY;未開(kāi)始搶答時(shí)候顯示FFF</p><p> JB P3.0,NEXT;ddddddd</p><p> ACALL DELAY</p><p> JB P3.0,NEXT;去抖動(dòng),
28、如果"開(kāi)始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢(xún)</p><p> ACALL BARK;按鍵發(fā)聲</p><p><b> MOV A,R1</b></p><p> MOV R6,A;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p> SETB OK;搶答標(biāo)志位,用于COU
29、NT只程序中判斷是否查詢(xún)搶答</p><p> MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào)</p><p> MOV R3,#0AH;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p> AJMP COUNT;進(jìn)入倒計(jì)時(shí)程序,"查詢(xún)有效搶答的程序"在COUNT里面</p><p> NEXT: J
30、NB P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p><p> JNB P1.2,FALSE3</p><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><
31、p> JNB P1.6,FALSE7</p><p> JNB P1.7,FALSE8</p><p> AJMP START</p><p> ;=====非法搶答處理程序=====</p><p> FALSE1: MOV R3,#01H</p><p> AJMP ERROR</p>
32、<p> FALSE2: MOV R3,#02H</p><p> AJMP ERROR</p><p> FALSE3: MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: MOV R3,#04H</p><p> AJMP ERROR</
33、p><p> FALSE5: MOV R3,#05H</p><p> AJMP ERROR</p><p> FALSE6: MOV R3,#06H</p><p> AJMP ERROR</p><p> FALSE7: MOV R3,#07H</p><p> AJMP ERROR
34、</p><p> FALSE8: MOV R3,#08H</p><p> AJMP ERROR</p><p> ;=====INT0(搶答時(shí)間R1調(diào)整程序)=====</p><p> INT0SUB:MOV A,R1</p><p> MOV B,#0AH</p><p>&l
35、t;b> DIV AB</b></p><p><b> MOV R5,A</b></p><p><b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY;先在兩個(gè)時(shí)間LED上顯示R1</p>
36、<p> JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCO</p><p> JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO</p><p> JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC
37、0: MOV A,R1</p><p> CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。</p><p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> ADD0: INC R1
38、</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> DEC0: MOV A,R1</p><p> JZ SETR1;如果R1為0, R1就置99,</p><p><b> DEC R1</b></p><p&
39、gt; ACALL DELAY1</p><p> AJMP INT0SUB</p><p> SETR1: MOV R1,#63H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> BACK0: RETI </p><p>
40、 ;=====INT1(回答時(shí)間R2調(diào)整程序)=====</p><p> INT1SUB:MOV A,R2</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p>&
41、lt;b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY</p><p> JNB P3.4,INC1</p><p> JNB P3.5,DEC1</p><p> JNB P3.1,BACK1</p>&
42、lt;p> AJMP INT1SUB</p><p> INC1: MOV A,R2</p><p> CJNE A,#63H,ADD1</p><p> MOV R2,#00H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p&
43、gt; ADD1: INC R2</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> DEC1: MOV A,R2</p><p><b> JZ SETR2</b></p><p><b> DEC R2</b&g
44、t;</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> SETR2: MOV R2,#63H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> BACK1: RETI &l
45、t;/p><p> ;=====倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=====</p><p> REPEAT:MOV A,R2 ;使用錦囊時(shí)重新計(jì)時(shí)</p><p><b> MOV R6,A</b></p><p><b> CLR RING </b></p>&l
46、t;p> COUNT: MOV R0,#00H;重置定時(shí)器中斷次數(shù)</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H;重置定時(shí)器</p><p> RECOUNT:MOV A,R6;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6</p><p> MOV B,#0AH</
47、p><p> DIV AB;除十分出個(gè)位/十位</p><p> MOV 30H,A;十位存于(30H)</p><p> MOV 31H,B;個(gè)位存于(31H)</p><p> MOV R5,30H;取十位</p><p> MOV R4,31H;取個(gè)位</p><p><b&g
48、t; MOV A,R6</b></p><p> SUBB A,#07H</p><p> JNC LARGER;大于5s跳到LARGER,小于等于5s會(huì)提醒</p><p><b> MOV A,R0</b></p><p> CJNE A,#0AH,FULL;1s中0.5s向下運(yùn)行</p&
49、gt;<p><b> CLR RING </b></p><p> AJMP CHECK</p><p> FULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p>&
50、lt;b> MOV A,R6</b></p><p> JZ QUIT;計(jì)時(shí)完畢</p><p> MOV R0,#00H</p><p> DEC R6;一秒標(biāo)志減1</p><p> AJMP CHECK</p><p> LARGER: MOV A,R0</p><
51、;p> CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否者跳到查"停/顯示"</p><p> DEC R6;計(jì)時(shí)一秒R6自動(dòng)減1</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT;如按下停止鍵退出</p><p> JNB OK,CHECKK ;
52、只在回答倒計(jì)時(shí)才有效</p><p> AJMP NEXTT</p><p> CHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊</p><p> NEXTT: ACALL DISPLAY</p><p> JB OK,ACCOUT;如果是搶答倒計(jì)時(shí),如是則查詢(xún)搶答,否者跳過(guò)查詢(xún)繼續(xù)倒數(shù)(這里起到鎖搶答作用)</
53、p><p> AJMP RECOUNT</p><p><b> ACCOUT:</b></p><p><b> MOV A,36H</b></p><p> JNB ACC.0,TRUE1</p><p> JNB ACC.1,TRUE2</p>&l
54、t;p> JNB ACC.2,TRUE3</p><p> JNB ACC.3,TRUE4</p><p> JNB ACC.4,TRUE5</p><p> JNB ACC.5,TRUE6</p><p> JNB ACC.6,TZ1</p><p> JNB ACC.7,TZ2</p>
55、<p> AJMP RECOUNT</p><p> TZ1:JMP TRUE7</p><p> TZ2:JMP TRUE8 </p><p> QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序</p><p><b> CLR RING</b></p>
56、<p> AJMP START</p><p> ;=====正常搶答處理程序=====</p><p> TRUE1: ACALL BARK</p><p><b> MOV A,R2</b></p><p> MOV R6,A;搶答時(shí)間R2送R6</p><p> MO
57、V R3,#01H</p><p> CLR OK;因?yàn)榇痤}的計(jì)時(shí)不再查詢(xún)搶答,所以就鎖了搶答</p><p> AJMP COUNT</p><p> TRUE2:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6
58、,A</b></p><p> MOV R3,#02H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK</p><p><b> MOV A,R2</b><
59、/p><p><b> MOV R6,A</b></p><p> MOV R3,#03H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE4:ACALL BARK</p><p>
60、;<b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#04H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TR
61、UE5:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#05H</p><p><b> CLR OK</b></p><p>
62、AJMP COUNT</p><p> TRUE6: ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#06H</p><p><b> CLR
63、 OK</b></p><p> AJMP COUNT</p><p> TRUE7:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#07H
64、</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE8:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b>
65、;</p><p> MOV R3,#08H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> ;=====犯規(guī)搶答程序=====</p><p> ERROR: MOV R0,#00H</p><p>
66、MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p> MOV 34H,R3;犯規(guī)號(hào)數(shù)暫存與(34H)</p><p> HERE: MOV A,R0</p><p> CJNE A,#06H,FLASH;0.3s向下運(yùn)行->滅并停響</p><p><b>
67、 CLR RING </b></p><p> MOV R3,#0AH</p><p> MOV R4,#0AH</p><p> MOV R5,#0AH;三燈全滅</p><p> AJMP CHECK1</p><p> FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況
68、,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p> MOV R0,#00H</p><p> MOV R3,34H;取回號(hào)數(shù)</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH;顯示FF和號(hào)數(shù)</p
69、><p> AJMP CHECK1</p><p> CHECK1: JNB P3.1,QUIT1</p><p> ACALL DISPLAY</p><p><b> AJMP HERE</b></p><p> QUIT1: CLR RING</p><p>&
70、lt;b> CLR OK</b></p><p> AJMP START</p><p> ;=====顯示程序=====</p><p> DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,</p><p><b> MOV A,R3</
71、b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p> MOV DPTR,#DAT2</p><p>
72、<b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fdH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p><b> MO
73、V A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p><b> RET</b>&l
74、t;/p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H </p><p> ;"滅","1","2","3","4","5","6","7","8
75、","9","滅","F"</p><p> DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H</p><p> ;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅</p><p> ;====加減時(shí)間延時(shí)(起到不會(huì)按下就加N個(gè)
76、數(shù))======</p><p> DELAY1: MOV 35H,#08H</p><p> LOOP0: ACALL DISPLAY</p><p> DJNZ 35H,LOOP0</p><p><b> RET</b></p><p> ;=====延時(shí)4236個(gè)機(jī)器周期(去抖動(dòng)
77、用到)=====</p><p> DELAY: MOV 32H,#12H</p><p> LOOP: MOV 33H,#0AFH</p><p> LOOP1: DJNZ 33H,LOOP1</p><p> DJNZ 32H,LOOP</p><p><b> RET</b><
78、;/p><p> ;=====延時(shí)4236個(gè)機(jī)器周期(顯示用到)=====</p><p> DELAY2: MOV 32H,#43H</p><p> LOOP3: MOV 33H,#1EH</p><p> MOV A,R7 ;每隔60~70個(gè)機(jī)器周期讀一次P1口,全為1時(shí)為無(wú)效數(shù)據(jù),繼續(xù)讀,有一個(gè)不為1時(shí),轉(zhuǎn)到正常搶答處理</
79、p><p> JNZ AAAA1 ;沒(méi)讀到有效數(shù)據(jù)時(shí)繼續(xù)轉(zhuǎn)到AAAA1</p><p> LOOP2: DJNZ 33H,LOOP2</p><p> DJNZ 32H,LOOP3</p><p><b> RET</b></p><p> ;=====讀搶答按鍵數(shù)據(jù)口程序=====<
80、/p><p> ;由于在讀搶答數(shù)據(jù)口的時(shí)候,單片機(jī)首先進(jìn)入倒計(jì)時(shí)程序,再調(diào)用顯示程序,最后才檢測(cè)按鍵口</p><p> ;然而在檢測(cè)按鍵口時(shí)動(dòng)態(tài)掃描要調(diào)用三次(4ms)延時(shí)程序.這樣就會(huì)導(dǎo)致讀數(shù)據(jù)口出現(xiàn)滯后,造成1號(hào)優(yōu)先最高.8號(hào)最低.</p><p> ;故采用在延時(shí)子程序中加了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性</p><p> A
81、AAA1: MOV A,P1</p><p> CJNE A,#0FFH,AA1 ;當(dāng)不全為1時(shí)的數(shù)據(jù)為有效數(shù)據(jù)</p><p> AA0: MOV 36H,A ;將有效數(shù)據(jù)送到36H暫存</p><p> AJMP LOOP2</p><p> AA1: DEC R7 </p><p><b>
82、AJMP AA0</b></p><p> ;=====發(fā)聲程序=====</p><p> BARK: SETB RING</p><p> ACALL DELAY1</p><p> ACALL DELAY1</p><p> CLR RING;按鍵發(fā)聲</p><p>
83、;<b> RET</b></p><p> ;=====TO溢出中斷(響鈴程序)=====</p><p> T0INT: MOV TH0,#0ECH</p><p> MOV TL0,#0FFH</p><p> JNB RING,OUT;</p><p> CPL P3.6;RI
84、NG標(biāo)志位為1時(shí)候P3.6口不短取反使喇叭發(fā)出一定頻率的聲音</p><p><b> OUT: RETI</b></p><p> ;=====T1溢出中斷(計(jì)時(shí)程序)=====</p><p> T1INT: MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 16 16led點(diǎn)陣顯示屏
- led16x16點(diǎn)陣課程設(shè)計(jì)--16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 16x16點(diǎn)陣課程設(shè)計(jì)--16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- led點(diǎn)陣顯示屏課程設(shè)計(jì)
- 16×16led點(diǎn)陣屏顯示設(shè)計(jì)-課設(shè)論文
- 單片機(jī)課程設(shè)計(jì)--16x16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--點(diǎn)陣led電子顯示屏
- 單片機(jī)課程設(shè)計(jì)---點(diǎn)陣led電子顯示屏
- 課程設(shè)計(jì)---點(diǎn)陣led圖文顯示屏的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---led點(diǎn)陣電子顯示屏的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)之led點(diǎn)陣電子顯示屏設(shè)計(jì)
- 16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---16×16點(diǎn)陣led室內(nèi)電子顯示屏的設(shè)計(jì)
- led電子顯示屏設(shè)計(jì)16行32列
- 16x16點(diǎn)陣led顯示屏畢業(yè)論文
- led點(diǎn)陣顯示屏設(shè)計(jì)
- 畢業(yè)論文---16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)模塊
- 電子信息工程專(zhuān)業(yè)畢業(yè)論文-16_16點(diǎn)陣led顯示屏
- 16乘16點(diǎn)陣顯示單片機(jī)課程設(shè)計(jì)
- 16x32點(diǎn)陣led顯示屏畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論