标题: 单片机串口控制74HC595的问题 [打印本页]

作者: Zzwh    时间: 2023-2-6 10:54
标题: 单片机串口控制74HC595的问题
我想通过串口来控制595,发送一个data(0x01)控制一个IO后,再发送一个data(0x02)控制另一个IO,不影响前一个IO的状态,这个data要和前一个data怎么处理来实现单独控制某个IO口

作者: munuc_w    时间: 2023-2-6 13:46
置1:0x01|0x02
清零:0x03&0x20 或 0x03&0x01
作者: xianfajushi    时间: 2023-2-6 14:23
在不清零情况下送(0x01)2次,按二进制串的方式控制。
作者: Zzwh    时间: 2023-2-6 15:39
xianfajushi 发表于 2023-2-6 14:23
在不清零情况下送(0x01)2次,按二进制串的方式控制。

不清零情况下发两次0x01,就是第1 IO口发生了高低电平转换嘛,
作者: wufa1986    时间: 2023-2-6 15:51
把前一个值和第二个值|运算一下再发送即可,按你的第一次发0x01,第二次就要0x01|0x02=0x03,再发就要0x03|xx
作者: coody_sz    时间: 2023-2-6 16:02
程序中用一个字节,8位对应8个输出,每次操作这个字节再刷新595即可。
作者: Zzwh    时间: 2023-2-6 16:05
wufa1986 发表于 2023-2-6 15:51
把前一个值和第二个值|运算一下再发送即可,按你的第一次发0x01,第二次就要0x01|0x02=0x03,再发就要0x03|xx

这个 | 我想的是,那我再发0x01拉低,0x03|0x01不行呀
作者: wulin    时间: 2023-2-6 17:19
Zzwh 发表于 2023-2-6 16:05
这个 | 我想的是,那我再发0x01拉低,0x03|0x01不行呀

        Data|=0x01;//最低位写1,其它位不变
        Data|=0x02;//第2位写1,其它位不变
        Data&=0xfe;//最低位写0,其它位不变
作者: 君工创    时间: 2023-2-6 20:47
第一次输入0x01,低位输出1,第二次想输入0x02,第二位输出1,但又希望第一次的低位1不变,就要0x01|0x02,再输入。或者直接输入0x03.
作者: lkc8210    时间: 2023-2-6 21:40


作者: XLinliY.Zhang    时间: 2023-2-6 22:59
创建一个uint8_t储存当前输出值,通过位操作修改这个变量,最后输出给595就可以了
作者: xianfajushi    时间: 2023-2-7 08:25
Zzwh 发表于 2023-2-6 15:39
不清零情况下发两次0x01,就是第1 IO口发生了高低电平转换嘛,

是不是不受影响,这要看电路和代码配合.


作者: Zzwh    时间: 2023-2-7 08:57
wulin 发表于 2023-2-6 17:19
Data|=0x01;//最低位写1,其它位不变
        Data|=0x02;//第2位写1,其它位不变
        Data&=0xfe;//最低位写0, ...

好的谢谢
作者: Zzwh    时间: 2023-2-7 08:58
munuc_w 发表于 2023-2-6 13:46
置1:0x01|0x02
清零:0x03&0x20 或 0x03&0x01

好的谢谢
作者: Zzwh    时间: 2023-2-7 10:47
xianfajushi 发表于 2023-2-7 08:25
是不是不受影响,这要看电路和代码配合.

好的我看看




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