微控制器實驗

2023-01-19 02:39:03 字數 2073 閱讀 4116

實驗五:外部器件應用實驗

學院物理與機電工程學院

專業電子科學與技術

班級2014級2班

學號201410530227

姓名舒小飛

指導老師柳妮

實驗五:外部器件應用實驗

一、 實驗目的

1. 學習ms-51微控制器內部的定時/計數器的使用和程式設計方法

2. 熟練編寫定時器,計數器的定時程式和中斷程式

3. 學習定時器,計數器和動態數碼管同時使用的方法

4. 學會使用外部器件動態數碼管的程式設計和使用方法

二、 試驗環境及裝置

1. ms-51微控制器實驗室

2. el-emcu-i試驗箱

3. exp-89s51/52/53 cpu實驗板

三、 實驗內容

編寫實驗程式,實現對動態數碼管的使用。要求:動態數碼管從0~99迴圈顯示,顯示間隔1秒,p0作數碼管段選碼的輸出,p1.0和p1.1作數碼管的位選輸出。

1. 外部連線:將ms-51微控制器的io1 (p0.

0)介面~ io8 (p0.7)介面分別和動態數碼管的lcd_a介面~lcd_dp介面連線起來,將cap0(p1.0)介面和sda(p1.

1)介面和數碼管的lcd_2和lcd_1連線起來。

2. 編寫實驗程式:編寫好實驗程式後,編譯、連線,點選除錯按鈕,進入除錯介面。

3. 進行實驗:用資料線將電腦和ms-51微控制器連線起來,開啟實驗板電源,點選run(全速執行)按鈕,動態數碼管從0~99迴圈顯示,間隔1秒

4. 觀察實驗現象,得出實驗結論。

數碼管0~99迴圈顯示程式如下:

org 00h

ljmp main

org 0bh定時器t0入口位址

ljmp break

org 30h

main: mov tmod,#01h設定定時器t0工作方式1

mov th0,#3cht定時器t0設初值,定時50ms

mov tl0,#0b0h

setb ea開中斷總開關

setb et0開t0終端開關

setb tr0啟動定時器t0

mov dptr,#tab

mov r4,#20設定迴圈次數20次

mov r0,#0數碼管顯示初值0

first: mov a,r0將數碼管顯示的值給a

mov b,#10

div aba為十位,b為個位

movc a,@a+dptr ;查表指令

mov p0,a顯示數碼管十位的值

clr p1.0開啟數碼管(十位),位選

lcall delay延時

setb p1.0關閉數碼管(十位)

mov a,b將個位值給a

movc a,@a+dptr ;查表指令

mov p0,a顯示數碼管個位的值

clr p1.1開啟數碼管(個位),位選

lcall delay延時

setb p1.1關閉數碼管(個位)

ljmp first迴圈執行

break: mov th0,#3ch定時器t0重灌初值

mov tl0,#0b0h

djnz r4,scend設定間隔時間1秒

mov r4,#20重新設定迴圈次數20次

inc r0間隔1秒數碼管顯示數值加一

cjne r0,#100,scend ;顯示到99後從0開始顯示

mov r0,#0設定數碼管顯示初值0

scend: reti中斷返回

delay: mov r7,#20h延時子程式

d1: mov r6,#25h

djnz r6,$

djnz r7,d1

rettab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段選碼(共陰)

end程式結束

四、 實驗結果及結論

在本次試驗中,我採用定時器t0定時50ms,r4控制迴圈次數20次,由此實現數碼管的間隔顯示1秒。動態數碼管從0開始顯示,每隔1秒,數值加一,顯示到99後從0開始顯示,實現了從0~99的迴圈顯示。

微控制器實驗

實驗一實驗環境的建立 實驗目的 學習建立實驗所需的 工作環境。實驗內容 1 進行proteus軟體的安裝 2 進行keilc51 uvision4軟體的安裝 3 掌握keilc51 uvision4和proteus聯調的方法。實驗背景知識 1 proteus軟體簡介。proteus isis是英國l...

微控制器實驗

數碼轉換實驗 學號 1042402025姓名 張炎峰專業 電氣工程與自動化 2.2.1 實驗目的 1 掌握不同進製數及編碼相互轉換的方法,加深對數碼轉換的理解 2 熟悉keil c51整合開發環境的操作及程式除錯方法。2.2.2 實驗裝置 pc機一台,td nmc 教學實驗系統 或 td pit 教...

微控制器實驗總結

微控制器實驗1 實驗2 實驗1 流水燈 主函式 aa 0xfe while 1 錯誤 從燈1跳到燈2的時間過短,在燈2處,不在迴圈。改正 while 1 注意 void delay uint 放置定義下 void delay uint xms 舉一反三 左移主程式 燈1亮,過0.5s,燈1 2亮,再...