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

单片机初学者,求老师写一个74hc595控制两个数码管或流水灯的简单程序,参考参考,真心不懂该怎么,第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”。可用仿真软件尝试一遍便知效果。

用两片595,需要级联,上片控制段选,下片位选。ST-CP存储时钟,在每个上升沿将移位寄存器数据存储至存储寄存器。SH-CP移位时钟,也是在每个上升沿将14脚即串行数据输入脚移至移位寄存器。注意:首先写入数据的最高位

用两片595,需要级联,上片控制段选,下片位选。ST-CP存储时钟,在每个上升沿将移位寄存器数据存储至存储寄存器。SH-CP移位时钟,也是在每个上升沿将14脚即串行数据输入脚移至移位寄存器。

注意:首先写入数据的最高位

你的这个不是乱码就有问题了!~

你仔细理解一下这段

void wr595(uchar dat)

{

uchar a;

for(a=8;a>0;a--)

{

SH_CP=0;

DS=dat&0x80;

dat<<=1;

SH_CP=1;

_nop_();

_nop_();

SH_CP=0;

_nop_();

_nop_();

SH_CP=1;

}

}

你的for循环是有问题的

以为你的每个字节移了多次

所以就乱码了

void wr595(uchar dat)

{

uchar a;

for(a=8;a>0;a--)

{

SH_CP=0;

DS=dat&0x80;

dat<<=1;

SH_CP=1;

_nop_();

_nop_();

}

}

你看看下面的

去掉一个

以上就是关于单片机初学者,求老师写一个74hc595控制两个数码管或流水灯的简单程序,参考参考,真心不懂该怎么全部的内容,包括:单片机初学者,求老师写一个74hc595控制两个数码管或流水灯的简单程序,参考参考,真心不懂该怎么、如何使用74HC595控制数码管、单片机怎么控制74HC595进行数码管显示0~99!如果C详细代码无上感谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9297992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存