标题:
T6963C控制的PG12864仿真程序,显示中英文加汉字
[打印本页]
作者:
xzf586
时间:
2018-9-27 09:20
标题:
T6963C控制的PG12864仿真程序,显示中英文加汉字
收了几块T6963C控制的点阵液晶屏,研究了两天,终于弄了点小眉目,现在将程序及仿真放上来,供参考
1.png
(21.26 KB, 下载次数: 83)
下载附件
2018-9-27 09:16 上传
0.png
(55 KB, 下载次数: 86)
下载附件
2018-9-27 17:13 上传
单片机源程序如下:
#include<stdio.h> //NULL 的引用
#include<intrins.h>
#include<ABSACC.H> //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++;
}
}
}
复制代码
所有资料51hei提供下载:
T6963C控制的PG12864,显示中英文加汉字.rar
(69.96 KB, 下载次数: 140)
2018-9-27 09:23 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
KaLeung
时间:
2019-5-2 16:53
多谢分享 小白被这T6963C搞死了快哈哈
作者:
FQ967
时间:
2019-6-27 16:55
正折腾呢!谢谢!
作者:
longqishi57777
时间:
2019-7-29 10:45
不错,下来学习下
作者:
lls5201
时间:
2019-9-28 13:04
不错~看一下~顶上去
作者:
wang66306393
时间:
2020-3-17 11:55
新手来学习一下
作者:
perseverance51
时间:
2022-6-23 13:55
谢谢分享,可以驱动显示,不过启动后要等待10多秒后才能刷出画面来。
作者:
Michael_xie
时间:
2022-7-2 18:34
为什么启动这么慢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1