#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晚送電一會,就正常了。請教啊
|