|
/************************************************
跳線設(shè)置:雙排針除PSEN外全部插上
硬件結(jié)構(gòu)框架:
1,八位八段數(shù)碼管
2,MCU STC89C52
顯示效果:
1,在數(shù)碼管上循環(huán)顯示0-9
相關(guān)知識(shí)點(diǎn):
1,數(shù)碼管的驅(qū)動(dòng)顯示方式
************************************************/
先貼代碼:
個(gè)人根據(jù)例程改的一段程序,預(yù)期效果是輪流顯示0~7,然后是第1,3,5,7位和2,4,6,8位輪流顯示。
結(jié)果只是最后兩位一直在亮。
好頭疼啊,用了光盤里的滾動(dòng)例程,看到的也是最后兩個(gè)亮,但是數(shù)字每次變,亮度也在變。
個(gè)人感覺是不是數(shù)碼管哪里出問題了。
#include"AT89x52.h"
#include"math.h"
#define uint unsigned int
#define uchar unsigned char
sbit DUAN=P2^6; //74HC573的LE端 U1 數(shù)碼管LED的段選端
sbit WEI=P2^7; //74HC573的LE端 U1 數(shù)碼管LED的位選端
uchar Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰顯示字庫(kù)
void delay(uint z) //1ms延時(shí)
{
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); //延時(shí)
f = ~f;
WEI = 1;
P0 = f;
WEI = 0;
DUAN = 1;
P0 = Temp[i]; //送段碼
DUAN = 0;
}
}
} |
|