标题: 请教使用74HC164驱动数码管的问题 [打印本页]

作者: xiabing0633    时间: 2013-7-8 15:26
标题: 请教使用74HC164驱动数码管的问题
#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晚送电一会,就正常了。请教啊


作者: xiabing0633    时间: 2013-7-9 08:28
有指导的吗
作者: ahshmj    时间: 2013-7-9 09:39
各器件自身的上电稳定时间不同,开机时加点延时,然后再送显示信息。
作者: Who_am_I?    时间: 2013-7-9 10:47
void main()
{               
               
                dwlr=0;
                dwlr=1;
DS =0;                   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);


}

作者: Who_am_I?    时间: 2013-7-9 10:47
试一下,吧

作者: xiabing0633    时间: 2013-7-9 14:20
谢谢指点
作者: xiabing0633    时间: 2013-7-11 07:29
不行还是会乱,
作者: liuzhaoxin1020    时间: 2017-2-17 13:42
开机时加延时时间长一点再送内容




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1