Proteus仿真單片機實驗[共47頁]

上傳人:1528****253 文檔編號:52224412 上傳時間:2022-02-07 格式:DOC 頁數(shù):47 大?。?.01MB
收藏 版權申訴 舉報 下載
Proteus仿真單片機實驗[共47頁]_第1頁
第1頁 / 共47頁
Proteus仿真單片機實驗[共47頁]_第2頁
第2頁 / 共47頁
Proteus仿真單片機實驗[共47頁]_第3頁
第3頁 / 共47頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Proteus仿真單片機實驗[共47頁]》由會員分享,可在線閱讀,更多相關《Proteus仿真單片機實驗[共47頁](47頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 目錄 引言 1 實驗1 PROTUES環(huán)境及LED閃爍綜合實驗 6 實驗2 多路開關狀態(tài)指示 9 實驗3 報警產(chǎn)生器 12 實驗4 I/O并行口直接驅動LED顯示 15 實驗5 按鍵識別方法之一 18 實驗6 一鍵多功能按鍵識別技術 21 實驗7 定時計數(shù)器T0作定時應用技術 24 實驗8定時計數(shù)器T0作定時應用技術 27 實驗9 “嘀、嘀、……”報警聲 31 實驗10 8X8 LED點陣顯示技術 35 實驗11電子琴 39 引言? 單片機體積小,重量輕,具有很強的靈活性而且價格便宜,具有邏輯判斷,定時計數(shù)等多種功能,廣泛應用于儀器儀表,家用電器,

2、醫(yī)用設備的智能化管理和過程控制等領域。以單片機為核心的嵌入式系統(tǒng)已經(jīng)成為目前電子設計最活躍的領域之一。在嵌入式系統(tǒng)的中,開發(fā)板成本高,特別是對于大量的初學者而言,還可能由于設計的錯誤導致開發(fā)板損壞。利用Proteus我們可以很好地解決這個問題,由此我們可以快速地建立一個單片機仿真系統(tǒng)。 1. Proteus介紹   Proteus是英國Labcenter?Electronics公司開發(fā)的一款電路仿真軟件,軟件由兩部分組成:一部分是智能原理圖輸入系統(tǒng)ISIS(Intelligent?Schematic?Input?System)和虛擬系統(tǒng)模型VSM(Virtual?Model?Syste

3、m);另一部分是高級布線及編輯軟件ARES (Advanced??Routing?and?Editing?Software)也就是PCB。 1.1?Proteus?VSM的仿真 Proteus可以仿真模擬電路及數(shù)字電路,也可以仿真模擬數(shù)字混合電路。? Proteus可提供30多種元件庫,超過8000種模擬、數(shù)字元器件??梢园凑赵O計的要求選擇不同生產(chǎn)廠家的元器件。此外,對于元器件庫中沒有的元件,設計者也可以通過軟件自己創(chuàng)建。 除擁有豐富的元器件外,Proteus還提供了各種虛擬儀器,如常用的電流表,電壓表,示波器,計數(shù)/定時/頻率計,SPI調試器等虛擬終端。支持圖形化的分析功能等。  

4、 Proteus特別適合對嵌入式系統(tǒng)進行軟硬件協(xié)同設計與仿真,其最大的特點是可以仿真8051,PIA,AVR,ARM等多種系列的處理器。Protues包含強大的調試工具,具有對寄存器和存儲器、斷點和單步模式IAR?C-SPY, Keil, MPLAB等開發(fā)工具的源程序進行調試的功能;能夠觀察代碼在仿真硬件上的實時運行效果;對顯示,按鈕,鍵盤等外設的交互可視化進行仿真。 1.2?Proteus?PCB Proteus?的PCB設計除了有自動布線仿真功能外,還集成了PCB設計,支持多達16個布線層,可以任意角度放置元件和焊接連線;集成了高智能的布線算法,可以方便地進行PCB設計。 2.?

5、一個基于Protesus的單片機實例 2.1?軟件的編寫 本例題采用8個LED,編寫程序使之閃爍起來。 軟件的編寫是采用匯編語言,芯片的型號選擇AT89C51, 編寫LED.ASM文件,利用Proteus本身的51匯編功能進行編譯,編譯成功后生成LED.hex文件。 2.2?繪制電路圖 運行Proteus的ISIS,進入仿真軟件的主界面,如圖1所示。主界面分為菜單欄,工具欄,模型顯示窗口,模型選擇區(qū),元件列表區(qū)等。 圖1?ISIS啟動界面 通過左側的工具欄區(qū)的P(從庫中選擇元件)命令,在Pick?devices窗口中選擇系統(tǒng)所需元器件,還可以選擇元件的類別,生產(chǎn)廠家等。本例所需主

6、要元器件有:AT89C51芯片,電阻、電容、石英晶振和發(fā)光二極管,詳見表1。 表1?元器件清單 選擇元器件后連接圖2所示電路。 圖2??電路原理圖 Microproccessor?ICs類的芯片的引腳與實際的芯片基本相同,?唯一的差別是隱去了GND和VCC引腳,系統(tǒng)默認的是把它們分別連接到地和+5V直流電源。故在電路連線時可以不考慮電源和地的連接。 電路連接完成后,選中AT89C51單擊鼠標左鍵,打開“Edit?Component”對話窗口如圖3所示,可以直接在“Clock?Frequency”后進行頻率設定,設定單片機的時鐘頻率為12MHz。在“Add/remove sourc

7、e file”欄中選擇已經(jīng)編好的LED.asm文件,然后單擊“OK”按鈕保存設計。至此,就可以進行單片機的仿真。 圖?3???單片機屬性的設定 2.3 Proteus仿真結果 單片機的仿真結果圖如圖4,模擬信號經(jīng)A/D轉換后,結果送入單片機,再在數(shù)碼管上顯示;通過調節(jié)可調電阻的阻值,可以得到不同的顯示結果。仿真結果表明,系統(tǒng)達到了預先的設計要求。 在仿真的過程中每個管腳旁邊會出現(xiàn)一個小方塊,紅色的方快表示高電平,藍色的表示低電平。?通過方快顏色的變化可以很方便地知道每個管腳電平的變化,從而能對系統(tǒng)的運行有更直觀的了解,這對程序的調試有很大的幫助。? 圖4?仿真結果 3.總

8、結 本文結合一個LED閃爍的單片機電路詳細說明了Proteus在單片機開發(fā)中的應用??梢钥闯?,Proteus功能十分強大,能仿真各種數(shù)字模擬電路,且操作簡單,使用方便。能快速地進行單片機仿真,加快系統(tǒng)開發(fā)的過程,降低開發(fā)成本。 47 實驗1 PROTUES環(huán)境及LED閃爍綜合實驗 1. 實驗任務 做單一燈的左移右移,硬件電路如圖所示,八個發(fā)光二極管L1-L8分別接在單片機的P1.0-P1.7接口上,輸出“0”時,發(fā)光二極管亮,開始時P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重復循環(huán)。 2. 電路原理圖 圖1 3.

9、程序設計內(nèi)容 我們可以運用輸出端口指令MOV P1,A或MOV P1,#DATA,只要給累加器值或常數(shù)值,然后執(zhí)行上述的指令,即可達到輸出控制的動作。 每次送出的數(shù)據(jù)是不同,具體的數(shù)據(jù)如下表1所示 : P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 說明 L8 L7 L6 L5 L4 L3 L2 L1   1 1 1 1 1 1 1 0 L1亮 1 1 1 1 1 1 0 1 L2亮 1 1 1 1 1 0 1 1 L3亮 1 1 1 1 0 1 1

10、 1 L4亮 1 1 1 0 1 1 1 1 L5亮 1 1 0 1 1 1 1 1 L6亮 1 0 1 1 1 1 1 1 L7亮 0 1 1 1 1 1 1 1 L8亮 4. 程序框圖             圖2 5. 匯編源程序 ORG 0 START: MOV R2,#8 MOV A,#0FEH SETB C LOOP: MOV P1,A LCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8 LOOP1: MOV P1,

11、A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#20 ; D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 實驗2 多路開關狀態(tài)指示 1. 實驗任務 如圖1所示,AT89S51單片機的P1.0-P1.3接四個發(fā)光二極管L1-L4,P1.4-P1.7接了四個開關K1-K4,編程將開關的狀態(tài)反映到發(fā)光二極管上。(開關閉合,對應的燈亮,開關斷開,對應的燈滅)。 2. 電路原理圖 圖1

12、 3. 程序設計內(nèi)容 3.1 開關狀態(tài)檢測 對于開關狀態(tài)檢測,相對單片機來說,是輸入關系,我們可輪流檢測每個開關狀態(tài),根據(jù)每個開關的狀態(tài)讓相應的發(fā)光二極管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令來完成;也可以一次性檢測四路開關狀態(tài),然后讓其指示,可以采用MOV A,P1指令一次把P1端口的狀態(tài)全部讀入,然后取高4位的狀態(tài)來指示。 3.2 輸出控制 根據(jù)開關的狀態(tài),由發(fā)光二極管L1-L4來指示,我們可以用SETB P1.X和CLR P1.X指令來完成,也可以采用MOV P1,#1111XXXXB方法一次指示。 4. 程序框圖   讀P1口數(shù)據(jù)

13、到ACC中 ACC內(nèi)容右移4次 ACC內(nèi)容與F0H相或 ACC內(nèi)容送入P1口 圖2 5. 解決方案 方法一(匯編源程序) ORG 00H START: MOV A,P1 ANL A,#0F0H RR A RR A RR A RR A ORl A,#0F0H MOV P1,A SJMP START END 方法二(匯編源程序) ORG 00H START: JB P1.4,NEXT1 CLR P1.0 SJMP NEX1 NEXT1: SETB P1.0 NEX1: JB P1.5,NEXT2 CLR P1.1 S

14、JMP NEX2 NEXT2: SETB P1.1 NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3 NEXT3: SETB P1.2 NEX3: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4 NEXT4: SETB P1.3 NEX4: SJMP START END 實驗3 報警產(chǎn)生器 1. 實驗任務 用P1.0輸出1KHz和500Hz的音頻信號驅動揚聲器,作報警信號,要求1KHz信號響100ms,500Hz信號響200ms,交替進行,P1.7接一開關進行控制,當開關合上響報警信號,當開關斷開告警

15、信號停止,編出程序。 2. 電路原理圖 圖1 3. 程序設計內(nèi)容 3.1 信號產(chǎn)生的方法 500Hz信號周期為2ms,信號電平為每1ms變反1次,1KHz的信號周期為1ms,信號電平每500us變反1次;   4. 程序框圖 圖2 5. 匯編源程序 FLAG BIT 00H ORG 00H START: JB P1.7,START JNB FLAG,NEXT MOV R2,#200 DV: CPL P1.0 LCALL DELY500 LCALL DELY500 DJNZ R2,DV CPL FLAG NEXT: MOV

16、R2,#200 DV1: CPL P1.0 LCALL DELY500 DJNZ R2,DV1 CPL FLAG SJMP START DELY500: MOV R7,#250 LOOP: NOP DJNZ R7,LOOP RET END 實驗4 I/O并行口直接驅動LED顯示 1. 實驗任務 如圖1所示,利用AT89S51單片機的P0端口的P0.0-P0.7連接到一個共陰數(shù)碼管的a-h(huán)的筆段上,數(shù)碼管的公共端接地。在數(shù)碼管上循環(huán)顯示0-9數(shù)字,時間間隔0.2秒。 2. 電路原理圖 圖1 3 程序設計內(nèi)容 (1) LED數(shù)碼顯示原理

17、 七段LED顯示器內(nèi)部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。 LED數(shù)碼管的g~a七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陰極的字形碼見表2 “0” 3FH “8” 7FH “1” 06H “9” 6FH “2” 5BH “A” 77H “3” 4FH “b” 7CH “4” 66H “C” 39H “5” 6DH “d” 5EH “6” 7DH “E” 79H “7” 07H “F

18、” 71H (2) 由于顯示的數(shù)字0-9的字形碼沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求了。這樣我們按著數(shù)字0-9的順序,把每個數(shù)字的筆段代碼按順序排好!建立的表格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。 4.程序框圖                 圖2 5. 匯編源程序 ORG 0 START: MOV R1,#00H NEXT: MOV A,R1 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A LCALL DEL

19、AY INC R1 CJNE R1,#10,NEXT LJMP START DELAY: MOV R5,#20 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 實驗5 按鍵識別方法之一 1. 實驗任務 每按下一次開關SP1,計數(shù)值加1,通過AT89S51單片機的P1端口的P1.0到P1.3顯示出其的二進制計數(shù)值。 2. 電路原理圖 3程序設計方

20、法 (1)其實,作為一個按鍵從沒有按下到按下以及釋放是一個完整的過程,也就是說,當我們按下一個按鍵時,總希望某個命令只執(zhí)行一次,而在按鍵按下的 過程中,不要有干擾進來,因為,在按下的過程中,一旦有干擾過來,可能造成誤觸發(fā)過程,這并不是我們所想要的。因此在按鍵按下的時候,   圖2 要把我們手上的干擾信號以及按鍵的機械接觸等干擾信號給濾除掉,一般情況下,我們可以采用電容來濾除掉這些干擾信號,但實際上,會增加硬件成本及硬件電路的體積,這是我們不希望,總得有個辦法解決這個問題,因此我們可以采用軟件濾波的方法去除這些干擾 信號,一般情況下,一個按鍵按下的時候,總是在按下的時

21、刻存在著一定的干擾信號,按下之后就基本上進入了穩(wěn)定的狀態(tài)。具體的一個按鍵從按下到釋放的全過程的信號圖如上圖所示: 從圖中可以看出,我們在程序設計時,從按鍵被識別按下之后,延時5ms以上,從而避開了干擾信號區(qū)域,我們再來檢測一次,看按鍵是否真得已經(jīng)按下,若真得已經(jīng)按下,這時肯定輸出為低電平,若這時檢測到的是高電平,證明剛才是由于干擾信號引起的誤觸發(fā),CPU就認為是誤觸發(fā)信號而舍棄這次的按鍵識別過程。從而提高了系統(tǒng)的可靠性。 由于要求每按下一次,命令被執(zhí)行一次,直到下一次再按下的時候,再執(zhí)行一次命令,因此從按鍵被識別出來之后,我們就可以執(zhí)行這次的命令,所以要有一個等待按鍵釋放的過程,顯然釋

22、放的過程,就是使其恢復成高電平狀態(tài)。 (1)對于按鍵識別的指令,我們依然選擇如下指令JB BIT,REL指令是用來檢測BIT是否為高電平,若BIT=1,則程序轉向REL處執(zhí)行程序,否則就繼續(xù)向下執(zhí)行程序?;蛘呤恰NB BIT,REL指令是用來檢測BIT是否為低電平,若BIT=0,則程序轉向REL處執(zhí)行程序,否則就繼續(xù)向下執(zhí)行程序。 (2)但對程序設計過程中按鍵識別過程的框圖如右圖所示:                  圖3 4. 程序框圖 圖4 6. 匯編源程序 ORG 0 START: MOV R1,#00H ;初始化R1為0,表示從0開始計數(shù) MOV

23、A,R1 ; CPL A ;取反指令 MOV P1,A ;送出P1端口由發(fā)光二極管顯示 REL: JNB P3.7,REL ;判斷SP1是否按下 LCALL DELAY10MS ;若按下,則延時10ms左右 JNB P3.7,REL ;再判斷SP1是否真得按下 INC R1 ;若真得按下,則進行按鍵處理,使 MOV A,R1 ;計數(shù)內(nèi)容加1,并送出P1端口由 CPL A ;發(fā)光二極管顯示 MOV P1,A ; JNB P3.7,$ ;等待SP1釋放 SJMP REL ;繼續(xù)對K1按鍵掃描 DELAY

24、10MS: MOV R6,#20 ;延時10ms子程序 L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET END 實驗6 一鍵多功能按鍵識別技術 1.實驗任務 如圖1所示,開關SP1接在P3.7/RD管腳上,在AT89S51單片機的P1端口接有四個發(fā)光二極管,上電的時候,L1接在P1.0管腳上的發(fā)光二極管在閃爍,當每一次按下開關SP1的時候,L2接在P1.1管腳上的發(fā)光二極管在閃爍,再按下開關SP1的時候,L3接在P1.2管腳上的發(fā)光二極管在閃爍,再按下開關SP1的時候,L4接在P1.3管腳上的發(fā)光二極管在閃爍,再按下開關SP1的時候,又

25、輪到L1在閃爍了,如此輪流下去。 2.電路原理圖 圖1 3.程序設計方法 (1)設計思想由來 在我們生活中,我們很容易通過這個叫張三,那個叫李四,另外一個是王五;那是因為每個人有不同的名子,我們就很快認出,同樣,對于要通過一個按鍵來識別每種不同的功能,我們給每個不同的功能模塊用不同的ID號標識,這樣,每按下一次按鍵,ID的值是不相同的,所以單片機就很容易識別不同功能的身份了。 (2)設計方法 從上面的要求我們可以看出,L1到L4發(fā)光二極管在每個時刻的閃爍的時間是受開關SP1來控制,我們給L1到L4閃爍的時段定義出不同的ID號,當L1在閃爍時,ID=0;當L2在閃

26、爍時,ID=1;當L3在閃爍時,ID=2;當L4在閃爍時,ID=3;很顯然,只要每次按下開關K1時,分別給出不同的ID號我們就能夠完成上面的任務了。下面給出有關程序設計的框圖。 4.程序框圖                       圖2 5. 匯編源程序 ID EQU 30H SP1 BIT P3.7 L1 BIT P1.0 L2 BIT P1.1 L3 BIT P1.2 L4 BIT P1.3 ORG 0 MOV ID,#00H START: JB K1,REL LCALL DELAY10MS JB K1

27、,REL INC ID MOV A,ID CJNE A,#04,REL MOV ID,#00H REL: JNB K1,$ MOV A,ID CJNE A,#00H,IS0 CPL L1 LCALL DELAY SJMP START IS0: CJNE A,#01H,IS1 CPL L2 LCALL DELAY SJMP START IS1: CJNE A,#02H,IS2 CPL L3 LCALL DELAY SJMP START IS2: CJNE A,#03H,IS3 CPL L4 LCALL DELAY SJMP START IS3: LJ

28、MP START DELAY10MS: MOV R6,#20 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END 實驗7 定時計數(shù)器T0作定時應用技術 1. 實驗任務 用AT89S51單片機的定時/計數(shù)器T0產(chǎn)生一秒的定時時間,作為秒計數(shù)時間,當一秒產(chǎn)生時,秒計數(shù)加1,秒計數(shù)到60時,自動從0開始。硬件電路如下圖所示 2. 電路原理圖 3.程序設計內(nèi)容 AT89S51單片機

29、的內(nèi)部16位定時/計數(shù)器是一個可編程定時/計數(shù)器,它既可以工作在13位定時方式,也可以工作在16位定時方式和8位定時方式。只要通過設置特殊功能寄存器TMOD,即可完成。定時/計數(shù)器何時工作也是通過軟件來設定TCON特殊功能寄存器來完成的。 現(xiàn)在我們選擇16位定時工作方式,對于T0來說,最大定時也只有65536us,即65.536ms,無法達到我們所需要的1秒的定時,因此,我們必須通過軟件來處理這個問題,假設我們?nèi)0的最大定時為50ms,即要定時1秒需要經(jīng)過20次的50ms的定時。對于這20次我們就可以采用軟件的方法來統(tǒng)計了。 因此,我們設定TMOD=00000001B,即TMOD=0

