加个模块实现IIC方式驱动LCD1602.docx
- 文档编号:23187965
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:8
- 大小:397.63KB
加个模块实现IIC方式驱动LCD1602.docx
《加个模块实现IIC方式驱动LCD1602.docx》由会员分享,可在线阅读,更多相关《加个模块实现IIC方式驱动LCD1602.docx(8页珍藏版)》请在冰豆网上搜索。
加个模块实现IIC方式驱动LCD1602
加个模块,实现IIC驱动LCD1602
PCF8574模块使实现IIC驱动LCD1602成为现实。
下图是PCF8574模块与1602的连接电路图:
实物接法如下:
想要使用PCF8574模块来实现IIC驱动LCD1602,首先非常必要弄清楚IIC的时序、PCF8574设备地址、四线控制LCD1602方法。
下面是两个重要的h文件。
通过修改这两个h文件中的部分代码(接线有所不同)即可移植到你的程序中去。
PCF8574.h程序:
sbitscl=P1^6;
sbitsda=P1^7;
voiddelay()//
{;;}
voidinit()//IIC初始化
{
sda=1;
delay();
scl=1;
delay();
}
voidstart()//IIC开始信号
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
voidstop()//IIC停止
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
voidrespons()//IIC应答
{
uchari;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}
voidwrite_byte(uchardate)//IIC写入数据
{
uchari,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
ucharread_byte()//IIC读取字节
{
uchari,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
returnk;
}
voidwrite_add(uchardate1)//写入数据到IO
{
start();
write_byte(0x7e);//8574设备地址(写)
respons();
write_byte(date1);
respons();
stop();
}
ucharread_add()//向IO读取数据
{
uchardate1;
start();
write_byte(0x71);//8574设备地址(读)
respons();
date1=read_byte();
respons();
stop();
returndate1;
}
PCF8574+LCD1602_4.h程序:
voiddelay1(ucharx)
{
uchara,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
voidwrite_com(ucharcom)//写命令函数
{ucharcom1,com2;
com1=com|0x0f;
write_add(com1&0xfc);
delay1
(2);
write_add(com1&0xf8);
com2=com<<4;
com2=com2|0x0f;
write_add(com2&0xfc);
delay1
(2);
write_add(com2&0xf8);
}
voidwrite_date(uchardate)//写数据函数
{
uchardate1,date2;
date1=date|0x0f;
write_add(date1&0xfd);
delay1
(2);
write_add(date1&0xf9);
date2=date<<4;
date2=date2|0x0f;
write_add(date2&0xfd);
delay1
(2);
write_add(date2&0xf9);
}
voidinit_lcd()//初始化函数
{
write_com(0x33);//显示模式设置
delayms(6);
write_com(0x32);//显示模式设置
delayms(6);
write_com(0x28);//4位总线,双行显示,显示5×7的点阵字符
delayms(6);
write_com(0x01);//清屏
delayms(6);
write_com(0x06);//字符进入模式:
屏幕不动,字符后移
delayms(6);
write_com(0x0c);//显示开,关光标
//write_LCD_Command(0x0f);//显示开,开光标,光标闪烁
delayms(6);
}
//显示字符串:
第x行第y列显示什么内容
voidShowString(unsignedcharx,unsignedchary,unsignedchar*str)
{
//设置起始位置
if(x==1)
{
write_com(0x80|y-1);//|相当于加法
}
if(x==2)
{
write_com(0xc0|y-1);
}
//输出字符串
while(*str!
='\0')
{
write_date(*str);
str++;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块 实现 IIC 方式 驱动 LCD1602