Proteus仿真單片機(jī)試驗(yàn)_第1頁(yè)
Proteus仿真單片機(jī)試驗(yàn)_第2頁(yè)
Proteus仿真單片機(jī)試驗(yàn)_第3頁(yè)
Proteus仿真單片機(jī)試驗(yàn)_第4頁(yè)
Proteus仿真單片機(jī)試驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄弓I言2實(shí)驗(yàn)1 PROTUES環(huán)境及LED閃爍綜合實(shí)驗(yàn) 7實(shí)驗(yàn)2多路開關(guān)狀態(tài)指示 10實(shí)驗(yàn)3報(bào)警產(chǎn)生器13實(shí)驗(yàn)4 I/O并行口直接驅(qū)動(dòng) LED顯示16實(shí)驗(yàn)5按鍵識(shí)別方法之一 19實(shí)驗(yàn)6 一鍵多功能按鍵識(shí)別技術(shù) 22實(shí)驗(yàn)7定時(shí)計(jì)數(shù)器T0作定時(shí)應(yīng)用技術(shù) 25實(shí)驗(yàn)8定時(shí)計(jì)數(shù)器T0作定時(shí)應(yīng)用技術(shù)28實(shí)驗(yàn)9 嘀、嘀、報(bào)警聲32實(shí)驗(yàn)10 8X8 LED點(diǎn)陣顯示技術(shù) 36實(shí)驗(yàn)11電子琴40引言單片機(jī)體積小,重量輕,具有很強(qiáng)的靈活性而且價(jià)格廉價(jià),具有邏輯判斷,定時(shí)計(jì)數(shù)等多種功能,廣泛應(yīng)用于儀器儀表, 家用電器,醫(yī)用設(shè)備的智能化治理和過程限制等領(lǐng)域. 以單 片機(jī)為核心的嵌入式系統(tǒng)已經(jīng)成為目前電子設(shè)計(jì)最活潑的

2、領(lǐng)域之一. 在嵌入式系統(tǒng)的中,開 發(fā)板本錢高,特別是對(duì)于大量的初學(xué)者而言, 還可能由于設(shè)計(jì)的錯(cuò)誤導(dǎo)致開發(fā)板損壞. 利用 Proteus我們可以很好地解決這個(gè)問題,由此我們可以快速地建立一個(gè)單片機(jī)仿真系統(tǒng).1. Proteus 介紹Proteus是英國(guó)Labcenter日ectronics公司開發(fā)的一款電路仿真軟件,軟件由兩局部組成:一局部是 智能 原理圖 輸入 系統(tǒng)ISIS(Intelligent Schematic Input System)和虛擬 系統(tǒng)模 型 VSM(Virtual Model System); 另一局部是高級(jí)布線及編輯軟件 ARES (Advanced Routing a

3、nd Editing Software)也就是 PCB.1.1 Proteus VSM 的仿真Proteus可以仿真模擬電路及數(shù)字電路,也可以仿真模擬數(shù)字混合電路.Proteus可提供30多種元件庫(kù),超過 8000種模擬、數(shù)字元器件.可以根據(jù)設(shè)計(jì)的要求 選擇不同生產(chǎn)廠家的元器件.此外,對(duì)于元器件庫(kù)中沒有的元件,設(shè)計(jì)者也可以通過軟件自己創(chuàng)立.除擁有豐富的元器件外,Proteus還提供了各種虛擬儀器,如常用的電流表,電壓表,示波器,計(jì)數(shù)/定時(shí)/頻率計(jì),SPI調(diào)試器等虛擬終端.支持圖形化的分析功能等.Proteus特別適合對(duì)嵌入式系統(tǒng)進(jìn)行軟硬件協(xié)同設(shè)計(jì)與仿真,其最大的特點(diǎn)是可以仿真8051, PIA

4、, AVR, ARM等多種系列的處理器. Protues包含強(qiáng)大的調(diào)試工具,具有對(duì)存放 器和存儲(chǔ)器、斷點(diǎn)和單步模式 IAR C-SPY, Keil, MPLAB 等開發(fā)工具的源程序進(jìn)行調(diào)試的功 能;能夠觀察代碼在仿真硬件上的實(shí)時(shí)運(yùn)行效果;對(duì)顯示,按鈕,鍵盤等外設(shè)的交互可視化進(jìn)行仿真.1.2 Proteus PCBProteus的PCB設(shè)計(jì)除了有自動(dòng)布線仿真功能外,還集成了PCB設(shè)計(jì),支持多達(dá)16個(gè)布線層,可以任意角度放置元件和焊接連線;集成了高智能的布線算法,可以方便地進(jìn)行 PCB設(shè)計(jì).2. 一個(gè)基于 Protesus 的單片機(jī)實(shí)例2.1 軟件的編寫本例題采用8個(gè)LED ,編寫程序使之閃爍起來

5、.軟件的編寫是采用匯編語言,芯片的型號(hào)選擇AT89C51,編寫LED.ASM 文件,利用Proteus本身的51匯編功能進(jìn)行編譯,編譯成功后生成LED.hex文件.2.2 繪制電路圖運(yùn)行Proteus的ISIS,進(jìn)入仿真軟件的主界面,如圖 1所示.主界面分為菜單欄,工具欄,模型顯示窗口,模型選擇區(qū),元件列表區(qū)等.圖1 ISIS啟動(dòng)界面通過左側(cè)的工具欄區(qū)的P從庫(kù)中選擇元件命令,在Pick devices窗口中選擇系統(tǒng)所需元器件,還可以選擇元件的類別,生產(chǎn)廠家等.本例所需主要元器件有:AT89C51芯片,電阻、電容、石英晶振和發(fā)光二極管,詳見表 1.表1元器件清單ATB9C51 酬 CPELEC