30、1H 下面我們要給T0定時/計數(shù)器的TH0,TL0裝入預置初值,通過下面的公式可以計算出 TH0=(216-50000) / 256 TL0=(216-50000) MOD 256 當T0在工作的時候,我們?nèi)绾蔚弥?0ms的定時時間已到,這回我們通過檢測TCON特殊功能寄存器中的TF0標志位,如果TF0=1表示定時時間已到。 5. 程序框圖                         圖2 6. 匯編源程序(查詢法) SECOND EQU 30H TCOUNT EQU 31H ORG 00H START

31、: MOV SECOND,#00H MOV TCOUNT,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 DISP: MOV A,SECOND MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOVC A,@A+DPTR MOV P2,A WAIT: JNB TF0,WAIT CLR TF0 MOV TH0,#(65536-50000) / 256 M

32、OV TL0,#(65536-50000) MOD 256 INC TCOUNT MOV A,TCOUNT CJNE A,#20,NEXT MOV TCOUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,NEX MOV SECOND,#00H NEX: LJMP DISP NEXT: LJMP WAIT TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 實驗8定時計數(shù)器T0作定時應用技術 1. 實驗任務 用AT89S51的定時/計數(shù)器T0產(chǎn)生2秒鐘的定時,每當

33、2秒定時到來時,更換指示燈閃爍,每個指示閃爍的頻率為0.2秒,也就是說,開始L1指示燈以0.2秒的速率閃爍,當2秒定時到來之后,L2開始以0.2秒的速率閃爍,如此循環(huán)下去。0.2秒的閃爍速率也由定時/計數(shù)器T0來完成。 2. 電路原理圖 3.程序設計內(nèi)容 (1)由于采用中斷方式來完成,因此,對于中斷源必須它的中斷入口地址,對于定時/計數(shù)器T0來說,中斷入口地址為000BH,因此在中斷入口地方加入長跳轉指令來執(zhí)行中斷服務程序。書寫匯編源程序格式如下所示: ORG 00H LJMP START ORG 0BH? ;定時/計數(shù)器T0中斷入口地址 LJMP INT_T0 ST

