/************************************************
跳線設置:雙排針除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;
}
}
} |