/************************************************
跳线设置:双排针除PSEN外全部插上
硬件结构框架:
1,八位八段数码管
2,MCU STC89C52
显示效果:
1,在数码管上循环显示0-9
相关知识点:
1,数码管的驱动显示方式
************************************************/
先贴代码:
个人根据例程改的一段程序,预期效果是轮流显示0~7,然后是第1,3,5,7位和2,4,6,8位轮流显示。
结果只是最后两位一直在亮。
好头疼啊,用了光盘里的滚动例程,看到的也是最后两个亮,但是数字每次变,亮度也在变。
个人感觉是不是数码管哪里出问题了。
#include"AT89x52.h"
#include"math.h"
#define uint unsigned int
#define uchar unsigned char
sbit DUAN=P2^6; //74HC573的LE端 U1 数码管LED的段选端
sbit WEI=P2^7; //74HC573的LE端 U1 数码管LED的位选端
uchar Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴显示字库
void delay(uint z) //1ms延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main()
{
uchar i;
uchar f;
f=0xAA;
while(1)
{
for(i=0;i<8;i++)
{
delay(500); //延时
f = ~f;
WEI = 1;
P0 = f;
WEI = 0;
DUAN = 1;
P0 = Temp[i]; //送段码
DUAN = 0;
}
}
} |