ST7920自带中英文字库,要显示啥直接发送字符编码就行。

注意两个点:

  • 清屏后加点延时,不然开头几个字符会乱
  • 汉字和英文字符混用时,汉字的位置必须2字节对齐,否则乱码
#include "xs.h"
#include "stm32f10x.h"#define STD_GPIO GPIOC
#define STD_PIn GPIO_Pin_4#define CS_GPIO GPIOA
#define CS_PIn GPIO_Pin_7#define CLK_GPIO GPIOC
#define CLK_PIn GPIO_Pin_5#define RST_GPIO GPIOB
#define RST_PIn GPIO_Pin_0#define LOGHT_GPIO GPIOB
#define LOGHT_PIn GPIO_Pin_1#define STD_H STD_GPIO->BSRR = STD_PIn
#define STD_L STD_GPIO->BRR = STD_PIn#define CLK_H CLK_GPIO->BSRR = CLK_PIn
#define CLK_L CLK_GPIO->BRR = CLK_PIn#define CS_ENABLE CS_GPIO->BSRR = CS_PInstatic void board_init()
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Pin = STD_PIn;GPIO_Init(STD_GPIO, &GPIO_InitStructure);CS_GPIO->BRR = CS_PIn;GPIO_InitStructure.GPIO_Pin = CS_PIn;GPIO_Init(CS_GPIO, &GPIO_InitStructure);CLK_GPIO->BRR = CLK_PIn;GPIO_InitStructure.GPIO_Pin = CLK_PIn;GPIO_Init(CLK_GPIO, &GPIO_InitStructure);LOGHT_GPIO->BSRR = LOGHT_PIn;//背光灯打开GPIO_InitStructure.GPIO_Pin = LOGHT_PIn;GPIO_Init(LOGHT_GPIO, &GPIO_InitStructure);
}INIT_BOARD_EXPORT(board_init);void Send_byte(unsigned char bbyte) //发送一个字节
{unsigned char i;for (i = 0; i < 8; i++){if (bbyte & 0x80) //取出最高位{STD_H;}else{STD_L;}delay_us(5);CLK_H;delay_us(5);CLK_L;bbyte <<= 1; //左移}
}void Write_char(bool start, unsigned char ddata) //写指令或数据
{unsigned char start_data, Hdata, Ldata;if (start == 0)start_data = 0xf8; //写指令elsestart_data = 0xfa; //写数据Hdata = ddata & 0xf0;        //取高四位Ldata = (ddata << 4) & 0xf0; //取低四位Send_byte(start_data);       //发送起始信号Send_byte(Hdata);            //发送高四位Send_byte(Ldata);            //发送低四位
}void Lcd_init(void) //初始化LCD
{xs_sleep(10);CS_ENABLE;Write_char(0, 0x30); // 8 位介面,基本指令集Write_char(0, 0x0c); //显示打开,光标关,反白关Write_char(0, 0x01); //清屏,将DDRAM的地址计数器归零
}/******************************************************************************/
void Disp_img(const unsigned char *img) //图形方式12864显示字模221 横向取膜
{unsigned char i, j;unsigned int k = 0;Write_char(0, 0x36); //图形方式for (i = 0; i < 32; i++){Write_char(0, 0x80 + i);Write_char(0, 0x80);for (j = 0; j < 16; j++){Write_char(1, img[k++]);}}for (i = 0; i < 32; i++){Write_char(0, 0x80 + i);Write_char(0, 0x88);for (j = 0; j < 16; j++){Write_char(1, img[k++]);}}
}/******************************************************************************/
void Clr_Scr(void) //清屏函数
{Write_char(0, 0x01);
}/******************************************************************************/
bool LCD_set_xy(unsigned char x, unsigned char y)
{ //设置LCD显示的起始位置,X为行,Y为列unsigned char address;switch (x){case 0:address = 0x80 + y;break;case 1:address = 0x90 + y;break;case 2:address = 0x88 + y;break;case 3:address = 0x98 + y;break;default:return false;}Write_char(0, address);return true;
}// X [0-3]为行 Y[0-7] 为列  对应汉字的宽度 总的能显示7个汉字
/******************************************************************************/
void LCD_Write_string(unsigned char X, unsigned char Y, const char *s)
{ //    中英文字符串显示函数if (LCD_set_xy(X, Y) == false)return;while (*s){Write_char(1, *s);s++;}
}void lcd_test()
{Lcd_init();Clr_Scr(); //清屏后适当延时 xs_sleep(10);LCD_Write_string(0, 0, "LCD 显示测试演示"); //LCD_Write_string(1, 0, "1234567890:");      //LCD_Write_string(2, 0, "abcdefghijklmn:");  //LCD_Write_string(3, 0, ",.*/!@#$%^&*");     //
}INIT_APP_EXPORT(lcd_test);

LCD12864(ST7920芯片)相关推荐

  1. 带字库LCD12864(ST7920)使用记录(命令 数据 地址 绘图 反白)

    [本文发布地址https://blog.csdn.net/Stack_/article/details/113833549,未经许可不得转载,转载须注明出处] 以前用LCD12864做显示直接用前人的 ...

  2. 关于12864的使用

    关于ST7920控制器的12864液晶,网上资料有很多,但是大部分感觉都有漏洞或者说是错误.本文转载网上zhaoshan413之手,感谢他的无私贡献. 一.首先说一下关于驱动函数的书写,这些是液晶显示 ...

  3. 编程王 kingofcoders.com

    欢迎您   频道 Java .net c++ php VB SQL Server PostgreSQL 开源   Solaris BSD Linux Microsoft Mysql Oracle Bo ...

  4. 毕业设计 单片机智能录音器设计与实现 - 物联网 嵌入式

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 硬件部分 3.3 软件部分 主程序流程 录放声音程序设计 LCD12864 程序设计 DS1302 程序设 ...

  5. 【毕业设计】基于单片机的录音器设计与实现 - 物联网 嵌入式 stm32

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 硬件部分 3.3 软件部分 主程序流程 录放声音程序设计 LCD12864 程序设计 DS1302 程序设 ...

  6. Arduino与Proteus仿真实例-LCD12864液晶显示屏(ST7920)驱动仿真

    LCD12864液晶显示屏(ST7920)驱动仿真 ST7920 控制器系列中文图形液晶模块的软件特性主要由ST7920 控制驱动 器决定.ST7920 同时作为控制器和驱动器,它可提供33 路com ...

  7. 【分享】ST7920的LCD12864 Proteus仿真模型

    [分享]ST7920的LCD12864 Proteus仿真模型 目前最新版本的是1.03: GitHub地址:https://github.com/cdhigh/lcd12864_st7920_pro ...

  8. ST7920驱动的LCD12864实现单行反白显示

    参考链接: ST7920驱动的LCD12864实现单行反白显示 - jqdy - 博客园 12864液晶模块的详细使用_Rainlee随笔记-CSDN博客_12864使用 GDRAM空间有64×256 ...

  9. proteus中导入ST7920驱动的LCD12864模型

    proteus中导入ST7920驱动的LCD12864模型 文章目录 proteus中导入ST7920驱动的LCD12864模型 前言 模型来源 导入方法 部分问题 小技巧 前言 proteus中12 ...

最新文章

  1. 为什么颜值越来越重要_看脸时代来了吗?为什么这个时代越来越注重颜值?
  2. 前端面试常考知识点---js
  3. xmanager 开启X11转发失败问题解决
  4. Andoird --- 安卓 failed to connect to /192.168.0.135 (port 8080) after 1000ms
  5. Python导入CSV短代码(pandas?),以';'分隔 和','全部
  6. C语言十进制数转换为八进制(附完整源码)
  7. IOS开发基础之图片轮播器-12
  8. 如何开启一个Django项目
  9. iOS 添加导航栏两侧按钮
  10. 程序员面试金典 - 面试题 16.24. 数对和(双指针/哈希map)
  11. 可视化电脑处理变量赋值、循环、程序运行的过程
  12. 客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较[转]...
  13. webview适配(一):文件选择,相机拍照,相册选择
  14. 刘宇凡:海子,一个孤独的灵魂诗人
  15. JAVA兔子繁衍_Java 编程经典案例之兔子繁殖迭代问题
  16. glusterfs删除节点步骤
  17. 【大数据面试题】(五)Spark 相关面试题总结
  18. python 禁用网卡_C#语言实现定时开启或禁用网卡小程序
  19. Dataset之CV:人工智能领域数据集集合(计算机视觉CV方向数据集)之常见的计算机视觉图像数据集大集合(包括表面缺陷检测数据集,持续更新)
  20. GeoEye将向Google地球提供41厘米精度地面照片

热门文章

  1. 自动训练Embedding词向量和手动训练Embedding词向量
  2. Oracle 模糊查询
  3. 用指针法对10个整数排序
  4. 展示板(1.8*0.8)和宣传单折页6面(a4)
  5. Oracle v$session v$active_session_history dba_hist_active_sess_history
  6. matplotlib matplotlib中axvline()和axhline()函数
  7. vue echarts饼图 文字和图形同颜色
  8. 洛谷 P3953 [NOIP2017 提高组] 逛公园
  9. notepad++精美主题字体
  10. 原创:千兆光模块和百兆光收发器的兼容问题