LCD1602,显示自编译字符
来源:互联网 发布:大学网络选修课怎么上 编辑:程序博客网 时间:2024/05/22 21:55
- 我们从CGROM表上可以看到,在表的最左边是一列可以允许用户自定义的CGRAM,从上往下看共16个,实际只有8个字节可用。它的字符码是00000000-00000111这8个地址,表的下面还有8个字节,但因为这个CGRAM的字符码规定0-2位为地址,3位无效,4-7全为零。因此CGRAM的字符码只有最后三位能用也就是8个字节了。等效为0000X111,X为无效位,最后三位为000-111共8个。
- 如果我们要想显示这8个用户自定义的字符,操作方法和显示CGROM的一样,先设置DDRAM位置,再向DDRAM写入字符码,例如“A”就是41H。现在我们要显示CGRAM的第一个自定义字符,就向DDRAM写入00000000B(00H),如果要显示第8个就写入00000111(08H)
从这个指令可以看出指令数据的高2位已固定是01,只有后面的6位是地址数据,而这6位中的高3位就表示这八个自定义字符,最后的3位就是字模数据的八个地址了。
例如第一个自定义字符的字模地址为01000000-01000111八个地址。我们向这8个字节写入字模数据,让它能显示出“℃”
具体代码体现:(头文件和函数声明省略)
1、自定义字符显示函数:
#define LCDPORT P0sbit RS = P2^4; //RS、RW、E 根据LCD芯片说明自己定义引脚sbit RW = P2^5;sbit E = P2^6;unsigned char mychar[64] = {0x10, 0x06, 0x09, 0x08, 0x08, 0x09, 0x06, 0x00}; //℃的字模数据,最多64位 void LCD_init(void) //LCD的初始化函数{ delay_ms(5); LCD_WriteCom(0X38); delay_ms(5); LCD_WriteCom(0X38); delay_ms(5); LCD_WriteCom(0X38); delay_ms(5); LCD_WriteCom(0X38); delay_ms(5); LCD_WriteCom(0X08); delay_ms(5); LCD_WriteCom(0X01); delay_ms(5); LCD_WriteCom(0X06); delay_ms(5); LCD_WriteCom(0X0C);}void LCD_WriteDate(unsigned char date) //写数据{ delay_ms(5); //保障前一个执行完 RS = 1; RW = 0; LCDPORT = date; E = 1; _nop_(); E = 0;}void LCD_WriteCom(unsigned char com) //写指令{ delay_ms(5); RS = 0; RW = 0; LCDPORT = com; E = 1; _nop_(); E = 0;}void LCD_FillCGRAM(void) //自定义字符的填充函数{ unsigned char i; LCD_WriteCom(0x40); //写指令告诉是在写自定义字符 for (i = 0; i < 8; i++) //i <= 64 { LCD_WriteDate(mychar[i]); //把℃的字模数据写进去 }}void LCD_ShowCGRAM(unsigned char x, unsigned char y, unsigned char index) //自定义字符的显示函数 { if (0 == y) { LCD_WriteCom(0x80 + x); //第一行,x代表横坐标 } else { LCD_WriteCom(0xc0 + x); //第二行 } LCD_WriteDate(index); //index 0~7 最多8个自定义字符}
2、主函数调用
void main(){ LCD_FillCGRAM(); //调用填充函数 while (1) { LCD_ShowCGRAM(0, 0, 0); //第一行,第一个,字符为℃ }}
阅读全文
0 0
- LCD1602,显示自编译字符
- DE2-115 LCD1602字符的显示
- LCD1602显示
- 单片机控制LCD1602显示字符(测试通过)
- LCD1602自定义点阵字符
- 基于proteus的51单片机仿真实例六十三、字符液晶LCD1602显示单个字符实例
- LCD1602显示汉字
- LCD1602的显示
- LCD1602的简单显示
- LCD1602显示中文汉字
- 百米计时器LCD1602显示
- PIC LCD1602显示
- Arduino - 修正LCD1602 IIC转接卡只显示第一个字符的问题
- 基于proteus的51单片机仿真实例六十四、字符液晶LCD1602显示字符串实例
- (5)51单片机入门案列-LCD1602静态显示字符
- LCD1602自定义字符的方法
- 用 LCD1602 显示的时钟
- 用 LCD1602 显示的秒表
- 《技术之瞳》-- 操作系统 -- 习题2.40
- padding内放置图片
- 20170721C/C++的makefile文件
- 算法系列——Search for a Range
- [Python]Python pip用国内镜像下载的办法及import cv2
- LCD1602,显示自编译字符
- 重启tomcat
- 相关苹果设备基本尺寸信息概览
- Java入门到精通全教程
- iframe和Ajax哪个好?iframe与Ajax有什么区别?
- WebView的使用方式
- Spark 2.1.1 learning 003 [Matrix of Dependencies]
- 成为Java顶尖程序员 ,看这11本书就够了
- html转换为jsx工具