34、ART: NOP? ;主程序開始 . INT_T0: PUSH ACC? ;定時/計數(shù)器T0中斷服務程序 PUSH PSW POP PSW POP ACC RETI? ;中斷服務程序返回 END (2)定時2秒,采用16位定時50ms,共定時40次才可達到2秒,每50ms產(chǎn)生一中斷,定時的40次數(shù)在中斷服務程序中完成,同樣0.2秒的定時,需要4次才可達到0.2秒。對于中斷程序,在主程序中要對中斷開中斷。 (3)由于每次2秒定時到時,L1-L4要交替閃爍。采用ID來號來識別。當ID=0時,L1在閃爍,當ID=1時,L2在閃爍;當ID=2時,L3在閃爍;當ID=3時,L4在閃

35、爍 5. 程序框圖  T0中斷服務程序框圖 主程序框圖 6.匯編源程序 TCOUNT2S EQU 30H TCNT02S EQU 31H ID EQU 32H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TCOUNT2S,#00H MOV TCNT02S,#00H MOV ID,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 SETB ET0 S

36、ETB EA SJMP $ INT_T0: MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT2S MOV A,TCOUNT2S CJNE A,#40,NEXT MOV TCOUNT2S,#00H INC ID MOV A,ID CJNE A,#04H,NEXT MOV ID,#00H NEXT: INC TCNT02S MOV A,TCNT02S CJNE A,#4,DONE MOV TCNT02S,#00H MOV A,ID CJNE A,#00H,SID1 CPL

