LCD1602显示两位数为什么要和0x30相加合并才能显示出数字LCD1602显示两位数为什么要和0x30相加合并才能显示出数字
时间: 2024-01-24 11:19:08 浏览: 26
LCD1602是一种字符型液晶显示器,它的每一个字符都由一个对应的ASCII码表示。在LCD1602中,数字字符的ASCII码是从0x30开始的。
因此,如果要在LCD1602上显示数字,需要将数字的ASCII码与0x30相加,才能得到对应的字符的ASCII码。例如,要显示数字5,就需要将5的ASCII码值(0x35)与0x30相加,得到字符5的ASCII码值(0x35+0x30=0x65)。
这是因为,在LCD1602中,显示数字字符的位置实际上是一个7段数码管,而且数码管的显示是通过点亮不同的LED来完成的。因此,需要通过将数字的ASCII码与0x30相加,将其转换为对应的LED点阵表示方式,才能正确地在LCD1602上显示数字。
相关问题
以HAL库为stm32编写让LCD1602显示数字的代码
好的,以下是使用HAL库为stm32编写让LCD1602显示数字的代码:
```c
#include "main.h"
#include "stdio.h"
#include "string.h"
#define RS_Pin GPIO_PIN_8
#define EN_Pin GPIO_PIN_9
void LCD_Init(void);
void LCD_Cmd(char);
void LCD_Data(char);
void LCD_String(char*);
void delay_ms(int);
int main(void)
{
HAL_Init();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = RS_Pin | EN_Pin | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
LCD_Init();
while (1)
{
int num = 1234;
char str[10];
sprintf(str, "%d", num);
LCD_String(str);
delay_ms(1000);
}
}
void LCD_Init()
{
delay_ms(15);
LCD_Cmd(0x30);
delay_ms(5);
LCD_Cmd(0x30);
delay_ms(1);
LCD_Cmd(0x30);
delay_ms(1);
LCD_Cmd(0x38);
LCD_Cmd(0x06);
LCD_Cmd(0x0C);
LCD_Cmd(0x01);
delay_ms(3);
}
void LCD_Cmd(char cmd)
{
HAL_GPIO_WritePin(GPIOB, RS_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_All & (~RS_Pin), cmd << 8);
HAL_GPIO_WritePin(GPIOB, EN_Pin, GPIO_PIN_SET);
delay_ms(1);
HAL_GPIO_WritePin(GPIOB, EN_Pin, GPIO_PIN_RESET);
delay_ms(3);
}
void LCD_Data(char data)
{
HAL_GPIO_WritePin(GPIOB, RS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_All & (~RS_Pin), data << 8);
HAL_GPIO_WritePin(GPIOB, EN_Pin, GPIO_PIN_SET);
delay_ms(1);
HAL_GPIO_WritePin(GPIOB, EN_Pin, GPIO_PIN_RESET);
delay_ms(3);
}
void LCD_String(char* str)
{
while (*str)
{
LCD_Data(*str++);
}
}
void delay_ms(int n)
{
HAL_Delay(n);
}
```
在此代码中,我们使用了HAL库中提供的GPIO头文件和延时函数HAL_Delay。我们将LCD1602连接到stm32f103c8t6的GPIOB引脚,其中RS连接到GPIO_PIN_8,EN连接到GPIO_PIN_9。
在主函数中,将数字1234转换成字符串,再通过LCD_String函数将其显示在LCD1602上。程序中使用了delay_ms函数提供的延时功能,以确保LCD1602的正常显示。
写出stm32f103c6t6用LCD1602显示数字的具体程序代码
要写出STM32F103C6T6用LCD1602显示数字的程序代码,需要先定义一些需要用到的函数,例如:用来初始化LCD1602的函数,用来写入数据的函数,用来设置显示模式的函数等等,然后再根据需求编写相应的程序代码。具体代码如下:// 初始化LCD1602
void LCD1602_Init(void)
{
// 其他初始化步骤
}// 写入数据
void LCD1602_WriteData(uint8_t data)
{
// 其他写入数据步骤
}// 设置显示模式
void LCD1602_SetMode(uint8_t mode)
{
// 其他设置模式步骤
}// 显示数字
void LCD1602_DisplayNumber(uint16_t number)
{
// 其他显示数字步骤
}// 主函数
int main(void)
{
LCD1602_Init(); // 初始化LCD1602
LCD1602_SetMode(0x0C); // 设置显示模式
LCD1602_DisplayNumber(12345); // 显示数字
while(1); // 死循环
}