1樓:匿名使用者
a_bit equ 20h ;數碼管個位數存放記憶體位置
b_bit equ 21h ;數碼管十位數存放記憶體位置
temp equ 22h ;計數器數值存放記憶體位置
star: mov temp,#0 ;初始化計數器,從0開始
stlop: acall display;呼叫顯示子程式
acall del
inc temp;對計數器加1
mov a,temp
cjne a,#100,next ;判斷計數器是否滿100?
mov temp,#0;滿100就清零重新開始
next: ljmp stlop;不滿就迴圈執行
;顯示子程式
display: mov a,temp ;將temp中的十六進位製數轉換成10進製
mov b,#10 ;10進製/10=10進製
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;個位在b
mov dptr,#numtab ;指定查表啟始位址
mov r0,#4
dpl1: mov r1,#250 ;
dplop: mov a,a_bit ;取個位數
movc a,@a+dptr ;查個位數的7段**
mov p0,a ;送出個位的7段**
clr p1.3 ;開個位顯示
acall d1ms ;顯示162微秒
setb p1.3;關閉個位顯示,防止鬼影
mov a,b_bit ;取十位數
movc a,@a+dptr ;查十位數的7段**
mov p0,a ;送出十位的7段**
clr p1.2 ;開十位顯示
acall d1ms ;顯示162微秒
setb p1.2;關閉十位顯示,防止鬼影
djnz r1,dplop ;迴圈執行250次
djnz r0,dpl1 ;迴圈執行250x4=1000次
ret;2+2x80=162微秒,延時按12mhz計算
d1ms: mov r7,#80
djnz r7,$
retdel:mov r2,#04h
d1:mov r3,#0ffh
d2:mov r4,#0ffh
d3:djnz r4,d3
djnz r3,d2
djnz r2,d1
ret;實驗板上的7段數碼管0~9數字的共陰顯示**
numtab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end a_bit equ 20h ;數碼管個位數存放記憶體位置
b_bit equ 21h ;數碼管十位數存放記憶體位置
temp equ 22h ;計數器數值存放記憶體位置
star: mov temp,#0 ;初始化計數器,從0開始
stlop: acall display;呼叫顯示子程式
acall del
inc temp;對計數器加1
mov a,temp
cjne a,#100,next ;判斷計數器是否滿100?
mov temp,#0;滿100就清零重新開始
next: ljmp stlop;不滿就迴圈執行
;顯示子程式
display: mov a,temp ;將temp中的十六進位製數轉換成10進製
mov b,#10 ;10進製/10=10進製
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;個位在b
mov dptr,#numtab ;指定查表啟始位址
mov r0,#4
dpl1: mov r1,#250 ;
dplop: mov a,a_bit ;取個位數
movc a,@a+dptr ;查個位數的7段**
mov p0,a ;送出個位的7段**
clr p1.3 ;開個位顯示
acall d1ms ;顯示162微秒
setb p1.3;關閉個位顯示,防止鬼影
mov a,b_bit ;取十位數
movc a,@a+dptr ;查十位數的7段**
mov p0,a ;送出十位的7段**
clr p1.2 ;開十位顯示
acall d1ms ;顯示162微秒
setb p1.2;關閉十位顯示,防止鬼影
djnz r1,dplop ;迴圈執行250次
djnz r0,dpl1 ;迴圈執行250x4=1000次
ret;2+2x80=162微秒,延時按12mhz計算
d1ms: mov r7,#80
djnz r7,$
retdel:mov r2,#04h
d1:mov r3,#0ffh
d2:mov r4,#0ffh
d3:djnz r4,d3
djnz r3,d2
djnz r2,d1
ret;實驗板上的7段數碼管0~9數字的共陰顯示**
numtab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhend
2樓:匿名使用者
//*樓下的真他娘的賤,直接複製我的答案*//a_bit equ 20h ;數碼管個位數存放記憶體位置b_bit equ 21h ;數碼管十位數存放記憶體位置temp equ 22h ;計數器數值存放記憶體位置star: mov temp,#0 ;初始化計數器,從0開始stlop: acall display;呼叫顯示子程式acall del
inc temp;對計數器加1
mov a,temp
cjne a,#100,next ;判斷計數器是否滿100?
mov temp,#0;滿100就清零重新開始next: ljmp stlop;不滿就迴圈執行;顯示子程式
display: mov a,temp ;將temp中的十六進位製數轉換成10進製
mov b,#10 ;10進製/10=10進製div ab
mov b_bit,a ;十位在a
mov a_bit,b ;個位在b
mov dptr,#numtab ;指定查表啟始位址mov r0,#4
dpl1: mov r1,#250 ;
dplop: mov a,a_bit ;取個位數movc a,@a+dptr ;查個位數的7段**mov p0,a ;送出個位的7段**
clr p1.3 ;開個位顯示
acall d1ms ;顯示162微秒
setb p1.3;關閉個位顯示,防止鬼影mov a,b_bit ;取十位數
movc a,@a+dptr ;查十位數的7段**mov p0,a ;送出十位的7段**
clr p1.2 ;開十位顯示
acall d1ms ;顯示162微秒
setb p1.2;關閉十位顯示,防止鬼影djnz r1,dplop ;迴圈執行250次djnz r0,dpl1 ;迴圈執行250x4=1000次ret
;2+2x80=162微秒,延時按12mhz計算d1ms: mov r7,#80
djnz r7,$
retdel:mov r2,#04h
d1:mov r3,#0ffh
d2:mov r4,#0ffh
d3:djnz r4,d3
djnz r3,d2
djnz r2,d1
ret;實驗板上的7段數碼管0~9數字的共陰顯示**numtab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhend
3樓:建思呼延樂英
寫那麼長幹嘛,p1口接數碼管掃瞄。p0口接8段字元顯示,已測試正常。
org0000h
staer:movdptr,#k1
mov41h,#00h
mov42h,#00h
movr2,#0ffh
a2:acalla1;呼叫顯示子程式
djnzr2,a2
movr2,#0ffh
inc41h
mova,41h
cjnea,#0ah,a2
mov41h,#00h
inc42h
mova,42h
cjnea,#0ah,a2
ljmpstaer;滿100就清零重新開始a1:movp0,#0ffh
movp1,#0feh;取個位數的7段**mova,41h
movca,@a+dptr
movp0,a;送出個位的7段**
acallloop
movp0,#0ffh
movp1,#0fdh
mova,42h
movca,@a+dptr
acallloop
retloop:movr3,#100;1毫秒延時按12mhz計算d1:movr4,#10
d2:djnzr4,d2
djnzr3,d1
retk1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
;實驗板上的7段數碼管0~9數字的共陰顯示**end註釋比程式還麻煩,自己看了
4樓:速罡
org 0000h ;每一秒就加一,顯示00-99mov b,#0ah
clr p1.7
clr p2.7
start:
mov r2,#00h
mov a,#00h
mov dptr,#table
movc a,@a+dptr
mov p1,a
mov p2,a
lcall delay1000
loop:inc r2
cjne r2,#64h,loop1
ajmp start
loop1:mov a,r2
mov b,#0ah
div ab
movc a,@a+dptr
mov p1,a
mov a,b
movc a,@a+dptr
mov p2,a
lcall delay1000
ajmp loop
delay1000:mov r5,#100d2:mov r6,#20
d1: mov r7,#248
djnz r7,$
djnz r6,d1
djnz r5,d2
rettable: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end共陰極數碼管
微控制器用彙編寫兩個數碼管顯示0到99迴圈的程式
5樓:用著追她
1、新建專案,做好準備。
2、數碼管段選錶。
3、延時函式。
4、uchar i; 變數版i;wk = 1;開啟位選,p0 = 0xf7;1111 0111第4位數碼管顯示,wk = 0;關閉
權位選。
5、while(1) //死迴圈效果{} 。
6、dk = 1; //開啟段選,p0 = leddata[i];,dk = 0; //關閉段選,delay(100);//延時效果。
7、選擇效果,限制i值的迴圈範圍。
本人初學微控制器,求數碼管顯示1,1S後數碼管顯示2以此類推直到顯示6的C語言程序
include 52微控制器標頭檔案,一般不要改動,裡面包含特殊功能暫存器的定義 define uchar unsigned char 將unsigned char定義為uchar,簡化輸寫。提高程式設計速度 define uint unsigned int 將unsigned char定義為uin...
數碼管動態和靜態顯示在硬體鏈結上分別有什麼特點實際設計如何使
微控制器嗎?靜態需要的io口多,每只管的段控就要用乙個8 位的io口。一般不夠用,要用晶元擴充套件。動態的話,幾個管合用乙個io口,輪流顯示。利用人眼的暫留效應,看起來幾個是同時亮的。七段led靜態顯示和動態顯示在硬體連線上分別有什麼特點,實際設計時應如何選擇使用 7段led顯示靜態顯示和動態顯示分...
微控制器P2口驅動數碼管,流動顯示0到F,為何此程式總是一直顯示8,但軟體除錯此程式正常
在延時後加上消影的語句,就是讓數碼管全滅,微控制器,求程式?數碼管動態顯示驅動,有八個數碼管,要求先顯示0 7,然後顯示8 f。怎麼寫啊?急!你用什麼微控制器的,用動態掃瞄啊,就是八個數碼管乙個乙個的顯示數字,然後縮短間隔時間,人眼分辨不出後,就是八個同時顯示 求微控制器大神指教,1 要求微控制器完...