PIC18F452之1602自定义字符

来源:本站
导读:目前正在解读《PIC18F452之1602自定义字符》的相关信息,《PIC18F452之1602自定义字符》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC18F452之1602自定义字符》的详细说明。
简介:这里给大家介绍一下1602自定义字符。

PIC18F452之1602自定义字符:

显示自定义字符

步骤如下:

1. 先将自定义字符写入CGRAM ;2. 再将CGRAM中的自定义字符送到DDRAM中显示 很简单的:看好了查看LCD1602 的CGROM 字符代码表,可以发现 从00000000B~00000111B(00H~07H)地址的内容是没有定义的,它是留给用户自己定义的,用户可以通过先定义LCD1602的CGRAM中的内容,然后就可以同调用CGROM字符一样来调用自定义好的字符(这里提示一下,自定义的字符最多可写8个),那么如何设定CGRAM中的内容呢?

首先我们要把所要编写的字符对应于5X8点阵的“字模”提取出来,我们可以通过相关的软件来提取,也可以手工提取。说白了也就是将点阵的某一行中有显示的点用1表示,无显示的点用0表示,以此形成该行对应的字模数据。

设定CGRAM的内容,要一行一行的设定,每一行对应一个CGRAM,5X8点阵,每行5点,共8行,因此要将8行的字模数据都写入CGRAM。写好后,就可像调用CGROM字符一样来来调用它了。

定义一行的内容,分两步:

1. 设定行地址(CGRAM地址):

用到的命令如下:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 1 DATA

其中:DB5,DB4,DB3为字符号,也就是你将来要显示该字符时要用到的字符地址。

DB2,DB1,DB0为行号。

2. 设定CGRAM数据(内容)指令码如下:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

1 0 DATA

其中:DB4,DB3,DB2,DB1,DB0对应于每行5点的字模数据。

DB7,DB6,DB5可为任何数据,一般取“000”。

使用4线数据传输

画完自定义字符这是第三步,在液晶屏刷新率不高的情况下,我们可以用1602的另一种4线数据传输可减少io口的使用数量。希望大家喜欢,由于没有找到相关资料这里只将程序贴出来给大家参考参考

#include<reg52.h>

#include<intrins.h>

sbit lcd1602_rs=P0^7;

sbit lcd1602_rw=P0^6;

sbit lcd1602_e=P0^5;

/*#define lcd1602_io_writ lcd1602_rw=0;

#define lcd1602_io_read lcd1602_rw=1;

#define lcd1602_io_com lcd1602_rs=0;

#define lcd1602_io_dat lcd1602_rs=1;

#define lcd1602_io_able lcd1602_e=0;

#define lcd1602_io_unable lcd1602_e=1;

*/

sbit lcd1602_dat1=P0^0;

sbit lcd1602_dat2=P0^1;

sbit lcd1602_dat3=P0^2;

sbit lcd1602_dat4=P0^3;

//unsigned char code table[]="ball hahhahhaha";

//unsigned char code table1[]="THE BEST!";

void delay(unsigned int z)

{

unsigned int a,b;

for(a=z;a>0;a--)

for(b=114;b>0;b--);

}

void lcd1602_write(bit cd,unsigned char dat)//cd=0,指令;c

{

int i;

unsigned char j;

lcd1602_rs=cd;

for(j=0;j<2;j++)

{

lcd1602_e=1;

for(i=0;i<200;i++)

_nop_();

lcd1602_dat4=dat&0x80;

lcd1602_dat3=(dat<<1)&0x80;

lcd1602_dat2=(dat<<2)&0x80;

lcd1602_dat1=(dat<<3)&0x80;

lcd1602_e=0;

//lcd1602_e=1;

dat<<=4;

}

}

/*unsigned char lcd1602_read_dat(unsigned char add)

{

unsigned char dat;

return dat;

}*/

void main()

{

lcd1602_rw=0;

lcd1602_e=0;

lcd1602_write(0,0x28);

lcd1602_write(0,0x0f);

lcd1602_write(0,0x06);

lcd1602_write(0,0x01);

lcd1602_write(0,0x80);

lcd1602_write(1,'q');

while(1);

}

提醒:《PIC18F452之1602自定义字符》最后刷新时间 2024-03-14 01:08:11,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC18F452之1602自定义字符》该内容的真实性请自行鉴别。