找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3072|回复: 2
打印 上一主题 下一主题
收起左侧

单片机LCD12864带字库的可调用显示函数 可反白显示源程序

[复制链接]
跳转到指定楼层
楼主
ID:282626 发表于 2020-8-18 17:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人在使用LCD12864时,用到了JLX12864G-086-pc 也就是带字库的LCD12864屏,采用SPI串口方式,根据厂家提供的标准例程,进行了修改,做成了一个可被调用的独立函数模块,并可对显示的文字进行反白显示,并提供了相应的头文件。
1、将例程提供的P3.0,P3.1,P3.2 接口转换到 P3.4,P3.5,P3.6
2、在调用显示中参数中增加了是否反白显示的参数:0=不反白,1=反白
3、对5X8显示的反白显示,增加了1列显示,消除了字间空白,使字迹更清楚。

单片机源程序如下:
  1. #ifndef __JLX1286486PC_H_
  2. #define __JLX1286486PC_H_
  3. /**********************************
  4. JLX12864G-086S-PC 使用SPI串口,通信,带字库,共12脚
  5. 1 ROM_IN 字库 IC 接口 SI 串行数据输入
  6. 2 ROM_OUT 字库 IC 接口 SO 串行数据输出
  7. 3 ROM_SCK 字库 IC 接口 SCLK 串行时钟输入
  8. 4 ROM_CS 字库 IC 接口 CS# 片选输入
  9. 5 LEDA 背光电源 背光电源正极,同 VDD 电压(5V 或 3.3V)
  10. 6 VSS 接地 0V
  11. 7 VDD 电路电源 5V,或 3.3V 可选
  12. 8 SCLK I/O 串行时钟
  13. 9 SDA I/O 串行数据
  14. 10 RS 寄存器选择信号 H:数据寄存器 0:指令寄存器(IC 资料上所写为”A0”)
  15. 11 RESET 复位 低电平复位,复位完成后,回到高电平,液晶模块开始工作
  16. 12 CS 片选 低电平片选
  17. *********************************/

  18. /**********************************
  19. 包含头文件
  20. **********************************/
  21. #include<stc8.h>
  22. #include <intrins.h>

  23. //---重定义关键词---//
  24. #ifndef uchar
  25. #define uchar unsigned char
  26. #endif

  27. #ifndef uint
  28. #define uint unsigned int
  29. #endif
  30. #ifndef ulong
  31. #define ulong unsigned long
  32. #endif
  33. /**********************************
  34. PIN口定义
  35. **********************************/
  36. sbit lcd_sclk =P3^6; //示例中 =P3^2;接口定义:lcd_sclk 就是 LCD 的 SCLK
  37. sbit lcd_sid  =P3^5; //示例中 =P3^1;接口定义:lcd_sid 就是 LCD 的 SDA
  38. sbit lcd_rs   =P3^4; //示例中 =P3^0;接口定义:lcd_rs 就是 LCD 的 RS,也叫“CD”
  39. sbit lcd_reset=P1^0; //接口定义:lcd_reset就是LCD的RESET
  40. sbit lcd_cs1  =P1^1; //接口定义:lcd_cs1就是LCD的CS1

  41. sbit Rom_IN =P1^2;   //字库IC接口定义:Rom_IN就是字库IC的SI
  42. sbit Rom_OUT=P1^3;   //字库IC接口定义:Rom_OUT就是字库IC的SO
  43. sbit Rom_SCK=P1^4;   //字库IC接口定义:Rom_SCK就是字库IC的SCK
  44. sbit Rom_CS =P1^5;   //字库IC接口定义Rom_CS就是字库IC的CS#

  45. /**********************************+

  46. 函数声明
  47. **********************************/
  48. //延时
  49. void lcddelay(int n_ms);               
  50. //短延时
  51. void lcddelay_us(int n_us) ;              
  52. //写指令到LCD模块
  53. void transfer_command_lcd(int data1);
  54. //写数据到LCD模块
  55. void transfer_data_lcd(int data1);
  56. //LCD模块初始化
  57. void initial_lcd();
  58. void lcd_address(uint page,uint column);
  59. //全屏清屏
  60. void clear_screen();
  61. //显示128x64点阵图像
  62. void display_128x64(uchar *dp);
  63. //显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标
  64. void display_graphic_16x16(uchar page,uchar column,uchar *dp);
  65. //显示8x16点阵图像、ASCII, 或8x16点阵的自造字符、其他图标
  66. void display_graphic_8x16(uchar page,uchar column,uchar *dp);
  67. //显示5X8点阵图像、ASCII, 或5x8点阵的自造字符、其他图标
  68. void display_graphic_5x8(uchar page,uchar column,uchar *dp);
  69. //送指令到晶联讯字库IC
  70. void send_command_to_ROM( uchar datu );
  71. //从晶联讯字库IC中取汉字或字符数据(1个字节)
  72. static uchar get_data_from_ROM( );
  73. //从指定地址读出数据写到液晶屏指定(page,column)座标中, uchar fb 指定是否反白显示
  74. void get_and_write_16x16(ulong fontaddr,uchar page,uchar column,uchar fb);
  75. //从指定地址读出数据写到液晶屏指定(page,column)座标中 uchar fb 指定是否反白显示
  76. void get_and_write_8x16(ulong fontaddr,uchar page,uchar column,uchar fb);
  77. //从指定地址读出数据写到液晶屏指定(page,column)座标中 uchar fb 指定是否反白显示
  78. void get_and_write_5x8(ulong fontaddr,uchar page,uchar column,uchar fb) ;
  79. //uchar fb 指定是否反白显示
  80. void display_GB2312_string(uchar page,uchar column,uchar *text,uchar fb);
  81. //uchar fb 指定是否反白显示
  82. void display_string_5x8(uchar page,uchar column,uchar *text,uchar fb);
  83.                                           

  84. #endif
复制代码


lcd12864.rar (3.63 KB, 下载次数: 99)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:398219 发表于 2021-12-1 13:45 | 只看该作者
谢谢分享,能显示自定义的变量吗?
回复

使用道具 举报

板凳
ID:367242 发表于 2022-2-6 17:28 | 只看该作者
滥竽充数,没毛用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表