单片机a51数码管4位显示计数程序

如题所述

您好,这样的;
DAT EQU 30H
SCANLED EQU 34H
KEY BIT P3.2
ORG 0000H
LJMP MAIN
ORG 001BH
LJMP T1ISR ;扫描显示
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#10H
MOV TH1,#0ECH
MOV TL1,#078H
MOV SCANLED,#0
MOV 30H,#00H
MOV 31H,#10H
MOV 32H,#10H
MOV 33H,#10H
SETB ET1
SETB TR1
SETB EA
LOOP:
JB KEY,$
JNB KEY,$
INC 30H
MOV A,30H
CJNE A,#10,LOOP
MOV 30H,#0
MOV A,31H
CJNE A,#10H,LP1
CLR A
LP1:
INC A
MOV 31H,A
CJNE A,#10,LOOP
MOV 31H,#0
MOV A,32H
CJNE A,#10H,LP2
CLR A
LP2:
INC A
MOV 32H,A
CJNE A,#10,LOOP
MOV 32H,#0
MOV A,33H
CJNE A,#10H,LP3
CLR A
LP3:
INC A
MOV 33H,A
CJNE A,#10,LOOP
MOV 33H,#0
LJMP LOOP
;--------------------
T1ISR:
PUSH ACC
CLR TR1
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
MOV DPTR,#LEDTAB
T100:
MOV R0,#DAT
MOV A,SCANLED
ADD A,R0
MOV R0,A
MOV A,SCANLED
JNZ T101
MOV P2,#08H
SJMP T1DIS
T101:
DEC A
JNZ T102
MOV P2,#04H
SJMP T1DIS
T102:
DEC A
JNZ T103
MOV P2,#02H
SJMP T1DIS
T103:
MOV P2,#01H
T1DIS:
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
INC SCANLED
MOV A,SCANLED
CJNE A,#4,T1END
MOV SCANLED,#0
T1END:
POP ACC
RETI
;--------------------
LEDTAB:
DB 0C0H ;"0" 00H
DB 0F9H ;"1" 01H
DB 0A4H ;"2" 02H
DB 0B0H ;"3" 03H
DB 99H ;"4" 04H
DB 92H ;"5" 05H
DB 82H ;"6" 06H
DB 0F8H ;"7" 07H
DB 80H ;"8" 08H
DB 90H ;"9" 09H
DB 88H ;"A" 0AH
DB 83H ;"B" 0BH
DB 0C6H ;"C" 0CH
DB 0A1H ;"D" 0DH
DB 86H ;"E" 0EH
DB 8EH ;"F" 0FH
DB 0FFH ;" " 10H
;--------------------
END
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机a51数码管4位显示计数程序
MOV 30H,#0 MOV A,31H CJNE A,#10H,LP1 CLR A LP1:INC A MOV 31H,A CJNE A,#10,LOOP MOV 31H,#0 MOV A,32H CJNE A,#10H,LP2 CLR A LP2:INC A MOV 32H,A CJNE A,#10,LOOP MOV 32H,#0 MOV A,33H CJNE A,#10H,LP3 CLR A LP3:INC A MOV 33H,A CJNE A,#10,...

用51单片机控制4位一体数码管实现1234轮流显示的程序代码是什么,求!pro...
shiftOut(0x01); \/\/ 第1位 break;case 1:shiftOut(0x02); \/\/ 第2位 break;case 2:shiftOut(0x04); \/\/ 第3位 break;case 3:shiftOut(0x08); \/\/ 第4位 break;default:break;} \/\/ 数据锁存 RCLK = 1;delay(1);RCLK = 0;\/\/ 数码管刷新延时 delay(5);\/\/ 切换显示的位 ...

51单片机四位一体共阳极数码管显示编程?
设 P0 为输出七段码(共阳极数据);四位数码管有4个阳极,设位码分别与P2.4--P2.7对应,并且=1时表示可点亮数码管;sbit wma1=b2^4; \/\/对应左起第1个数码管的阳极 sbit wma2=b2^5; \/\/对应左起第2个数码管的阳极 sbit wma3=b2^6;sbit wma4=b2^7;void main(){ wma1=0; wma2...

51单片机 控制四位数码管 汇编程序
;显示缓冲单元在72H—75H DISPLAY:MOV DPTR,#TAB CLR P3.3 MOV A,72H MOVC A,@A+DPTR LOP1:MOV P2,A LCALL DL1MS SETB P3.3 CLR P3.2 MOV A,73H MOVC A,@A+DPTR LOP2:MOV P2,A LCALL DL1MS SETB P3.2 CLR P3.1 MOV A,74H MOVC A,@A+DPTR LOP3:MOV P2,A LCALL D...

运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序
include<reg51.h> define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到f uchar number,nn=0;uchar dat[]={2,0,1,2,1,1,4,5,8,2};void t0isr() interrupt 1 { TH0=(...

51单片机4位数码管显示数字
可以直接利用IO口将对应的数字编码发送到数码管的段选引脚上。将P0口设置为0x3f,可以显示数字0。2、动态显示:对于动态显示,有两种常见的方法。一种是提高刷新频率,使得人眼无法分辨,产生显示的效果。另一种是利用锁存器件,先显示一个数字,锁定到一个数码管上,再显示下一个数字。

51单片机led4位数码管动态显示“0123”的程序,急急,,,能帮忙的就快点...
sbit wela1=P2^0;\/\/位选 sbit wela2=P2^1;sbit wela3=P2^2;sbit wela4=P2^3;void delay(uint);uint a,b;uchar num;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};\/\/字符0123456789 void main(){ while(1...

51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。
0xc0, 0xf9, 0xa4, 0xb0, 0x99, \/\/0-4 0x92, 0x82, 0xf8, 0x80, 0x90};\/\/5-9 while(1) { P0 = SEG[n1]; \/\/P0口,外接共阳数码管的段选端 delay(2000);n1++; if(n1 > 9) n1 = 0;} } 4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。

帮忙看一下,51单片机的4位数码管动态显示
你的现象应该是那两位数码管在 16 以前显示的是 0 和 一个数,如15 时显示的是 0 和 F、14 时显示的是 0 和 e。。。16 时显示的是 1 和 0 ,17 时显示的是 1 和 1 disbuf[0]=(((firstdat&0xf0)>>4)&0x0f);disbuf[1]=firstdat&0x0f;disbuf[2]=(((seconddat&0xf0)>>...

用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器...
用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器。用proteus做的时钟 可以显示年月日时分秒 可调整时间 有图 \/ includereg52.h

相似回答