#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar i,num,dat,nn,dat1,tt,dd;
uchar code tabled[]= { //共阳数码管显示数据
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
uchar code tablew[]= { //位选数据
0x00,0x01,0x02,0x04,
0x08,0x10};
sbit ds=P0^0; //段选锁存端74HC573
sbit ws=P0^1; //位选锁存端74HC573
sbit dab=P0^2; //74HC164段选数据端
sbit dlk=P0^3; //74HC164脉冲端
sbit wab=P0^4;
sbit wlk=P0^5;
sbit dwlr=P0^6; //复位端
void delay(uint z) //延时子函数 无返回值 形参Z
{
uint x,y; //定义无符号整型数X,Y
for(x=z;x>0;x--) //for循环一级
for(y=110;y>0;y--); //for循环二级
}
void main()
{
dwlr=0;
dwlr=1;
ds=1;
num=6;
dat1=tabled[num];
for(i=0;i<8;i++)
{
dat1=dat1<<1;
dat=CY;
dab=dat&0x01;
dlk=0;
dlk=1;
}
ds=0;
ws=1;
nn=1;
dat1=tablew[nn];
for(i=0;i<8;i++)
{
dat1=dat1<<1;
dat=CY;
wab=dat&0x01;
wlk=0;
wlk=1;
}
ws=0;
while(1);
}
先是静态显示,有时候一下亮两个数码管,段显也不对,但是给74HC164和74HC573晚送电一会,就正常了。请教啊
|