目录

一、资源说明

二、基本参数

1、参数

LCD1602模块

PCA8574 模块(IIC)

2、引脚说明

LCD1602

PCA8574 模块(IIC)

3、LCD1602并行V0接线

4、PCA8574 原理图

三、通信协议说明

1、LCD1602 并行时序

时序:

写命令代码:

写数据代码:

2、PCA8574 IIC时序

起始与停止时序:

起始信号程序:

停止信号程序:

3、写数据与等待应答时序

写时序:

应答时序:

写一个字节与等待应答程序:

四、部分代码说明

接线说明

1.1、STC89C52RC+LCD1602模块

1.2、STC89C52RC+PCA8574 模块(IIC)

1.3、STM32F103C8T6+LCD1602模块

1.4、STM32F103C8T6+PCA8574 模块(IIC)

五、基础知识学习与相关资料下载

六、视频效果展示与程序资料获取

七、项目所有材料清单

八、注意事项

九、接线表格


一、资源说明

单片机型号

测试条件

模块名称

代码功能

STC89C52RC

1.晶振11.0592M

LCD1602模块

PCA8574 模块(IIC)

  1. LCD1602字符滚动显示(8位并行)
  2. LCD1602字符滚动显示(IIC)PCA8574 模块驱动

STM32F103C8T6

  1. 晶振8M
  2. 系统时钟72M

LCD1602模块

PCA8574 模块(IIC)

二、基本参数

1、参数

LCD1602模块

模块分3.3V版本和5V版本 实际项目建议选和单片机电平对应版本

PCA8574 模块(IIC)

2、引脚说明

LCD1602

LCD1602模块

引脚说明

VSS

GND引脚接电源地,如果外接电源,一般必须共地

VDD

VCC电源引脚,根据版本接5V或3.3V

V0

LCD 驱动电压输入端

RS

指令/数据选择信号

RW

读写选择信号

E

使能信号

DB0

数据 0

DB1

数据 1

DB2

数据 2

DB3

数据 3

DB4

数据 4

DB5

数据 5

DB6

数据 6

DB7

数据 7

A

LED+  5V或3.3V

K

LED-  GND

                PCA8574 模块(IIC)

PCA8574 模块

引脚说明

GND

GND引脚接电源地,如果外接电源,一般必须共地

VDD

VCC电源引脚,根据版本接5V或3.3V

SCL

串行时钟线

SDA

串行数据线

3、LCD1602并行V0接线

VCC和GND不分方向 但是中间一定接VO

        4、PCA8574 原理图

三、通信协议说明

1、LCD1602 并行时序

时序:

写命令代码:

void LcdWriteCom(uint8_t com)   //写入命令{LCD1602_E = 0;     //使能LCD1602_RS = 0;    //选择发送命令LCD1602_RW = 0;    //选择写入LCD1602_DATAPINS = com;     //放入命令DelayMs(1); //等待数据稳定LCD1602_E = 1;           //写入时序DelayMs(5);   //保持时间LCD1602_E = 0;}

写数据代码:

void LcdWriteData(uint8_t dat) //写入数据{LCD1602_E = 0; //使能清零LCD1602_RS = 1; //选择输入数据LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = dat; //写入数据DelayMs(1);LCD1602_E = 1;   //写入时序DelayMs(5);   //保持时间LCD1602_E = 0;}

        2、PCA8574 IIC时序

起始与停止时序:

起始信号程序:

void I2cStart()
{SDA=1;SCL=1;Delay10us();//建立时间是SDA保持时间>4.7usSDA=0;Delay10us();//保持时间是>4usSCL=0;          Delay10us();
}

停止信号程序:

