STM32F103LCD1602显示数字
时间: 2023-12-21 21:06:25 浏览: 113
以下是使用STM32F103和LCD1602显示数字的示例代码。首先,需要将LCD1602连接到STM32F103上,然后编写以下代码:
```c
#include "stm32f10x.h"
#include "delay.h"
#define LCD_RS GPIO_Pin_0
#define LCD_RW GPIO_Pin_1
#define LCD_EN GPIO_Pin_2
#define LCD_D4 GPIO_Pin_4
#define LCD_D5 GPIO_Pin_5
#define LCD_D6 GPIO_Pin_6
#define LCD_D7 GPIO_Pin_7
void LCD_Init(void);
void LCD_SendCommand(uint8_t command);
void LCD_SendData(uint8_t data);
void LCD_SendString(char *string);
void LCD_Clear(void);
void LCD_SetCursor(uint8_t row, uint8_t col);
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = LCD_RS | LCD_RW | LCD_EN | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
LCD_Init();
while(1)
{
LCD_SetCursor(0, 0);
LCD_SendString("Count:");
for(int i=0; i<10; i++)
{
LCD_SetCursor(1, 6);
LCD_SendData(i+'0');
DelayMs(1000);
}
LCD_Clear();
DelayMs(1000);
}
}
void LCD_Init()
{
DelayMs(15);
LCD_SendCommand(0x02); // Return home
LCD_SendCommand(0x28); // 4-bit mode, 2 lines, 5x8 font
LCD_SendCommand(0x0C); // Display on, cursor off, blink off
LCD_SendCommand(0x01); // Clear display
DelayMs(2);
}
void LCD_SendCommand(uint8_t command)
{
GPIO_ResetBits(GPIOB, LCD_RS);
GPIO_ResetBits(GPIOB, LCD_RW);
GPIO_SetBits(GPIOB, LCD_EN);
GPIO_Write(GPIOB, (GPIO_ReadOutputData(GPIOB) & 0xFF00) | command);
DelayUs(1);
GPIO_ResetBits(GPIOB, LCD_EN);
DelayMs(2);
}
void LCD_SendData(uint8_t data)
{
GPIO_SetBits(GPIOB, LCD_RS);
GPIO_ResetBits(GPIOB, LCD_RW);
GPIO_SetBits(GPIOB, LCD_EN);
GPIO_Write(GPIOB, (GPIO_ReadOutputData(GPIOB) & 0xFF00) | data);
DelayUs(1);
GPIO_ResetBits(GPIOB, LCD_EN);
DelayMs(2);
}
void LCD_SendString(char *string)
{
while(*string)
{
LCD_SendData(*string++);
}
}
void LCD_Clear()
{
LCD_SendCommand(0x01);
DelayMs(2);
}
void LCD_SetCursor(uint8_t row, uint8_t col)
{
if(row == 0)
{
LCD_SendCommand(0x80 + col);
}
else if(row == 1)
{
LCD_SendCommand(0xC0 + col);
}
}
```
在上面的代码中,我们在main()函数中使用LCD_SendData()函数来向LCD发送数字。在for循环中,我们依次将0到9的数字发送到LCD上的第2行第7列。LCD_SetCursor()函数用于设置LCD光标的位置。最后,我们使用LCD_Clear()函数来清除LCD显示屏。
阅读全文