一个1602显示汉字程序一个1602显示汉字程序
//************************************* //lcd头文件
//************************************* #include
#include
#include
#define lcd_data P0 //定义端口
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^1;
sbit RW=P2^2;
sbit E=P2^3;
sbi...
一个1602显示汉字程序
//************************************* //lcd头文件
//************************************* #include
#include
#include
#define lcd_data P0 //定义端口
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^1;
sbit RW=P2^2;
sbit E=P2^3;
sbit BF=P0^7;
//*************************************** //延时函数
//*************************************** void delay(uint i)
{
while(i--);
}
//*************************************** //写控制字
//*************************************** void write_struct(uchar temp)
{
E=0;
delay(100);
//while(BF==1);
RW=0;
RS=0;
lcd_data=temp;
delay(3);
E=1;
delay(3);
E=0;
}
//************************************** //写数据
//************************************** void write_data(uchar temp)
{
delay(100);
//while(BF==1);
E=0;
RS=1;
RW=0;
lcd_data=temp;
E=1;
delay(3);
E=0;
}
//*************************************** //获得显示地址
//x示是第几行显示 (0-1)
//y表示某行的第几个字符(0-15)
//*************************************** uchar getchar_adress(uchar x,uchar y) { uchar address;
if(x==0) address=0x80+y; //第一行
else address=0xc0+y; //第二行
return address;
}
//*************************************** //lcd初始化
//*************************************** void lcd_init()
{
write_struct(0x38); //设置接口DB宽度(8位)和LCM显示行数(2行)
write_struct(0x08); //
write_struct(0x0c); //设置光标为移位模式
write_struct(0x01); //执行清屏操作
write_struct(0x06); //设置光标为加1模式
}
//*************************************** //向CGRAM写入数据
//*************************************** void write_cgram(unsigned char adress,unsigned char *p)
{
char i;
for(i=0;i<8;i++)
{ write_struct(adress+i);
write_data(p[i]);
}
}
//*************************************** //显示CGRAM数据
//x表示是第几行显示 (0-1)
//y表示某行的第几个字符(0-15)
//*************************************** void display_cgram(unsigned char x,uchar y,uchar *CgramData)
{
uchar address,cgram_address,p;
address=getchar_adress(x,y); //获得CGRAM字符显示位置
cgram_address=0x40+(address&0x07)*8; //CGRAM初始地址
p=address&0x07;
write_cgram(cgram_address,CgramData);
write_struct(address); //设置DDRAM地址
write_data(p);
}
//显示字符
//*************************************** void display(char temp0,char *p)
{
write_struct(temp0);
delay(3);
write_data(*p);
}
//**************************************** //显示字符串
//**************************************** void display_str(uchar x,uchar y,char *p) {
char i,temp0;
temp0=getchar_adress(x,y);
write_struct(temp0);
for(i=0;i<16;i++)
{
if(*p=='\0')
break;
write_data(*p);
p++;
}
}
//**************************************** //清屏
//**************************************** void lcd_clr()
{
write_struct(0x01);
}
//*****************************************************end
本文档为【一个1602显示汉字程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。