版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 青島理工大學</b></p><p> 《單片機原理及接口技術》</p><p><b> 課程設計報告</b></p><p><b> 目 錄</b></p><p> 引言………………………………………………………………(2)&l
2、t;/p><p> 一、設計任務及要求…………………………………………………(2)</p><p> 二、步驟及方案………………………………………………………(2)</p><p> (1)方案…………………………………………………………………………(2)</p><p> (2)設計步驟…………………………………………………………………
3、…(4)</p><p> 三、硬件設計…………………………………………………………(4)</p><p> (1)總體設計電路圖…………………………………………………………(4)</p><p> (2)搶答器電路………………………………………………………………(4)</p><p> ?。?)時序控制電路……………………………………
4、………………………(5)</p><p> (4)復位電路…………………………………………………………………(5)</p><p> (5)報警電路…………………………………………………………………(6)</p><p> (6)LED數(shù)碼顯示器和驅(qū)動電路……………………………………………(6)</p><p> 四、軟件設計…………
5、………………………………………………(6)</p><p> (1)程序流程圖………………………………………………………………(6)</p><p> ?。?)顯示和查詢子程序………………………………………………………(7)</p><p> (3)搶答處理子程序…………………………………………………………(8)</p><p> (4
6、)倒計時子程序……………………………………………………………(12)</p><p> ?。?)報警子程序……………………………………………………………(12)</p><p> 五、Proteus軟件調(diào)試仿真…………………………………………(12)</p><p> ?。?)調(diào)試過程………………………………………………………………(12)</p>
7、<p> ?。?)仿真結(jié)果………………………………………………………………(12)</p><p> 六、心得體會…………………………………………………………(14)</p><p> 七、參考文獻…………………………………………………………(15)</p><p> 附錄………………………………………………………………(16)</p>
8、<p><b> 引言</b></p><p> 基于MCS-51系列單片機AT89C51的一種搶答器.該電路采用AT89C51單片機的四個8位并行I/O接口連接各個控制電路來實現(xiàn)搶答功能.該電路設計簡單,進行簡單更改便可實現(xiàn)對8組或8組以下的人員搶答.應用很廣泛.</p><p><b> 一、設計任務及要求</b></
9、p><p><b> (1)、設計任務</b></p><p> 基于MCS-51系列單片機AT89C51,設計一個多功能八路搶答器</p><p><b> ?。?)、設計要求</b></p><p> 1)搶答器同時供8名選手或8個代表比賽,分別用8個按鈕K1~K8。</p>&
10、lt;p> 2)設置一個系統(tǒng)清除和搶答控制開關K0,該開關由主持人控制。</p><p> 3)搶答器具有鎖存功能與顯示功能。即選手按動按鈕,鎖存相應的編號,并在優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。</p><p> 4)主持人按下?lián)尨稹伴_始”按鈕,搶答開始。</p><p> 5)當某一路搶答成功時,在數(shù)碼管上顯示成功信息和該路的號數(shù);
11、</p><p> 6)當某一路搶答違規(guī)時,能在數(shù)碼管上顯示違規(guī)信息和該路的號數(shù);</p><p> 7)@具有定時搶答發(fā)功能,且一次搶答的時間由主持人設定(如30秒)。當主持人啟動“開始”鍵后,定時器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響持續(xù)的時間0.5秒左右。</p><p> 8)@參賽選手在設定的時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯
12、示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。</p><p> 9)@如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00。</p><p><b> 10)☆其它功能。</b></p><p><b> 二、步驟及方案</b></p><p><
13、;b> (1)、方案</b></p><p> 用P0口連接上拉電阻,完成驅(qū)動LED數(shù)碼顯示管的顯示功能;用P1口串接按鍵,可由選手自己控制搶答機會;利用P3口的RXD、TXD做控制開關。編寫簡單的匯編語言程序,導入單片機,以達到搶答功能,若有選手進行了犯規(guī)搶答,蜂鳴器會發(fā)出聲響,以告訴主持人有人違規(guī),搶答無效并進行系統(tǒng)清除,重新開始進行搶答,并顯示除搶答倒計時,當時間剩余5秒時蜂鳴器發(fā)出聲
14、響以提醒選手趕快搶答。選手按正確的操作搶答,單片機倒計時,利用AT89C51移位寄存8段數(shù)碼管,實現(xiàn)倒計時顯示時間,當時間剩余5秒時提醒選手時間快到了,要及時作答,并啟動蜂鳴器。若搶答倒計時和回答倒計時為零,則顯示初始化狀態(tài).</p><p> 元件清單:MCS-51系列單片機AT89C51、4位LED數(shù)碼管(共陽)、普通按鈕Button、喇叭Sounder、晶振、排電阻(10K)上拉電阻和電容等。</p
15、><p><b> 總設計原理框架圖:</b></p><p><b> 單片機選擇:</b></p><p> AT89C51作為搶答電路系統(tǒng)的核心器件。該器件是INTEL公司生產(chǎn)的MCS-51系列單片機的基礎產(chǎn)品,采用了可靠的CMOS工藝制造技術,具有高性能的8位單片機,屬于標準的MCS-51的CMOS產(chǎn)品。不僅結(jié)合
16、了HMOS的高速和高密度技術及HMOS的低功耗特征,而且繼承和擴展了MCS-48單片機的體系結(jié)構(gòu)和指令系統(tǒng)。</p><p> ①AT89C51單片機的主要特征:</p><p> A、與MCS-51兼容,4K字節(jié)可編程閃爍存儲器;</p><p> b、靈活的在線系統(tǒng)編程,掉電標識和快速編程特性;</p><p> c、壽命為100
17、0次寫/擦周期,數(shù)據(jù)保留時間可10年以上;</p><p> d、全靜態(tài)工作模式:0HZ~33HZ;</p><p> e、三級程序存儲器鎖定;f128×8位內(nèi)部RAM,32位可編I/O線;</p><p> g、兩個16位定時器/計數(shù)器,5個中斷源,4個8位并行的I/O接口,1個全雙工I/O接口。</p><p> h、有
18、位尋址功能、適于布爾處理的位處理機。</p><p><b> ②單片機與報警電路</b></p><p> 系統(tǒng)中的報警電路是由發(fā)光二極管和限電流電阻組成,并與單片機的P1.2端口連接。P1端口的作用和接線方法與P2端口相同,不同的是Flash編程和程序校驗,P1接收低8位地址數(shù)據(jù)。</p><p><b> ③程序存儲器&l
19、t;/b></p><p> 本系統(tǒng)的所需的沒有必要外擴程序存儲器,所以不用考慮存儲器擴充容量的大小,單片機本身的存儲器就已足夠。</p><p><b> ?、軘?shù)據(jù)存儲器</b></p><p> 根據(jù)系統(tǒng)的功能要求,不需擴展外部RAM,89C51本身的RAM就能滿足要求。</p><p><b>
20、 ⑤I/O接口芯片</b></p><p> 根據(jù)系統(tǒng)的功能要求,I/O接口芯片的也不需進行擴展。</p><p><b> ?、蘅偩€驅(qū)動能力</b></p><p> MCS-51系列單片機的外部擴展功能很強,但4個8位并行的帶負載的能力是有限的。P0口能驅(qū)動8個TTL電路,P1~P3口只能驅(qū)動3個TTL電路。在實際運用中,
21、這些端口的負載不應超過總負載能力的70%,以保證留有一定的余量,以增強系統(tǒng)的抗干擾能力,在外接負載較多的情況下,應采用總線驅(qū)動電路,以提高端口的驅(qū)動能力和抗干擾能力</p><p><b> (2)步驟</b></p><p> 1) 確定方案后,繪制總設計電路圖,并選擇適當?shù)脑嫵鲈O計圖;</p><p> 2)編寫匯編語言程序,并進
22、行認真修改和調(diào)試;</p><p> 3)將程序?qū)雴纹瑱C,并進行仿真;</p><p> 4)成功完成所需功能后進行整理,并書寫報告總結(jié).</p><p><b> 三、硬件設計</b></p><p><b> ?。?)總設計電路圖</b></p><p><
23、b> (2)搶答器電路</b></p><p> 該電路完成兩個功能:一是分辨出選手按鍵的先后,并鎖存有縣搶答者的編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵,即使其他選手操作無效。搶答器具有鎖存、定時、顯示和報警功能。</p><p><b> (3)時序控制電路</b></p><p> 時序控制電路是搶答
24、器設計的關鍵,它要完成的功能是:一、主持人按動“開始”按鍵KO時,搶答電路和定時電路進入正常搶答狀態(tài)。二、當主持人未按動“開始”按鍵,但有參賽選手按動搶答鍵時,蜂鳴器聲響,搶答電路和定時電路停止工作。</p><p><b> ?。?)復位電路</b></p><p> 復位是計算機的一個重要工作狀態(tài)。在單片機工作時,接電之前要復位,斷電后也要復位,在搶答器中復位則
25、為定時做鋪墊的,在搶答之前要復位,搶答完畢后也要復位,按了復位鍵之后,LED的顯示全為P00,當引腳RST端保持兩個機器周期以上的高電平,AT89C51可以進入復位狀態(tài)。</p><p><b> (5)報警電路</b></p><p> 如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示為00,并發(fā)出一段時間的報警聲</p>
26、;<p> (6)LED數(shù)碼顯示器和驅(qū)動電路</p><p> 本設計所用的顯示器為7段共陰極接法LED顯示器,當某一發(fā)光二極管的陽極輸入高電平時,則該段發(fā)光。利用P0口做段選碼口輸出,P2口的1\3\4三位做位選碼輸出.</p><p><b> 四、軟件設計</b></p><p><b> (1)程序流程圖
27、</b></p><p> (2)顯示和查詢子程序</p><p> ;=====查詢程序=====</p><p> START: MOV DATA0,#0FFH ;初始化</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH</p>
28、<p> MOV R3,#0BH</p><p> ACALL DISPLAY ;未開始搶答時候顯示P00 </p><p> JB P3.0,NEXT </p><p> ACALL DELAY</p><p> JB P3.0,NEXT ;抖動,如
29、果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 </p><p> ACALL BARK </p><p><b> MOV A,R1</b></p><p> MOV R6,A ;送R1->R6,因為R1中保存了
30、搶答時間</p><p> SETB OK ;搶答標志位,用于COUNT只程序中判斷是否查詢搶答</p><p> MOV R3,#0AH ;搶答只顯示計時,滅號數(shù)</p><p> AJMP COUNT ;進入倒計時程序,"查詢有效搶答的程序"在COUN
31、T里面</p><p> NEXT: JNB 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&g
32、t; JNB P1.5,FALSE6</p><p> JNB P1.6,TZ1</p><p> JNB P1.7,TZ2</p><p> AJMP START</p><p> TZ1: JMP FALSE7</p><p> TZ2: JMP FALSE8</p>&l
33、t;p> ;=====顯示程序=====</p><p> DISPLAY: MOV DPTR,#DAT1 ;查表顯示程序</p><p><b> MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p&
34、gt;<b> MOV P0,A</b></p><p> ACALL DELAY</p><p> MOV DPTR,#DAT2</p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,
35、#0fdH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p><b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p>
36、;<p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p><b> RET</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H </p><p>
37、; ;"滅","1","2","3","4","5","6","7","8","9","滅","P"</p><p> DAT2:DB 3fh,06h,5bh,4fh,66
38、h,6dh,7dh,07h,7fh,6fh,00H,3fH</p><p> ;第一個為零,最后一個為零,其他與上相同,因為十位如果為零顯示熄滅</p><p> (3)搶答處理子程序</p><p> ;=====非法搶答處理程序=====</p><p> FALSE1: ACALL BARK ;按鍵發(fā)聲&
39、lt;/p><p> MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: ACALL BARK</p><p> MOV R3,#02H</p><p> AJMP ERROR</p><p> FALSE3: ACALL BARK</
40、p><p> MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: ACALL BARK</p><p> MOV R3,#04H</p><p> AJMP ERROR</p><p> FALSE5: ACALL BARK</p>
41、;<p> MOV R3,#05H</p><p> AJMP ERROR</p><p> FALSE6: ACALL BARK</p><p> MOV R3,#06H</p><p> AJMP ERROR</p><p> FALSE7: ACALL BARK</p>&
42、lt;p> MOV R3,#07H</p><p> AJMP ERROR</p><p> FALSE8: ACALL BARK</p><p> MOV R3,#08H</p><p> AJMP ERROR</p><p> ;=====正常搶答處理程序=====</p><
43、p> TRUE1: ACALL BARK </p><p><b> MOV A,R2</b></p><p> MOV R6,A ;回答時間R2送R6</p><p> MOV R3,#01H</p><p> CLR OK
44、 ;因為答題的計時不再查詢搶答,所以就鎖了搶答,回答倒計時開始.</p><p> AJMP COUNT</p><p> TRUE2:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p&g
45、t;<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></p><p><
46、;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><b> MOV A,R2
47、</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> TRUE5: ACALL BARK<
48、/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> AJMP COUNT</p>
49、;<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 OK</b></p
50、><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</p><p&
51、gt;<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></p><
52、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> MOV TH1,#3CH<
53、/p><p> MOV TL1,#0B0H</p><p> MOV 34H,R3 ;犯規(guī)號數(shù)暫存與(34H)</p><p> HERE: MOV A,R0</p><p> CJNE A,#0AH,FLASH ;0.5s向下運行->滅并停響</p><
54、p><b> CLR RING </b></p><p> MOV R3,#0AH</p><p> MOV R4,#0AH</p><p> MOV R5,#0AH ;三燈全滅</p><p> AJMP CHECK1</p><p> FLAS
55、H: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號數(shù)并清R0,重新計</p><p><b> SETB RING</b></p><p> MOV R0,#00H</p><p> MOV R3,34H ;取回號數(shù)</p><p>
56、MOV R5,#0BH</p><p> MOV R4,#0BH ;顯示00和號數(shù)</p><p> AJMP CHECK1</p><p> CHECK1: JNB P3.1,QUIT1</p><p> ACALL DISPLAY</p><p><b> AJM
57、P HERE</b></p><p> QUIT1: CLR RING</p><p><b> CLR OK</b></p><p> AJMP START </p><p><b> (4)倒計時子程序</b></p><p> ;=====倒計時
58、程序(搶答倒計時和回答倒計時都跳到該程序)=====</p><p> COUNT: MOV R0,#00H ;重置定時器中斷次數(shù)</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;重置定時器</p><p> RECOUNT: MOV A,R6
59、 ;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6</p><p> MOV B,#0AH</p><p> DIV AB ;除十分出個位/十位</p><p> MOV 30H,A ;十位存于(30H)</p><p> MOV 3
60、1H,B ;個位存于(31H)</p><p> MOV R5,30H ;取十位</p><p> MOV R4,31H ;取個位</p><p><b> MOV A,R6</b></p><p> SUBB A,#07H</
61、p><p> JNC LARGER ;大于5s跳到LARGER,小于等于5s會提醒</p><p><b> MOV A,R0</b></p><p> CJNE A,#0AH,FULL ;1s中0.5s向下運行</p><p><b> CLR RING </
62、b></p><p> AJMP CHECK</p><p> FULL: CJNE A,#14H,CHECK ;下面是1s的情況,響并顯示號數(shù)并清R0,重新計時</p><p><b> SETB RING</b></p><p><b> MOV A,R6</b>
63、</p><p> JZ QUIT ;計時完畢</p><p> MOV R0,#00H</p><p> DEC R6 ;一秒標志減1</p><p> AJMP CHECK</p><p> LARGER: MOV A,R0</p
64、><p> CJNE A,#14H,CHECK ;如果1s向下運行,否者跳到查"停/顯示"</p><p> DEC R6 ;計時一秒R6自動減1</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT
65、 ;如按下停止鍵退出</p><p> ACALL DISPLAY</p><p> JB OK,ACCOUT ;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p> AJMP RECOUNT</p><p> ACCOUT: MOV A,DATA0 </p&
66、gt;<p> JNB P1.0,TRUE1</p><p> JNB P1.1,TRUE2</p><p> JNB P1.2,TRUE3</p><p> JNB P1.3,TRUE4</p><p> JNB P1.4,TRUE5</p><p> JNB P1.5,TRUE6</
67、p><p> JNB P1.6,TZ3</p><p> JNB P1.7,TZ4</p><p> AJMP RECOUNT</p><p> TZ3: JMP TRUE7</p><p> TZ4: JMP TRUE8 </p><p> QUIT: CLR OK
68、 ;如果按下了"停止鍵"執(zhí)行的程序</p><p><b> CLR RING</b></p><p> AJMP START</p><p><b> (5)報警子程序</b></p><p> ;=====發(fā)聲程序=====</
69、p><p> BARK: SETB RING</p><p> ACALL DISPLAY</p><p> ACALL DISPLAY</p><p> CLR RING ;按鍵發(fā)聲</p><p><b> RET</b></p>
70、<p> ;=====TO溢出中斷(響鈴程序)=====</p><p> T0INT: MOV TH0,#0ECH</p><p> MOV TL0,#0FFH</p><p> JNB RING,OUT;</p><p> CPL P3.6 ;RING標志位為1時候P3.6口不斷取反
71、使喇叭發(fā)出一定頻率的聲音</p><p> OUT: RETI</p><p> 五、Proteus的調(diào)試與仿真</p><p><b> (1)調(diào)試過程</b></p><p> 基于設計思想,我們將編寫好的匯編語言程序?qū)肓藛纹瑱C,利用軟件Proteus進行仿真,得到想要的結(jié)果。 </p>
72、<p><b> (2)仿真結(jié)果</b></p><p> 1)按下仿真開關,出現(xiàn)下圖(圖.a)的結(jié)果:</p><p><b> 圖.a</b></p><p> 按下仿真開關,LED顯示管上顯示初始狀態(tài)P00,等待主持人按下“開始”按鍵;</p><p> 2)開始:當按下
73、仿真開始鍵,出現(xiàn)下圖(圖b)的仿真結(jié)果:</p><p><b> 圖.b</b></p><p> 主持人按下“開始”按鍵,LED顯示管上顯示搶答倒計時30s,并逐漸往下減1,直到有人按下?lián)尨鸢存I。</p><p> 3)搶答倒計時剩余5秒時出現(xiàn)下圖(圖c)的結(jié)果:</p><p><b> 圖.c&
74、lt;/b></p><p> 若搶答倒計時剩余5秒時,蜂鳴器發(fā)出聲響,直到為零時恢復初始狀態(tài)。</p><p> 4)正確搶答后出現(xiàn)下圖(圖d)的結(jié)果:</p><p><b> 圖.d</b></p><p> 有選手正確搶答后,顯示管上顯示選手號碼和回答倒計時,并且回到倒計時開始逐漸減1,直到按下“停
75、止”鍵。</p><p> 5)回答倒計時剩余5秒時,出現(xiàn)下圖(圖e)的結(jié)果:</p><p><b> 圖.e</b></p><p> 若無人按下“停止”鍵,回答時間剩余5秒時,蜂鳴器發(fā)出聲響,直到時間為零時,恢復初始狀態(tài)。</p><p> 6)有選手違規(guī)搶答是,出現(xiàn)下圖(圖f)的結(jié)果:</p>
76、<p><b> 圖.f</b></p><p> 如果有選手在主持人還未按下“開始”鍵就做搶答,顯示管將顯示出該選手的號碼,同時開始閃爍,蜂鳴器發(fā)出聲響。</p><p><b> 六、心得體會</b></p><p> 開始選擇課程設計題目是,看見這個題目覺得挺好弄得,但是想的總是美好的。這次課程
77、設計的仿真工具是從來沒有使用過,是在老師和同學的指導下學會的,結(jié)合單片機設計電路更是從來沒有接觸過,但是沒有辦法,所以通過上網(wǎng)或去圖書館查閱資料了解了一些,經(jīng)過兩個星期的設計,從開始的什么都不會,慢慢的自己會更改電路,會仿真,導入程序后會自己進行一些修改。雖然不是很系統(tǒng)的學習這些,但是基本的操作已經(jīng)了解了。通過這次課程設計,我們意識到,要想設計出好的電路,必須清楚明白的知道題目所要表達的意思,并且要了解各種元器件的用途,這次設計綜合了我
78、們所學習過的知識,也對這些知道進行了一定的擴展了解,這些對我們是很有幫助的。</p><p><b> 七、參考文獻</b></p><p> (1)吳亦峰,陳德為,單片機原理與接口技術,電子工業(yè)出版社,2010</p><p> ?。?)程相波,衛(wèi)安軍,基于MCS-51單片機的八路搶答器設計方法研究【J】,北京工業(yè)職業(yè)技術學院學報2007
79、,6(2)</p><p><b> 附錄:</b></p><p> 定時器T1時間初值,設50ms時間初值為X,X的計算方法為X=(2</p><p> ^16-50*10^3),X=15536D=3CB0H</p><p> OK EQU 25H ;搶答開始標志位</p>&l
80、t;p> RING EQU 27H ;響鈴標志位</p><p> DATA0 EQU 40H ;搶答按鍵口數(shù)據(jù)存放地址</p><p><b> ORG 0000H</b></p><p><b> AJMP MAIN</b></p><p><b>
81、 ORG 000BH</b></p><p> AJMP T0INT</p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p><p> MAIN: MOV R1,#30 ;初設搶答時間為30s</p><p>
82、MOV R2,#60 ;初設答題時間為60s</p><p> MOV TMOD,#10H ;設置未定時器方式2</p><p> MOV TH0,#0ECH</p><p> MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p> MOV TH1,#3CH</p><p
83、> MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b> SETB EA</b></p><p><b> SETB ET0</b></p><p> SETB ET1 ;允二個中斷,T0/T1</p><p><b>
84、 CLR OK</b></p><p><b> CLR RING</b></p><p><b> SETB TR1</b></p><p> SETB TR0 </p><p> ;=====查詢程序=====</p><p> ST
85、ART: MOV DATA0,#0FFH ;初始化</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH</p><p> MOV R3,#0BH</p><p> ACALL DISPLAY ;未開始搶答時候顯示P00 </p>&
86、lt;p> JB P3.0,NEXT </p><p> ACALL DELAY</p><p> JB P3.0,NEXT ;抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 </p><p> ACALL BARK
87、 </p><p><b> MOV A,R1</b></p><p> MOV R6,A ;送R1->R6,因為R1中保存了搶答時間</p><p> SETB OK ;搶答標志位,用于COUNT只程序中判斷是否查詢搶答</p><p>
88、MOV R3,#0AH ;搶答只顯示計時,滅號數(shù)</p><p> AJMP COUNT ;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面</p><p> NEXT: JNB P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p>
89、<p> JNB P1.2,FALSE3</p><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><p> JNB P1.6,TZ1</p><p> JNB P1.7,TZ2</p>
90、;<p> AJMP START</p><p> TZ1: JMP FALSE7</p><p> TZ2: JMP FALSE8</p><p> ;=====非法搶答處理程序=====</p><p> FALSE1: ACALL BARK ;按鍵發(fā)聲</p>
91、<p> MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: ACALL BARK</p><p> MOV R3,#02H</p><p> AJMP ERROR</p><p> FALSE3: ACALL BARK</p><
92、;p> MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: ACALL BARK</p><p> MOV R3,#04H</p><p> AJMP ERROR</p><p> FALSE5: ACALL BARK</p><p&g
93、t; MOV R3,#05H</p><p> AJMP ERROR</p><p> FALSE6: ACALL BARK</p><p> MOV R3,#06H</p><p> AJMP ERROR</p><p> FALSE7: ACALL BARK</p><p>
94、MOV R3,#07H</p><p> AJMP ERROR</p><p> FALSE8: ACALL BARK</p><p> MOV R3,#08H</p><p> AJMP ERROR</p><p> ;=====倒計時程序(搶答倒計時和回答倒計時都跳到該程序)=====</p>
95、<p> COUNT: MOV R0,#00H ;重置定時器中斷次數(shù)</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;重置定時器</p><p> RECOUNT: MOV A,R6 ;R6保存了倒計時的時間,之前先將搶答時
96、間或回答時間給R6</p><p> MOV B,#0AH</p><p> DIV AB ;除十分出個位/十位</p><p> MOV 30H,A ;十位存于(30H)</p><p> MOV 31H,B ;個位存于(31H)</p&
97、gt;<p> MOV R5,30H ;取十位</p><p> MOV R4,31H ;取個位</p><p><b> MOV A,R6</b></p><p> SUBB A,#07H</p><p> JNC LARGER
98、 ;大于5s跳到LARGER,小于等于5s會提醒</p><p><b> MOV A,R0</b></p><p> CJNE A,#0AH,FULL ;1s中0.5s向下運行</p><p><b> CLR RING </b></p><p> AJMP CHE
99、CK</p><p> FULL: CJNE A,#14H,CHECK ;下面是1s的情況,響并顯示號數(shù)并清R0,重新計時</p><p><b> SETB RING</b></p><p><b> MOV A,R6</b></p><p> JZ QUIT
100、 ;計時完畢</p><p> MOV R0,#00H</p><p> DEC R6 ;一秒標志減1</p><p> AJMP CHECK</p><p> LARGER: MOV A,R0</p><p> CJNE A,#14H,CHECK
101、 ;如果1s向下運行,否者跳到查"停/顯示"</p><p> DEC R6 ;計時一秒R6自動減1</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p> AC
102、ALL DISPLAY</p><p> JB OK,ACCOUT ;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p> AJMP RECOUNT</p><p> ACCOUT: MOV A,DATA0 </p><p> JNB P1.0,TRUE1</p
103、><p> JNB P1.1,TRUE2</p><p> JNB P1.2,TRUE3</p><p> JNB P1.3,TRUE4</p><p> JNB P1.4,TRUE5</p><p> JNB P1.5,TRUE6</p><p> JNB P1.6,TZ3</p
104、><p> JNB P1.7,TZ4</p><p> AJMP RECOUNT</p><p> TZ3: JMP TRUE7</p><p> TZ4: JMP TRUE8 </p><p> QUIT: CLR OK ;如果按下了"停止鍵&qu
105、ot;執(zhí)行的程序</p><p><b> CLR RING</b></p><p> AJMP START</p><p> ;=====正常搶答處理程序=====</p><p> TRUE1: ACALL BARK </p><p><b>
106、; MOV A,R2</b></p><p> MOV R6,A ;回答時間R2送R6</p><p> MOV R3,#01H</p><p> CLR OK ;因為答題的計時不再查詢搶答,所以就鎖了搶答,回答倒計時開始.</p><
107、;p> AJMP COUNT</p><p> TRUE2:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#02H</p><p><b>
108、; CLR OK</b></p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3
109、,#03H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE4:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</
110、b></p><p> MOV R3,#04H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE5: ACALL BARK</p><p><b> MOV A,R2</b></p>
111、;<p><b> MOV R6,A</b></p><p> MOV R3,#05H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE6: ACALL BARK</p><p>&l
112、t;b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#06H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE7
113、: ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#07H</p><p><b> CLR OK</b></p><p> AJ
114、MP COUNT</p><p> TRUE8: ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#08H</p><p><b> CLR O
115、K</b></p><p> AJMP COUNT</p><p> ;=====犯規(guī)搶答程序=====</p><p> ERROR: MOV R0,#00H</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p>
116、MOV 34H,R3 ;犯規(guī)號數(shù)暫存與(34H)</p><p> HERE: MOV A,R0</p><p> CJNE A,#0AH,FLASH ;0.5s向下運行->滅并停響</p><p><b> CLR RING </b></p><p>
117、; MOV R3,#0AH</p><p> MOV R4,#0AH</p><p> MOV R5,#0AH ;三燈全滅</p><p> AJMP CHECK1</p><p> FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號數(shù)并清R0,重新
118、計</p><p><b> SETB RING</b></p><p> MOV R0,#00H</p><p> MOV R3,34H ;取回號數(shù)</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH
119、 ;顯示00和號數(shù)</p><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
120、</p><p><b> CLR OK</b></p><p> AJMP START</p><p> ;=====顯示程序=====</p><p> DISPLAY: MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出/P2口的1\3\4三位做位選碼輸出.<
121、/p><p><b> MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p&
122、gt; MOV DPTR,#DAT2</p><p><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
123、DELAY</p><p><b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p>
124、;<p><b> RET</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H </p><p> ;"滅","1","2","3","4","5&qu
125、ot;,"6","7","8","9","滅","P"</p><p> DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,3fH</p><p> ;第一個為零,最后一個為零,其他與上相同,因為十位如果為零顯示熄
126、滅</p><p> ;=====延時(顯示和去抖動用到)=====</p><p> DELAY: MOV 32H,#12H</p><p> LOOP: MOV 33H,#0AFH</p><p> LOOP1: DJNZ 33H,LOOP1</p><p> DJNZ 32H,LOOP</
127、p><p><b> RET</b></p><p> ;=====發(fā)聲程序=====</p><p> BARK: SETB RING</p><p> ACALL DISPLAY</p><p> ACALL DISPLAY</p><p> CLR RIN
128、G ;按鍵發(fā)聲</p><p><b> RET</b></p><p> ;=====TO溢出中斷(響鈴程序)=====</p><p> T0INT: MOV TH0,#0ECH</p><p> MOV TL0,#0FFH</p><p>
129、 JNB RING,OUT;</p><p> CPL P3.6 ;RING標志位為1時候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p> OUT: RETI</p><p> ;=====T1溢出中斷(計時程序)=====</p><p> T1INT: MOV TH1,#3CH&
130、lt;/p><p> MOV TL1,#0B0H</p><p><b> INC R0</b></p><p><b> RETI</b></p><p> ;========INTT0中斷服務程序============</p><p> INTT0:MOV DAT
131、A0,P1</p><p><b> CLR EX0</b></p><p><b> RETI </b></p><p><b> END</b></p><p> g an employment tribunal claim</p><p>
132、 Employment tribunals sort out disagreements between employers and employees.</p><p> You may need to make a claim to an employment tribunal if:</p><p> you don't agree with the disciplin
133、ary action your employer has taken against you</p><p> your employer dismisses you and you think that you have been dismissed unfairly.</p><p> For more information about dismissal and unfair
134、dismissal, see Dismissal.</p><p> You can make a claim to an employment tribunal, even if you haven't appealed against the disciplinary action your employer has taken against you. However
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機八路搶答器課程設計
- 單片機課程設計---八路搶答器
- 單片機八路搶答器課程設計
- 課程設計---單片機八路搶答器設計
- 單片機課程設計八路搶答器設計
- 單片機課程設計報告--八路搶答器
- 單片機課程設計---基于51單片機的八路競賽搶答器的設計
- 基于單片機的八路智能搶答器課程設計
- 基于單片機的八路智能搶答器課程設計
- 基于51單片機的八路搶答器課程設計
- 基于51單片機的八路搶答器課程設計
- 單片機八路搶答器)
- 單片機課程設計--8051系列單片機控制的八路智力搶答器設計
- 基于單片機的八路搶答器
- 基于單片機的八路智能搶答器課程設計.doc
- 基于51單片機的八路搶答器課程設計.doc
- 課程設計--基于單片機控制的八路搶答器計
- 課程設計--基于單片機控制的八路搶答器計
- 八路搶答器課程設計---基于單片機的八位搶答器的設計
- 基于單片機的八路搶答器設計.doc
評論
0/150
提交評論