12864c与语言字符显示,T6963C控制的PG12864仿真程序,显示中英文加汉字

#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++;

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值