6、CRYSTAL LED REDRES選擇元器件后連接圖 2所示電路.POCADO PO 1/AlDl P0 2MJ2ADSWD3 RD dEd PO£WD£PO6AD6 pg 7 的 7U1*XTAL1XTAL2PH 4PI .5Pl 6T卜現(xiàn)F .HF 22pF0IDuFAT3SC51_3L 口R1PSEifALE EAPl血ps.cwia P2.1 的P? JJA10 != j 3.'.«'.1 P2.4/A12 P2 &XA13 P2.B/A14 P2 7/A15P3H/RXD P3.1/W, P3 2/ihTO P3 34RTTP3

7、 4/TU P3.5/T1P3 6WRRI73Z2_!Z.-21 2J圖2電路原理圖Microproccessor ICs類的芯片的引腳與實(shí)際的芯片根本相同,唯一的差異是隱去了 GND和VCC弓I腳,系統(tǒng)默認(rèn)的是把它們分別連接到地和+5V直流電源.故在電路連線時(shí)可以不考慮電源和地的連接.電路連接完成后,選中 AT89C51單擊鼠標(biāo)左鍵,翻開“EditComponent對(duì)話窗口如圖3所示,可以直接在“ClockFrequency后進(jìn)行頻率設(shè)定,設(shè)定單片機(jī)的時(shí)鐘頻率為12MHz.在Add/remove source file 欄中選擇已經(jīng)編好的 LED.asm文件,然后單擊 “OK按鈕保存設(shè)計(jì).

8、至此,就可以進(jìn)行單片機(jī)的仿真.圖3單片機(jī)屬性的設(shè)定2.3 Proteus仿真結(jié)果單片機(jī)的仿真結(jié)果圖如圖 4,模擬信號(hào)經(jīng) A/D轉(zhuǎn)換后,結(jié)果送入單片機(jī),再在數(shù)碼管上 顯示;通過調(diào)節(jié)可調(diào)電阻的阻值,可以得到不同的顯示結(jié)果.仿真結(jié)果說明,系統(tǒng)到達(dá)了預(yù)先的設(shè)計(jì)要求.在仿真的過程中每個(gè)管腳旁邊會(huì)出現(xiàn)一個(gè)小方塊,紅色的方快表示高電平,藍(lán)色的表示低電平.通過方快顏色的變化可以很方便地知道每個(gè)管腳電平的變化,從而能對(duì)系統(tǒng)的運(yùn) 行有更直觀的了解,這對(duì)程序的調(diào)試有很大的幫助.U1PO CWADO PD.VAD1 P0.2AD2KTAL2PO AD3 PD 4?AD4PO 5D5PO bATieRSTPD.J/AD

9、7PFHT ALE EaPi 0P2 WASP2 1/ASP2 27A1OP2 3/A11 P3 J|A12 P2 5W19P2 7fA15P3 cw=koP1.1P3 1?TXDPH.23 2nuFl .3P3 37WI 1Ft >4P1.BP3<rra F3.&TIPH 6R3串甌口Pl.7四而 I 口 2623 H4TB 就 5.1 .722圖4仿真結(jié)果Proteus在單片機(jī)開發(fā)中的應(yīng)用. 且操作簡(jiǎn)單,使用方便.能快速可以3.總結(jié)本文結(jié)合一個(gè)LED閃爍的單片機(jī)電路詳細(xì)說明了 看出,Proteus功能十分強(qiáng)大,能仿真各種數(shù)字模擬電路, 地進(jìn)行單片機(jī)仿真,加快系統(tǒng)開發(fā)的過

10、程,降低開發(fā)本錢.實(shí)驗(yàn)1 PROTUES環(huán)境及LED閃爍綜合實(shí)驗(yàn)1 .實(shí)驗(yàn)任務(wù)L1 - L8分別接在單片機(jī)P1.0fP1.1fP1.2fP1.3-做單一燈的左移右移,硬件電路如下圖,八個(gè)發(fā)光二極管 的P1.0-P1.7接口上,輸出 “0時(shí),發(fā)光二極管亮,開始時(shí) 一 P1.7 一 P1.6 f-P1.0 亮,重復(fù)循環(huán).2 .電路原理圖,只要給累加器值3 .程序設(shè)計(jì)內(nèi)容P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0說明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮我們可以運(yùn)用輸出端口指令MOV P1, A或MOV P1, D D

11、ATA或常數(shù)值,然后執(zhí)行上述的指令,即可到達(dá)輸出限制的動(dòng)作.每次送出的數(shù)據(jù)是不同,具體的數(shù)據(jù)如下表1所示:11110111L4亮1110 11111L5亮11011111L6亮10111111L7亮01111111L8亮4 .程序框圖圖25 .匯編源程序ORG 0START: MOV R2,#8MOV A,#0FEHSETB CLOOP: MOV P1,ALCALL DELAYRLC ADJNZ R2,LOOPMOV R2,#8LOOP1: MOV P1,ALCALL DELAYRRC ADJNZ R2,LOOP1LJMP STARTDELAY: MOV R5,#20 ;D1: MOV R6,

