51微控制器實驗之LED顯示

2021-09-24 11:52:46 字數 1725 閱讀 3552

;利用定時器定時一秒,產生中斷來時led流水顯示

;定時一秒,時鐘頻率為11.0592,每0.01s產生一次溢位中斷

;利用r2來對定時器0中斷計數,r2為100時,就定時1s了

count equ 9217 ;11.0592*1*10000/12

org 0000h

ljmp main

org 000bh

ajmp tim0 ;定時器0中斷入口

org 0030h

main:

mov r2, #0

mov tmod, #01h ;選擇定時方式,設定模式1,16位

mov th0, #high(65536 - count) ;定時器0初始化

mov tl0, #low(65536 - count)

setb tr0 ;開啟定時器0

setb et0 ;開啟定時器中斷

setb ea ;開啟總中斷

clr tf0 ;清除to溢位標誌位

mov p2, #0ffh

mov a, #0feh

sjmp $ ;等待中斷

org 000bh ;定時器0中斷入口位址

tim0:

clr tf0 ;清除to溢位標誌位

inc r2

mov th0, #high(65536 - count)

mov tl0, #low(65536 - count)

cjne r2, #100, return ;不相等跳轉到return,相等繼續執行

mov p2, a ;控制led燈顯示

jnb acc.7, clear ;led流水顯示,當(a) = 0111 1111時,跳轉到clear中

rl a ;迴圈左移一位

mov r2, #0

return:

reti ;返回中斷

clear:

mov a, #0feh

reti

end

;中斷計數100次為一秒

org 0000h

ljmp main

org 000bh ;定時器中斷0入口位址

ajmp tim0

org 0030h

main:

mov r2, #0

mov tmod, #01h ;選擇定時功能,模式1

mov th0, #high(65536 - 9217) ;初始化定時器

mov tl0, #low(65536 - 9217)

setb tr0 ;開啟定時器0

setb et0 ;開啟定時器0中斷

setb ea ;開啟總中斷

clr tf0 ;清中斷標誌

mov p1, #0ffh

sjmp $ ;等待中斷

org 000bh

tim0:

clr tf0 ;清中斷標誌,一定要有

inc r2

mov th0, #high(65536 - 9217)

mov tl0, #low(65536 - 9217)

cjne r2, #100, return ;判斷中斷計數是否100次,100次就對led進行取反,沒有,則中斷返回,從定時器0中斷入口位址進入

cpl p2.5

mov r2, #0

return:

reti

end

51微控制器控制LED顯示漢字

2007 12 25 12 34 26 用51微控制器控制led顯示漢字,電路中行方向由p0口和p2口完成掃瞄,由於p0口沒有上拉電阻,因此接乙個4.7k 8的排阻上拉。如沒有排阻,也可用8個普通的4.7k 1 8w電阻。為提供負載能力,接16個2n5551的npn三極體驅動。列方向則由4 16解碼...

微控制器 LED實驗

實 驗 報 告第頁 專業 軟體工程 班級 4 學號 123012005158 實驗日期 2007年11 月27 告退發 訂正 重做 課程微控制器程式設計 實驗名稱 led實驗 一 實驗目的 掌握 led工作原理和使用方法 二 實驗環境 pc,kc,51 板三 實驗內容 步驟和結果分析 編寫時鐘程式,...

51微控制器 LED點陣

這次的程式是通過控制led點陣,點亮乙個 號。我們使用的是乙個8 8的電子,需要操作16bit,實現對行和列的管理,這點其實和矩陣按鍵是有些類似,只不過乙個是輸入,乙個是輸出,都是通過逐行掃瞄實現的 矩陣按鍵由於每次只檢查乙個按鍵,也可以使用行列掃瞄 下面是led點陣的原理圖 從上圖可以看出,每乙個...