12864字符和汉字显示程序
- 格式:doc
- 大小:28.50 KB
- 文档页数:4
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^4;
sbit lcdrw=P2^5;
sbit lcden=P2^6;
/******************************
函数名:delayus()
功 能:延时k微秒
参 数:k
返回值:无
*******************************/
void delayus(uint k)
{
while(k--);
}
/******************************
函数名:lcd_wrcom()
功 能:12864写命令
参 数:lcd_com
返回值:无
*******************************/
void lcd_wrcom(char lcd_com)
{
uchar temp;
lcdrs=0;
lcdrw=1;
do //12864判忙
{
lcden=1;
temp=P0;
delayus(6);
lcden=0;
}
while(temp & 0x80);//不忙则退出循环
lcdrw=0;
P0=lcd_com; //写命令
lcden=1;
delayus(6);
lcden=0;
}
/******************************
函数名:lcd_wrdata()
功 能:12864写数据
参 数:lcd_dat
返回值:无
*******************************/
void lcd_wrdata(char lcd_dat)
{
uchar temp;
lcdrs=0;
lcdrw=1;
do //12864判忙
{
lcden=1;
temp=P0;
delayus(6);
lcden=0;
}
while(temp & 0x80);
lcdrs=1;
lcdrw=0;
P0=lcd_dat; //写数据
lcden=1;
delayus(6);
lcden=0;
}
/******************************
函数名:init_12864()
功 能:12864初始化
参 数:无
返回值:无
*******************************/
void init_12864()
{
delayus(100); //延时100微秒
lcd_wrcom(0x30);//功能设定
delayus(5000);
lcd_wrcom(0x02);//地址归位
delayus(100);
lcd_wrcom(0x0e);//显示状态 delayus(100);
lcd_wrcom(0x1c);//游标和显示的移位
delayus(100);
lcd_wrcom(0x01);//清屏
delayus(5000); //延时5毫秒
}
/*******************************************
函数名称:disp_HZ
功 能:控制液晶显示汉字
参 数:addr--显示位置的首地址
pt--指向显示数据的指针
num--显示汉字个数
返回值 :无
********************************************/
void disp_HZ(uchar addr,const uchar * pt,uchar num)
{
uchar i;
lcd_wrcom(addr);
for(i = 0;i < (num*2);i++)
lcd_wrdata(*(pt++));
}
/******************************
函数名:main()
功 能:调用子程序/12864显示程序
参 数:无
返回值:无
*******************************/
void main() //显示字符
{
uchar i;
const uchar hang1[]={"一路江南"};//汉字显示
init_12864();
lcd_wrcom(0x80);//设定显示起始地址
for(i=0;i<16;i++)
lcd_wrdata(0x00+i);
lcd_wrcom(0x90);//设定显示起始地址
for(i=0;i<16;i++)
lcd_wrdata(0x10+i);
lcd_wrcom(0x88);//设定显示起始地址
for(i=0;i<16;i++) lcd_wrdata(0x20+i);
lcd_wrcom(0x98);//设定显示起始地址
for(i=0;i<16;i++)
lcd_wrdata(0x30+i);
disp_HZ(0x80,hang1,4);//调用显示汉字
while(1);
}