#include //NULL 的引用
#include
#include //XBYTE[]的引用
#define uchar unsigned char
#define uint unsigned int
#define lcmcom XBYTE[0x3fff] /*T6963C 写命令口地址,读数据口地址*/
#define lcmdata XBYTE[0x3eff] /*T6963C 写数据口地址*/
uchar code table[]=
{
/*---转换字符 *姓名*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00, // -x-
/*---转换字符 * 姓名*/
0x00,0x00,0x00,0x00,0x00,0xFE,0xCC,0x18,0x30,0x60,0xC6,0xFE,0x00,0x00,0x00,0x00, // -z-
0x00,0x00,0x38,0x6C,0x64,0x60,0xF0,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00, // -f-
/*---转换字符 制 ---*/
0x04,0x24,0x25,0x3F,0x24,0x44,0xFF,0x04,0x3F,0x24,0x24,0x24,0x26,0x25,0x04,0x04,
0x04,0x04,0x04,0xA4,0x24,0xA4,0xE4,0x24,0xA4,0xA4,0xA4,0x84,0x84,0x04,0x14,0x08,
/*---转换字符 作 ---*/
0x09,0x09,0x09,0x11,0x12,0x32,0x54,0x98,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x00,0x00,0x04,0xFE,0x80,0x80,0x90,0xF8,0x80,0x80,0x88,0xFC,0x80,0x80,0x80,0x80
};
void busy_lcm(uchar flag)
{
uchar i;
i=flag;
while(i==lcmcom&flag);
}
void write_lcm(uchar count,uchar com,uchar data1,uchar data2)
{
switch(count)
{
case 1: busy_lcm(0x3); lcmcom=com;
break;
case 2: busy_lcm(0x3); lcmdata=data1; busy_lcm(0x3); lcmcom=com;
break;
case 3: busy_lcm(0x3); lcmdata=data1; busy_lcm(0x3); lcmdata=data2; busy_lcm(0x3);
lcmcom=com;
break;
default:break;
}
}
void clear_lcm()
{
uint i;
write_lcm(3,0x24,0x00,0x00); /*设置显示RAM 首地址*/
write_lcm(1,0xb0,NULL,NULL); /*设置自动写方式*/
for (i=0;i<3840;i++) /*最大显示点阵为:240*128/8=3840;128×64/8=1024*/
{
busy_lcm(0x0c);
lcmdata=0x0; /*写00H 清屏*/
}
busy_lcm(0x0c);
lcmcom=0xb2; /*设置自动写结束*/
}
void init_lcm()
{
write_lcm(1,0xa1,NULL,NULL); //设置光标形状为8(列)×1(行)
write_lcm(3,0x21,0x00,0x00); //设置光标指针
write_lcm(3,0x40,0x00,0x00); //设置文本显示区域首址
write_lcm(3,0x41,0x01,0x00); // 设置文本区宽度
write_lcm(3,0x42,32,0x00); //设置图形显示区域首址为32
write_lcm(3,0x24,32,0x00); // 设置地址指针位置为32
write_lcm(3,0x43,30,0x0); //设置图形显示区域宽度为30 字节
write_lcm(1,0x80,NULL,NULL); //设置显示为逻辑“或”方式
write_lcm(1,0x9c,NULL,NULL); //设置显示开关,图形/文本显示均开启
}
/********************************************************************
显示一个汉字
*********************************************************************/
void display_1c(uchar caddr,uchar x,uchar y) //控制汉字
{
uchar i,j,*p;uint w;
p=table+caddr*32;
x=x<<1; //可灵活调节循环左移
for(i=0;i<=1;i++)
{
x=x+i;
for(j=0;j<16;j++)
{
w=y*16*30+x+32+j*30;
write_lcm(3, 0x24, w%256, w>>8);
write_lcm(2, 0xc2, *p, NULL);
p++;
}
}
}