51单片机74HC595驱动LCD1602扩展IO口

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

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仿真电路图如下
在这里插入图片描述
接下来废话不多说直接上程序

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值