单片机高手,进来看一下关于数码管显示不同数字的,
们显示不同的数字,和二极管遇到同样的问题,求解,我看的是郭天祥视频教程
就是这个编程,想不出来我想控制P0口,
此程序是于他的学习板配套的配套,其中有573锁存器
我知道,他用个的好像是89C51吧,用 P0口接的,我不懂怎么控制多个数码管显示不同的数字,根据他讲的,我只懂怎么控制各个显示相同数字 的,假如说让第一个数码管显示1,第二个显示2,该怎么变,是控制P0口吗?
如果是多个的话,一般是用动态显示的方法。有八个数码管的话,用两个口就够了。
语句中的wela=1;
p0=0xco;//0xc0换成二进制就是11000000,代表六个位同时有效,修改可控制每个位
这个我明白,你说的这个语句是控制6个数码管同时工作,dula=1;若P0=0xfe只能单纯的控制6个数码管同时显示0,也可以让他们显示任意一个数,但是怎么让数码管第一显示0,第二个数码管显示1,让他们持续一段时间
动态显示的话,假如说第一个数码管亮,让它显示16个数,我想问的是让两个数码管同时显示不同的数字…………==我表达能力太差了,
大致算法
for(i=10;1>0;i--)
{第一个数码管显示任意数字10ms,
第二个数码管显示任意数字10ms,
。
。
。
第6个数码管显示任意数字10ms,}
i的初始值自己装载,可以试下不同的值会有什么效果
这就是数码管的动态显示;
你这个是属于静态显示,原理跟显示一个数码管是一样的。
动态扫描,是需要段位跟位选位同时改变
可以先把每个数码管位选位也存到tablewe
num=1可以对应选中数码管1然后显示1
同理,
接着看他的视频说动态显示就明白了
问题解决了,昨天我问个人他说 是,可以多次打开位选,关闭,打开段选,关闭,用两次可以控制显示不同数码管,不过这种方法比较麻烦,要是数码管多了,要重复好几遍
嗯,现在明白了,你也在看吗?我看到中断那节,看了好几遍都没有看懂,现在只懂了一点
你好!我也是要一个这样的程序,用STC89C51单片机键盘输入,在2个4位七段数码管上显示8个数字的C语言程序,如输入后数码管显示 1162026。
你能不能发一个完整的C语言程序代码给我,我是新手,还不会编程,很想要一份程序来参考看看
#include<reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
#define uchar unsigned char
#define uint unsigned int
uchar tt;
unsigned char code table[16]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void display();
void delay(uint z);
void init();
void main()
{
tt=0;
init();
while(1)
{
if(tt == 40)
{
tt=0;
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=0x00;
dula=0;
delay(200);
}
display();
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
/*uint bai,shi,ge;
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
*/
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[6];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[5];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[4];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=table[3];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=table[2];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[1];
dula=0;
delay(5);
P0=0xff;
}