版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 單片機技術課程設計說明書</p><p><b> 六路搶答器</b></p><p> 系 、 部: 電氣與信息工程系 </p><p> 學生姓名: 王文剛 </p><p> 指導教師: 職稱 教師 </p><p
2、> 專 業(yè): 電子信息工程 </p><p> 班 級: </p><p> 學 號: </p><p> 完成時間: 2011-12-26 </p><p><
3、b> 目錄</b></p><p> 一、六路搶答器設計任務及要求……………………………………………………1</p><p> 1.1設計任務……………………………………………………1</p><p> 1.2設計要求……………………………………………………………………1</p><p> 1.2.1系統(tǒng)設計要求…
4、………………………………………………………1</p><p> 1.2.2設計目標………………………………………………………………</p><p> 二、系統(tǒng)組成及工作原理……………………………………………………2</p><p> 2.1方案選擇……………………………………………………………………2</p><p> 2.1.1
5、利用譯碼芯片………………………………………………………2</p><p> 2.1.2 利用單片機…………………………………………………………2</p><p> 2.2原理分析……………………………………………………………………3</p><p> 2.3設計方案 …………………………………………………………………3三、搶答器硬件系統(tǒng)設計………………………
6、……………………………4</p><p> 3.1時鐘電路和復位電路………………………………………………………4</p><p> 3.1.1時鐘電路………………………………………………………………5</p><p> 3.1.2復位電路……………………………………………………………5</p><p> 3.2鍵盤電路……………………
7、……………………………………………6</p><p> 3.3 顯示電路………………………………………………………………7</p><p> 3.3.1 顯示驅動電路………………………………………………………7</p><p> 3.3.2顯示報警電路…………………………………………………………8</p><p> 3.4芯片介紹……
8、……………………………………………………9</p><p> 3.4.1集成芯片AT89S52……………………………………………………9</p><p> 3.5共陽數(shù)碼管介紹…………………………………………………………11</p><p> 四、軟件系統(tǒng)設計………………………………………………………………12</p><p> 4.
9、1 設計思想………………………………………………………………12</p><p> 4.2 資源分配………………………………………………………………12</p><p> 4.3 程序設計流程圖……………………………………………………13</p><p> 4.3.1 定時器中斷服務程序流程………………………………………13</p>&l
10、t;p> 4.3.2搶答違規(guī)流程圖……………………………………………………13</p><p> 4.3.3 顯示程序流程……………………………………………………14</p><p> 4.3.4主程序流程圖……………………………………………………15</p><p> 五、調試及使用說明…………………………………………………………16</p&g
11、t;<p> 5.1實物調試……………………………………………………………16</p><p> 5.2 使用說明……………………………………………………………16</p><p> 六、設計心得體會及教學建議………………………………………………17</p><p> 6.1 設計體會 ……………………………………………………………18&l
12、t;/p><p> 6.2教學建議 ……………………………………………………………18</p><p> 致謝…………………………………………………………………………………19</p><p> 參考文獻……………………………………………………………………20</p><p> 附錄Ⅰ 電路原理圖……………………………………………………
13、……21</p><p> 附錄Ⅱ PCB元器件布局圖……………………………………………………22</p><p> 附錄Ⅲ PCB頂層圖…………………………………………………………23</p><p> 附錄Ⅳ PCB底層圖…………………………………………………………24</p><p> 附錄Ⅴ 元器件清單………………………
14、……………………………………25</p><p> 附錄Ⅵ 程序清單……………………………………………………………27</p><p> 一、六路搶答器設計任務及要求</p><p><b> 1.1設計任務</b></p><p> 設計一個智力競賽搶答器,可同時供8名選手或8個代表隊參加比賽,他們的編號分別是
15、1、2、3、4、5、6、各用一個搶答按鈕,按鈕的編號與選手的編號相對應,分別是S0、S1、S2、S3、S4、S5。要求一人一組在一周時間內完成實物并打印《單片機技術》課程設計說明書一份。</p><p><b> 1.2設計要求</b></p><p> 1.2.1系統(tǒng)設計要求:</p><p> ?。?)該搶答器上電或按鍵復位后能自動顯示
16、系統(tǒng)提示符“P.” , 進入準備工作狀態(tài);</p><p> (2)主持人按下開始按鈕后,搶答開始并限定時間30S;10S內無人搶答,蜂鳴器發(fā)出音響;</p><p> ?。?)主持人按下開始按鈕之前有人按下?lián)尨鹌鳎瑩尨疬`規(guī),顯示器顯示違規(guī)臺號,違規(guī)指示燈亮,其它按鈕不起作用;</p><p> ?。?)正常搶答下,從按下?lián)尨鸢粹o開始30S內,答完按鈕沒按下,則作
17、超時處理,超時處理時,違規(guī)指示燈亮,數(shù)碼管顯示違規(guī)臺號;</p><p> ?。?)在30S,內選手提前答完,由主持人按下停止,并顯示答題時間,主持人按復位,等待下一輪搶答:</p><p> ?。?)各臺數(shù)字顯示的消除,蜂鳴器音響及違規(guī)指示燈的關斷,都要通過主持人按復位按鈕;</p><p> 1.2.2設計目標:
18、 </p><p> ?。?)通過理論設計和實物制作解決相應的實際問題,鞏固和運用在《單片機技術》中所學的理論知識和實驗技能; </p><p> (2) 熟悉電路中所用到的各集成芯片的管腳及其功能; </p><p> ?。?) 進行電路的裝接、調試,直到電路能達到規(guī)定的設計要求; </p><p> ?。?)掌握單片機應用系統(tǒng)的一
19、般設計方法,提高設計能力和實踐動手能力告,以后從事電子電路設計、研發(fā)電子產(chǎn)品打下良好的基礎。</p><p> 二、系統(tǒng)組成及工作原理</p><p><b> 2.1方案選擇</b></p><p> 2.1.1 利用譯碼芯片</p><p> 先根據(jù)74LS148的優(yōu)先功能,確定了先搶答到的選手的編碼號,再
20、根據(jù)74LS279的鎖存功能,將其信號保持下來,并實現(xiàn)了鎖定功能,將選手的編碼鎖定。再者,根據(jù)74LS48的譯碼功能,將74LS279鎖定的數(shù)字編譯成二進制,將信號送到顯示器中。這樣就實現(xiàn)了搶答功能。原理框圖如圖2.1所示。 </p><p> 2.1.2 利用單片機</p><p> 可以利用單片機的定時/計數(shù)器進行計時,設定搶答時間和答題時間;可以利用單片
21、機的I/O口線接按鍵,通過按鍵按下后,所接口線電平的變化來判斷那位選手按下鍵。我選擇利用單片機做搶答器。</p><p><b> 2.2原理分析</b></p><p> 根據(jù)對功能要求的簡要分析,將定時搶答器電路分為主題電路和擴展電路兩部分。主體電路完成基本的搶答功能,即開始搶答后,當選手按動搶答器按鈕時,能顯示選手的編號,同時能封鎖輸入電路,禁止其他選手搶答
22、。擴展電路完成定時搶答及報警功能。</p><p> 比賽開始時,接通電源,節(jié)目主持人將開關置于“清零”位置,搶答器處于禁止工作狀態(tài),編號顯示器滅燈,定時顯示器上顯示設定時間。當節(jié)目主持人宣布“搶答開始”,同時將控制開關撥到“開始”位置,搶答器處于工作狀態(tài),定時器開始倒計時。若定時時間到,卻沒有選手搶答時,系統(tǒng)報警,并封鎖輸入電路,禁止選手超時后搶答。若選手在定時時間內按動搶答按鈕時,搶答器要完成以下四項工作:
23、</p><p> 1.優(yōu)先編碼器電路立即分辨出搶答者的編號,并由鎖存器進行鎖存,然后由譯碼顯示電路顯示編號;</p><p> 2.揚聲器發(fā)出短暫聲響,提醒節(jié)目主持人注意;</p><p> 3.控制電路要對輸入編碼電路進行封鎖,避免其他選手再次進行搶答; </p><p> 4.控制電路要使定時器停止工作,時間顯示器上顯示剩余的搶
24、答時間,并保持到主持人將系統(tǒng)清零為止。</p><p> 當選手將問題回答完畢時,主持人操作控制開關,使系統(tǒng)回復到禁止工作狀態(tài),以便進行下一輪搶答。</p><p> 上述方案所示搶答器的工作過程:主持人按動開始搶答的開關后,最先搶答的選手的電平信號先經(jīng)過優(yōu)先編碼器,再依次經(jīng)過數(shù)據(jù)鎖存器,此時已經(jīng)限制了其他選手的搶答,信號再經(jīng)過譯碼器和七段數(shù)碼顯示器,將最先搶答的該選手的編號顯示出來,
25、并同時產(chǎn)生報警信號,到此完成的是搶答功能;如果沒有人搶答, 30秒減計數(shù)器減到00時也會發(fā)出報警信號,此時完成計時功能。</p><p> 它的優(yōu)點表現(xiàn)在以下幾個方面:這種方案原理比較簡單。主持人對整體電路的控制只需幾個門電路就可完成,不必用特別的芯片來組成控制電路;更容易實現(xiàn)報警提示功能,在有選手搶答后或者計時開始和結束時。既減少了布線使整個電路更直觀簡單,又降低了產(chǎn)生錯誤的可能性。</p>&
26、lt;p><b> 2.3設計方案 </b></p><p> 本系統(tǒng)采用AT89S52單片機作為核心,該系統(tǒng)需要單片機產(chǎn)生內部脈沖,控制單處機的運行速度.選手的搶答通過連接P1口的按鍵完成,主持人置位/復位通過復位電路完成.搶答完成后,選手作答.時間顯示在數(shù)碼管上.因此該系統(tǒng)所需的模塊分別為:單片機最小系統(tǒng)、顯示模塊、顯示驅動模塊、搶答開關模塊。</p><p
27、> 搶答器原理框圖如圖2.3所示。 </p><p> 圖2.3 搶答器原理框圖</p><p> 設計出總體框圖之后,然后進行單元電路設計。單元電路設計分為時鐘和復位電路、鍵盤電路、顯示驅動電路、違規(guī)報警電路等。</p><p> 再根據(jù)課程設計選題中所提供的參考器件,設計出總體電路圖見附錄。</p><p> 三、
28、搶答器硬件系統(tǒng)設計</p><p> 本搶答器的硬件系統(tǒng)包括以下幾個部分:</p><p> 3.1時鐘電路和復位電路</p><p><b> 3.1.1時鐘電路</b></p><p> 單片機的時鐘信號是利用單片機內部時鐘電路產(chǎn)生的。如圖3.1.1所示,用于產(chǎn)生單片機工作所需要的時鐘信號,其輸入端為芯片引腳
29、XTAL1,其輸出端為引腳XTAL2。而在芯片外部,XTAL1和XTAL2之間跨接晶體震蕩器和微調電容,從而構成一個穩(wěn)定的自激震蕩器,這就是單片機的時鐘電路。時鐘電路產(chǎn)生的震蕩脈沖經(jīng)過觸發(fā)器進行二分頻之后,才成為單片機的時鐘脈沖信號。在此電路中,電容C1和C2取30皮法,晶振用12 MHz。時鐘信號的產(chǎn)生:在AT89S52芯片內部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2,在芯片的外部通過這兩個引腳跨接
30、晶體振蕩器和微調電容,形成反饋電路,就構成了一個穩(wěn)定的自激振蕩器,除使用晶體振蕩器外,如對時鐘頻率要求不高,還可以用電感或陶瓷諧振器代替。電路中的電容C1和C2一般取30PF左右(該電子鐘采用的是33PF的電容),而晶體的振蕩頻率范圍通常是1.2MHz~12MHz(該電子鐘采用的是12 MHz),晶體振蕩頻率高,則系統(tǒng)的時鐘頻率也高,單片機運行速度也就快。但反過來運行速度快對存儲器的速度要求也高,對印制電路板的工藝要求也高(線間寄生電&
31、lt;/p><p> 圖3.1.1 時鐘電路圖</p><p><b> 3.1.2復位電路</b></p><p> 手動按鈕復位需要人為在復位輸入端RST上加入高電平(圖3.1.2)。一般采用的辦法是在RST端和正電源Vcc之間接一個按鈕。當人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復位的電路如所示。由于人的
32、動作再快也會使按鈕保持接通達數(shù)十毫秒,所以,完全能夠滿足復位的時間要求。 </p><p> 單片機在啟動時都需要復位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。89系列單片機的復位信號是從RST引腳輸入到芯片內的施密特觸發(fā)器中的。當系統(tǒng)處于正常工作狀態(tài)時,且振蕩器穩(wěn)定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應并將系統(tǒng)復位。</p>
33、<p> 圖3.1.2 復位電路圖</p><p><b> 3.2鍵盤電路</b></p><p> 鍵盤接口中使用多少根I/O線,鍵盤中就有幾個按鍵,鍵盤接口使用了8根I/O口線,該鍵盤就有8個按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實際需要對鍵盤中的按鍵靈活的編碼。最簡單的編碼方式就是根據(jù)I/O輸
34、入口所直接反映的相應按鍵,按下的狀態(tài)進行編碼,稱按鍵直接狀態(tài)碼,對于這樣編碼的獨立式鍵盤,CPU可以通過直接讀取I/O口的狀態(tài)來獲取按鍵的直接狀態(tài)編碼值,根據(jù)這個值直接進行按鍵識別,這樣形式的鍵盤結構簡單,按鍵識別容易。</p><p> 獨立式鍵盤的缺點是需要占用比較多的I/O口線,當單片機應用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時,可以采用這樣類型的鍵盤。</p><p>
35、 圖3.2.1鍵盤電路圖</p><p> 鍵盤電路如圖3.2.1所示,當無鍵按下時,單片機的P1.0~P1.7高電平。當有鍵按下時,單片機的相應口線通過按鍵與地線相連被拉成低電平,其它口線電平狀態(tài)不變。因此,通過檢測I/O口線的電平狀態(tài),即可判斷鍵盤上哪個鍵被按下。</p><p><b> 3.3 顯示電路:</b></p><p>
36、 顯示電路可由LED來實現(xiàn)。此處選用七段數(shù)碼管選用共陽管,其亮度好,節(jié)能,使用簡單方便。</p><p> 3.3.1 顯示驅動電路:</p><p> 由于單片機所能提供的電流太弱,需要放大,才能驅動數(shù)碼管,不加也行,就是很暗。三極管晶體管有三種工作狀態(tài):</p><p> ?。?)截止狀態(tài):當基極電流很小時,無論基極電流如何變化,集電極電流都接近為0,集電
37、極電流不隨基極電流而變化,也就是管子不導通;</p><p> (2)放大狀態(tài):當基極電流增大到一定值以后,集電極電流此后大于0,且集電極電流隨著基極電流而變化,這是放大狀態(tài);</p><p> ?。?)飽和狀態(tài):當基極電流繼續(xù)增大,達到一定值以后,集電極電流此后再也大不上去了,此后即便是基極電流再增加,集電極電流也不能增大,即飽和了。</p><p> 對于單
38、片機端口通過晶體管驅動負載的情況,無論負載是數(shù)碼管還是繼電器,晶體管都只能工作在截止狀態(tài)或飽和狀態(tài),是不能工作在放大狀態(tài)的。</p><p> 也就是說,51的IO口通過驅動數(shù)碼管亮滅的原理是使三極管工作在飽和區(qū)和截至區(qū)才能起到電流放大的作用.</p><p> 共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起,通常,公共陽極接高電平(一般接電源),七它管腳接段驅動電路輸出端
39、。當某段驅動電路的輸出端為低電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能吸收額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻,這里的限流電阻選470Ω。數(shù)碼顯示程序流程如圖3.3.1.</p><p> 圖3.3.1 數(shù)碼管顯示圖</p><p> 3.3.2顯示報警電路</p>&
40、lt;p> 考慮到一個管腳很難驅動蜂鳴器發(fā)出聲音,所以增加了一個三極管來增加通過蜂鳴器的電流,見下方原理圖3.2.1。</p><p> 圖3.3.2 蜂鳴器報警電</p><p> 蜂鳴器的正極性的一端聯(lián)接到5V電源上面,另一端聯(lián)接到三極管的集電極,三極管的基級由單片機的P36管腳通過一個與非門來控制,當P36管腳為低時,與非門輸出高電平,三極管導通,這樣蜂鳴器的電流
41、形成回路,發(fā)出聲音。當P36管腳為高時,與非門輸出低電平,三極管截止,蜂鳴器不發(fā)出聲音。在這里與非門是作為非門來用的,這里采用一個非門的作用是為了防止系統(tǒng)上電時峰鳴器發(fā)出聲音,以為系統(tǒng)復位以后,I/O口輸出的是高電平。</p><p> 用戶可以通過程序控制P36管腳的置低和置高來使蜂鳴器發(fā)出聲音和關閉。</p><p> 蜂鳴器的聲音大小及音調可以通過調整P36管腳的置高時間及輸出的
42、波形進控制,這一點可以在調試程序的時候來試驗.</p><p> 圖3.3.3 指示燈報警電路</p><p> 當P3.2為低電平時,二極管變亮,指示報警。</p><p><b> 3.4芯片介紹</b></p><p> 3.4.1集成芯片AT89S52</p><p> AT
43、89S52是一種低功耗、高性能的CMOS工藝的8位單片機。它帶有8KB的可在線編程的 Flash 存儲器,該單片機采用了ATMEL公司的高密度、非易失性存儲器技術,與工業(yè)上標準型80C51單片機的指令系統(tǒng)及引腳完全兼容;片內的Flash 存儲器可在線重新編程,或使用通用的非易失性存儲器編程器;通用的8位CPU與在線可編程Flash集成在一塊芯片上,從而使AT89S52功能更加完善,應用更加靈活;具有較高的性能價格比,使其在嵌入式控制系統(tǒng)
44、中有著廣泛的應用前景</p><p> 圖3.4.1 集成芯片AT89S52圖</p><p> AT89S52單片機為40引腳芯片如圖3.4.1所示,具有PDIP,PLCC和TQFP3鐘封裝形式。</p><p> (1)VCC:電源。 </p><p>
45、(2)GND:地線。</p><p> ?。?)P0口:是一個8位漏極開路的雙向I/O口。作為輸出口,每個引腳可吸入8個TTL輸入。當把“1”寫入P0口的引腳時可作為高阻輸入。當訪問外部程序存儲器和數(shù)據(jù)存儲器時,P0口也可作復用的地址/數(shù)據(jù)總線。在此狀態(tài)下,P0口有內部上拉電路。P0口也在Flash 編程時,接收代碼字節(jié),而在程序校驗時,輸出代碼字節(jié)。在程序校驗期間,需要外部上拉電路。</p>&l
46、t;p> (4)P1口:是一個具有內部上拉電路的8位雙向I/O口。P1口的輸出緩沖器能夠吸入/放出4個TTL輸入。當對P1口的引腳寫“1”時,它被內部上拉電路拉高,并能作輸入使用,作為輸入時,由于上拉電路的作用,由外部拉低的P1口引腳將放出電流(IIL)。</p><p> ?。?)P2口:是一個具有內部上拉電路的8位雙向I/O口,P2口輸出緩沖器能吸入/放出4個TTL輸入。當對P2口引腳寫“1”時它們被
47、內部上拉電路拉該,并能作為輸入使用,此時,由于內部上拉電路的作用,被外部拉低的P2口引腳將放出電流(IIL)。</p><p> 當訪問外部程序存儲器及使用16位地址的是數(shù)據(jù)存儲器(MOVX@DPTR)時,P2口輸出高8位地址。這種情況下,當不置“1”時,P2口使用強大的內部上拉電路。當訪問使用8位地址的外部存儲器(MOVX @RI)時,P2口輸出P2口鎖存器的內容。</p><p>
48、 ?。?)P3口:是一個具有內部上拉電路的8位雙向I/O口,P3輸出緩沖器能吸入/放出4個TTL輸入。當對P3口引腳寫“1”時,則它們被內部上拉電路拉高,并能作為輸入使用。此時,由于內部上拉電路的作用,被外部拉低的P3口引腳將放出電流</p><p> ?。?)P3口也提供AT89C52各種專用功能,表3.1為AT89C52的P3口第二功能。</p><p> 表1 P3口第二功能&l
49、t;/p><p> ?。?)RST:復位端。當振蕩器工作時,此引腳上出現(xiàn)兩個機器周期的高電平將系統(tǒng)復位。</p><p> (9)ALE/PROG:當訪問外部存儲器時,ALE(允許地址鎖存)是一個用于鎖存地址的低8位字節(jié)的書粗脈沖。在Flash 編程期間,此引腳也可用于輸入編程脈沖(PROG)。在正常操作情況下,ALE以振蕩器頻率的1/6的固定速率發(fā)出脈沖,它是用作對外輸出的時鐘,需要注意的
50、是,每當訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如果希望禁止ALE操作,可通過將特殊功能寄存器中位地址為8EH那位置的“0”來實現(xiàn)。該位置的“1”后。ALE僅在MOVE或MOVC指令期間激活,否則ALE引腳將被略微拉高。若微控制器在外部執(zhí)行方式,ALE禁止位無效。</p><p> ?。?0)PSEN:外部程序存儲器讀選取通信號。當AT89C52在讀取外部程序時, 每個機器周期 將PSEN激活兩次。在此期間內
51、,每當訪問外部數(shù)據(jù)存儲器時,將跳過兩個PSEN信號。</p><p> (11)EA/Vpp:訪問外部程序存儲器允許端。為了能夠從外部程序存儲器的0000H至FFFFH單元中取指令,EA必須接地,然而要注意的是,若對加密位1進行編程,則在復位時,EA的狀態(tài)在內部被鎖存。</p><p> 執(zhí)行內部程序EA應接VCC。不當選擇12V編程電源時,在Flash編程期間,這個引腳可接12V編程
52、電壓。</p><p> (12)XTAL1:振蕩器反向放大器輸入端和內部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器輸出端。</p><p><b> 共陽數(shù)碼管介紹</b></p><p> 四位一體數(shù)碼管有四個位控腳,八個段控腳,四位一體數(shù)碼管內部結構圖如3.5.1所示,四位一體數(shù)碼管外觀圖如3.5.23所示,四位一體數(shù)碼管采用
53、動態(tài)顯示。</p><p><b> 圖</b></p><p> 3.5.1 四位一體數(shù)碼管內部結構圖</p><p> 圖3.5.2 四位一體數(shù)碼管外觀圖</p><p><b> 四、軟件系統(tǒng)設計</b></p><p> 4.1 設計思想 &l
54、t;/p><p> 把八個選手的按鍵接在P1口,在P1口接上拉電阻。如果有鍵按下,接這個鍵的口線將被拉低,通過鍵掃判斷那根口線被拉低,得到鍵值,顯示到數(shù)碼管上。主持人按啟動鍵,開啟定時器0,有選手搶答,開啟定時器1。</p><p> 4.2 資源分配 </p><p> ?。?) 定時/計數(shù)器的使用</p><p> 定時/計數(shù)器0,
55、定時功能,工作方式1,定時50ms。</p><p> 定時/計數(shù)器1,定時功能,工作方式1,定時50ms。</p><p> ?。?) 中斷源的使用</p><p> 定時/計數(shù)器0,計滿20次即得秒計時單位。</p><p> 定時/計數(shù)器1,計滿20次即得秒計時單位。</p><p><b>
56、 按鍵設定</b></p><p> P1.0-P1.7分別設定為S1-S8按鍵,其中S1-S6接P1.0-P1.5分別代表6個參賽搶答選手。S7接P1.6,作 啟動鍵。S8接P1.7,作搶答停止和復位按鍵。</p><p> 八個選手按鍵全接在P1口,方便搶答和控制.</p><p> ?。?) 數(shù)碼管的使用</p><p&g
57、t; P0.7-P0.0段控線,分別接led1和led2的顯示dp,g,f,e,d,c,b,a,采取并聯(lián)的接法。</p><p> P2.0-P2.3位控線,分別接led1的4、3、2、1,P2.4—P2.7位控線,分別接led2的4、3、2、1。</p><p> 4.3 程序設計流程圖</p><p> 4.3.1 定時器中斷服務程序流程</p
58、><p> 定時器中斷服務程序流程如圖4.3.1所示。</p><p> 圖4.3.1定時器中斷服務程序流程圖</p><p> 4.3.2搶答違規(guī)流程圖</p><p> 圖4.3.2 搶答違規(guī)流程圖</p><p> 4.3.3 顯示程序流程</p><p> 顯示程序流程如
59、圖4.3.3所示</p><p> 圖4.3.3 顯示程序流程圖</p><p> 4.3.4主程序流程圖</p><p> 主程序程序流程圖如圖4.3.4所示</p><p> 圖4.3.4主程序程序流程圖</p><p> 五、調試及使用說明 </p><p><
60、b> 5.1實物調試</b></p><p> (1)顯示器上不顯示數(shù)字,我們從后級往前級進行測試,首先用1.5~2V的電壓作用各個筆段,看對應各筆段是否亮,判斷是否完好。若完好則繼續(xù)檢測三極管芯片是否燒壞。然后再看與數(shù)碼管的引腳焊接是否都是實焊.看是否能顯示數(shù)字。無顯示的故障一般問題出在這兩個環(huán)節(jié)。</p><p> (2)顯示器上顯示的是不符合要求的數(shù)字,在設計
61、原理正確的前提下,先通過測試判斷AT89S52的輸出口與LED管的a~g筆段是否連接有錯。其方法是AT89S52的輸出P0.1-P0.7分別按規(guī)律輸入高低電平,觀察LED管是否顯示相應的數(shù)字。如果這個環(huán)節(jié)正常,則問題在二極管編碼電路,再逐一進行檢查。</p><p> ?。?)在測試的過程中我們一定要注意,高低電平的測試電壓數(shù)值要針對不同的電路而選取不同的數(shù)值。比如,針對LED管,高電平只能用1.5~2V,而在C
62、D4511的輸入端高電平要用到8V以上的電源電壓。選高了,會燒管子;選低了,會看不到效果,甚至產(chǎn)生誤判斷。</p><p> ?。?)當一切都檢查好了且都沒有問題之后,導入程序發(fā)現(xiàn)數(shù)碼管能夠正常顯示,但是有一些位比較亮有一些位則比較暗.檢查程序發(fā)現(xiàn)是延時不夠,加長延時時間之后一切顯示正常.</p><p> 5.2 使用說明 </p><p> 該搶答器上電或
63、按鍵復位后能自動顯示系統(tǒng)提示符“P.”,進入準備工作狀態(tài)。主持人有兩個鍵,啟動鍵和復位鍵。</p><p> (1)主持按下開始按鈕后,搶答開始并限定時間30S;10S內無人搶答,蜂鳴器發(fā)出音響;</p><p> ?。?)主持人按下開始按鈕之前有人按下?lián)尨鹌?,搶答違規(guī),顯示器顯示違規(guī)臺號,違規(guī)指示燈亮,其它按鈕不起作用。比如1號選手在主持人按下啟動鍵之前搶答,他違規(guī),顯示器顯示違規(guī)臺號
64、1,同時違規(guī)指示燈亮。</p><p> (3)正常搶答,顯示器顯示臺號,蜂鳴器發(fā)出聲響,其它搶答按鈕無效。比如1號選手正常搶答,顯示器顯示臺號1,蜂鳴器發(fā)出聲響。</p><p> ?。?)正常搶答下,從按下?lián)尨鸢粹o開始30S內,答完按鈕沒按下,則作超時處理,超時處理時,違規(guī)指示燈亮,顯示器顯示違規(guī)臺號,蜂鳴器發(fā)出聲響。比如1號選手在答題30s內沒有答完題,超時處理,違規(guī)指示燈亮,顯示
65、器顯示違規(guī)臺號1。</p><p> ?。?)顯示器各臺數(shù)字顯示的消除,蜂鳴器音響及違規(guī)指示燈的關斷,都要通過主持人按復位按鈕,主持人有權在任何時候停止搶答。</p><p> 六、設計心得體會及教學建議</p><p> 6.1 設計體會 </p><p> 通過本次畢業(yè)設計熟悉了PCB制作的流程,硬件設計和軟件設計。protel9
66、9中畫PCB時應意線的寬度,線距,最重要的是布局,如果布局合理,線就比較少,甚至布出單面板,一定要注意焊盤的大小,太小了,打孔時會把焊盤打掉,太大了布出的線會有很多。在轉印PCB時一定要把板子清洗干凈。我第一次轉印時由于板子不干凈,結果把紙印到了板子上。印板要注意電熨斗的溫度。如果轉印到板子上的電路圖有短線,還有補救的方法,用油性筆補線。為了以后使用的方便和焊盤的牢固,可以在板子加上四個螺絲,把板子撐起來。在腐蝕板子時要注意水溫,加入的
67、三氯化鐵要適量,如果想減少腐蝕板子的時間,可以搖動水盆。板子腐蝕了以后要清洗干凈。硬件設計方面:學會了如何把設計要求轉化為原理圖,原理圖十分重要,如果原理圖錯了,那么做出來的板子必然錯了,因此原理圖一定要準。</p><p> 開始我三極管驅動數(shù)碼管,但是在Proteus中不能仿真,所以我換用了74LS244驅動。選用數(shù)碼管時要注意是共陰的還是共陽的。軟件設計方面:學會了用C51編寫程序。我學習了匯編語言和C5
68、1,發(fā)現(xiàn)單片機用C51更易于理解。學習匯編語言是為了了解單片機的內部結構和工作原理,而C51更側重于應用。匯編語言比C51在編程時更精確,比如一個延時程序,用C51編只需用一個for循環(huán),而匯編要用到一兩個寄存器,但是匯編語言編寫的程序可以比較準確的算出延時時間,C51編寫的程序要通過調試才能得到延時時間,不夠準確。C51具有豐富的函數(shù)庫,可以直接調用。用C51其實就是編函數(shù),調函數(shù)。</p><p> 在實物
69、調試發(fā)現(xiàn)應顯示P.可實際顯示為P,對照原理圖,發(fā)現(xiàn)共陽數(shù)碼管的3腳是點的顯示段控,對照電路板上數(shù)碼管的3腳檢查,發(fā)現(xiàn)連接3腳的底層線斷了,把線連通之后,P.正常顯示了。要根據(jù)現(xiàn)象分析問題,找出問題出現(xiàn)的原因,解決它。此次畢業(yè)設計用理論指導了實踐,實踐又強化了理論。在此次課程設計時,我發(fā)現(xiàn)交流非常重要,同學之間相互交流,可以從別人那里學到你不會的知識,也可以把自己會的東西與別人分享,每個人會一點,匯合起來就有很多知識,大家都得到提高,而且
70、比自己單獨研究效率高的多。通過自己的努力和別人的指導,做了PCB板,下載程序到板子上,經(jīng)過調試,基本實現(xiàn)所要求的功能。因此做事情前,要有信心,相信自己做得好,這樣才有動力認真的去做,把事情想得簡單一點,積極的思考,解決出現(xiàn)的問題,逐漸向要求靠近,最后達到要求。做好一個東西都有一個過程,不可能一次就成功,要給自己時間,通過改變達到要求。</p><p><b> 6.2教學建議</b><
71、;/p><p> 目前單片機的教材基本上都是以單片機的結構為主線,展開的順序依次為單片機的硬件結構到指令,然后是簡單的軟件編程,最后是單片機系統(tǒng)的擴展以及一些外圍器件的應用。這些內容都是比較抽象生澀的,很難理解;而一些芯片的管腳以及一些位控的標記符也難以記憶,所以會讓人一種枯燥、難以學好的印象。</p><p> 系統(tǒng)的理論難于理解,我們可以化整為零,把那些理論拆開來,糅合到每一個小任務中
72、。這里我們可以多開創(chuàng)些小實驗,通過自主的完成實驗的內容來體會、思考所需的知識點,這樣可以使知識點記的更牢固,也更能熟練的掌握單片機的軟硬件資源的運用,真正意義上的做到學以致用,融會貫通。</p><p> 其次,單純的在黑板上寫教過于抽象,可以建議上多媒體課。通過觀看具體的圖像、實物感覺上會更清晰、明了,印象也更加深刻。在感官上有以實感,可以激發(fā)對單片機的興趣。</p><p> 另外
73、,在上課時可以使用擴音器,即使是教室大且人多的情況下大部分學生也都可以清晰的聽到。同時在黑板上板書的字體可以稍大些,讓四周的人可以很容易的看仔細。</p><p><b> 致謝</b></p><p> 通過這些天的設計,使我深深的感受到了,理論聯(lián)系實際的必要性及其重要性. </p><p> 在課程設計期間,要感謝老師教導,感謝同學幫
74、助,通過不斷學習理論知識和參與實踐,感覺自己的綜合素質在很大程度上得到了提升,努力將自己塑造成為一個專業(yè)功底扎實、知識結構完善、適應能力強的合格大學生。這次課程設計,不僅讓我們大開眼界,也是對以前所學知識的一個初審,從這次實習中,進一步鞏固和深化了所學的理論知識,彌補了單一理論教學的不足,并為后續(xù)專業(yè)課學習和畢業(yè)設計打下了堅實的基礎。</p><p><b> 參考文獻</b></p
75、><p> [1]馬忠梅,單片機的C語言Windows環(huán)境編程寶典[M], 北京:北京航空航天大學出版社,2003.6; </p><p> [2]李光飛,單片機C程序設計指導[M],北京:北京航空航天大學出版社,2003.01 ;</p><p> [3]李光飛,單片機課程設計實例指導[M],北京:北京航空航天大學出版社,2004.9。</p>
76、<p> [4]閻石主編.《數(shù)字電子技術基礎》第四版,北京:高等教育出版社,2001年。</p><p> [5]王正謀主編.《PROTEL99SE電路設計與仿真技術》,福建:福建科學技術出版社,2004年。</p><p> 附錄Ⅰ 電路原理圖</p><p> 附錄Ⅱ PCB元器件布局圖</p><p> 附錄
77、Ⅲ PCB頂層圖</p><p> 附錄Ⅳ PCB底層圖</p><p> 附錄Ⅴ 元器件清單</p><p> 附錄Ⅵ 程序清單</p><p> #include"reg52.h"</p><p> #include"intrins.h"</p&g
78、t;<p> #include"absacc.h"</p><p> #define uchar unsigned char</p><p> #define uint unsigned int </p><p> #define ulong unsigned long</p><p> /*
79、定義定時器T0和T1時間常數(shù)和方式控制字 */</p><p> sbit P17=P1^7;</p><p> sbit P31=P3^1;</p><p> sbit P30=P3^0;</p><p> sbit P16=P1^6;</p><p> sbit P37=P3^7;</p>
80、<p> uchar led_buf[4];//顯示緩沖數(shù)組</p><p> uchar led1_buf_xuehao[8]={11,0,9,0,3,12,3,2};//顯示緩沖數(shù)組</p><p> uchar led_sel[3]={0x7f,0xdf,0xef};</p><p> uchar code dispcode[13]={
81、0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xa1,0xbf};</p><p><b> //段碼數(shù)組</b></p><p> uchar keyzhi;</p><p> uint m,time,time2;</p><p> /////
82、////////////////////////////////////////////////延時程序 </p><p> void delay(uint a) </p><p><b> {</b></p><p> while(a--);</p><p><b> }</b>
83、;</p><p> ///////////////////////////////////////////////////定時時間為X*40MS的子程序</p><p> void delay2(unsigned int x) </p><p> { unsigned int j;</p><p> while(x--)&l
84、t;/p><p> { for(j=0;j<5000;j++)</p><p><b> {;}</b></p><p><b> }</b></p><p><b> }</b></p><p> ////////////////////
85、//////////////////////////////違規(guī)指示燈亮程序</p><p> void led()</p><p><b> {</b></p><p><b> P30=0;</b></p><p> delay(2000);</p><p>
86、 delay(2000);</p><p><b> } </b></p><p> //////////////////////////////////////////////////蜂鳴器程序</p><p> void ring() </p><p><b> {</b><
87、/p><p><b> P31=0;</b></p><p> delay(20000);</p><p><b> P31=1;</b></p><p><b> } </b></p><p> /////////////////////////
88、//////////////////////// //P.顯示程序</p><p> void ledk() </p><p> { </p><p> uchar sel=0x0
89、1; </p><p><b> uchar i;</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> P2=sel; </p><p
90、> P0=dispcode[10]; </p><p> delay(200); </p><p> sel=_crol_(sel,1); </p><p><b> }</b></p><p><b> } </b></
91、p><p> ////////////////////////////////////////////////////////// //顯示緩沖區(qū)更新函數(shù)</p><p> void led_buf_auto_flush(void) reentrant </p><p> { </
92、p><p> led_buf[0]=m; //獲得選手的號碼</p><p> led_buf[1]=time/10; //獲得秒十位</p><p> led_buf[2]=time%10; //獲得秒的個位</p><p><b> } </
93、b></p><p> //////////////////////////////////////////////////////////定時器t0中斷服務函數(shù),選用定時器0工作方式為1</p><p> void timer0(void) interrupt 1 </p><p><b> { </b></p>
94、<p><b> uchar j;</b></p><p> static uchar t=0; </p><p> TH0=0x3c;TL1=0xb0;//設置初始值50ms為循環(huán)20次為1ms,12MHz</p><p><b> ++t;</b></p><p&
95、gt; if(t==20) //定時器0定時中斷次數(shù)</p><p><b> {</b></p><p><b> --time;</b></p><p><b> t=0; </b></p><p> if((time==20)&&
96、;(j!=0xff))</p><p><b> { P31=0;</b></p><p> delay(10000);</p><p><b> P31=1;</b></p><p><b> }</b></p><p> led_buf_a
97、uto_flush(); //LED顯示緩沖區(qū)時間值更新</p><p><b> }</b></p><p><b> }</b></p><p> //////////////////////////////////////////////////////////////選用定時器1工作方式為1</p
98、><p> void timer1(void) interrupt 3 </p><p><b> { </b></p><p><b> uchar j; </b></p><p> static uchar t=0; </p><p> TH1
99、=0x3c;TL1=0xb0; </p><p><b> ++t;</b></p><p> if(t==20) </p><p><b> { </b></p><p><b> --time2;</b></p><p&g
100、t;<b> t=0;</b></p><p> if((time2==0)&&(j!=0xff))</p><p><b> {</b></p><p><b> P30=0;</b></p><p> delay(10000);</p>
101、<p><b> TR1=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> time=time2;</p><p> led_buf_auto_flush(); </p>&
102、lt;p><b> }</b></p><p> ////////////////////////////////////////////////////////////////顯示輸出函數(shù)</p><p> void put_on_leds(void) </p><p> { uchar i;</
103、p><p> for(i=0;i<3;i++)</p><p><b> {</b></p><p> P2=led_sel[i]; </p><p> P0=dispcode[led_buf[i]]; </p><p> delay(100);
104、 </p><p> delay(100);</p><p><b> }</b></p><p><b> }</b></p><p> /////////////////////////////////////////////////////////////
105、//顯示靜態(tài)學號輸出函數(shù)</p><p> void put_on_led_jxuehao(void) </p><p><b> {</b></p><p> uchar sel=0x7f; </p><p><b> uchar i;</b></p
106、><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> P2=sel; </p><p> P0=dispcode[led1_buf_xuehao[i]]; </p><p><b> P
107、30=1;</b></p><p> delay(100); </p><p> sel=_cror_(sel,1); </p><p><b> }</b></p><p><b> }</b></p><p>
108、; /////////////////////////////////////////////////////////////顯示動態(tài)學號輸出函數(shù)</p><p> void put_on_led_dxuehao(void) </p><p><b> {</b></p><p> uchar sel=0x7f;
109、 </p><p><b> uchar i;</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> P2=sel; </p><p> P0=dispco
110、de[led1_buf_xuehao[i]];</p><p><b> P3=0x7f;</b></p><p> delay2(8); </p><p> sel=_cror_(sel,1); </p><p> while(i==7)</p><p>
111、 put_on_led_jxuehao();</p><p><b> ring();</b></p><p><b> }</b></p><p><b> }</b></p><p> ///////////////////////////////////////
112、/////////////////////////進行初始化并接受用戶的初始化時間設置</p><p> void init_sys(void) </p><p><b> {</b></p><p> TMOD=0x11; TH0=0x3c;TL0=0xb0;TH1=0x3c;TL1=0xb0; //設置時間初值</p
113、><p> TR0=0;TR1=0;IE=0x8e; //開啟中斷,關閉定時器</p><p><b> } </b></p><p> ////////////////////////////////////////////////////////// /處理與鍵盤相連的P1口的內容,作為鍵值</p>
114、<p> uchar keychuli() /</p><p><b> {</b></p><p> uchar k; </p><p> k=P1; //P1口內容送K</p><p>
115、 return(k); //返回鍵值</p><p><b> }</b></p><p> uchar key() //鍵盤掃描函數(shù),函數(shù)返回值即鍵值</p><p><b> {</b></p>
116、<p> uchar keyzhi,keyzhii; </p><p> keyzhi=keychuli(); //調P1口處理函數(shù)</p><p> if(keyzhi!=0xff) </p><p><b> {</b></p>
117、;<p> delay(100); </p><p> if(keyzhi!=0xff) //真正有鍵按下,取鍵值并暫存</p><p><b> {</b></p><p> keyzhii=keyzhi;</p><p> w
118、hile(keyzhi!=0xff) //判按鍵是否釋放,沒有釋放延時去抖動等待釋放</p><p><b> {</b></p><p> put_on_leds();</p><p> put_on_leds();</p><p> keyzhi=keychuli();</p>&
119、lt;p><b> }</b></p><p> keyzhi=keyzhii; //按鍵釋放后恢復按鍵鍵值</p><p><b> }</b></p><p><b> } </b></p><p> return(keyzhi);
120、 //返回按鍵鍵值</p><p><b> }</b></p><p> /////////////////////////////////////////////////////// //外部中斷</p><p> void intx1() interrupt 2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論