12、#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND實(shí)驗(yàn)2多路開關(guān)狀態(tài)指示1 .實(shí)驗(yàn)任務(wù)如圖1所示,AT89S51單片機(jī)的P1.0P1.3接四個(gè)發(fā)光二極管 L1 - L4, P1.4P1.7 接了四個(gè)開關(guān)K1 K4,編程將開關(guān)的狀態(tài)反映到發(fā)光二極管上.開關(guān)閉合,對(duì)應(yīng)的燈亮,開關(guān)斷開,對(duì)應(yīng)的燈滅.2 .電路原理圖2圖1K2JJpf GUL'D 0 NX G國(guó)口 £ 0.V/TE7ME Ed EM寸 Ed 二W5/ 工 w*EdEwg Fd NJljmd n< i-ZL £ ©clwgod rd od

13、 口<7£ 瑞s 目Fod 石WH E 0Q<5£ 皿 X V IEot叮 md :n S ER md U&T £3 .程序設(shè)計(jì)內(nèi)容3.1 開關(guān)狀態(tài)檢測(cè)對(duì)于開關(guān)狀態(tài)檢測(cè),相對(duì)單片機(jī)來說,是輸入關(guān)系,我們可輪流檢測(cè)每個(gè)開關(guān)狀態(tài),根據(jù)每個(gè)開關(guān)的狀態(tài)讓相應(yīng)的發(fā)光二極管指示,可以采用JB P1.X, REL或JNB P1.X,REL指令來完成;也可以一次性檢測(cè)四路開關(guān)狀態(tài),然后讓其指示,可以采用MOV A,P1指令一次把P1端口的狀態(tài)全部讀入,然后取高 4位的狀態(tài)來指示.3.2 輸出限制根據(jù)開關(guān)的狀態(tài),由發(fā)光二極管L1 -L4來指示,我們可以用 SET

14、B P1.X和CLRP1.X指令來完成,也可以采用MOV P1, # 1111XXXXB方法一次指示.4 .程序框圖讀P1 數(shù)據(jù)到Acc中Acc內(nèi)容右移4次Acc內(nèi)容與F0H相或Acc內(nèi)容送入P1 口圖25 .解決方案方法一匯編源程序ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP STARTEND方法二匯編源程序ORG 00HSTART: JB P1.4,NEXT1CLR P1.0SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2CLR P1.1SJMP NE

15、X2NEXT2: SETB P1.1NEX2: JB P1.6,NEXT3CLR P1.2SJMP NEX3NEXT3: SETB P1.2NEX3: JB P1.7,NEXT4CLR P1.3SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP STARTEND實(shí)驗(yàn)3報(bào)警產(chǎn)生器1 .實(shí)驗(yàn)任務(wù)用P1.0輸出1KHz和500Hz的音頻信號(hào)驅(qū)動(dòng)揚(yáng)聲器,作報(bào)警信號(hào),要求 1KHz信號(hào)響 100ms, 500Hz信號(hào)響200ms,交替進(jìn)行,P1.7接一開關(guān)進(jìn)行限制,當(dāng)開關(guān)合上響報(bào)警信號(hào), 當(dāng)開關(guān)斷開告警信號(hào)停止,編出程序.2 .電路原理圖L».一 > -1口父瑟 &#

16、163; 口口者SS FGYM.&ZI 吁苫2£ w£3 .程序設(shè)計(jì)內(nèi)容3.1 信號(hào)產(chǎn)生的方法500Hz信號(hào)周期為2ms,信號(hào)電平為每1ms變反1次,1KHz的信號(hào)周期為1ms,信號(hào) 電平每500us變反1次;4 .程序框圖開始圖25 .匯編源程序FLAG BIT 00HORG 00HSTART: JB P1.7,START JNB FLAG ,NEXT MOV R2,#200DV:CPL P1.0LCALL DEL Y500LCALL DEL Y500DJNZ R2,DV CPL FLAG NEXT: MOV R2,#200 DV1:CPL P1.0LCALL D

17、EL Y500DJNZ R2,DV1CPL FLAGSJMP STARTDELY500: MOV R7,#250LOOP: NOPDJNZ R7,LOOPRETEND實(shí)驗(yàn)4 I/O并行口直接驅(qū)動(dòng) LED顯示1 .實(shí)驗(yàn)任務(wù)如圖1所示,利用AT89S51單片機(jī)的P0端口的P0.0P0.7連接到一個(gè)共陰數(shù)碼管的ah的筆段上,數(shù)碼管的公共端接地.在數(shù)碼管上循環(huán)顯示09數(shù)字,時(shí)間間隔0.2秒.2 .電路原理圖vc<國(guó) 口 1,2.3;$,7 11 1 1 1 1 1 rrFPPFrPO.O/ADO P0.1/AD1 Pfi *Ama Po.3JAoa PC.47AD4 PU.5/D5 F0.WAD

