目录
1.2、STC89C52RC+PCA8574 模块(IIC)
1.4、STM32F103C8T6+PCA8574 模块(IIC)
单片机型号 | 测试条件 | 模块名称 | 代码功能 |
STC89C52RC | 1.晶振11.0592M | LCD1602模块 PCA8574 模块(IIC) |
|
STM32F103C8T6 |
| LCD1602模块 PCA8574 模块(IIC) |
模块分3.3V版本和5V版本 实际项目建议选和单片机电平对应版本
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 模块 | 引脚说明 |
GND | GND引脚接电源地,如果外接电源,一般必须共地 |
VDD | VCC电源引脚,根据版本接5V或3.3V |
SCL | 串行时钟线 |
SDA | 串行数据线 |
VCC和GND不分方向 但是中间一定接VO
- 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;
-
- }
- void I2cStart()
- {
- SDA=1;
- SCL=1;
- Delay10us();//建立时间是SDA保持时间>4.7us
- SDA=0;
- Delay10us();//保持时间是>4us
- SCL=0;
- Delay10us();
- }
- void I2cStop()
- {
- SDA=0;
- SCL=1;
- Delay10us();//建立时间大于4.7us
- SDA=1;
- Delay10us();
-
- }
- 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.7us
- SCL=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要自定义引脚的话也要注意引脚时钟使能的更改
- #define LCD1602_DATAPINS P0
- sbit LCD1602_RS=P2^0;
- sbit LCD1602_RW=P2^1;
- sbit LCD1602_E=P2^2;
- sbit SCL=P1^0;
-
- sbit SDA=P1^1;
- 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);
-
-
- }
- #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
视频连接 直戳跳转
资料获取 ( 滑到最后添加群号看公告免费获取)
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下载器 |
单片机型号 | 模块 | 对应引脚(上:模块引脚 下:单片机引脚) | |||||||
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 |