lcd1602显示程序
始
for(i=0;i《12;i++)
{
write_data(data[i]);//第一行的数据字符
delay(5);
}
write_commond(0xc0);//第二行的DDRAM地址不加0x10也可
for(i=0;i《16;i++)
{
write_data(data[i]);//第二行的数据字符
delay(5);
}
/* for(i=0;i《16;i++)
{
write_commond(0x18);//光标不动,数据左移一位
delay(5);
}*/
while(1);
}
写近一个字符A程序如下:
#include《pic.h》
#define uchar unsigned char
#define uint unsigned int
#define DB PORTD
#define rs RB0
#define e RB1
__CONFIG(0x3B31);
void init();
void write_commond(uchar dat);//写指令函数
void write_data(uchar dat);//写数据函数
void disp_char(uchar x,uchar y,uchar dat);//在屏幕某个位置显示一个字符,x(0-16),y(1-2)
void delay(uint x);
void delay(uint x)
{
uint a,b;
for(a=x;a》0;a--)
for(b=110;b》0;b--);
}
void init()//初始化指令
{
write_commond(0x01);//0000000001,清除屏幕显示
write_commond(0x28);//设置4位格式,2行,5X7,功能设定
write_commond(0x0C);//0000001100,开显示,无光标,不闪烁
write_commond(0x06);//0000000110,置输入模式,光标右移,屏幕上的文字不移动
write_commond(0x80);//0001000100,设定CGRAM地址显示屏或光标移动方向
}
void write_commond(uchar dat)
{
rs=0;//指令
DB=dat;
e=1;//允许
delay(5);
e=0;
DB=DB《《4;
delay(5);
e=1;
delay(5);
e=0;
}
void write_data(uchar dat)
{
rs=1;//数据
DB=dat;
e=1;//允许
delay(5);
e=0;
delay(5);
DB=DB《《4;
e=1;delay(5);
e=0;
}
void disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1) address=0x80+x;
else
address=0xc0+x;
write_commond(address);
write_data(dat);
delay(5);
}
void main()
{
TRISD=0X00;
PORTD=0X00;
PORTB=0X00;
TRISB=0X00;
init();
disp_char(0,1,‘A’);
while(1);
}
也可以是如下:
void disp_char(uchar x,uchar y,uchar dat)
{
uchar i;
write_commond(0x80+x);
if(i=0;i《16;i++)
{
write_data(‘A’);
delay(5);
}
}
- LCD1602初始化流程图及程序的两种方法(09-08)
- 通用型LCD1602自定义字符的显示(02-12)
- 全方位解析LCD1602特性及单片机显示应用(09-17)
- LCD1602程序代码及显示流程图(09-12)
- 以LCD1602驱动程序为例分析C51单片机编程技巧(08-26)
- lcd1602工作原理是什么?(08-24)