18、6PQ.7/AD7 ALEin 1L 1J14V:17pj.irrxp F-s.iHNTOF3.3nHTlP3.4/TU1 ,二,.何國(guó) 盟?而艮P2.?/A15 P2 S/A14 P2 FA 1 -i P3.4/AL3 P2.3/A11 P2,21L>FS.UAy MjO以的 u £ §圖13程序設(shè)計(jì)內(nèi)容(1) LED數(shù)碼顯示原理七段LED顯示器內(nèi)部由七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型.LED數(shù)碼管的ga七個(gè)發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同 亮暗的組合就能形成不同的字形,這種組合稱之

19、為字形碼,下面給出共陰極的字形碼見表2“03FH“87FH“106H“96FH“25BH“A77H“34FH“b7CH“466H“c,:39H“56DH“d5EH“67DH“E:79H“707H“F71H(2)由于顯示的數(shù)字0-9的字形碼沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求了.這樣我們按著數(shù)字0-9的順序,把每個(gè)數(shù)字的筆段代碼按順序排好!建立的表格如下所示:TABLE DB 3FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH.4 .程序框圖延時(shí)口.上秒R.13民I十】5 .匯編源程序ORG 0START: MOV

20、R1,#00HNEXT: MOV A,R1MOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,ALCALL DELAYINC R1CJNE R1,#10,NEXTLJMP STARTDELAY: M OV R5,#20D2:MOV R6,#20D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ENDP IPl IJTjETif>mntTFJ4JT0 P3 OT1Fl 7.i5dJ- « -TJ IJ FFpp*ppr實(shí)驗(yàn)

21、5按鍵識(shí)別方法之一1 .實(shí)驗(yàn)任務(wù)每按下一次開關(guān) SP1,計(jì)數(shù)值加1,通過AT89S51單片機(jī)的P1端口的P1.0至ij P1.3顯 示出其的二進(jìn)制計(jì)數(shù)值.2 .電路原理圖L* BMEH3 PO.llADl powm rajADJ RJJMALI* PUXA 口 3 附27溫S ALEJ: J 因于地】工 6 Rid 14 制“1+ 產(chǎn)W4W P2JUA11 P2 2JA1O 陽1小 Fj QiA£ 身X E,3程序設(shè)計(jì)方法(1)其實(shí),作為一個(gè)按鍵從沒有按下到按下以及釋放是一個(gè)完整的過程,也就是說,當(dāng)我們按下一個(gè)按鍵時(shí),總希望某個(gè)命令只執(zhí)行一次,而在按鍵按下的過程中,不要有干擾進(jìn)來,由

22、于,在按下的過程中,一旦有干擾過來,可能造成誤觸發(fā)過程,這并不是我們所想要 的.因此在按鍵按下的時(shí)候 ,圖2要把我們手上的干擾信號(hào)以及按鍵的機(jī)械接觸等干擾信號(hào)給濾除掉,一般情況下,我 們可以采用電容來濾除掉這些干擾信號(hào),但實(shí)際上,會(huì)增加硬件本錢及硬件電路的體積,這是我們不希望,總得有個(gè)方法解決這個(gè)問題,因此我們可以采用軟件濾波的方法去除這些干擾信號(hào),一般情況下,一個(gè)按鍵按下的時(shí)候, 總是在按下的時(shí)刻存在著一定的干擾信號(hào), 按下之后就根本上進(jìn)入了穩(wěn)定的狀態(tài). 具體的一個(gè)按鍵從按下到釋放的全過程的信號(hào)圖如上 圖所示:從圖中可以看出,我們?cè)诔绦蛟O(shè)計(jì)時(shí),從按鍵被識(shí)別按下之后,延時(shí) 5ms以上,從而 避

23、開了干擾信號(hào)區(qū)域,我們?cè)賮頇z測(cè)一次,看按鍵是否真得已經(jīng)按下,假設(shè)真得已經(jīng)按下,這時(shí)肯定輸出為低電平,假設(shè)這時(shí)檢測(cè)到的是高電平,證實(shí)剛剛是由于干擾信號(hào)引起的誤觸發(fā), CPU就認(rèn)為是誤觸發(fā)信號(hào)而舍棄這次的按鍵識(shí)別過程.從而提升了系統(tǒng)的可靠性.由于要求每按下一次, 命令被執(zhí)行一次,直到下一次再按下的時(shí)候,再執(zhí)行一次命令,因此從按鍵被識(shí)別出來之后,我們就可以執(zhí)行這次的命令,所以要有一個(gè)等待按鍵釋放的過 程,顯然釋放的過程,就是使其恢復(fù)成高電平狀態(tài).(1)對(duì)于按鍵識(shí)別的指令,我們依然選擇如下指令JB BIT, REL指令是用來檢測(cè)BIT是否為高電平,假設(shè) BIT = 1,那么程序轉(zhuǎn)向REL處執(zhí)行程序,否

24、那么就繼續(xù)向下執(zhí)行程序. 或者是 JNB BIT , REL指令是用來檢測(cè) BIT是否為低電平,假設(shè)BIT = 0,那么程序轉(zhuǎn)向REL 處執(zhí)行程序,否那么就繼續(xù)向下執(zhí)行程序.(2)但對(duì)程序設(shè)計(jì)過程中按鍵識(shí)別過程的框圖如右圖所示:理時(shí)10ns左右 |圖37 = 0 HR?艮P有睡才史下口口1t4.程序框圖R1=RH-1送入PL端口6.匯編源程序ORG 0START: MOV R1,#00HMOV A,R1CPL AMOV P1,AREL:JNB P3.7,RELLCALL DELAY10MSJNB P3.7,RELINC R1MOV A,R1CPL AMOV P1,AJNB P3.7,$SJMP

