基于keil软件STM32F103RCT6控制带字库的LCD12864显示存放在数组的汉字满屏后自动向上滚动,显示完后采样翻页的方式查看以往显示信息,示例代码
时间: 2024-03-16 17:45:02 浏览: 25
以下是基于Keil软件和STM32F103RCT6控制的LCD12864显示存放在数组中的汉字满屏后自动向上滚动的示例代码:
```
#include "stm32f10x.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "delay.h"
#include "lcd12864.h"
#define MAX_LENGTH 100 // 显示信息的最大长度
#define MAX_PAGE 5 // 最大翻页数
char buffer[MAX_LENGTH]; // 存放显示信息的缓冲区
int page = 0; // 当前页码
// 初始化LCD12864
void LCD_Init(void)
{
LCD_GPIO_Config();
LCD_Write_Cmd(0x30);
delay_ms(20);
LCD_Write_Cmd(0x0C);
LCD_Write_Cmd(0x01);
delay_ms(20);
LCD_Write_Cmd(0x06);
LCD_Write_Cmd(0x02);
}
// 向LCD12864写入汉字
void LCD_Write_HanZi(unsigned char x, unsigned char y, unsigned char *s)
{
unsigned char i;
unsigned char addr;
if (y == 0)
addr = 0x80 + x;
else
addr = 0x90 + x;
LCD_Write_Cmd(addr);
for (i = 0; i < 16; i++)
LCD_Write_Data(*(s + i));
LCD_Write_Cmd(addr + 0x40);
for (i = 16; i < 32; i++)
LCD_Write_Data(*(s + i));
}
// 清空LCD12864屏幕
void LCD_Clear(void)
{
unsigned char i, j;
for (i = 0; i < 4; i++) {
LCD_Write_Cmd(0x80 + i * 0x10);
for (j = 0; j < 16; j++) {
LCD_Write_Data(' ');
}
}
}
// 显示信息
void LCD_Show_Info(void)
{
int i, j;
for (i = 0; i < MAX_PAGE; i++) {
if (i == page) {
for (j = 0; j < 4; j++) {
LCD_Write_HanZi(0, j, (unsigned char *)(buffer + i * 64));
}
}
}
}
// 翻页
void Next_Page(void)
{
if (page < MAX_PAGE - 1) {
page++;
}
}
int main(void)
{
int i, j, length;
char str[MAX_LENGTH];
LCD_Init();
LCD_Clear();
while (1) {
// 获取显示信息
printf("请输入要显示的信息:");
gets(str);
length = strlen(str);
if (length > MAX_LENGTH) {
length = MAX_LENGTH;
str[MAX_LENGTH] = '\0';
}
// 存储显示信息
for (i = 0; i < length; i++) {
buffer[page * 64 + i] = str[i];
}
// 满屏时自动向上滚动
if (page == MAX_PAGE - 1) {
for (i = 0; i < (MAX_PAGE - 1) * 64; i++) {
buffer[i] = buffer[i + 64];
}
for (i = (MAX_PAGE - 1) * 64; i < MAX_PAGE * 64; i++) {
buffer[i] = ' ';
}
}
LCD_Clear();
LCD_Show_Info();
// 等待用户翻页
printf("按任意键翻页...");
getchar();
Next_Page();
}
}
```
注意:以上代码仅供参考,需要根据实际情况进行修改和调试。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)