lSTM32F103RCT6调用Lcd1602代码
时间: 2023-10-03 12:07:00 浏览: 49
以下是使用STM32F103RCT6驱动LCD1602的代码示例:
```
#include "stm32f10x.h"
#include "delay.h"
#define RS_H GPIO_SetBits(GPIOB, GPIO_Pin_12)
#define RS_L GPIO_ResetBits(GPIOB, GPIO_Pin_12)
#define RW_H GPIO_SetBits(GPIOB, GPIO_Pin_13)
#define RW_L GPIO_ResetBits(GPIOB, GPIO_Pin_13)
#define E_H GPIO_SetBits(GPIOB, GPIO_Pin_14)
#define E_L GPIO_ResetBits(GPIOB, GPIO_Pin_14)
void LCD_WriteByte(uint8_t data) {
GPIOB->ODR = (GPIOB->ODR & 0x00FF) | (data << 8);
E_H;
delay_ms(1);
E_L;
delay_ms(1);
}
void LCD_WriteCmd(uint8_t cmd) {
RS_L;
RW_L;
LCD_WriteByte(cmd);
}
void LCD_WriteData(uint8_t data) {
RS_H;
RW_L;
LCD_WriteByte(data);
}
void LCD_Init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
delay_ms(20);
LCD_WriteCmd(0x38);
delay_ms(5);
LCD_WriteCmd(0x38);
delay_ms(5);
LCD_WriteCmd(0x38);
delay_ms(5);
LCD_WriteCmd(0x08);
delay_ms(5);
LCD_WriteCmd(0x01);
delay_ms(5);
LCD_WriteCmd(0x06);
delay_ms(5);
LCD_WriteCmd(0x0c);
}
int main(void) {
LCD_Init();
LCD_WriteData('H');
LCD_WriteData('e');
LCD_WriteData('l');
LCD_WriteData('l');
LCD_WriteData('o');
while(1);
}
```
此代码使用GPIOB控制LCD1602,RS、RW和E分别连接到GPIOB的12、13和14号引脚。在main函数中,首先初始化LCD,然后写入字符串"Hello"。请注意,此代码只是一个基本示例,实际使用时可能需要进行适当的修改。
阅读全文