1602
自定义字符显示摄氏度符号
LCD1602
的数据写入及
CGRAM
的使?/p>
1.
当使能端
E
?/p>
1
变为
0
时,?/p>
行写指令,数据被写入。例如,欲写入数?/p>
i
?/p>
DDRAM
?/p>
void
WDR(uchar
i){
CheckBusy();//
检?/p>
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
Delay();
LCD_DATA=i;//
数据输出到定义端?/p>
Delay();
LCD_EN=1;
Delay();
LCD_EN=0;//
这一步才开始写入到
LCD
Delay();}2.CGRAM1602
能存?/p>
8
个自
定义字符,这
8
个自定义字符存储空间的首地址分别是:
0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78
。以
0x40
来说,它的存储空间如
图所示:如果使用
5*7
字符的话,那么最?/p>
3
位和最后一行的数据实际上是?/p>
用的,通常?/p>
0
。如果要自定义一?/p>
?/p>
符号,那么先填框,如图(?/p>
1
?/p>
0
):
这样我们就得到每个地址需要写入的数据:地址:数?/p>
0x40:0x160x41:0x090x42:0x08
其他类推。将?/p>
8
个数据写入到对应地址即可?/p>
使用时,先确定显示的位置,例?/p>
0X80
,然后向
DDRAM
写入自定义字符的
使用代码?/p>
0X40-0X78
对应?/p>
0X00-0X07
。本例中,先写入指令寄存?/p>
0X80
确定显示位置为第一行第一个,然后写入数据寄存?/p>
0X00
,这样就会在第一
行第一个位置显示出
?/p>
符号。以下是源程序如果网页格式导致部分字符丢失请
下载
c
程序源文件:
51hei/f/avr1602c.rar#include
#include
#define
u8
uchar
unsigned char#define u16 uchar unsigned int#define uchar unsigned char#define
uint
unsigned intuchar zi[]={0x16,0x09,0x08,0x08,0x08,0x09,0x06,0x00}; //
自定义字?/p>
摄氏?/p>
#include?602.h?include?8b20.h”void
port_init(){
PORTA=0xff;
DDRA=0xff; PORTB=0xff; DDRB=0xff; PORTC=0xff; DDRC=0xff; PORTD=0xff;
DDRD=0x00;}void setzi() //
把设定字存入
CGRAM{ uchar i; writecmd(0x40); //
?/p>
置第一个字的起始地址
for(i=0;i<8;i++) { writedata(zi[i]); }}void show_temp(uint