25、 REL DELAY10MS: MOV R6,#20L1: MOV R7,#248DJNZ R7,$;初始化R1為0,表示從0開始計(jì)數(shù) ;取反指令;送出P1端口由發(fā)光二極管顯示;判斷SP1是否按下;假設(shè)按下,那么延時(shí) 10ms左右;再判斷SP1是否真得按下;假設(shè)真得按下,那么進(jìn)行按鍵處理,使 ;計(jì)數(shù)內(nèi)容加1,并送出P1端口由 ;發(fā)光二極管顯示;等待SP1釋放;繼續(xù)對(duì)K1按鍵掃描;延時(shí)10ms子程序DJNZ R6,L1RETEND實(shí)驗(yàn)6 一鍵多功能按鍵識(shí)別技術(shù)1 .實(shí)驗(yàn)任務(wù)如圖1所示,開關(guān)SP1接在P3.7/RD管腳上,在 AT89S51單片機(jī)的P1端口接有四個(gè) 發(fā)光二極管,上電的時(shí)候,L1接在

26、P1.0管腳上的發(fā)光二極管在閃爍,當(dāng)每一次按下開關(guān) SP1 的時(shí)候,L2接在P1.1管腳上的發(fā)光二極管在閃爍,再按下開關(guān) SP1的時(shí)候,L3接在P1.2 管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,L4接在P1.3管腳上的發(fā)光二極管在閃爍,再按下開關(guān) SP1的時(shí)候,又輪到L1在閃爍了,如此輪流下去.2 .電路原理圖近Pl OPl 1P1 2P1.3P14PI后PI 7PICTKJCX*P3 1/FXP piP3 cirTi"P3 pm s/n pm石尸萬官IS HA Pom*Do PD k/A-Dl PD 2/AD2 PO JjiAIrJ P0.4 從3 a PO 苫PO M

27、AE" AL.£PfFlT P3 7/A t 5 PJ 6ML 4 打55L 3 PN W4 L 2 戶工型A IT FSAtOPM 1小甘P2nfAS身3 .程序設(shè)計(jì)方法1設(shè)計(jì)思想由來在我們生活中,我們很容易通過這個(gè)叫張三,那個(gè)叫李四,另外一個(gè)是王五;那是因?yàn)槊總€(gè)人有不同的名子,我們就很快認(rèn)出,同樣,對(duì)于要通過一個(gè)按鍵來識(shí)別每種不同的功能,我們給每個(gè)不同的功能模塊用不同的ID號(hào)標(biāo)識(shí),這樣,每按下一次按鍵,ID的值是不相同的,所以單片機(jī)就很容易識(shí)別不同功能的身份了.(2)設(shè)計(jì)方法從上面的要求我們可以看出,L1到L4發(fā)光二極管在每個(gè)時(shí)刻的閃爍的時(shí)間是受開關(guān)SP1來限制,我們給

28、 L1到L4閃爍的時(shí)段定義出不同的ID號(hào),當(dāng)L1在閃爍時(shí),ID = 0;當(dāng)L2在閃爍時(shí),ID=1;當(dāng)L3在閃爍時(shí),ID = 2;當(dāng)L4在閃爍時(shí),ID = 3;很顯然,只要每 次按下開關(guān)K1時(shí),分別給出不同的ID號(hào)我們就能夠完成上面的任務(wù)了.下面給出有關(guān)程 序設(shè)計(jì)的框圖.4 .程序框圖初始化ID=O識(shí)別K1搜穗成功否?1D飆ID=4 嗎ID=O根據(jù)ID號(hào)執(zhí)迂相應(yīng)模塊ID-LIID=2ID-3LI閃燎以閃爍上閃燃14閃爍5 .匯編源程序ID EQU 30HSP1 BIT P3.7L1 BIT P1.0L2 BIT P1.1L3 BIT P1.2L4 BIT P1.3ORG 0MOV ID,#00H

29、START: JB K1,RELLCALL DELAY10MSJB K1,RELINC IDMOV A,IDCJNE A,#04,RELMOV ID,#00HREL: JNB K1,$MOV A,IDCJNE A,#00H,IS0CPL L1LCALL DELAYSJMP START150: CJNE A,#01H,IS1CPL L2LCALL DELAYSJMP START151: CJNE A,#02H,IS2CPL L3LCALL DELAYSJMP START152: CJNE A,#03H,IS3CPL L4LCALL DELAYSJMP START153: LJMP START D

30、ELAY10MS: MOV R6,#20 LOOP1: MOV R7,#248DJNZ R7,$DJNZ R6,LOOP1RETDELAY: MOV R5,#20LOOP2: LCALL DELAY10MSDJNZ R5,LOOP2RETEND實(shí)驗(yàn)7定時(shí)計(jì)數(shù)器T0作定時(shí)應(yīng)用技術(shù)1 .實(shí)驗(yàn)任務(wù)用AT89S51單片機(jī)的定時(shí)/計(jì)數(shù)器T0產(chǎn)生一秒的定時(shí)時(shí)間,作為秒計(jì)數(shù)時(shí)間,當(dāng)一秒 產(chǎn)生時(shí),秒計(jì)數(shù)加1,秒計(jì)數(shù)到60時(shí),自動(dòng)從0開始.硬件電路如下列圖所示2 .電路原理圖F3 n/RXD FJ LiT工口 P32ffiHT0 P3 3flliT F3 4EJ rsyri fS.fiWEt P3 7®

