鱼C论坛

 找回密码
 立即注册
查看: 4488|回复: 6

[技术交流] LCD1602显示汉字,图形 教程

[复制链接]
发表于 2014-6-7 23:35:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 沉思的牛 于 2014-6-14 12:28 编辑

看这个教程之前要确保你之前用过1602,并且知道1602的基本操作;
而且以前没有用来显示过汉字或图形;




老规矩  先看图:
IMG_20140606_230106.jpg

IMG_20140606_230122.jpg



看到了把  又有图形又有中文;




下面我们来谈谈是如何实现的:

预备知识:
  • DDRAM:通常意义就是我们说的显存,对于图形液晶的它和屏幕是映射的关系。也就是你往DDRAM写什么它就显示什么;对于字符液晶你写进去的就是字符索引;
  • CGROM:就是常说的字库,比如带字库1602液晶,它的字库就存放在CGROM里面,一般为ASCII码。索引地址从0x20开始,你向DDRAM写入0X30,液晶控制芯片是在CGROM里面寻找字符,然后液晶就显示字符‘0’;
  • CGRAM:用户自建字模区,就用它来存放我们的汉字和图形;


大家知道1602的是8*5的点阵显示吧;你可以自己数数  通常对于正常显示一个汉字最少需要16*16的点阵;
就像小甲鱼的说的,一个字节岂能承载我大中华上下5000年的文化!当然8*5的点阵也不能承载我大中华的汉字,只能显示很少的简单汉字;



接下来如何操作1602液晶:

1、写入CGRAM的地址  地址是0x40;   函数操作: Write_Command(0x40);

2、写入自定义图形数据  数据是八个字节  因为有8行 (8*5的点阵)  正因为是8*5所以高3位没有用;
数据手册的说明:
CG.jpg
那么显示这个S就需要八个字节的数据  

第一行 00001111   0x0f
第二行 00001000   0x08
第三行 00001000   0x08
第四行 00001110   0x0e
第五行 00000001   0x01
第六行 00000001   0x01
第七行 00011110   0x1e
第八行 00000000   0x00  图上没有

那么字模数组就是
unsigned char code image[]={0x0f,0x08,0x08,0x0e,0x01,0x01,0x1e,0x00};
函数操作:
for(i=0;i<8;i++) Write_Data(image);
现在我们就把数据存入了CGRAM,并且产生了'S'这个字模;

当然这些数据不需要你自己去算,用取字模软件就可以了;附件上传;

3、注意啦我们要开始显示啦;
写入DDRAM的地址 0x80  指针就指向DDRAM第一个字节,就是在第一行第一列的位置显示
函数操作:Write_Command(0x80);

4、索引到刚才我们写入到CGRAM的数据,刚才我们把数据写入到CGRAM大家知道地址是多少吗?   CGROM字符索引是从0X20开始的,那么前面的地址跑哪里去了,没错就是留给CGRAM的;
比如刚才我们写入了8个字节到CGRAM,产生了一个字模,那么我们的字模索引地址就是0x00,;
如果你要是再写8个数据,那么地址就是0x01;以此类推;

5、显示出自己的图形  函数操作:Write_Data(0x00),我们就显示出了那个'S'


看源代码分析:
#include <STC.H>
#include "lcd1602.h"


//字模
UCHAR code  image[]={
//坦克
0x04,0x04,0x0E,0x1F,0x1F,0x1B,0x0A,0x00,

//三叉戟
0x04,0x04,0x04,0x15,0x15,0x15,0x0E,0x04,

//中
0x04,0x04,0x1F,0x15,0x1F,0x04,0x04,0x04,
//文
0x00,0x04,0x1F,0x0A,0x04,0x0A,0x11,0x00
};


void main()
{
        char i;

        Init_LCD_1602();   //初始化显示

        Write_Command_1602(0x40);  //CGRAM地址
        //向CGRAM写入字符数据
        
        for(i=0;i<sizeof(image);i++)
                Write_Data_1602(image[i]);

//现在我们字符就有了地址0x00开始


        Write_Command_1602(0x80);  //数据指针 DDRAM地址

        //写数据  就是CGRAM的索引地址
        Write_Data_1602(0x00);  //CGRAM的第一个字符地址
        Write_Data_1602(0x01);  //CGRAM的第二个字符地址

        Set_Pos_1602(2,7);      //设置显示坐标
        Write_Data_1602(0x02);
        Write_Data_1602(0x03);        


        while(1);        
}


取字模软件
游客,如果您要查看本帖隐藏内容请回复




以上纯属个人愚见,如有错误请各位鱼油指正;




IMG_20140606_230114.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-6 16:26:28 From FishC Mobile | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-20 09:01:54 | 显示全部楼层
楼主问一下:打孔板在哪里买的?大概多少钱?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-23 16:49:03 | 显示全部楼层
不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-27 19:39:17 | 显示全部楼层
a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-21 15:57:45 | 显示全部楼层
想看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 17:56:26 | 显示全部楼层
求分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 02:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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