如果说修改代码也不会或懒得去修改能用我的595驱动函数?当然可以了,那就要多做一步把十六进制数据转十进位制数即可直接调用我十进位制处理的驱动函数了,进制转换有2种方法,一种慢的,一种快的比使用位移7再位移1的处理方法更快. |
刚好有另外的提问,一并做了个实例,一并回复,我给的连接595驱动中的十进制转化代码注释掉,用十六进制的代码替换即可.
这是2片级联完成的运行 ![]() |
xianfajushi 发表于 2021-4-20 13:57 http://www.51hei.com/bbs/dpj-205491-1.html能帮我看看这样写可以么?感谢 ![]() |
laopihappy123 发表于 2021-4-20 15:21 也就是说lcd1602的rw,rs,en也都连在一起是么?想单独控制每个屏幕显示的话en要分成三条线么?还是连在一起没有影响? ![]() |
建议级联,3个595 控制线2根 数据线一根 然后3个lcd的三根控制线连在一起 总共也只要6根线 |
按道理是可以的。 |
我觉得这样电路不如级联好,级联写一个函数即可,一次连续发三个数据,数据发完成后同时控制,也能节省IO口,程序写得也省事,分开没什么优势同样也需要发3次且代码写得也相对复杂点,当然这样电路形式不是不能写,只是我觉得相对显得比较麻烦,IO口也用的较多。 |
kmsj 发表于 2021-4-20 12:14 学校课程设计的内容 ![]() |
birdzhyli 发表于 2021-4-20 11:59 en口是分别接的,不知道能不能行 |
实在搞不清楚为什么要搞三个1602同时显示?不能搞个大一点的液晶?![]() ![]() 我有现成的两片CD4094扩展出来的1602显示+74HC165+融合的6个感应开关,一共用了7个I/O口,我做这个板是为了减少I/O口,方便和我的实验板连接,由于只需要一片,热转印做成单面就了事了,不想去打样。压根没有想过要扩两个以上的1602,那也不难啊,一片1602有11个I/O口,三个就是33个,4片4094是32个O口,只差一个,有点尴尬,那就再借用一个单片机的I/O口,也就是是5个单片机I/O口+4片4094就可以扩展出3个1602,但是,布线麻烦,建议每两片4094扩展一个1602,做出来的电路板是一模一样的,三个电路板串联起来就搞定,就是串联8个10个1602也没有问题,仅仅只需要4个I/O口。595没有用过,看了管脚排列,工作原理和4094差不多,只是布线更容易一些,595的速度更快一些,不管是用4094还是595,和1602的连接没有必要一一对应,数据在程序里调整,在原理图里调整出PCB的最佳走线,编程也简单,三个1602端的rs rw en加上8位数据,一共凑成6个8位数据,只管往595里面发送就是了,发完以后使能数据并行输出,比如要改变rs rw en或者8位数据,每改变一个,就发送一次,1602的D7不必检测,和D0-D6一样用就可以,51单片机不要用移位的方法编程,尽量用位操作,加快595的移位速度,每个1602单元的电路板很小,绝对不超过10×10,可以打来5个样串联5片1602,只要先编出一片的程序,5片8片10片都没有问题。IIC也是个好主意,6个I/O口显示三片1602,只是速度可能更慢一些。 |
3个LCD都接同样的3个口,有问题没有?我昨天插着LCD的时候点亮和它在一起接的LED灯是点不亮的,插掉LCD就可以点亮LED灯,我感觉相互之间可能会有影响,具体原因我也不清楚 |
xianfajushi 发表于 2021-4-20 08:36 你好,我这自己编写了一个程序,但是不知道哪里的问题,三个显示屏都显示不出来,您有时间的话能帮我看下么? ![]() |
xianfajushi 发表于 2021-4-20 08:36 C:\Users\向阳星Young\Desktop |
用IIC的1602吧,三个1602 只要6个IO就够用了 |
锁存器无论是并行的还是串行的都是一样道理,不过是数据传输方法不同罢了。1602控制方法也有很多变化,看电路要如何设计,可并可分主要看IO口是否够用还是要扩展等等,电路确定了才能决定编写程序。 |