31、;DJ 數(shù)0L3343.I6.7 p 1-plFrIplFlp 1F 1POO/AEO PO KAD1 PQ 2rmE P0 3TAD3 RD "AE 蟲PO y*D5PCL*fI>6 FEE加的ALEF2 1出士 P2也小】4 prs乩13P2 4/412 Pan學(xué) O/Atg 口 a p g g E 口畫 gPSZP2T兌I§Xo3 .程序設(shè)計(jì)內(nèi)容AT89S51單片機(jī)的內(nèi)部16位定時(shí)/計(jì)數(shù)器是一個(gè)可編程定時(shí) /計(jì)數(shù)器,它既可以工作在 13位定時(shí)方式,也可以工作在16位定時(shí)方式和8位定時(shí)方式.只要通過設(shè)置特殊功能存放器TMOD ,即可完成.定時(shí)/計(jì)數(shù)器何時(shí)工作也是通

32、過軟件來設(shè)定TCON特殊功能存放器來完成的.現(xiàn)在我們選擇 16位定時(shí)工作方式,對(duì)于 T0來說,最大定時(shí)也只有65536us,即65.536ms,無法到達(dá)我們所需要的1秒的定時(shí),因此,我們必須通過軟件來處理這個(gè)問題,假設(shè)我們?nèi)0的最大定時(shí)為50ms,即要定時(shí)1秒需要經(jīng)過20次的50ms的定時(shí).對(duì)于這 20次我們就可以采用軟件的方法來統(tǒng)計(jì)了.因此,我們?cè)O(shè)定 TMOD =00000001B,即 TMOD = 01H下面我們要給T0定時(shí)/計(jì)數(shù)器的TH0, TL0裝入預(yù)置初值,通過下面的公式可以計(jì)算出TH0= ( 216 50000)/ 256TL0 =( 21650000)MOD 256當(dāng)T0在工作

33、的時(shí)候,我們?nèi)绾蔚弥?0ms的定時(shí)時(shí)間已到,這回我們通過檢測(cè) TCON 特殊功能存放器中的 TF0標(biāo)志位,如果TF0=1表示定時(shí)時(shí)間已到.5.程序框圖tfh=o6.匯編源程序查詢法SECOND EQU 30HTCOUNT EQU 31HORG 00HSTART: MOV SECOND,#00HMOV TCOUNT,#00HMOV TMOD,#01HMOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256SETB TR0DISP: MOV A,SECONDMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,A+DP

34、TRMOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,AWAIT: JNB TF0,WAITCLR TF0MOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256INC TCOUNTMOV A,TCOUNTCJNE A,#20,NEXTMOV TCOUNT,#00HINC SECONDMOV A,SECONDCJNE A,#60,NEXMOV SECOND,#00HNEX: LJMP DISPNEXT: LJMP W AITTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,

35、6FHEND實(shí)驗(yàn)8定時(shí)計(jì)數(shù)器T0作定時(shí)應(yīng)用技術(shù)1 .實(shí)驗(yàn)任務(wù)用AT89S51的定時(shí)/計(jì)數(shù)器T0產(chǎn)生2秒鐘的定時(shí),每當(dāng)2秒定時(shí)到來時(shí),更換指示燈 閃爍,每個(gè)指示閃爍的頻率為0.2秒,也就是說,開始 L1指示燈以0.2秒的速率閃爍,當(dāng)秒定時(shí)到來之后,L2開始以0.2秒的速率閃爍,如此循環(huán)下去.0.2秒的閃爍速率也由定時(shí)/計(jì)數(shù)器T0來完成.2 .電路原理圖34o耳Z20PIO Pl 1 Fl .2 Pl 3 Fl 4 Pl 9 Fl6 Pl .714jTi篤r7P3 iJjTJCO a im PJ 7/1NTO P3 3/1NT I F3 4fT0 P3 srr i F3 6/WR P3.7/R&a

36、mp;PO O/ADO PD 1MD1 PD.2/JLD2 PD 3/AD3 FO 4/A P4 PO.S/ADSFO 6/AM P0AL FSEHF2.7X<15 P2,A7A14 PZ.i/Al JP2 3/A11 P2 2XA1OF2 1/A9P2 C/A6Ji 3 32 JO-ATtsSlooC2 八MHC33OpFGHI?3 .程序設(shè)計(jì)內(nèi)容(1)由于采用中斷方式來完成,因此,對(duì)于中斷源必須它的中斷入口地址,對(duì)于定時(shí)/計(jì)數(shù)器T0來說,中斷入口地址為 000BH,因此在中斷入口地方參加長(zhǎng)跳轉(zhuǎn)指令來執(zhí)行中斷效勞 程序.書寫匯編源程序格式如下所示:ORG 00HLJMP STARTOR

