单片机怎样把8位的数据写入74HC595寄存器里(c语言)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机怎样把8位的数据写入74HC595寄存器里(c语言)相关的知识,希望对你有一定的参考价值。
程序里的那句 de=dat&0x80 是什么意识,有什么用,为什么要‘与’一下,
595写入数据
void putchar(unsigned char dat)
unsigned char m;
for(m=0;m<8;m++)
shcp=0;
ds=dat&0x80;
shcp=1;
dat=dat<<1;
首先,要写入的数据dat,是8位二进制数,dat&0x80;是取dat的最高位,送到数据线ds上
然后,dat=dat<<1;dat左移一位,接着输出下一位 参考技术A 0x80H=1000 0000 B
dat&0x80就相当于只判断dat当前的最高位是否为1,其他位全为0,然后放入DS 8位寄存器中
我查了一下reg51.h 头文件 没有发现DS寄存器的定义。
这个for循环8次后就相当于把dat的最低位赋值给了DS的最高位,其他位全为0. 参考技术B 如果从高位数第二位有值(1)则保留,为零就舍弃,其它位全部置零
这只是从字面形式解释
这类的东西把十六进制数转换成二进制数串比较好理解 参考技术C ds应当是某个管脚的定义。595是移位寄存器,因此程序中按串行输出,从高到低依次输出dat中的各个位。 参考技术D 金葵花
单片机芯片之(74HC595/74LS595)
一、仅用一个74HC595驱动四位甚至更多的数码管
在数码管上要显示同一个数字可以用静态显示,当数码管要显示不同数字时就用到动态显示。
14脚:DS(SER),串行数据输入引脚
13脚:OE, 输出使能控制脚,它是低电才使能输出,所以接GND
12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。
11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。
10脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可。
9 脚 :串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。
Qx:并行输出引脚
以上是关于单片机怎样把8位的数据写入74HC595寄存器里(c语言)的主要内容,如果未能解决你的问题,请参考以下文章
74hc595存储寄存器引脚是否可以悬空?他的原理是否让数据暂停?
基于51单片机定时器计数+74HC595移位寄存器+8位数码管时钟