4个数码管。依次为
1
2
3
4
可以把4个数码管的所有段,都接到P0口上。
想显示什么数字,就直接向P0口写数据就可以了
比如要在第一个数码管(数码管是共阴极)上显示0:
先进行片选:P1
=
0x01;P2
=
0x00
向P0口写入段码:
P0
=
0x3F
#include<reg52.h>#define uchar unsigned char
#define uint unsigned int
uchar a,bai,shi,ge
uint temp
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f}
void init()
void display(uchar bai,uchar shi,uchar ge)
void delay(uchar z)
void main()
{
init()
while(1)
{
if(a==20)
{
a=0
temp++
if(temp==1000)
{
temp=0
}
}
bai=temp/100
shi=temp%100/10
ge=temp%10
display(bai,shi,ge)
}
}
void init()
{
TMOD=0x01
TH0=(65536-50000)/256
TL0=(65536-50000)%256
EA=1
ET0=1
TR0=1
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256
TL0=(65535-50000)%256
a++
}
void display(uchar bai,uchar shi,uchar ge)
{
P0=table[bai]
P2=5
delay(1)
P0=table[shi]
P2=6
delay(1)
P0=table[ge]
P2=7
delay(1)
}
void delay(uchar z)
{
uchar i,j
for(i=zi>0i--)
for(j=110j>0j--)
}
共阴和共阳肯定有区别啦,一个是高电平相连(共阳),一个是低电平相连(共阴)。不管共阴还是共阳,都是一样的,段选给高电平的话,位选就要给低电平,或者反过来,具体就要看你的实物咯。
你看看第一个回答的人,那个图,数码管的实物图,上面有A/B/C/、、、
这里用2个数码管进行说明,分别为U1和U2吧,让U1的显示“1”
你看,共阴的
首先输入段选数据,只有BC为高电平,这样,两个数码管的BC都是高电平,然后你让U1的位选为低电平,这样U1就显示1了,而U2不会
明白了不,因为手头没有程序,所以文字讲给你听了,手打的,给个满意不过分吧~~呵呵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)