37、G 0BH ;定時(shí)/計(jì)數(shù)器T0中斷入口地址LJMP INT_T0START: NOP ;主程序開始INT_T0: PUSH ACC ;定時(shí)/計(jì)數(shù)器T0中斷效勞程序PUSH PSWPOP PSWPOP ACCRETI ;中斷效勞程序返回END(2)定時(shí)2秒,采用16位定時(shí)50ms,共定時(shí)40次才可到達(dá)2秒,每50ms產(chǎn)生一中斷, 定時(shí)的40次數(shù)在中斷效勞程序中完成,同樣0.2秒的定時(shí),需要4次才可到達(dá)0.2秒.對(duì)于中斷程序,在主程序中要對(duì)中斷開中斷.(3)由于每次2秒定時(shí)到時(shí),L1 -L4要交替閃爍.采用ID來號(hào)來識(shí)別.當(dāng)ID=0時(shí),L1 在閃爍,當(dāng)ID = 1時(shí),L2在閃爍;當(dāng)ID =2時(shí),L

38、3在閃爍;當(dāng)ID =3時(shí),L4在閃爍5.程序框圖T0中斷效勞程序框圖主程序框圖6.匯編源程序TCOUNT2S EQU 30HTCNT02S EQU 31HID EQU 32HORG 00HLJMP STARTORG 0BHLJMP INTT0START: MOV TCOUNT2S,#00HMOV TCNT02S,#00HMOV ID,#00HMOV TMOD,#01HMOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256SETB TR0SETB ET0SETB EASJMP $INT_T0: MOV TH0,#(65536-5000

39、0) / 256MOV TL0,#(65536-50000) MOD 256INC TCOUNT2SMOV A,TCOUNT2sCJNE A,#40,NEXTMOV TCOUNT2S,#00HINC IDMOV A,IDCJNE A,#04H,NEXTMOV ID,#00HNEXT: INC TCNT02SMOV A,TCNT02SCJNE A,#4,DONEMOV TCNT02S,#00HMOV A,IDCJNE A,#00H,SID1CPL P1.0SJMP DONESID1: CJNE A,#01H,SID2CPL P1.1SJMP DONESID2: CJNE A,#02H,SID3C

40、PL P1.2SJMP DONESID3: CJNE A,#03H,SID4CPL P1.3SID4: SJMP DONEDONE: RETIEND實(shí)驗(yàn)9 嘀、嘀、1 .實(shí)驗(yàn)任務(wù)用AT89S51單片機(jī)產(chǎn)生“嘀、嘀、報(bào)警聲從P1.0端口輸出,產(chǎn)生頻率為1KHz 根據(jù)上面圖可知:1KHzJ波從P1.0輸出0.2秒,接著0.2秒從P1.0輸出電平 信號(hào),如此循環(huán)下去,就形成我們所需的報(bào)警聲了.2 .電路原理圖圣科卜卜干卜附:?R hrj:號(hào)占2 三備Ed 二</ £ XWPEL SUM u s£ 0 口不門£ 可口WFQd 8S£ 宮WEd I 口wi

41、s_|二.|-. Eg£ 仃'-:il.-'iil.圖13 .程序設(shè)計(jì)方法1生活中我們常常到各種各樣的報(bào)警聲,例如 嘀、嘀、就是常見的一種聲音報(bào)警聲, 但對(duì)于這種報(bào)警聲,嘀0.2秒鐘,然后斷0.2秒鐘,如此循環(huán)下去,假設(shè)嘀聲的頻率為1KHz, 那么報(bào)警聲時(shí)序圖如下列圖所示:LKHZ波瑕電平信號(hào)上述波形信號(hào)如何用單片機(jī)來產(chǎn)生呢(2)由于要產(chǎn)生上面的信號(hào),我們把上面的信號(hào)分成兩局部,一局部為1KHZ方波,占用時(shí)間為0.2秒;另一局部為電平,也是占用 0.2秒;因此,我們利用單片機(jī)的定時(shí) /計(jì)數(shù)器 T0作為定時(shí),可以定時(shí) 0.2秒;同時(shí),也要用單片機(jī)產(chǎn)生 1KHZ的方波,對(duì)

42、于1KHZ的方 波信號(hào)周期為1ms,高電平占用0.5ms,低電平占用0.5ms,因此也采用定時(shí)器 T0來完成 0.5ms的定時(shí);最后,可以選定定時(shí) /計(jì)數(shù)器T0的定時(shí)時(shí)間為0.5ms,而要定時(shí)0.2秒那么是 0.5ms的400倍,也就是說以 0.5ms定時(shí)400次就到達(dá)0.2秒的定時(shí)時(shí)間了.5 .程序框圖主程序框圖中斷效勞程序框圖圖26 .匯編源程序T02SA EQU 30HT02SB EQU 31HFLAG BIT 00HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV T02SA,#00HMOV T02SB,#00HCLR FLAGMOV TMOD

43、,#01HMOV TH0,#(65536-500) / 256MOV TL0,#(65536-500) MOD 256SETB TR0SETB ET0SETB EASJMP $INT_T0:MOV TH0,#(65536-500) / 256MOV TL0,#(65536-500) MOD 256INC T02SAMOV A,T02SACJNE A,#100,NEXTINC T02SBMOV A,T02SBCJNE A,#04H,NEXTMOV T02SA,#00HMOV T02SB,#00HCPL FLAGNEXT: JB FLAG,DONECPL P1.0DONE: RETIEND實(shí)驗(yàn)10