37、 P1.0 SJMP DONE SID1: CJNE A,#01H,SID2 CPL P1.1 SJMP DONE SID2: CJNE A,#02H,SID3 CPL P1.2 SJMP DONE SID3: CJNE A,#03H,SID4 CPL P1.3 SID4: SJMP DONE DONE: RETI END 實驗9 “嘀、嘀、……”報警聲 1. 實驗任務 用AT89S51單片機產(chǎn)生“嘀、嘀、…”報警聲從P1.0端口輸出,產(chǎn)生頻率為1KHz,根據(jù)上面圖可知:1KHZ方波從P1.0輸出0.2秒,接著0.2秒從P1.0輸出電平信號,如此循環(huán)下去,

38、就形成我們所需的報警聲了。 2. 電路原理圖 圖1 3. 程序設計方法 (1)生活中我們常常到各種各樣的報警聲,例如“嘀、嘀、…”就是常見的一種聲音報警聲,但對于這種報警聲,嘀0.2秒鐘,然后斷0.2秒鐘,如此循環(huán)下去,假設嘀聲的頻率為1KHz,則報警聲時序圖如下圖所示: 上述波形信號如何用單片機來產(chǎn)生呢? (2) 由于要產(chǎn)生上面的信號,我們把上面的信號分成兩部分,一部分為1KHZ方波,占用時間為0.2秒;另一部分為電平,也是占用0.2秒;因此,我們利用單片機的定時/計數(shù)器T0作為定時,可以定時0.2秒;同時,也要用單片機產(chǎn)生1KHZ的方波,對于1KHZ的方波信

