51单片机74HC595驱动LCD1602扩展IO口
一般我们用51驱动LCD1602的时候会选择P0口连接LCD1602的D0~D7,和另外三个IO控制RS,RW和EN。
只是驱动一个1602就占用了11个IO口。 而如果我们把1602的D0~D7用一个8位并行输出的芯片来传输数据不就节省了一部分IO口吗?
74HC595
74HC595是一个8位串行输入、并行输出的位移缓存器。
proteus仿真使用图如下

74HC595与单片机相接只需三条线。Q0~Q7与1602的 D0–D7相接。
DS是74HC595的8位数据串行输入端。SH_CP的8位串行数据输入的时钟线,在上升沿时把数据送到74HC595。当把数据传输完时,给ST_CP一个上升沿数据就从Q0–Q7并行输出。
74HC595的51驱动程序
/* 74HC595的51驱动程序 */
#include "reg52.h"
#include <intrins.h>
sbit SH_CP = P2^0;
sbit DS = P2^1;
sbit ST_CP = P2^2;
//74HC595驱动程序
void HC595_Data(u8 sum)
{
u8 k;
_nop_();
ST_CP = 0;
for(k=0;k<8;k++)
{
SH_CP = 0; //先把SH_CP引脚拉低
DS = (sum&0x80); //取高位
SH_CP = 1;
sum<<= 1; //数据左移1位,把sum由高到低一位一位传输给74HC595
}
ST_CP = 1; //给ST_CP一个上升沿,把数据并行输出
}
void main()
{
HC595_Data(0x15); //让74HC595输出 0001 0101
while(1)
{
}
}

单独驱动74HC595的程序已经写好。那接下来就是驱动LCD1602了。
proteus仿真电路图如下

接下来废话不多说直接上程序

本文介绍如何使用51单片机通过74HC595驱动LCD1602液晶显示器,有效减少IO口占用,提供详细程序代码与Proteus仿真电路。
最低0.47元/天 解锁文章
1105

被折叠的 条评论
为什么被折叠?



