串行通信是1位1位地传输,并行通信是8(16、32)位一起传输。不是很恰当的比喻,上楼,走楼梯大家要排队上;坐电梯就可以好几个人一起上。那么,串行通信转并行就是要有一个电梯,装载到一定的人数一起上楼。 74HC595就是一个“电梯”,它有标准的串行(SPI)输入接口,输出是8位并行接品和一个1位串行接口。这个小集成块的用途还是很广的,街上的LED点阵屏上就有很多。 本帖分三部分: 一、器件介绍 二、SPI转PARALLEL点亮并行接口的LCD 三、测试M328测试仪使用并行接口的LCD ************************************* 第一部分:74HC595介绍 1、结构原理 这个网上有很多,这里稍微点一下:管脚、真值表 内部功能 功能框图 2、时序 用仿真可以更好理解 动图 作为串行转并行,常用的是OE脚接地,8个SCK脉冲(串入)后,1个RCK脉冲(并行)输出, 就变成下面的时序了 3、驱动8段LED数码管 先仿真 74HC595用转接板,OE直接接地 接法如下 成功 下面是8段LED数码管的段位表,分共阴和共阳
******************************************** 第二部分:使用SPI串行输出点亮并行接口的LCD 买了LCD接口转接板,有等货的时间,先仿真测试 并口情况如下 串口(SPI)情况如下 串转并的情况如下 转接板到了 电路如下、 测试正常 下面进入正题 1、使用74C595将LCD并行接口转换成SPI接口 SPI转PARALLEL电路如下 2、使用原SPI程序点亮LCD的程序测试点亮并行LCD 串行(SPI)通信算上控制线也只用了8个端口,而并行通信共需要13个端口。 接法电路
速度也不慢 3、时序情况 挂上逻辑分析仪 采数据 对程序中这几的时刻时行分析 4、对并行LCD的状态显示进行测试 通过数据分析,可能控制状态行的显示 这个时分的7段显示,第一位和第二位在发送数据时还不是一样的顺序。 状态行的控制情况如下
************************************************** 第三部分:将并转串的LCD在M328晶体管测试仪上做进一步测试 在M328晶体管测试仪的说明上,可以使用并口的屏,但用的是ST7108的主控 而使用ST7565的主控接口是下面这样 1、解决控制的问题 M328的时序 一组(8bit)数据传输的情况 在最后1bit数据后,CS有一个小的延时才上升,能不能用这个上升沿作为74HC595的RCK上升沿? 先用程序测试一下 对于并行的LCD,还需要一个写信号WE,将并行数据写入到LCD里, 这个WE是上升沿有效的,又有一个设想 在Arduino10脚SS的上升沿使74HC595输出并行数据后,再延时一段时间,延时后的上升沿作为LCD的WE上升沿。 接线如下 整体接线,挂逻辑分析仪是件痛苦的事! 下图是1K电阻延时后的时序 下图是3K3电阻延时后的时序 为什么只用电阻就可以呢? 原因是线太多,还有逻辑分析仪,分布参数中的电容就达到要求了。 测试后发现,有逻辑分析仪时只用1K就可以 直接换上M328时行测试,结果是不显示 抓数据吧,好像有点竞争冒险 改用3K3电阻 这回有时差了,并行数据也正常 但M328用并口LCD还是不显示,一度以为自己弄坏了,还挂上SPI串口屏测试,正常。 在延时电路上又试了不同阻容组合,就是不显示! 困扰了几个小时后,进行LCD初始化数据分析,发现了问题 下图是我在程序中初始化LCD的各值 下图是M328初始化LCD时的各个值 对于ST7565主控的LCD,内部电阻比用的不一样,又用程序测试了一下, 对于这个并口LCD,电阻比使用24、25都是不显示(其实是看不见)的。 要想让M328使用这个并口屏,只能是重新编译了 2、重新编译M328的程序 找到makefile,更改参数。这个参数说明已经说的比较清楚了 编译好后,下载到测试板上,再抓数据 已经是26了 LCD也显示了 现场是这样的 3、关于延时 对于M328的延时,由于使用的是分立测试,不一定准确 主要使用了两种 延时不当时如下图 正确延时十分重要 这部分的电路如下 由于没有背光,所以看起来很暗 本帖完!
祝各位坛友们周末快乐!
|