39、號周期為1ms,高電平占用0.5ms,低電平占用0.5ms,因此也采用定時器T0來完成0.5ms的定時;最后,可以選定定時/計數(shù)器T0的定時時間為0.5ms,而要定時0.2秒則是0.5ms的400倍,也就是說以0.5ms定時400次就達到0.2秒的定時時間了。 5. 程序框圖   主程序框圖 中斷服務程序框圖 圖2 6. 匯編源程序 T02SA EQU 30H T02SB EQU 31H FLAG BIT 00H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV T02SA,#00H MOV T02SB,

40、#00H CLR FLAG MOV TMOD,#01H MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ INT_T0: MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 INC T02SA MOV A,T02SA CJNE A,#100,NEXT INC T02SB MOV A,T02SB CJNE A,#04H,NEXT MOV T02SA,#00H MOV T02

41、SB,#00H CPL FLAG NEXT: JB FLAG,DONE CPL P1.0 DONE: RETI END 實驗10 8X8 LED點陣顯示技術 1. 實驗任務 在8X8 LED點陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環(huán)下去。 2. 電路原理圖 3. 程序設計內(nèi)容 (1). 8X8 點陣LED工作原理說明 8X8點陣LED結構如下圖所示: 圖2 從圖2中可以看出,8X8點陣共需要64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點

