单片机初学者,求老师写一个74hc595控制两个数码管或流水灯的简单程序,参考参考,真心不懂该怎么

2025-03-12 17:38:43
推荐回答(2个)
回答1:

既然要用到74hc595,那么就要写一个595的驱动程序,以便后面的操作简单化。

sbit hc595_si  =P2^5;   //数据引脚
sbit hc595_sck =P2^4;   //移位寄存器
sbit hc595_rck =P2^7;   //输出寄存器
/*************595驱动*********************/
void HC595(unsigned char ch)
{
    unsigned char i;
    for (i = 0; i < 8; i++)
    {
        hc595_si = (ch & 0x80);    //取写入数据的最高位送入595的数据引脚
        ch <<= 1;      //相当于ch = ch << 1; 数据左移1位,低位往高位移  
        hc595_sck=0;   //送到移位寄存器
        hc595_sck=1;
    }
    hc595_rck=0; 
    hc595_rck=1;//输出数据
}

做完这些,接下来只需要往595里写数据就可以了,例如:HC595(0xfe); 则595芯片的Q0(最低位)输出端为“0”。可用仿真软件尝试一遍便知效果。

回答2:

#include
#include
sbit sh_cp=P2^0;
sbit ds=P2^1;
sbit st_cp=P2^2;
void datout(unsigned char dat)
{
unsigned char i,temp;
temp=dat;
for(i=0;i<8;i++)
{
temp=temp<<1;
sh_cp=0;
ds=CY;
sh_cp=1;
}
st_cp=0;
st_cp=1;
}
void main(void)
{
unsigned char LED=0xfe,i;
while(1)
{
for(i=0;i<8;i++)
{
datout(LED);
LED=_crol_(LED,1);
}
}
}
流水灯
没测试,应该能通过