#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*输出扩展595管脚定义*/
sbit hc595sh=P1^5; // 74HC595时钟线(11脚),上升沿有效
sbit hc595st=P1^4; // 74HC595锁存口(12脚),上升沿有效
sbit hc595ds=P1^0; //74HC595数据线(14脚)
/***************595写数据***************/
void whc595_dat(uchar dat) //写1byte数据
{
uchar i;
hc595ds=1;
for(i=0;i<8;i++)
{
if(dat&0x01)
hc595ds=1;//低位在前
else
hc595ds=0;
hc595sh=0; //时钟(11脚)
hc595sh=1;
dat>>=1;
}
}
void main()
{
uchar xx=0;
lcd_init(); //初始化LCD
while(1)
{
xianshi();
whc595_dat(0xff); //也就是单片机的扩展
hc595st=0; //595锁存端(12脚)
hc595st=1;
}
}
程序写入后,8550全部导通。
弄了两天了。
请指点。
谢谢。 |