42、上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就亮;因此要實現(xiàn)一根柱形的亮法,如圖49所示,對應的一列為一根豎柱,或者對應的一行為一根橫柱,因此實現(xiàn)柱的亮的方法如下所述: 一根豎柱:對應的列置1,而行則采用掃描的方法來實現(xiàn)。 一根橫柱:對應的行置0,而列則采用掃描的方法來實現(xiàn)。 5.匯編源程序 ORG 00H START: NOP MOV R3,#3 LOP2: MOV R4,#8 MOV R2,#0 LOP1: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2 MOVC A,@A+DPTR MOV P3,A INC R2

43、 LCALL DELAY DJNZ R4,LOP1 DJNZ R3,LOP2 MOV R3,#3 LOP4: MOV R4,#8 MOV R2,#7 LOP3: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2 MOVC A,@A+DPTR MOV P3,A DEC R2 LCALL DELAY DJNZ R4,LOP3 DJNZ R3,LOP4 MOV R3,#3 LOP6: MOV R4,#8 MOV R2,#0 LOP5: MOV P3,#00H MOV DPTR,#TABB MOV A,R2 MOVC A,@A

44、+DPTR MOV P1,A INC R2 LCALL DELAY DJNZ R4,LOP5 DJNZ R3,LOP6 MOV R3,#3 LOP8: MOV R4,#8 MOV R2,#7 LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2 MOVC A,@A+DPTR MOV P1,A DEC R2 LCALL DELAY DJNZ R4,LOP7 DJNZ R3,LOP8 LJMP START DELAY: MOV R5,#10 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7

