📄 tg19264-01b.c
字号:
//铜桦LCM测试程序,使用周立功的DP-51+实验板,CPU:P89C52X2BN,晶振频率:11.0592
//连线图:DB0~7--P1.0~7, RESET--P3.0, CSB--P3.1, CSA--P3.2, E--P3.5, R/W--GND, D/I--P3.4
#include<reg52.H> //加载头文件
#include <stdio.h> /* 加载输入输出库函数 */
//定义控制线的I/O引脚
sbit DI=P3^4; //指令/数据控制口
sbit E=P3^5; //输出/锁存控制口
sbit RESET=P3^0; //复位控制口
sbit CSB=P3^1; //CSA,CSB作为片选控制口
sbit CSA=P3^2;
//定义缩写数据类型
#define uchar unsigned char
#define uint unsigned int
//函数原型说明
void initialize (void); //初始化函数(全屏数据清零)
void CSame (uchar i); //写整片函数--整片显示相同的数据
void wrtins (uchar i); //写指令函数
void wrdata (uchar i); //写数据函数
void delay (uint x); //延时函数
//void ScreenSame (uchar i); //写全屏函数--全屏显示相同的数据
void wrchar(bit i,bit j,uchar k,uchar l,uchar m,uchar n[]); //写字函数
//定义汉字库
uchar code hua[32]={0x04,0x04,0x04,0x84,0xF4,0x2F,0x04,0x04,0xE4,0x0F,0x04,0xC4,0x84,0x04,0x04,0x00,0x00,0x02,0x01,0x00,0xFF,0x00,0x08,0x04,0x3F,0x42,0x41,0x40,0x40,0x78,0x20,0x00};
uchar code zai[32]={0x00,0x04,0x04,0xC4,0x64,0x9C,0x87,0x84,0x84,0xE4,0x84,0x84,0x84,0x84,0x04,0x00,0x04,0x02,0x01,0x7F,0x00,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00};
uchar code wo[32]={0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00,0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00};
uchar code bu[32]={0x00,0x02,0x02,0x02,0x02,0x82,0x42,0xFE,0x06,0x42,0xC2,0x82,0x02,0x03,0x02,0x00,0x00,0x08,0x04,0x02,0x01,0x00,0x00,0x7F,0x00,0x00,0x00,0x01,0x07,0x02,0x00,0x00};
uchar code de[32]={0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00};
uchar code ri[32]={0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00};
uchar code zi[32]={0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00};
uchar code li[32]={0x00,0x00,0xFF,0x91,0x91,0x91,0x91,0xFF,0x91,0x91,0x91,0x91,0xFF,0x00,0x00,0x00,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00};
uchar code zhao[32]={0x00,0x00,0xFE,0x22,0x22,0xFE,0x40,0x21,0xD1,0x4F,0x41,0x51,0x61,0xDF,0x00,0x00,0x40,0x60,0x3B,0x01,0x09,0x33,0x60,0x00,0x0F,0x32,0x62,0x02,0x0A,0x37,0x60,0x00};
uchar code gu[32]={0x00,0xFE,0x02,0xF2,0x12,0x12,0xF2,0x00,0xF2,0x12,0x1A,0xD6,0x12,0xF2,0x02,0x00,0x20,0x1F,0x00,0x3F,0x10,0x09,0x45,0x40,0x2F,0x20,0x10,0x0F,0x10,0x2F,0x60,0x00};
uchar code hao[32]={0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xF2,0x8A,0x86,0x82,0x80,0x00,0x80,0x43,0x22,0x14,0x0C,0x73,0x20,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00};
uchar code zi4[32]={0x00,0x00,0x00,0xF8,0x48,0x48,0x4C,0x4B,0x4A,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00};
uchar code ji[32]={0x00,0x00,0xE2,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x20,0x00};
uchar code p1[32]={0x00,0x18,0x4C,0x06,0x66,0x66,0x06,0x06,0x06,0x06,0x66,0x66,0x06,0x4C,0x18,0x00,0x00,0x00,0x07,0x08,0x10,0x20,0x22,0x26,0x26,0x22,0x20,0x10,0x08,0x07,0x00,0x00};
//定义ASCII库
uchar code ASCII_A[16]={0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20};
uchar code ASCII_B[16]={0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00};
uchar code eight[16]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};
//主程序开始
void main (void)
{
uchar i;
initialize(); //初始化
//ScreenSame(0x01);
wrchar(0,0,16,0xb8,0x40,hua);
delay(0xff);
wrchar(0,0,16,0xb8,0x50,hua);
delay(0xff);
wrchar(0,0,16,0xb8,0x60,zai);
delay(0xff);
wrchar(0,0,16,0xb8,0x70,wo);
delay(0xff);
wrchar(0,1,16,0xb8,0x40,bu);
delay(0xff);
wrchar(0,1,16,0xb8,0x50,zai);
delay(0xff);
wrchar(0,1,16,0xb8,0x60,de);
delay(0xff);
wrchar(0,1,16,0xb8,0x70,ri);
delay(0xff);
wrchar(1,0,16,0xb8,0x40,zi);
delay(0xff);
wrchar(1,0,16,0xb8,0x50,li);
delay(0xff);
wrchar(1,0,16,0xb8,0x60,zhao);
delay(0xff);
wrchar(1,0,16,0xb8,0x70,gu);
delay(0xff);
wrchar(0,0,16,0xba,0x40,hao);
delay(0xff);
wrchar(0,0,16,0xba,0x50,zi4);
delay(0xff);
wrchar(0,0,16,0xba,0x60,ji);
delay(0xff);
wrchar(0,0,16,0xba,0x70,p1);
delay(0xff);
while(1)
{
for(i=0;i<64;i++)
{
CSA=0;
CSB=0;
wrtins(0xc1+i);
CSA=0;
CSB=1;
wrtins(0xc1+i);
CSA=1;
CSB=0;
wrtins(0xc1+i);
delay(100);
}
};
}
void initialize (void)
{
RESET=0; //LCM复位信号有效
delay(10); //延时
RESET=1; //LCM复位信号无效
CSA=0; //片选第一片
CSB=0;
wrtins(0x3f); //Display On
CSame(0x00); //全片清0
CSA=0; //片选第二片
CSB=1;
wrtins(0x3f); //Display On
CSame(0x00); //全片清0
CSA=1; //片选第三片
CSB=0;
wrtins(0x3f); //Display On
CSame(0x00); //全片清0
}
void CSame (uchar i) //入口参数为清屏时每8行显示的数据
{
uchar x,y; //定义X,Y地址,初值为首地址
uchar j,k;
x=0xb8;
y=0x40;
wrtins(0xc0); //Start=0
for(j=0;j<8;j++)
{
wrtins(x);
x++; //X地址加1
wrtins(y); //每写完一个数Y地址会自动加1
for(k=0;k<64;k++)
{
wrdata(i);
}
}
}
void wrtins (uchar i) //入口参数为要写的指令的低8位
{
E=0; //控制写脉冲
DI=0; //表示是写指令
P1=i; //输出指令的低8位
delay(1);
E=1;
delay(1);
E=0;
delay(1);
}
void wrdata (uchar i)
{
E=0; //控制写脉冲
DI=1;
P1=i; //输出数据
delay(1);
E=1;
delay(1);
E=0;
delay(1);
}
void delay (uint x) //入口参数控制延时的长短
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
/*void ScreenSame (uchar i)
{
CSA=0;
CSB=0;
CSame(i);
CSA=0;
CSB=1;
CSame(i);
CSA=1;
CSB=0;
CSame(i);
}*/
void wrchar(bit i,bit j,uchar k,uchar l,uchar m,uchar n[]) //入口参数依次为片选信号,半字数组大小,X坐标,Y坐标和显示的字符数组
{
uchar o,p,q;
CSA=i;
CSB=j;
wrtins(0xc0); //Start=0
for(o=0;o<2;o++)
{
wrtins(l); //设置X坐标
l++; //为了不使字符之间是紧挨着 空开1象素
wrtins(m); //设置Y坐标
for(p=0;p<k;p++)
{
q=n[p+o*k];
wrdata(q);
}
}
}
/*******************************End*************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -