求一个51单片机汇编程序,让四个数码管动态显示1 2 3 4,不是静态轮流显示,简单点有代表性,注释好,谢谢
答案:3 悬赏:30 手机版
解决时间 2021-03-01 11:26
- 提问者网友:骑士
- 2021-02-28 20:06
求一个51单片机汇编程序,让四个数码管动态显示1 2 3 4,不是静态轮流显示,简单点有代表性,注释好,谢谢
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-02-28 20:34
ORG 0000H
LJMP 0100H
MAIN: MOV 60H,#1 ;给显示缓冲区送显示的初值
MOV 61H,#2
MOV 62H,#3
MOV 63H,#4
LY: LCALL DISP ;调用显示子程序
MOV R3,#15; 延时
LK: LCALL YS1MS
DJNZ R3,LK
MOV 64H,60H
MOV 60H,61H
MOV 61H,62H
MOV 62H,63H
MOV 63H,60H
SJMP LY
DISP: MOV R0,#60H ;指针指向显示缓冲区
MOV R7,#4 ;设循环显示的次数 显示4位数据
CLR C
MOV R6,#00000001B ;从p2.0开始显示 即先显示1
LL: MOV DPTR,#TAB ;数据指针指向显示编码表达首地址
MOV A,@R0
MOVC A , @ A+ DPTR ;取显示编码
MOV P0,A ;送P0口显示
MOV A,R6
MOV P2,A ;控制显示位
RLC A ;修改显示位
MOV R6,A
INC R0 ;指向下一个要显示的数据
LCALL YS1MS ;延时显示时间
DJNZ R7,LL ;4位数据没显示完 则转LL继续显示
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;显示编码
DB 92H,82H,0F8H,80H,98H
YS1MS: MOV R5,#45 ;延时子程序
YSLL: MOV R4,#200
YYLL: DJNZ R4,YYLL
DJNZ R5,YSLL
RET
你是想要显示的数据是动态变化的吧
试好了 给加分啊 呵呵
全部回答
- 1楼网友:空山清雨
- 2021-02-28 22:18
#include
#define uchar unsigned char
#define uint unsigned int
int counter=0;
sbit w0=P2^7;
sbit w1=P2^6;
sbit w2=P2^5;
sbit w3=P2^4;
uchar code table[]={ 0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay_nms(uint z) //延时子
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void DisplayShumaguan(uchar* shuzi)
{
w0=1;
w1=0;
w2=0;
w3=0;
P0=table[*shuzi];
delay_nms(40);
w0=0;
w1=1;
w2=0;
w3=0;
P0=table[*(shuzi+1)];
delay_nms(40);
w0=0;
w1=0;
w2=1;
w3=0;
P0=table[*(shuzi+2)];
delay_nms(40);
w0=0;
w1=0;
w2=0;
w3=1;
P0=table[*(shuzi+3)];
delay_nms(40);
}
void main()
{
uchar ii[4]={1,2,3,4};
while(1)
{
DisplayShumaguan(ii);
}
}
#define uchar unsigned char
#define uint unsigned int
int counter=0;
sbit w0=P2^7;
sbit w1=P2^6;
sbit w2=P2^5;
sbit w3=P2^4;
uchar code table[]={ 0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay_nms(uint z) //延时子
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void DisplayShumaguan(uchar* shuzi)
{
w0=1;
w1=0;
w2=0;
w3=0;
P0=table[*shuzi];
delay_nms(40);
w0=0;
w1=1;
w2=0;
w3=0;
P0=table[*(shuzi+1)];
delay_nms(40);
w0=0;
w1=0;
w2=1;
w3=0;
P0=table[*(shuzi+2)];
delay_nms(40);
w0=0;
w1=0;
w2=0;
w3=1;
P0=table[*(shuzi+3)];
delay_nms(40);
}
void main()
{
uchar ii[4]={1,2,3,4};
while(1)
{
DisplayShumaguan(ii);
}
}
- 2楼网友:平生事
- 2021-02-28 20:47
为啥不用C51语言编呢?追问那可以请你给我一个c51的程序吗,谢咯
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