




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)答辯畢業(yè)設(shè)計(jì)答辯基于Proteus和Keil的單片機(jī)仿真實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)指導(dǎo)教師:張東輝設(shè) 計(jì):馮立崗一、單片機(jī)仿真實(shí)驗(yàn)系統(tǒng)需要實(shí)現(xiàn)的功能一、單片機(jī)仿真實(shí)驗(yàn)系統(tǒng)需要實(shí)現(xiàn)的功能 1)利用8個(gè)發(fā)光二極管實(shí)現(xiàn)從右向左一次點(diǎn)亮來(lái)達(dá)到流水燈實(shí)驗(yàn)的目的; 2)通過(guò)對(duì)44行列式鍵盤的掃描來(lái)實(shí)現(xiàn)簡(jiǎn)單的人機(jī)交互,并能夠在單個(gè)七段數(shù)碼管上顯示鍵盤的鍵值(即十六進(jìn)制的0到F); 3)接通1602LCD液晶顯示屏來(lái)實(shí)現(xiàn)在兩行共32個(gè)顯示位置顯示字符,并且能夠在LCD顯示屏幕上顯示字符串; 4)在三個(gè)七段數(shù)碼管組成的顯示屏上能夠?qū)崿F(xiàn)INT0中斷計(jì)數(shù)功能以及實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示功能,并且計(jì)數(shù)器與動(dòng)態(tài)顯示的數(shù)值范圍為十
2、進(jìn)制的000-999; 5)能夠利用88點(diǎn)陣屏幕初步實(shí)現(xiàn)單個(gè)字符的靜態(tài)顯示; 6)根據(jù)點(diǎn)陣屏幕的掃描原理能夠在1616點(diǎn)陣顯示屏上循環(huán)顯示“河北建筑工程學(xué)院”8個(gè)字; 7)利用P1口實(shí)現(xiàn)單列鍵盤的讀取來(lái)實(shí)現(xiàn)8位搶答器的設(shè)計(jì)。二、單片機(jī)實(shí)驗(yàn)仿真系統(tǒng)構(gòu)成二、單片機(jī)實(shí)驗(yàn)仿真系統(tǒng)構(gòu)成單片機(jī)實(shí)驗(yàn)仿真系統(tǒng)主要包含下圖的七個(gè)模塊并利用這七個(gè)模塊來(lái)實(shí)現(xiàn)8個(gè)實(shí)驗(yàn)內(nèi)容。三、系統(tǒng)設(shè)計(jì)三、系統(tǒng)設(shè)計(jì)1、單片機(jī)仿真實(shí)驗(yàn)系統(tǒng)總線結(jié)構(gòu) 本設(shè)計(jì)采用總線連接各實(shí)驗(yàn)相關(guān)模塊,數(shù)據(jù)總線采用P0口來(lái)實(shí)現(xiàn)數(shù)據(jù)的讀操作與寫操作,用P2口作為地址總線的高8位地址,P0口接74HC373鎖存器來(lái)鎖存低8位地址信號(hào),本設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目有8個(gè)故為了方
3、便從低8位開始排址,即第一個(gè)模塊的地址接P0.0口(地址標(biāo)號(hào):A0)第二個(gè)模塊依次排列,P1口作為機(jī)動(dòng)控制線,即根據(jù)各個(gè)實(shí)驗(yàn)的不同要求使用。原理圖中各接口的標(biāo)號(hào)安排如下: P0.0-P0.7對(duì)應(yīng)D0-D7; P1.0-P1.7對(duì)應(yīng)C0-C7; P2.0-P2.7對(duì)應(yīng)A8-D15; P3.0-P3.7對(duì)應(yīng)B0-B7; 其中地址總線的低8位采用在P0口接74HC373鎖存器來(lái)鎖存從P0口輸出的低8位地址,分別對(duì)應(yīng)A0-A7。 設(shè)計(jì)過(guò)程中在對(duì)各個(gè)模塊地址的分配時(shí)剛開始采用P2口的高8位地址,后來(lái)由于鍵盤與1616點(diǎn)陣會(huì)同時(shí)接入P1口而導(dǎo)致點(diǎn)陣顯示緩慢,所以就使用了現(xiàn)在的P0口復(fù)用的低8位地址。 低8
4、位采用P3.0(定義為addr)口控制鎖存器來(lái)實(shí)現(xiàn)低8位地址的鎖存:其實(shí)現(xiàn)方法是addr=1,然后P0口輸出地址代碼,延時(shí),然后addr=0,鎖存地址接通與地址對(duì)應(yīng)的模塊,然后P0口輸入輸出數(shù)據(jù)以實(shí)現(xiàn)實(shí)驗(yàn)功能。 addr=1; P0=0 x42; addr=0;這段程序?qū)崿F(xiàn)的功能就是接通0 x42所對(duì)應(yīng)的模塊。在本設(shè)計(jì)中0 x42表示動(dòng)態(tài)數(shù)碼管顯示實(shí)驗(yàn)所用到的模塊地址。一般這三行調(diào)用模塊的語(yǔ)句在各個(gè)實(shí)驗(yàn)子程序開頭。 由時(shí)鐘電路和上電自動(dòng)復(fù)位電路構(gòu)成的單片機(jī)最小系統(tǒng)。2、流水燈設(shè)計(jì) 從原理圖中可以看到流水燈模塊電路連接比較簡(jiǎn)單,主要是D1-D8等8個(gè)發(fā)光二極管,利用一片74HC373來(lái)與總線隔離
5、。 在進(jìn)行軟件設(shè)計(jì)的時(shí)候主要就是先對(duì)P0口賦值0 xfe,來(lái)點(diǎn)亮最右邊的一個(gè)發(fā)光二極管然后通過(guò)移位函數(shù)來(lái)是8個(gè)發(fā)光二極管從左到右一次點(diǎn)亮。效果如圖:3、44行列式鍵盤的實(shí)現(xiàn)及顯示 在本試驗(yàn)中需要顯示十六進(jìn)制的0-F一共十六個(gè)符號(hào)需要十六個(gè)鍵,而I/O的數(shù)目有限,因此將鍵盤排列成行列式,按鍵設(shè)置在行列式交點(diǎn)上,行列線分別連接到按鍵開關(guān)的兩端。列線通過(guò)上拉電阻接+5V電源,并將行線所接的I/O口作為輸出端,而列線所接的I/O口作為輸入。這樣當(dāng)按鍵沒有被按下時(shí),所有的輸出端都是高電平,一旦有鍵按下,則行線輸出低電平,輸入線電平就會(huì)被拉低。這樣通過(guò)讀取輸入線的狀態(tài)就可以得知是否有按鍵被按下了。 要判斷
6、鍵盤中有無(wú)鍵按下,首先將全部行線置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平列線與4根行線相交叉的4個(gè)按鍵之中;若所有列線均為高電平,則鍵盤中無(wú)鍵按下。判斷閉合鍵所在的位置,在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。 其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其他行線為高電平。在確定某根行線置為低電平后,在逐行檢測(cè)各列的電平狀態(tài)。若某列為低電平,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。按鍵顯示電路是由一個(gè)七段數(shù)碼管來(lái)完成的單段數(shù)碼管可以顯示十六進(jìn)制的0-F;數(shù)碼管介紹: LED數(shù)碼管一般由8個(gè)發(fā)光二極管組
7、成,7個(gè)發(fā)光二極管組成一個(gè)“8”,另一個(gè)發(fā)光二極管為小數(shù)點(diǎn),可顯示09及一些英文字母或特殊字符。LED有不同的大小及顏色,分為共陰極與共陽(yáng)極兩種結(jié)構(gòu),共陽(yáng)極是8個(gè)發(fā)光二極管的陽(yáng)極連在一起作為一個(gè)公共端;共陰極是8個(gè)發(fā)光二極管的陰極連在一起作為一個(gè)公共端。當(dāng)LED的8個(gè)發(fā)光二極管的某一段加上正向電流時(shí),該段被點(diǎn)亮,沒有通電流的則不亮。4、1602LCD字符顯示實(shí)驗(yàn) 本實(shí)驗(yàn)實(shí)現(xiàn)的功能是在LCD液晶屏幕上顯示小寫26個(gè)英文字母跟數(shù)字1-6,一共32個(gè)字符,清屏后再顯示大寫的26個(gè)英文字母。這是如果退出鍵是按下狀態(tài)則在液晶屏上顯示“up the return button!”如果退出鍵是斷開狀態(tài)則再循
8、環(huán)顯示前兩項(xiàng)。 在設(shè)計(jì)液晶顯示時(shí)候用到的函數(shù)有清屏函數(shù)LcdInitiate()、定位函數(shù)WriteAddress()、寫數(shù)據(jù)函數(shù)WriteData()、以及 寫字符串函數(shù)show()。寫地址函數(shù)如下:void WriteAddress(unsigned char x) WriteInstruction(x|0 x80); 顯示位置的確定方法規(guī)定為“80H+地址碼x”。從圖上可以看到一共有兩行共32個(gè)字符顯示位置,函數(shù)中的X表示液晶屏的32個(gè)地址代碼,如下圖,其中第一行的地址碼為00-0f,第二行地址代碼為40-4f。 可以看到上下兩行的地址碼不是連續(xù)的,如果我們要在第一行第3個(gè)位置開始輸入一
9、個(gè)字符串又該如何實(shí)現(xiàn)呢?這就要用到字符串顯示函數(shù)show()了。在介紹show()方法之前先看下單個(gè)字符顯示函數(shù):void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時(shí),可以寫入數(shù)據(jù) RW=0; E=0; /E置低電平,寫指令時(shí),E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置0 P0=y; /將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1; /E置高電平 _nop_(); _nop_
10、(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0; /當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 可見通過(guò)地址與寫字符函數(shù)可以實(shí)現(xiàn)在任意位置輸入單個(gè)字符而show()函數(shù)就是通過(guò)對(duì)這兩個(gè)函數(shù)的多次調(diào)用來(lái)實(shí)現(xiàn)字符串輸入的函數(shù)主體如下:void show(int x,int y,char *str) / x代表第幾列,y代表第幾行 /*str表示字符串指針 register i=0; if(stri!=0) /判斷字符串是否存在 if(y=0) /判斷行數(shù) for(i=0;i=16;i+)/前16個(gè)寫到第一行 WriteAddress(0 x00+x)
11、; WriteData(stri); x+; delay11(100); x=0 x00; for(i=16;i=32;i+)/后16個(gè)字符寫到第二行 WriteAddress(0 x40+x); WriteData(stri); x+; delay11(100); if(y=1) /第二行 for(i=0;i=16;i+) WriteAddress(0 x40+x); WriteData(stri); x+;delay11(100); /實(shí)驗(yàn)仿真結(jié)果如圖5、1616點(diǎn)陣動(dòng)態(tài)顯示字符實(shí)驗(yàn) 本實(shí)驗(yàn)所能實(shí)現(xiàn)的功能是在右圖的點(diǎn)陣屏上依次顯示出“河北建筑工程學(xué)院”8個(gè)漢字。 在顯示的過(guò)程中,每顯示一個(gè)
12、漢字程序都會(huì)檢查依次退出鍵的狀態(tài),如果退出鍵長(zhǎng)時(shí)間按下就會(huì)退出顯示函數(shù)而轉(zhuǎn)到實(shí)驗(yàn)選擇狀態(tài),如果退出鍵沒有按下則繼續(xù)顯示下一字符。 點(diǎn)陣屏的橫線掃描驅(qū)動(dòng)電路如右圖所示,通過(guò)兩片3線-8線譯碼器組成4線-16線譯碼器來(lái)控制點(diǎn)陣屏的橫線點(diǎn)陣的亮滅。 通過(guò)sw16中的掃描碼來(lái)控制行的通斷,與后面的列掃描聯(lián)合起來(lái)即可實(shí)現(xiàn)整屏的1616點(diǎn)陣的字符顯示。 點(diǎn)陣屏的列線掃描驅(qū)動(dòng)電路如下圖所示,通過(guò)兩片移位緩存器74LS595串接成的緩存器來(lái)控制點(diǎn)陣屏的列線點(diǎn)陣的亮滅。 通過(guò)字庫(kù)中的字庫(kù)代碼來(lái)控制列的通斷。shcp1(uchar temp) uchar i; for (i=0;i8;i+) temp=temp1
13、; ds=CY; shcp=1; shcp=0; Shcp1()函數(shù)的功能是將8位的temp轉(zhuǎn)換成串行數(shù)據(jù)傳到74LS595緩存器中并并行輸出 void stcp1(void)stcp=1;stcp=0;Stcp1()函數(shù)的功能是在送完一行的數(shù)據(jù)后輸出一個(gè)鎖存時(shí)鐘信號(hào)。 void hang (uchar t) uchar l; j=32*t; for(i=0;i16;i+) P0=swi; for(l=0;l2;l+) temp=hangzij; shcp1(temp); j=j+1; Hang()函數(shù)的功能是向點(diǎn)陣屏輸出第t個(gè)漢字字庫(kù)代碼。達(dá)到顯示漢字的目的。if (j=32*(t+1) j=0; stcp1();delay16(1); 在Proteus軟件中的仿真結(jié)果6、88點(diǎn)陣動(dòng)態(tài)顯示字符實(shí)驗(yàn) 本實(shí)驗(yàn)?zāi)軌蛟?8點(diǎn)陣屏上靜態(tài)顯示字符“去”,顯示效果相對(duì)1616點(diǎn)陣屏較差,只能顯示一些簡(jiǎn)單的字符。仿真結(jié)果7、INT0中斷計(jì)數(shù)實(shí)驗(yàn) 本實(shí)驗(yàn)可以實(shí)現(xiàn)在三位的數(shù)碼管上顯示計(jì)數(shù)功能,利用外部中斷
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 邏輯思維訓(xùn)練課程教案:邏輯推理與論證方法
- 長(zhǎng)方體結(jié)構(gòu)認(rèn)識(shí)與性質(zhì)學(xué)習(xí)教案
- 電力系統(tǒng)運(yùn)行與維護(hù)習(xí)題集
- 音樂(lè)分析考試試題及答案
- 醫(yī)院停水考試試題及答案
- 醫(yī)院庫(kù)房考試試題及答案
- 六一俱樂(lè)部活動(dòng)方案
- 六一光影活動(dòng)方案
- 六一創(chuàng)意夜晚活動(dòng)方案
- 六一寵物活動(dòng)策劃方案
- 了解靜電靜電的基本概念和特性
- 交-直-交變壓變頻器中逆變器的仿真
- 天津市第一屆未來(lái)之星初中數(shù)學(xué)邀請(qǐng)賽(有答案版)
- 第三講 實(shí)驗(yàn):研究勻變速直線運(yùn)動(dòng)
- 2020年國(guó)賽B題講解
- 英語(yǔ)簡(jiǎn)單句專項(xiàng)練習(xí)題含參考答案
- 2023年甘肅省酒泉市中考語(yǔ)文試卷【含答案】
- 2023-2024學(xué)年河南省濮陽(yáng)市小學(xué)語(yǔ)文五年級(jí)期末提升測(cè)試題附參考答案和詳細(xì)解析
- 延長(zhǎng)石油筆試題庫(kù)
- 阿里巴巴開店注意事項(xiàng)
- 思想政治理論綜合實(shí)踐知到章節(jié)答案智慧樹2023年太原理工大學(xué)
評(píng)論
0/150
提交評(píng)論