void I2cStop()
{SDA=0;SCL=1;Delay10us();//建立时间大于4.7usSDA=1;Delay10us(); }

3、写数据与等待应答时序

写时序:

应答时序:

写一个字节与等待应答程序:

unsigned char I2cSendByte(uint8_t dat)
{uint8_t a=0,b=0;//最大255,  for(a=0;a<8;a++)//要发送8位,从最高位开始{SDA=dat>>7;   //起始信号之后SCL=0,所以可以直接改变SDA信号dat=dat<<1;Delay10us();SCL=1;Delay10us();//建立时间>4.7usSCL=0;Delay10us();//时间大于4us        }SDA=1;Delay10us();SCL=1;Delay10us();while(SDA)//等待应答,也就是等待从设备把SDA拉低{b++;if(b>200)     //如果超过2000US没有应答发送失败,或者为非应答,表示接收结束{//SCL=0;Delay10us();return 0;}}SCL=0;Delay10us();return 1;
}

四、部分代码说明

接线说明

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

1.1、STC89C52RC+LCD1602模块

#define LCD1602_DATAPINS P0
sbit LCD1602_RS=P2^0;
sbit LCD1602_RW=P2^1;
sbit LCD1602_E=P2^2;

1.2、STC89C52RC+PCA8574 模块(IIC)

sbit SCL=P1^0;sbit SDA=P1^1;

1.3、STM32F103C8T6+LCD1602模块

void LCD1602_GPIO_Config(void)
{       /*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED相关的GPIO外设时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);//LCD_RS引脚初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);   //LCD_RW引脚初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_Init(GPIOB, &GPIO_InitStructure);//LCD_E引脚初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_Init(GPIOB, &GPIO_InitStructure);//D0-D7引脚初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_Init(GPIOA, &GPIO_InitStructure); }

1.4、STM32F103C8T6+PCA8574 模块(IIC)

#define PCF8574_SCL_GPIO_PORT     GPIOB               /* GPIO端口 */#define PCF8574_SCL_GPIO_CLK     RCC_APB2Periph_GPIOB /* GPIO端口时钟 */#define PCF8574_SCL_GPIO_PIN GPIO_Pin_6         #define PCF8574_SDA_GPIO_PORT     GPIOB               /* GPIO端口 */#define PCF8574_SDA_GPIO_CLK     RCC_APB2Periph_GPIOB /* GPIO端口时钟 */#define PCF8574_SDA_GPIO_PIN   GPIO_Pin_7        

五、基础知识学习与相关资料下载

  1. STC89C52RC程序下载      直戳跳转
  2. STM32F103C8T6程序下载
    1. 串口下载                    直戳跳转
    2. ST-LINK下载              直戳跳转
    3. J-LINK下载                 直戳跳转
    4. DAP-LINK下载            直戳跳转

六、视频效果展示与程序资料获取

视频连接                直戳跳转

程序资料获取         直戳跳转

七、项目所有材料清单

STC89C52RC驱动方案

图片

STM32F103C8T6驱动方案

图片

备注

K_A04_001

STC89C52RC系统板X1

STM32F103C8T6系统板X1

1、STM32系统板两根Micro USB线一根用于J-LINK下载器,另一根用于给系统板供电

2、杜邦线建议不用太长的

LCD1602模块X1

LCD1602模块X1

PCF8574模块

PCF8574模块

16P排母2.54MMX1

16P排针2.54MMX1

16P排母2.54MMX1

16P排针2.54MMX1

Micro USB线X1

Micro USB线X2

母母杜邦线X16

母母杜邦线X16

10K电位器 103 10K电位器即可

10K电位器

103 10K电位器即可
J-LINK下载器

八、注意事项

  1. VCC GND请勿接反,接反易烧
  2. 显示异常时,排除接线接触不良
  3. 下载后无显示可调整电位器到合适位置
  4. IIC转接板使用时 单片机复位后异常 需要断电重启才可 逻辑分析仪看波形无异常 具体原因未知  如有想法 欢迎一起交流。

九、接线表格

单片机型号

模块

对应引脚(上:模块引脚 下:单片机引脚)

STM32F103

C8T6

LCD1602模块

VSS

VDD

VO

RS

RW

E

D0

D1

GND

5V

电位器

PB0

PB1

PB2

PA0

PA1

D2

D3

D4

D5

D6

D7

A

K

PA2

PA3

PA4

PA5

PA6

PA7

3.3V

GND

PCF8574模块

GND

VCC

SCL

SDA

5V

GND

PB6

PB7

STC89C52RC

LCD1602模块

VSS

VDD

VO

RS

RW

E

D0

D1

GND

5V

电位器

P2.0

P2.1

P2.2

P0.0

P0.1

D2

D3

D4

D5

D6

D7

A

K

P0.2

P0.3

P0.4

P0.4

P0.6

P0.7

5V

GND

PCF8574模块

VCC

GND

SCL

SDA

5V

GND

P1.0

P1.1

K_A04_001 基于单片机驱动LCD1602字符滚动显示(8位并行+IIC通信)相关推荐

  1. 【proteus仿真】单片机汇编+74xx595驱动8X8点阵滚动显示

    [proteus仿真]单片机汇编+74xx595驱动8X8点阵滚动显示 Proteus仿真 汇编代码(.asm) ORG 00HJMP MAINORG 0BHLJMP INTS_T0ORG 30H M ...

  2. 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】

    1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...

  3. keil c语言 1602时钟代码,基于单片机的LCD1602电子时钟设计.doc

    基于单片机的LCD1602电子时钟设计 设计任务和目的 1.1.设计任务 (1):用单片机设计基于LCD1602的电子时钟,显示时间和日期: (2):误差精度控制在1s/天: (3):具有时间和日期的 ...

  4. 51单片机驱动——LCD1602

    51单片机驱动--LCD1602 1.描述 51单片机控制LCD1602屏幕显示测量数据.固定字符串等,大家复制过去可以直接使用,相关注释我已标明. 2.子文件 LCD1602.c #include ...

  5. 基于单片机声音分贝采集和显示控制系统设计(毕业设计资料)

    016[毕设课设]基于单片机声音分贝采集和显示控制系统设计,实时检测声音分贝大小,并可以通过手动设定分贝报警范围,当超过设定范围时则发生声光报警.包括的电路有声光报警电路,传感器采集电路,显示电路,温 ...

  6. 基于单片机串口远程多路温湿度采集仿真-基于单片机ADC0809八路电压采集系统设计-基于单片机16x32点阵多模式显示仿真设计-基于单片机餐厅呼叫控制系统仿真设计-基于STM32单片机的智能水杯设计

    1220基于单片机ADC0809八路电压采集系统设计-毕设课设资料 数码管显示,测量八路电压表. #define addo (5.0/255.0) #define zero 0.005 //用于校准A ...

  7. 51单片机+驱动LCD1602模板范例+Proteus仿真

    51单片机+驱动LCD1602模板范例+Proteus仿真 本示例可以作为驱动LCD1602屏幕模板来调用或使用,方便移植到其他需要使用到LCD1602显示上的工程项目当中.所以示例不涉及过多其他的代 ...

  8. STC单片机驱动WS2812不同颜色变化显示

    STC单片机驱动WS2812不同颜色变化显示

  9. c51时钟数码管显示流程图_基于单片机89C51的数码管显示时钟设计.doc

    基于单片机89C51的数码管显示时钟设计 基于单片机的数字时钟 摘 要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉.但是却很少知道它的内部结构以及工作原理.由单片 ...

最新文章

  1. android 安装 apk 7.0,android 7.0及以上版本安装apk
  2. 大数据精准营销:买水培栀子花该推送啥
  3. K8S集群的搭建:环境准备及相关命令
  4. C#发送Email邮件方法总结
  5. min—width的使用
  6. 《Essential C++》笔记之(static)静态类成员
  7. linux下 java 压缩文件夹,java压缩文件夹linux下乱码问题
  8. mysql连网安装和断网安装的区别_Linux 断网安装MySQL5.x操作步骤
  9. list 如何判空以及为什么
  10. 微软创投加速器最新成果展示:人工智能技术杀入时尚界
  11. 基础光照-Phong 光照模型
  12. 概率论与数理统计--笔记
  13. 写给父亲的语音计算器(位图的加载,忽然领悟了资源编译器的加载c#,五)
  14. Latex中自动引用参考文献的方法,一分钟搞定
  15. Thingsboard源码安装
  16. 好玩的Matlab 3D心形代码
  17. 某大学:今年考研报名人数上涨40%
  18. 中国计算机软件行业分析7---软件产业发展建议
  19. js转换时间戳一直转换成1970的解决方法
  20. iText输出中文的三种字体选择方式

热门文章

  1. ora-04030 进程内存不足解决方案
  2. WordPress主题-B2美化通用子主题商业运营版
  3. SEO之基于thinkphp的URL伪静态
  4. 非标常用焊接工艺应用
  5. SQL Server 2008 R2 RTM 中文版 序列号(转)
  6. 【数学建模】基于matlab SIR模型新冠病毒COVID-19估计【含Matlab源码 2042期】
  7. python循环控制--for-else循环
  8. 转载:Joel Spolsky: 创业公司如何公平分配股权?
  9. 数字信号处理matlab卷积函数conv,filter函数详细介绍三秒钟就看懂。
  10. 计算机启动报警,我台式电脑开机报警四声什么問題?