44、 8X8 LED 點(diǎn)陣顯示技術(shù)1 .實(shí)驗(yàn)任務(wù)在8X8 LED點(diǎn)陣上顯示柱形,讓其先從左到右平滑移動(dòng)三次,其次從右到左平滑移 動(dòng)三次,再次從上到下平滑移動(dòng)三次,最后從下到上平滑移動(dòng)三次,如此循環(huán)下去.2 .電路原理圖VCC1垣 Cg39JFt ,1FO l/ADci nTinrxmT3E31d3*55p| mpfi AfApui356e t &nT>34r ft 1>IrvQ i <antwe338ei rg 予/疝TV7匯ALIr基1L klJSL0口F IPlCPf IF*r f F E淵11r9 JiLlfJUEiiLilr£. /A L JQ 1 VT

45、1one £/ t 1 2l!U J12irJ.Bjri aU.o/Jl 1Tl口Q nrKT'TTl口- <: / A 1 -J2£13JLJr iff _MA!* Oil MT 1D-> £1/1, 123*14LJ> .n/_Lr< I J.ir «JI 1 q241SP3.5HJIF2 2/AU臺(tái)金KQf1 1 A 4JJ3_16LJ 公17!,TFEThDO21J J1, bJJrjb UIAOQR攵口041* i3 .程序設(shè)計(jì)內(nèi)容(1). 8X8 點(diǎn)陣LED工作原理說明8X8點(diǎn)陣LED結(jié)構(gòu)如下列圖所示:CtL.

46、DDC8DC7DC6 C5DC4DC3DC2DC7圖2從圖2中可以看出,8X8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置 在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,那么相應(yīng)的二極管就亮;因此要實(shí)現(xiàn)一根柱形的亮法,如圖49所示,對(duì)應(yīng)的一列為一根豎柱,或者對(duì)應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述:一根豎柱:對(duì)應(yīng)的列置 1,而行那么采用掃描的方法來實(shí)現(xiàn).一根橫柱:對(duì)應(yīng)的行置 0,而列那么采用掃描的方法來實(shí)現(xiàn).5.匯編源程序ORG 00HSTART: NOPMOV R3,#3LOP2: MOV R4,#8MOV R2,#0LOP1: MOV P1,#0FFH

47、MOV DPTR,#TABAMOV A,R2MOVC A,A+DPTRMOV P3,AINC R2LCALL DELAYDJNZ R4,LOP1DJNZ R3,LOP2MOV R3,#3LOP4: MOV R4,#8MOV R2,#7LOP3: MOV P1,#0FFHMOV DPTR,#TABAMOV A,R2MOVC A,A+DPTRMOV P3,ADEC R2LCALL DELAYDJNZ R4,LOP3DJNZ R3,LOP4MOV R3,#3LOP6: MOV R4,#8MOV R2,#0LOP5: MOV P3,#00HMOV DPTR,#TABBMOV A,R2MOVC A,A+

48、DPTRMOV P1,AINC R2LCALL DELAYDJNZ R4,LOP5DJNZ R3,LOP6MOV R3,#3LOP8: MOV R4,#8MOV R2,#7LOP7: MOV P3,#00HMOV DPTR,#TABBMOV A,R2MOVC A,A+DPTRMOV P1,ADEC R2LCALL DELAYDJNZ R4,LOP7DJNZ R3,LOP8LJMP STARTDELAY: MOV R5,#10D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABA: DB 0FEH,0FDH,0FBH,0

49、F7H,0EFH,0DFH,0BFH,07FHTABB: DB 01H,02H,04H,08H,10H,20H,40H,80HEND實(shí)驗(yàn)11電子琴1 .實(shí)驗(yàn)任務(wù)(1)由4X4組成16個(gè)按鈕矩陣,設(shè)計(jì)成 16個(gè)音.(2)可隨意彈奏想要表達(dá)的音樂.2 .電路原理圖rrrr r .=怕忡肝時(shí)時(shí)33K -is -?E TN Rape ays £ cw黃 snwr 畬E國(guó) MG sft 一旦泣 -SE 日二-T上 32工s-rH 1區(qū)2 £ EH HPTOSIS I3 .相關(guān)程序內(nèi)容(1) 4X4行列式鍵盤識(shí)別;(2)音樂產(chǎn)生的方法;一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不

50、同的頻率,這樣我們就可以利用不向的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生不問的頻率非常方便,我們可以利用單片機(jī)的定時(shí) /計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可.現(xiàn)在以單片機(jī)與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如卜表所示,12MHZ晶振為例,例出高中低音符音符所電簡(jiǎn)譜碼T值音符頻率(HZ)簡(jiǎn)譜碼T值低1 DO26263628# 4 FA#74064860#1 DO#27763731中5 SO78464898低2 RE29463835# 5 SO#83164934#2 RE#31163928中6 LA88064968低3 M330640

51、21# 693264994低4 FA34964103中7 SI98865030# 4 FA#37064185高1 DO104665058低5 SO39264260# 1 DO#110965085# 5 SO#41564331高2 RE117565110低6 LA44064400# 2 RE#124565134# 646664463高3 M131865157低7 SI49464524高4 FA139765178中1 DO52364580# 4 FA#148065198# 1 DO#55464633高5 SO156865217中2 RE58764684# 5 SO#166165235# 2 RE#62264732高6 LA176065252中3 M65964777# 6186565268中4 FA69864820高7 SI196765283卜面我們要為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)低音0 19之間,中音在 2039之間,高音在 40 59之間TABLE:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論