版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 說 明 書</p><p> 課程名稱: 單片機(jī)原理及應(yīng)用 </p><p> 設(shè)計題目: 搶答器設(shè)計 </p><p> 院 系: 電子信息與電氣工程 </p><p> 學(xué)生姓名: </p><p> 學(xué)
2、 號: </p><p> 專業(yè)班級: 11電子信息 </p><p> 指導(dǎo)教師: </p><p> 2012年 5 月 17日</p><p> 課 程 設(shè) 計 任 務(wù) 書</p><p><b> 搶答器設(shè)計<
3、;/b></p><p> 摘 要:本組設(shè)計目標(biāo)為以AT89S52單片機(jī)作為主要模塊、數(shù)碼管做為顯示模塊組成的用于表決選擇的搶答器。本搶答器主要是通過八個按鍵開關(guān)來摸擬八路選手的搶答,開始鍵按下,則進(jìn)入到八個按鍵的掃描中。通過數(shù)碼管來顯示搶答選手的號數(shù),并由蜂鳴器發(fā)出搶答產(chǎn)生信號。具體功能為:主持人讀完題目后按下允許搶答開關(guān),才能進(jìn)行選手搶答,否則摁鍵搶答無效,搶答時,首先有時間優(yōu)先,之后有位置優(yōu)先。本
4、搶答器的主要特點(diǎn)有硬件比較簡單,造價便宜,軟件原理通俗易懂。</p><p> 關(guān)鍵詞:單片機(jī) 搶答器 </p><p><b> 目 錄</b></p><p> 1.設(shè)計背景 ……………………………………………………………01</p><p> 1.1 專業(yè)背景 …………………………………………………
5、……01</p><p> 1.2 課題提出 ………………………………………………………01</p><p> 2.設(shè)計方案 ……………………………………………………………01</p><p> 2.1 硬件設(shè)計方案 …………………………………………………01</p><p> 2.2 軟件設(shè)計方案 ……………………………………………
6、……02</p><p> 3.方案實(shí)施 ……………………………………………………………03</p><p> 3.1 硬件方案實(shí)施 …………………………………………………03</p><p> 3.2 軟件方案實(shí)施 …………………………………………………08</p><p> 4.結(jié)果與結(jié)論 ……………………………………………………
7、……15</p><p> 4.1 總體設(shè)計過程分析 ……………………………………………15</p><p> 4.2 總體結(jié)論 ………………………………………………………15</p><p> 5.收獲與致謝 …………………………………………………………16</p><p> 6.參考文獻(xiàn) ………………………………………………………
8、……16</p><p> 7.附件 …………………………………………………………………17</p><p> 7.1 元器件清單 ……………………………………………………17</p><p> 7.2 硬件原理圖 ……………………………………………………18</p><p> 7.3 程序清單 …………………………………………………
9、……18</p><p><b> 1. 設(shè)計背景</b></p><p><b> 1.1專業(yè)背景</b></p><p> 隨著現(xiàn)代電子電路的快速發(fā)展,以及電子行業(yè)對現(xiàn)有電子工程技術(shù)的不斷需求,特別是對實(shí)際操作實(shí)踐的電子人才的需求越來越多,所以加強(qiáng)學(xué)生動手能力﹑重視實(shí)踐應(yīng)該是電子發(fā)展需求的必然趨向。實(shí)踐動手能力的
10、培養(yǎng)是一種綜合能力,這種能力當(dāng)然是在一定難度的前提下完成的,通過一定數(shù)量的實(shí)踐才能逐步形成的。因此在培養(yǎng)實(shí)踐能力的同時,要通過實(shí)踐來不斷的發(fā)現(xiàn)問題和解決問題的途徑和方法,從而提高實(shí)踐能力。</p><p> 近年來,隨著單片機(jī)檔次的不斷提高,功能的不斷完善,其應(yīng)用日趨成熟、應(yīng)用領(lǐng)域日趨擴(kuò)大,特別是工業(yè)測控、尖端武器和日用家電等領(lǐng)域更是因?yàn)橛辛藛纹瑱C(jī)而生輝增色。單片機(jī)應(yīng)用技術(shù)已成為一項(xiàng)新的工程應(yīng)用技術(shù)。本次實(shí)習(xí)設(shè)
11、計的題目為基于單片機(jī)的搶答器。</p><p><b> 1.2課題提出</b></p><p> 搶答器又稱為第一信號鑒別器,其主要應(yīng)用于各種知識競賽、文藝活動等場合。普通搶答器一般是由很多電路組成的,線路復(fù)雜,可靠性不高,功能也比較簡單,特別是當(dāng)搶答路數(shù)很多時,實(shí)現(xiàn)起來就更為困難。這個學(xué)期我們開設(shè)了單片機(jī)課程,為了進(jìn)一步鞏固我們的相關(guān)知識,老師精心組織了這次課
12、程設(shè)計。我們設(shè)計了以單片機(jī)為核心的新型的搶答器,在保留原始搶答器的基本功能的同時又增加了數(shù)碼管顯示電路實(shí)現(xiàn)了其它功能。通過這次搶答器設(shè)計,是我們進(jìn)一步掌握相關(guān)專業(yè)知識的綜合應(yīng)用,提高我們的實(shí)際設(shè)計能力和動手能力。</p><p><b> 2.設(shè)計方案</b></p><p><b> 2.1硬件設(shè)計方案</b></p><
13、;p> 根據(jù)課程設(shè)計要求可以大概構(gòu)思出硬件電路圖:數(shù)碼管與單片機(jī)的P0口的低七位相連接;P0.7口與蜂鳴器相連接;P1口接八個按鍵;P2口接八個LED燈分別顯示八位選手搶答的指示信號。</p><p> 1)主控部分的方案設(shè)計</p><p> 用以AT89C52為核心的單片機(jī)控制方案,通過相應(yīng)的程序,并通過按鍵來進(jìn)行電平識別,再由單片機(jī)輸出相應(yīng)的程序,并將相應(yīng)數(shù)值通過數(shù)碼來顯
14、示。用單片機(jī)來制作的搶答器,硬件電路比較簡單,容易明白,且成本相對較低。</p><p><b> 2)優(yōu)先級的設(shè)定</b></p><p> 對于八位選手的優(yōu)先級的設(shè)置有兩種方案。</p><p> 方案一:利用一片74LS09芯片分別把P1口的八個搶答信號個一組相與之后接到單片機(jī)的除主持人外的其他的中斷,并有軟件的編寫來控制八個搶答信
15、號的優(yōu)先級。</p><p> 方案二:利用兩片74LS09先把八個搶答信號各一組相與后,再把相與后的信號個一組再次相與,最后把相與的結(jié)果的一個信號接到單片機(jī)的外部中斷0上,當(dāng)有搶答信號時,通過軟件編寫查詢各個選手順序可以設(shè)置八個搶答的優(yōu)先級。</p><p> 顯然,方案一雖然少用了一片74LS09芯片但它需要四個中斷,甚是麻煩。而方案二只需要設(shè)置兩個中斷的開通與關(guān)斷以及內(nèi)部查詢順序
16、就可以設(shè)置八個搶答信號的優(yōu)先級。因此選擇方案二。</p><p><b> 2.2軟件設(shè)計方案</b></p><p> 1)中斷的開通與關(guān)斷設(shè)計</p><p> 為達(dá)到在主持人未按下按鍵前搶答無效應(yīng)該設(shè)置外部中斷為開中斷,外部中斷0為關(guān)中斷。當(dāng)開始搶答信號發(fā)出后,開外部中斷0以接收選手搶答中斷信號。選手搶答后,開外部中斷1從而使主持人
17、再次按下按鍵后可以開始下一次搶答。</p><p><b> 2)數(shù)碼管的顯示</b></p><p> 方案一:采用靜態(tài)顯示,是指當(dāng)數(shù)碼管顯示某一字符時,七段數(shù)碼管的對應(yīng)段的發(fā)光二極管被選中,在這種顯示方式下,每段LED都對應(yīng)一個單片機(jī)口線。</p><p> 方案二:采用動態(tài)顯示,對于多位數(shù)碼管顯示時,每一位數(shù)碼管輪流顯示,當(dāng)顯示間隔
18、時間較短時人眼就分辨不出是動態(tài)顯示,而是每一位都是一直都在顯示。</p><p> 比較二者,靜態(tài)顯示主要的優(yōu)點(diǎn)是顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器的亮度大,系統(tǒng)運(yùn)行過程中,在需要更新顯示內(nèi)容時,CPU才去執(zhí)行顯示更新子程序,這樣既節(jié)約了CPU的時間,又提高了CPU的工作效率。其不足之處是在需要用于顯示的數(shù)碼管較多時占用硬件資源較多,每個LED數(shù)碼管需要獨(dú)占8條輸出線。隨著顯示器位數(shù)的增加,需要的
19、I/O口線也將增加。動態(tài)顯示器的優(yōu)點(diǎn)是節(jié)省硬件資源,成本較低,但是要保證顯示器正常顯示,CPU必需每隔一段時間執(zhí)行一次顯示子程序,占用CPU大量時間,降低了CPU的工作效率,同時顯示亮度較靜態(tài)顯示器低。</p><p> 通過以上分析,結(jié)合本課題只提供一位數(shù)碼管,所以采用方案一。</p><p><b> 3)搶答信號指示燈</b></p><
20、p> 對于這一位LED燈的閃爍可以通過軟件程序的編寫,交替送出電平高低控制其閃爍。</p><p><b> 3. 方案實(shí)施</b></p><p><b> 3.1硬件方案實(shí)施</b></p><p> 1)相關(guān)應(yīng)用軟件的介紹</p><p> 本次設(shè)計要用到的軟件包括:電路模擬仿
21、真軟件Proteus軟件,匯編語言的編譯器軟件keil軟件,布線制板軟件dxp軟件。</p><p> 首先對于Proteus軟件的用法:如圖1中所示,區(qū)域①為菜單及工具欄,區(qū)域②為預(yù)覽區(qū),區(qū)域③為元器件瀏覽區(qū),區(qū)域④為編輯窗口,區(qū)域⑤為對象拾取區(qū),區(qū)域⑥為元器件調(diào)整工具欄,區(qū)域⑦為運(yùn)行工具條。 首先點(diǎn)擊啟動界面區(qū)域③中的“P”按鈕(Pick Devices,拾取元器件)來打開“Pick Devices”(拾取
22、元器件)對話框從元件庫中拾取所需的元器件。在對話框中的“Keywords”里面輸入我們要檢索的元器件的關(guān)鍵詞,比如我們要選擇項(xiàng)目中使用的AT89C52,就可以直接輸入。輸入以后我們能夠在中間的“Results”結(jié)果欄里面看到我們搜索的元器件的結(jié)果。 搜索到所需的元器件以后,我們可以雙擊元器件名來將相應(yīng)的元器件加入到我們的文檔中,那么接著我們還可以用相同的方法來搜索并加入其他的元器件。當(dāng)我們已經(jīng)將所需的元器件全部加入到文檔中時,我們可以點(diǎn)
23、擊“OK”按鈕來完成元器件的添加?! √砑雍迷骷院螅旅嫖覀兯枰龅木褪菍⒃骷凑瘴覀兊男枰B接成電路。首先在元器件瀏覽區(qū)中點(diǎn)擊我們需要添加到文檔中的元器件,這時我們就可以在瀏覽區(qū)看到我們所選擇的元器件的形狀與方向,如果其方向不符合你的要求</p><p> Proteus中單片機(jī)芯片默認(rèn)已經(jīng)添加電源與地,所以我們可以省略。</p><p> 圖1. proteus 啟動界面
24、圖 修改好各組件屬性以后就要將程序(HEX文件)載入單片機(jī)了。這里就要用到匯編語言的編譯器軟件keil軟件了。</p><p> 應(yīng)用Keil進(jìn)行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存—建立工程并添加源文件—設(shè)置工程—編譯/匯編、連接,產(chǎn)生目標(biāo)文件—程序調(diào)試。Keil使用“工程”(Project)的概念,對工程(而不能對單一的源程序)進(jìn)行編譯/匯編、連接等操作。工程的建立、設(shè)置、編譯/匯編及連接產(chǎn)生目標(biāo)
25、文件的方法非常易于掌握。首先選擇菜單File-New…,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇File-Open…,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時必須在文件名后加上擴(kuò)展名.asm(.a51)或.c;然后選擇菜單Project-New Project…,建立新工程并保存(保存時無需加擴(kuò)展名,也可加上擴(kuò)展名.uv2);工程保存后會立即彈出一個設(shè)備選擇對話框,選擇CPU后點(diǎn)確定返回主界面。這時工程管理
26、窗口的文件頁(Files)會出現(xiàn)“Target1”,將其前面+號展開,接著選擇Source Group1,右擊鼠標(biāo)彈出快捷菜單,選擇“Add File to Group ‘Source Group1’”,出現(xiàn)一個對話框,要求尋找并加入源文件(在加入一個源文件后,該對話框不會消失,</p><p><b> 2)硬件電路框圖</b></p><p> 本系統(tǒng)采用AT
27、89S52單片機(jī)作為控制核心,對按鍵開關(guān)送來的信號進(jìn)行分析處理,最終控制數(shù)碼管顯示相應(yīng)的數(shù)值。本系統(tǒng)主要的單元電路有單片機(jī)主控電路、鍵盤控制電路、LED顯示電路模塊等。系統(tǒng)硬件框圖如下圖圖2所示。</p><p><b> 圖2.系統(tǒng)硬件框圖</b></p><p><b> 3)時鐘電路</b></p><p>
28、單片機(jī)必須在時鐘電路的驅(qū)動下才能工作。在單片機(jī)內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源,就能產(chǎn)生一定的時鐘信號送到單片機(jī)內(nèi)部的各個單元,決定單片機(jī)的工作速度。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,其振蕩頻率主要由石英晶體的頻率決定。兩個電容的作用是幫助振蕩器起振,并對振蕩器的頻率進(jìn)行微調(diào)。電路如圖3所示</p><p><b> 圖3.時鐘電路圖</b>&l
29、t;/p><p><b> 復(fù)位電路</b></p><p> 外部中斷和內(nèi)部中斷并存,單片機(jī)有硬件復(fù)位端,輸入一定周期的高電平即可實(shí)現(xiàn)復(fù)位。復(fù)位后單片機(jī)的各個狀態(tài)都恢復(fù)到了初始狀態(tài)。電路如圖4所示:</p><p><b> 圖4.復(fù)位電路圖</b></p><p> 5)數(shù)碼管的設(shè)計: 圖中
30、數(shù)碼管采用的是1位七段共陽數(shù)碼管,其中a ~ f段分別接到單片機(jī)的P0.0 ~ P0.6口,由單片機(jī)輸出的P0口數(shù)據(jù)來決定段碼值,還有八個300歐姆的電阻,連接在P0口上,用作P0口的上拉電阻。</p><p><b> 6)電源電路</b></p><p> 電源電路由橋堆2w10和7805構(gòu)成。電源電路主要用用于為整個系統(tǒng)提供電源。我們?nèi)粘S秒姸际?20V的交
31、流電,所以在設(shè)計電源時要先把交流電整成直流,然后再經(jīng)過穩(wěn)壓管輸出整個系統(tǒng)所需的穩(wěn)定的直流電壓。整流主要采用2W10橋堆和電容濾波以得到基本穩(wěn)定的輸出電壓。穩(wěn)壓部分是采用常用的穩(wěn)壓管W7805得到穩(wěn)定的輸出正5V電壓。如圖5所示:</p><p><b> 圖5.電源電路圖</b></p><p> 7)LED和數(shù)碼管顯示</p><p>
32、 LED顯示主要是給發(fā)光二極管送一恒定的電流,這種方法需要有寄存器、譯碼器、驅(qū)動電路燈邏輯部件。而單片機(jī)的P0口每一位可以驅(qū)動八個TTL型LS型負(fù)載,所以可以采用直接由P0口驅(qū)動數(shù)碼管,P2對應(yīng)每一口接一個發(fā)光二極管。</p><p> 由于采用的是陽極接5V電源的接法,所以需要限流電阻與發(fā)光二極管串聯(lián)。發(fā)光二極管允許通過的電流是3mA至10mA左右,為了使發(fā)光二極管亮度高點(diǎn),所以,選擇了串聯(lián)300歐電阻。&l
33、t;/p><p><b> 8)蜂鳴器</b></p><p> 蜂鳴器的發(fā)聲主要用于對有搶答時的報警信號,以提示主持人。蜂鳴器的發(fā)聲由三極管放大電壓、電流來驅(qū)動,其中三極管的基集接單片機(jī)的P0.7口,以提供導(dǎo)通基集電流,從而經(jīng)放大后達(dá)到蜂鳴器的發(fā)聲電壓、電流。其電路圖如6所示:</p><p><b> 圖6. 蜂鳴器電路<
34、/b></p><p><b> 3.2軟件方案實(shí)施</b></p><p> 1) 搶答器流程圖 流程圖是使用圖形表示算法的思路是一種極好的方法,不論采用何種程序設(shè)計方法,程序總體結(jié)構(gòu)確定后,一般以程序流程圖的形式對其進(jìn)行描述??傮w框圖中的各個子模塊或各個子任務(wù)也應(yīng)該結(jié)合具體的教學(xué)模型和算法畫出較詳細(xì)的程序流程圖,供后面編寫具體程序和閱讀程序使用。為便
35、于識別,繪制流程圖的習(xí)慣做法是:方框表示:要執(zhí)行的處理;平行四邊形表示:輸入;不規(guī)則圖形代表輸出;菱形表示:判斷。</p><p> 對整個系統(tǒng)的功能分析知,匯編語言程序分為三大部分:主持人未按允許搶答時沒有響應(yīng),主持人按鍵為外部中斷1,之后有搶答信號為外部中斷0。得到系統(tǒng)的流程圖如下圖。</p><p><b> 圖7.主程序流程圖</b></p>
36、<p><b> 主要程序分析</b></p><p> 我們組所采用的編程語言是單片機(jī)匯編語言,匯編語言的特點(diǎn)是程序的各個部分除了必要的信息交流外彼此之間相互獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦? 便于使用、維護(hù)以及調(diào)試。匯編語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。它的語法比較靈活,允許程序編寫者有較大
37、的自由度。本次設(shè)計的主程序中包括主持人按鍵處理程序,主選手搶答處理程序,一號選手搶答處理程序,LED燈閃爍程序,鍵盤消抖延時程序以及蜂鳴器發(fā)聲時間和LED閃爍間隔時間程序。程序分析如下:</p><p><b> a.初始化程序</b></p><p> 搶答器的程序初始化主要完成中斷初始化,數(shù)碼管顯示初始化。中斷初始化主要是對主持人按鍵中斷信號和搶答中斷信號的初
38、始化,首先設(shè)置為主持人中斷優(yōu)先,搶答中斷其后,即只有主持人按下按鍵后才允許選手搶答。而對于數(shù)碼管的初始化顯示在本課題中是使數(shù)碼管全滅。初始化程序如下:</p><p> MOV A,#7FH ;初始化</p><p><b> MOV P0,A</b></p><p> SETB EA
39、 ;CPU開中斷</p><p> SETB EX1 ;開外部中斷1</p><p> SETB IT1 ;外部中斷1設(shè)為電平觸發(fā)方式</p><p> CLR EX0
40、 ;關(guān)外部中斷0</p><p> b.外部中斷1處理程序</p><p> 程序主要是用來處理主持人按鍵發(fā)出的搶答信號的顯示和選手搶答按鍵的允許:在主持人按下按鍵后,使數(shù)碼管顯示0以示意選手可以開始搶答,同時開外部中斷0,即允許選手搶答中斷。同時,數(shù)碼管顯示0就說明主持人已經(jīng)按下按鍵,所以在這里沒有調(diào)用鍵盤消抖延時程序。處理程序和流程圖如下:</
41、p><p> SETB EX0 ;開外部中斷0</p><p> SETB IT0 ;外部中斷0設(shè)為電平觸發(fā)方式</p><p> MOV A,#40H </p><p>
42、 MOV P0,A ;主持人按鍵顯示段碼送到P0口顯示</p><p> RETI ;中斷返回</p><p> 圖8. 外部中斷1處理程序</p><p> c.外部中斷0處理程序</p><p> 也就是選
43、手搶答中斷處理程序。首先調(diào)用鍵盤消抖延時程序,確定有鍵按下后。當(dāng)有兩位選手同時搶答時根據(jù)要求的八號選手優(yōu)先級,一號選手優(yōu)先級最低的要求,所以在編寫軟件的時候首先檢測八號選手對應(yīng)的口線、如果是該鍵按下,就直接跳轉(zhuǎn)到對應(yīng)按鍵處理程序,否則就檢測下一位,依次檢測下去。</p><p> 例如八號選手的檢測程序如下:</p><p> SETB EX1
44、 ;開外部中斷1</p><p> SETB IT1 ;外部中斷1設(shè)為電平觸發(fā)方式</p><p> CLR EX0 ;關(guān)外部中斷0 </p><p><b> CLR IT0</b></p>
45、;<p> MOV A,P1 ;把搶答狀態(tài)送到累加器A</p><p> LCALL DEL0 ??;調(diào)用延時程序,軟件消抖</p><p> CJNE A,P1,IN0 ??;沒有搶答,跳轉(zhuǎn)再次檢測鍵盤狀態(tài)</p><p> MOV A,#
46、7FH ??;八號選手搶答的數(shù)值送到A</p><p> CJNE A,P1,K6 ;不是八號選手搶答,轉(zhuǎn)到K6</p><p> AJMP KEY7 ??;是八號搶答,轉(zhuǎn)到KEY7</p><p> 外部中斷0處理程序的流程圖如下:</p><p> 圖9. 外
47、部中斷0處理程序</p><p><b> d.按鍵處理程序</b></p><p> 此過程就是蜂鳴器響一聲,數(shù)碼管顯示選手號,對應(yīng)選手LED閃爍五次。數(shù)碼管顯示就是給P0送入選手號對應(yīng)段碼; P0.7高電平,使蜂鳴器發(fā)聲,再調(diào)用蜂鳴器發(fā)聲時間延時程序,然后使P0.7為低電平關(guān)閉蜂鳴器發(fā)聲。LED閃爍是給P2口對應(yīng)的口線交替送高低電平,同時調(diào)用延時程序用來控制閃
48、爍的時間間隔。例如一號選手的處理程序如下:</p><p> MOV A,#0F9H </p><p> MOV P0,A ??;數(shù)碼管顯示一號選手搶答</p><p> LCALL DEL1 ;調(diào)用蜂鳴器響聲時間延時程序</p><p> CL
49、R P0.7 ??;關(guān)閉蜂鳴器響聲</p><p> MOV R0,#00H </p><p> LCALL FLASH ??;一號選手對應(yīng)LED燈閃爍程序</p><p> RETI ;中斷返回</p><p><b&
50、gt; e.延時程序</b></p><p> 延時程序用來控制LED閃爍的時間間隔、蜂鳴器響聲時間和按鍵消抖。延時程序的編寫就是利用給寄存器賦值,然后利用DJNZ指令判斷寄存器是否為零,再利用幾個DJNZ嵌套,結(jié)合指令執(zhí)行所占用的機(jī)器周期,計算延時程序的延時時間。根據(jù)延時時間的不同來設(shè)置寄存器的值。例如消抖程序如下:</p><p> DEL0: MOV R2,#40
51、 </p><p> LOP0: MOV R3,#125</p><p> LOP1: DJNZ R3,LOP1</p><p> DJNZ R2,LOP0</p><p><b> RET</b></p><p><b>
52、 f.閃爍程序</b></p><p> 這部分程序中采用了查表程序,表格中的不同值賦給P2口控制等的亮與滅;其中也調(diào)用了延時程序。主要是控制選手指示燈的閃爍。閃爍程序和流程圖如下:</p><p> FLASH: MOV DPTR,#TAB ; 轉(zhuǎn)移表首地址送DPTR</p><p> MOV R1
53、,#05H ;閃爍次數(shù)到R1</p><p> LOP: MOV 30H,R0 ;查表偏移量到寄存器30H</p><p><b> MOV A,30H</b></p><p> MOVC A,@A+DPTR
54、 ;查表</p><p> MOV P2,A ;對應(yīng)查表結(jié)果的LED燈亮</p><p> LCALL DEL1 ;調(diào)用閃爍延時程序</p><p> INC 30H
55、 ;查表偏移量增1</p><p><b> MOV A,30H</b></p><p> MOVC A,@A+DPTR ;查表</p><p> MOV P2,A ;對應(yīng)查表結(jié)果的LED燈滅</p><p>
56、 LCALL DEL1 ;調(diào)用閃爍延時程序</p><p> DJNZ R1,LOP ; 閃爍次數(shù)減1不為0轉(zhuǎn)移</p><p> RET ; 返回 </p><p> 圖10
57、. 閃爍程序流程圖</p><p><b> 4. 結(jié)果與結(jié)論</b></p><p> 4.1總體設(shè)計過程分析</p><p> 首先,我覺得做單片機(jī)課程設(shè)計是十分有意義的,而且是十分必要的。在已度過的大學(xué)時間里,我們大多數(shù)接觸的是課堂授課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實(shí)踐能力?如何把我們所學(xué)的專業(yè)基礎(chǔ)課理
58、論知識運(yùn)用到實(shí)踐中去呢?很明顯做類似的課程設(shè)計就為我們提供了良好的實(shí)踐平臺。</p><p> 其次,這次課程設(shè)計大概持續(xù)了兩周時間,由于剛開始時一直很輕視這些或那些問題,或者說有點(diǎn)心虛,猛然間面對一個挺大的問題:從設(shè)計到實(shí)現(xiàn)全靠我們幾個!什么只想著去問問老師,沒想到大家都很牛,很快就有人有思路了,我們也不能甘心落于人后,只能費(fèi)盡心思的做了!我們設(shè)計的課題是八路搶答器,搶答器主要是由單片機(jī)、主持人按鍵和選手搶答
59、按鍵以及顯示部分組成;搶答器主要功能是:實(shí)現(xiàn)主持人按下允許搶答按鍵后數(shù)碼管顯示0,并允許選手搶答;當(dāng)有有選手搶答時,其他選手再搶答無效;當(dāng)有兩位以上選手同時搶答時,八號選手優(yōu)先級最高,一號選手最低。在有選手搶答后,數(shù)碼管顯示搶答選手號,對應(yīng)選手搶答指示LED燈閃爍五次,同時蜂鳴器響一聲。當(dāng)主持人再次按下按鍵后數(shù)碼管顯示0,又開始下一題的搶答。說真的,整個過程不夠流暢,專業(yè)知識與實(shí)際問題結(jié)合的不夠靈活,思維不夠敏捷,確實(shí)費(fèi)了不少心思,設(shè)計
60、結(jié)果也不是太理想。</p><p> 最后,總結(jié)出以下要點(diǎn):在設(shè)計程序之前,設(shè)計者必學(xué)對所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片 機(jī)內(nèi)有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在
61、設(shè)計課程過程中遇到問題是很正常的,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。</p><p><b> 4.2總體結(jié)論</b></p><p> 經(jīng)過近十天的努力,在老師幫助下,我們這一組較好的完成了設(shè)計任務(wù),通過此次課程設(shè)計,我重新認(rèn)識到了自學(xué)的重要性,以及學(xué)以致用的道理。我在圖書館及網(wǎng)絡(luò)上查閱了大量的資料,同時也認(rèn)識到了團(tuán)隊合作
62、的重要作用。此次的搶答器的設(shè)計,讓我重新認(rèn)識了以前所學(xué)習(xí)的專業(yè)知識,我覺得此次設(shè)計讓我更加鞏固了所學(xué)的知識并在設(shè)計的過程中學(xué)會了與時俱進(jìn),克服了工作的枯燥感,讓我受益匪淺。在學(xué)習(xí)單片機(jī)這門課程的時候,我們應(yīng)該好好的記筆記,課下好好的做練習(xí)題才能把匯編語言程序設(shè)計靈活的運(yùn)用到單片機(jī)的應(yīng)用上,在單片機(jī)這門課程的學(xué)習(xí)上,我們還應(yīng)該知道一種常用的仿真軟件proteus軟件,可以讓你我們更為清晰的掌握C89C52單片機(jī)的實(shí)際應(yīng)用上的設(shè)計。在今后的
63、學(xué)習(xí)過程中,應(yīng)該多看一些專業(yè)方面的書籍,以豐富自己的知識。由于知識水平的局限和動手能力不足,設(shè)計中可能會存在著一些不足,我真誠的接受老師和同學(xué)的批評和指正。</p><p><b> 5. 收獲與致謝</b></p><p> 這兩個周的單片機(jī)課程設(shè)計實(shí)習(xí)很快要結(jié)束了,在這個過程中我深刻的認(rèn)識到了自己的不足,也獲得了很多難得的經(jīng)驗(yàn)和知識。在本課程設(shè)計即將完成之際,
64、我要對所有支持和幫助我的老師和同學(xué)表示衷心的感謝。我要感謝我們的指導(dǎo)老師、老師,作為一個平時和她接觸很少的普通學(xué)生,她的平易近人和認(rèn)真負(fù)責(zé)的態(tài)度讓我深受感動,她也給了我們精確地的指導(dǎo),讓我學(xué)到了很多知識,掌握了Keil的編程和Proteus的仿真的方法,也獲得了實(shí)踐鍛煉的機(jī)會。這次課程設(shè)計,由于我們經(jīng)驗(yàn)的匱乏,有許多想不到的地方,如果沒有高老師的督促指導(dǎo),以及本組的同學(xué)們的團(tuán)結(jié)合作,想要完成這個設(shè)計是不太可能的。高老師平日里還要授課,但
65、在我們做課程設(shè)計的每個階段,從查閱資料到設(shè)計草案的確定和修改,中期檢查,后期詳細(xì)設(shè)計,裝配草圖等整個過程中都給予了我們悉心的指導(dǎo)。其次要感謝我們的單片機(jī)課程老師段老師,她平時授課認(rèn)真,對我們要求嚴(yán)格負(fù)責(zé),在相關(guān)知識的積累和應(yīng)用上給了我們極大的幫助!我們都很喜歡她帶的課!然后要感謝本組同學(xué)的幫助,他們都是知識儲量豐富,做事認(rèn)真的合作伙伴!最后還要感謝周圍同學(xué)的幫助!謝謝大家! </p><p><b>
66、 6. 參考文獻(xiàn)</b></p><p> [1] 張毅剛,彭喜元,董繼成。單片機(jī)原理及應(yīng)用.高等教育出版社,2003.</p><p> [2] 童詩白,華成英.模擬電子技術(shù)基礎(chǔ).高等教育出版社。2006</p><p> [3] 張大明,劉振鵬.單片微機(jī)控制應(yīng)用技術(shù)實(shí)操指導(dǎo)書。機(jī)械工業(yè)出版社,2007.</p><p>
67、 [4] 徐晨,陳繼紅,王春明,徐慧.微機(jī)原理及應(yīng)用。高等教育出版社。2004.</p><p><b> 7. 附件</b></p><p><b> 7.1 元器件清單</b></p><p><b> 7.2 硬件原理圖</b></p><p><b>
68、 圖10 硬件原理圖</b></p><p><b> 7.3系統(tǒng)程序清單</b></p><p> ORG 000H ;復(fù)位入口</p><p> LJMP START</p><p> ORG 0003H
69、 ;外部中斷0入口</p><p><b> LJMP IN0</b></p><p> ORG 0013H ;外部中斷1入口</p><p><b> LJMP IN1</b></p><p> ORG 1000H
70、 ;主程序入口</p><p> START: MOV A,#7FH ;初始化</p><p><b> MOV P0,A</b></p><p> SETB EA ;CPU開中斷</
71、p><p> SETB EX1 ;開外部中斷1</p><p> SETB IT1 ;外部中斷1設(shè)為電平觸發(fā)方式</p><p> CLR EX0 ;關(guān)外部中斷0</p><
72、p><b> SJMP $</b></p><p> ;=====主持人按鍵處理程序=====</p><p> IN1: SETB EX0 ;開外部中斷0</p><p> SETB IT0 ;外部中斷0設(shè)為電
73、平觸發(fā)方式</p><p> MOV A,#40H </p><p> MOV P0,A ;主持人按鍵顯示段碼送到P0口顯示</p><p> RETI ;中斷返回</p>
74、<p><b> SJMP $</b></p><p> ;=====主選手搶答處理程序=====</p><p> IN0: SETB EX1 ;開外部中斷1</p><p> SETB IT1 ;
75、外部中斷1設(shè)為電平觸發(fā)方式</p><p> CLR EX0 ;關(guān)外部中斷0 </p><p><b> CLR IT0</b></p><p> MOV A,P1 ;把搶答狀態(tài)送到累加器A</p><
76、;p> LCALL DEL0 ?。徽{(diào)用延時程序,軟件消抖</p><p> CJNE A,P1,IN0 ;沒有搶答,跳轉(zhuǎn)再次檢測鍵盤狀態(tài)</p><p> MOV A,#7FH ?。话颂栠x手搶答的數(shù)值送到A</p><p> CJNE A,P1,K6 ??;
77、不是八號選手搶答,轉(zhuǎn)到K6</p><p> AJMP KEY7 ;是八號搶答,轉(zhuǎn)到KEY7</p><p> K6: RR A ??;累加器循環(huán)右移一位</p><p> CJNE A,P1,K5 ;不是七號選手搶答,轉(zhuǎn)到K5</p><p>
78、 AJMP KEY6 ;是七號搶答,轉(zhuǎn)到KEY6</p><p> K5: RR A</p><p> CJNE A,P1,K4 ??;不是六號選手搶答,轉(zhuǎn)到K4</p><p> AJMP KEY5 ??;是六號搶答,轉(zhuǎn)到KEY5</p><p> K4
79、: RR A</p><p> CJNE A,P1,K3 ??;不是五號選手搶答,轉(zhuǎn)到K3</p><p> AJMP KEY4 ??;是五號搶答,轉(zhuǎn)到KEY4</p><p> K3: RR A</p><p> CJNE A,P1,K2 ;不是四號
80、選手搶答,轉(zhuǎn)到K2</p><p> AJMP KEY3 ??;是四號搶答,轉(zhuǎn)到KEY3</p><p> K2: RR A</p><p> CJNE A,P1,K1 ;不是三號選手搶答,轉(zhuǎn)到K1</p><p> AJMP KEY2 ;是三號搶答,
81、轉(zhuǎn)到KEY2</p><p> K1: RR A</p><p> CJNE A,P1,K0 ?。徊皇嵌栠x手搶答,轉(zhuǎn)到K0</p><p> AJMP KEY1 ;是二號搶答,轉(zhuǎn)到KEY1</p><p> K0: AJMP KEY0 ??;一號
82、選手搶答,轉(zhuǎn)到KEY0</p><p> ;=====一號選手搶答處理程序=====</p><p> KEY0: MOV A,#0F9H </p><p> MOV P0,A ??;數(shù)碼管顯示一號選手搶答</p><p> LCALL DEL1
83、?。徽{(diào)用蜂鳴器響聲時間延時程序</p><p> CLR P0.7 ??;關(guān)閉蜂鳴器響聲</p><p> MOV R0,#00H </p><p> LCALL FLASH ;一號選手對應(yīng)LED燈閃爍程序</p><p> RETI
84、 ??;中斷返回</p><p><b> SJMP $</b></p><p> KEY1: MOV A,#0A4H</p><p> MOV P0,A ;數(shù)碼管顯示二號選手搶答</p><p> LCALL DEL1 ;調(diào)用蜂鳴器響聲時間
85、延時程序 </p><p> CLR P0.7 ?。魂P(guān)閉蜂鳴器響聲</p><p> MOV R0,#02H</p><p> LCALL FLASH ?。欢栠x手對應(yīng)LED燈閃爍程序</p><p> RETI ?。恢袛喾祷?lt;/p&g
86、t;<p><b> SJMP $</b></p><p> KEY2: MOV A,#30H</p><p> MOV P0,A ;數(shù)碼管顯示三號選手搶答</p><p> LCALL DEL1 ??;調(diào)用蜂鳴器響聲時間延時程序 </p><p&
87、gt; CLR P0.7 ?。魂P(guān)閉蜂鳴器響聲</p><p> MOV R0,#04H</p><p> LCALL FLASH ??;三號選手對應(yīng)LED燈閃爍程序</p><p> RETI ??;中斷返回</p><p><b>
88、 SJMP $</b></p><p> KEY3: MOV A,#99H</p><p> MOV P0,A ??;數(shù)碼管顯示四號選手搶答</p><p> LCALL DEL1 ;調(diào)用蜂鳴器響聲時間延時程序 </p><p> CLR P0.7
89、 ?。魂P(guān)閉蜂鳴器響聲</p><p> MOV R0,#06H</p><p> LCALL FLASH ??;四號選手對應(yīng)LED燈閃爍程序</p><p> RETI ?。恢袛喾祷?lt;/p><p><b> SJMP $</b>&
90、lt;/p><p> KEY4: MOV A,#92H</p><p> MOV P0,A ;數(shù)碼管顯示五號選手搶答</p><p> LCALL DEL1 ;調(diào)用蜂鳴器響聲時間延時程序</p><p> CLR P0.7 ;關(guān)閉蜂鳴器響聲<
91、;/p><p> MOV R0,#08H</p><p> LCALL FLASH ??;五號選手對應(yīng)LED燈閃爍程序</p><p> RETI ?。恢袛喾祷?lt;/p><p><b> SJMP $</b></p><p>
92、KEY5: MOV A,#82H</p><p> MOV P0,A ;數(shù)碼管顯示六號選手搶答</p><p> LCALL DEL1 ;調(diào)用蜂鳴器響聲時間延時程序</p><p> CLR P0.7 ?。魂P(guān)閉蜂鳴器響聲</p><p>
93、MOV R0,#0AH</p><p> LCALL FLASH ;六號選手對應(yīng)LED燈閃爍程序</p><p> RETI ?。恢袛喾祷?lt;/p><p><b> SJMP $</b></p><p> KEY6: MOV A,#0F8H&l
94、t;/p><p> MOV P0,A ?。粩?shù)碼管顯示七號選手搶答</p><p> LCALL DEL1 ?。徽{(diào)用蜂鳴器響聲時間延時程序</p><p> CLR P0.7 ??;關(guān)閉蜂鳴器響聲</p><p> MOV R0,#0CH</p>
95、;<p> LCALL FLASH ??;七號選手對應(yīng)LED燈閃爍程序</p><p> RETI ;中斷返回</p><p><b> SJMP $</b></p><p> KEY7: MOV A,#80H</p><p> M
96、OV P0,A ?。粩?shù)碼管顯示八號選手搶答 </p><p> LCALL DEL1 ??;調(diào)用蜂鳴器響聲時間延時程序</p><p> CLR P0.7 ;關(guān)閉蜂鳴器響聲</p><p> MOV R0,#0EH</p><p> LCALL FLA
97、SH ?。话颂栠x手對應(yīng)LED燈閃爍程序</p><p> RETI ??;中斷返回</p><p><b> SJMP $</b></p><p> ;=====LED燈閃爍程序=====</p><p> FLASH: MOV DPTR,#TAB
98、 ; 轉(zhuǎn)移表首地址送DPTR</p><p> MOV R1,#07H ;閃爍次數(shù)到R1</p><p> LOP: MOV 30H,R0 ;查表偏移量到寄存器30H</p><p><b> M
99、OV A,30H</b></p><p> MOVC A,@A+DPTR ;查表</p><p> MOV P2,A ;對應(yīng)查表結(jié)果的LED燈亮</p><p> LCALL DEL1 ;調(diào)用閃
100、爍延時程序</p><p> INC 30H ;查表偏移量增1</p><p><b> MOV A,30H</b></p><p> MOVC A,@A+DPTR ;查表</p><p> MOV P2,A
101、 ;對應(yīng)查表結(jié)果的LED燈滅</p><p> LCALL DEL1 ;調(diào)用閃爍延時程序</p><p> DJNZ R1,LOP ; 閃爍次數(shù)減1不為0轉(zhuǎn)移</p><p> RET
102、 ; 返回 </p><p> ;=====鍵盤消抖延時程序=====</p><p> DEL0: MOV R2,#40 </p><p> LOP0: MOV R3,#125</p><p> LOP1
103、: DJNZ R3,LOP1</p><p> DJNZ R2,LOP0</p><p> RET ;返回</p><p> ;=====蜂鳴器發(fā)聲時間和LED閃爍間隔時間程序=====</p><p> DEL1: MOV R5,#5
104、</p><p> D0: MOV R6,#125</p><p> D1: MOV R4,#200</p><p> D2: DJNZ R4,D2</p><p> DJNZ R6,D1</p><p> DJNZ R5,D0</p><p> RET
105、 ;返回</p><p> TAB: DB 0FEH,0FFH,0FDH,0FFH,0FBH,0FFH,0F7H,0FFH,0EFH </p><p> DB 0FFH,0DFH,0FFH,0BFH,0FFH,07FH,0FFH ;閃爍段碼表</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)搶答器課程設(shè)計
- 單片機(jī)搶答器課程設(shè)計
- 單片機(jī)搶答器課程設(shè)計
- 單片機(jī)課程設(shè)計---搶答器
- 搶答器 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計搶答器(16路搶答器)
- 智力搶答器單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計多路搶答器
- 智力搶答器單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計--智力搶答器
- 單片機(jī)搶答器課程設(shè)計3
- 搶答器單片機(jī)課程設(shè)計報告
- 單片機(jī)課程設(shè)計--搶答器系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計-- 基于單片機(jī)的搶答器設(shè)計
- 四路搶答器單片機(jī)課程設(shè)計
- 四路搶答器單片機(jī)課程設(shè)計
- 基于單片機(jī)的搶答器課程設(shè)計
- 基于單片機(jī)的搶答器課程設(shè)計
- 智力搶答器單片機(jī)課程設(shè)計.doc
- 單片機(jī)課程設(shè)計-- 8路搶答器設(shè)計
評論
0/150
提交評論