45、,$ DJNZ R6,D1 DJNZ R5,D2 RET TABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH TABB: DB 01H,02H,04H,08H,10H,20H,40H,80H END 實驗11電子琴 1. 實驗任務 (1)由4X4組成16個按鈕矩陣,設計成16個音。 (2)可隨意彈奏想要表達的音樂。 2. 電路原理圖 圖1 3. 相關程序內(nèi)容 (1)4X4行列式鍵盤識別; (2)音樂產(chǎn)生的方法; 一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用

46、不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可?,F(xiàn)在以單片機12MHZ晶振為例,例出高中低音符與單片機計數(shù)T0相關的計數(shù)值如下表所示 音符 頻率(HZ) 簡譜碼(T值) 音符 頻率(HZ) 簡譜碼(T值) 低1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低2 RE 294 63835 # 5 SO# 831

47、 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6

48、466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高

49、7 SI 1967 65283 下面我們要為這個音符建立一個表格,有助于單片機通過查表的方式來獲得相應的數(shù)據(jù) 低音0-19之間,中音在20-39之間,高音在40-59之間 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,

50、65058,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 2、音樂的音拍,一個節(jié)拍為單位(C調) 曲調值 DELAY 曲調值 DELAY 調4/4 125ms 調4/4 62ms 調3/4 187ms 調3/4 94ms 調2/4 250ms 調2/4 125ms 對于不同的曲調我們也可以用單片機的另外一個定時/計數(shù)器來完成。 下面就用AT89S51單片機產(chǎn)生一首“生日快樂”歌曲來說明單片機如何產(chǎn)生

