/***************************************************************************************************
工程名称: 12864
功能描述: 实现12864液晶显示,液晶第一行显示" 北方蓝芯科技 ",第二行显示" www*hrbnbc*com "
硬件连接: 将12864液晶接口对应插接到P2接口,注意1-20脚不要插反。
维护记录: 2011-8-22
***************************************************************************************************/
#include "reg52.h" //包含头文件
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^5; //命令/数据选择
sbit RW=P2^4; //读写口
sbit E=P2^3; //锁存控制
sbit RES = P2^0; //复位
sbit PSB = P2^2; //串并选择
//**************************************************************************************************
//延时函数
//**************************************************************************************************
delay(uint time) //int型数据为16位,所以最大值为65535
{
uint i,j; //定义变量i,j,用于循环语句
for(i=0;i<time;i++) //for循环,循环50*time次
for(j=0;j<100;j++); //for循环,循环50次
}
//**************************************************************************************************
//查忙
//**************************************************************************************************
checkbusy()
{
RS=0; //命令/数据选择,为0时选择命令
RW=1; //读/写选择,为1时选择读
E=1; //使能
while((P0&0x80)==0x80); //查忙标志位,等待标志位为0,即表示写入完毕
E=0; //关闭读写
}
//**************************************************************************************************
//向LCD写一命令
//**************************************************************************************************
wcode(uchar cmdcode)
{
checkbusy(); //查忙
RS=0; //命令/数据选择,为0时选择命令
RW=0; //读/写选择,为0时选择写
E=1; //使能
P0=cmdcode; //送入命令
delay(10); //等待写入
E=0; //关闭读写
}
//**************************************************************************************************
//向LCD写一数据
//**************************************************************************************************
wdata(uchar dispdata)
{
checkbusy(); //查忙
RS=1; //命令/数据选择,为1时选择数据
RW=0; //读/写选择,为0时选择写
E=1; //使能
P0=dispdata; //送入数据
delay(10); //等待写入
E=0; //关闭读写
}
//**************************************************************************************************
//LCD 初始化
//**************************************************************************************************
InitLCD()
{
PSB=1; //设置为8BIT并口工作模式
RES=0; //复位
delay(10); //延时
RES=1; //关复位
wcode(0x30); //选择基本指令集
wcode(0x0c); //开显示(无游标、不反白)
wcode(0x01); //清除显示,并且设定地址指针为00H
wcode(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
//**************************************************************************************************
//任意位置显示字符串
//**************************************************************************************************
void dis(uchar x,uchar y,uchar code *s)
{ //x为横坐标,y位纵坐标,*s表示指针,为数据的首地址
switch(y) //选择纵坐标
{
case 0: wcode(0x80+x);break; //第1行
case 1: wcode(0x90+x);break; //第2行
case 2: wcode(0x88+x);break; //第3行
case 3: wcode(0x98+x);break; //第4行
default:break;
}
while(*s>0) //写入数据,直到数据为空
{
wdata(*s); //写数据
delay(10); //等待写入
s++; //下一字符
}
}
//**************************************************************************************************
//主函数
//**************************************************************************************************
main()
{
InitLCD(); //初始化液晶
while(1) //进入死循环,防止看门狗复位
{
dis(0,0," 合肥炜煌电子 "); //显示第1行
dis(0,1," www*hfwhdz*com "); //显示第2行
delay(5000); //保持显示一段时间
wcode(0x01); //清屏
}
}
这个程序为什么不能在触屏液晶显示屏上显示,需要改什么参数吗
|