单片机io扩展和WR自动时序
时间:10-02
整理:3721RD
点击:
问题是这样的,单片机的P2口P2.5/P2.6/P2.7连接了74LS138译码器,译码器y7和单片机P3.6WR引脚通过或非门74LS02,输出DIS_CLK。这个DIS_CLK作为74LS164串入并出的时钟线,74LS164的数据输入端1和2连接单片机的P0.0。74LS164驱动一个数码管(共阳数码管)。我需要通过单片机总线和WR自动产生时序的方法通知数码管。如何编程,请大神指点。
sbit dat=P0^0;
#define dis_play_addrece 0xe000//通过译码器得到的y7地址
unsigned char xdata *reg_add;//定义一个指针,得到地址以及给地址写数据
void out_simuseri(uchar data_buf)//
{
uchar i,s;//
reg_add=dis_clk_addrece;//把地址给指针,选通y7,置y7为0.
s=data_buf;//传送过来,需要在数码管上显示的数字
for(i=0;i<8;i++)//一位一位传,共传八次,
{
dat=s&0x01;//P0.0需要传的数据
*reg_add=dat;//把需要传的数据写入0XE0地址中,是不是在写的时候,WR时钟就自动置0 了?
s=s>>1;
}
}//这样DIS_CLK就可以从低到高变化,164就能移动数据了?
请大神帮忙分析下,程序是有错的。下面是电路图
不错。值得学习!