51、的。 在這個程序中用到了兩個定時/計數(shù)器來完成的。其中T0用來產(chǎn)生音符頻率,T1用來產(chǎn)生音拍。 5. 程序框圖 6. 匯編源程序 KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#01H SETB ET0 SETB EA WAIT: MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DE

52、LY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP DK1: MOV A,KEYBUF MOV DPTR,#TA

53、BLE MOVC A,@A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A CLR TR0 NOKEY1: MOV P3,#0FFH CLR P3.5 MOV

54、 A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 LJ

55、MP DK2 NK8: NOP DK2: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ D

56、K2A CLR TR0 NOKEY2: MOV P3,#0FFH CLR P3.6 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9 LJMP DK3 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,

57、#10 LJMP DK3 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 LJMP DK3 NK12: NOP DK3: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A MOV TL0,A

58、 SETB TR0 DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A CLR TR0 NOKEY3: MOV P3,#0FFH CLR P3.7 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4 NK13: CJNE A,#0DH,NK14

59、 MOV KEYBUF,#13 LJMP DK4 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 LJMP DK4 NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK4 NK16: NOP DK4: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV STH0,A MOV TH0,A

60、 INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A MOV TL0,A SETB TR0 DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A CLR TR0 NOKEY4: LJMP WAIT DELY10MS: MOV R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0: MOV TH0,STH0 MOV TL0,STL0 CPL P1.0 RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H TABLE1: DW 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178 END

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!