发表于:2006-04-18 09:40:00
楼主
#include <reg51.h>
#include <math.h>
#include <absacc.h>
#include <string.h>
//以8*8字符计算,显示屏横向、纵向可以显示的字符个数
#define LineChar 8 //共8行
#define ColumnChar 16 //总共16列
//信号管脚定义(全局变量)(注意:因为液晶数据口接P1,故为间接控制方式)
sbit cd=P2^0;
sbit reset=P2^1;
sbit wr=P3^6;
sbit rd=P3^7;
unsigned char code ASCII816[ ][16];
unsigned char code HZTable[ ][32];
//数据线定义
#define dataport P1 //P1为数据口
#define unchar unsigned char
#define unint unsigned int
/*----------------------------------------------------------------------------------------*/
//延时函数
void Lcddelay(unsigned char MS)
{
unsigned char us, usn;
while(MS!=0)
{ usn = 4;
while(usn!=0)
{
us=0xf0;
while(us!=0){us--;}
usn--;
}
MS--;
}
}
/*---------------------------------------------------------------------------------------*/
//状态检查函数
//指令,数据读写状态检查
void RWCheck()
{
unchar dat;
do{
dataport=0xff;
cd=1;
rd=0;
dat=dataport;
rd=1;
dat=0x03&dat;//STA0,STA1是否准备好
}while(dat!=0x03);
}
//数据自动读状态检查
void AutoRCheck()
{
unchar dat;
do{
dataport=0xff;
cd=1;
rd=0;
dat=dataport;
rd=1;
dat=0x04&dat;//STA2是否准备好
}while(dat==0x00);
}
//数据自动写状态检查
void AutoWCheck()
{
unchar dat;
do{
dataport=0xff;
cd=1;
rd=0;
dat=dataport;
rd=1;
dat=0x08&dat;//STA3是否准备好
}while(dat==0x00);
}
//读数据
unchar InPortData()
{
unchar dat;
RWCheck(); //判断状态位STA0,STA1
cd=0;
dataport=0xff;
rd=0;
dat=dataport;
rd=1;
return(dat);
}
/*------------------------------------------------------------------------------------*/
/*------输入/出函数,与T6963通讯------------------------------------------------*/
/*------------------------------------------------------------------------*/
// 向数据口发Data
void OutPortData(dat) { RWCheck(); cd=0; dataport=dat; wr=0; wr=1;}
//写有 1 个参数命令
void OutPortCom1(command) { RWCheck(); cd=1; dataport=command; wr=0; wr=1;}
//写有 2 个参数命令
void OutPortCom2(dat, command) { OutPortData(dat); OutPortCom1(command); }
//写有 3 个参数命令
void OutPortCom3(data1, data2, command) { OutPortData(data1); OutPortData(data2); OutPortCom1(c