📄 hgo12864a.c
字号:
/******************************************************************/
/******************************************************************/
#include <reg52.h>
#include <intrins.h>
/******************************************************************/
/*RES EQU P2.4
CS EQU P2.3
RS EQU P2.5 ;A0
SCL EQU P2.6
SDAT EQU P2.7
;PS1 EQU P1.1*/
sbit cs1=P2^3;
sbit rst=P2^4;
sbit a0=P2^5;
sbit sclk=P2^6;
sbit di=P2^7;
//sbit key=P3^7; /* KEY EQU P3.7 */
unsigned char bdata flag;
sbit flag_key=flag^0;
unsigned int *p;
unsigned int *q;
#define nop() _nop_() /*定义空指令*/
void lcd_init(void);
void delay(void);
void delay1(void);
void wcom(unsigned char com);
void wdata(unsigned char dat);
void write(unsigned char a);
void disdate_a(unsigned char dat_a,unsigned char dat_b);
void disdate_b(unsigned char *p);
void disdate_c(unsigned char *q);
/* 西文字符库定义 */
unsigned char code success[768]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*" "=00H*/
0x00,0x00,0x00,0x4F,0x00,0x00,0x00,0x00, /*"!"=01H*/
0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00, /*"""=02h*/
0x00,0x14,0x7F,0x14,0x7F,0x14,0x00,0x00, /*"#"=03h*/
0x00,0x24,0x2A,0x7F,0x2A,0x12,0x00,0x00, /*"$"=04h*/
0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x00, /*"%"=05h*/
0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00, /*"&"=06h*/
0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00, /*"'"=07h*/
0x00,0x00,0x1C,0x22,0x41,0x00,0x00,0x00, /*"("=08h*/
0x00,0x00,0x41,0x22,0x1C,0x00,0x00,0x00, /*")"=09h*/
0x00,0x14,0x08,0x3E,0x08,0x14,0x00,0x00, /*"*"=0Ah*/
0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00, /*"+"=0Bh*/
0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x00, /*";"=0Ch*/
0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00, /*"-"=0Dh*/
0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00, /*"."=0Eh*/
0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00, /*"/"=0Fh*/
0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00, /*"0"=10h*/
0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00, /*"1"=11h*/
0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00, /*"2"=12h*/
0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00, /*"3"=13h*/
0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00, /*"4"=14h*/
0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00, /*"5"=15h*/
0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00, /*"6"=16h*/
0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00, /*"7"=17h*/
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, /*"8"=18h*/
0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00, /*"9"=19h*/
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00, /*":"=1Ah*/
0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x00, /*";"=1Bh*/
0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00, /*"<"=1Ch*/
0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00, /*"="=1Dh*/
0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x00, /*">"=1Eh*/
0x00,0x02,0x01,0x51,0x09,0x06,0x00,0x00, /*"?"=1Fh*/
0x00,0x32,0x49,0x79,0x41,0x3E,0x00,0x00, /*"@"=20h*/
0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00, /*"A"=21h*/
0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00, /*"B"=22h*/
0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00, /*"C"=23h*/
0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00, /*"D"=24h*/
0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00, /*"E"=25h*/
0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00, /*"F"=26h*/
0x00,0x3E,0x41,0x41,0x49,0x7A,0x00,0x00, /*"G"=27h*/
0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00, /*"h"=28h*/
0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x00, /*"I"=29h*/
0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00, /*"J"=2Ah*/
0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00, /*"K"=2Bh*/
0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00, /*"L"=2Ch*/
0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00, /*"M"=2Dh*/
0x00,0x7F,0x06,0x08,0x30,0x7F,0x00,0x00, /*"N"=2Eh*/
0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00, /*"O"=2Fh*/
0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00, /*"P"=30h*/
0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00, /*"Q"=31h*/
0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00, /*"R"=32h*/
0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00, /*"S"=33h*/
0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00, /*"T"=34h*/
0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00, /*"U"=35h*/
0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00, /*"V"=36h*/
0x00,0x7F,0x20,0x18,0x20,0x7F,0x00,0x00, /*"W"=37h*/
0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00, /*"X"=38h*/
0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x00, /*"Y"=39h*/
0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00, /*"Z"=3Ah*/
0x00,0x00,0x7F,0x41,0x41,0x00,0x00,0x00, /*"["=3Bh*/
0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00, /*"\"=3Ch*/
0x00,0x00,0x41,0x41,0x7F,0x00,0x00,0x00, /*"]"=3Dh*/
0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x00, /*"^"=3Eh*/
0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00, /*"_"=3Fh*/
0x00,0x01,0x02,0x04,0x00,0x00,0x00,0x00, /*"`"=40h*/
0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00, /*"a"=41h*/
0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00, /*"b"=42h*/
0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x00, /*"c"=43h*/
0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00, /*"d"=44h*/
0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00, /*"e"=45h*/
0x00,0x00,0x08,0x7E,0x09,0x02,0x00,0x00, /*"f"=46h*/
0x00,0x0C,0x52,0x52,0x4C,0x3E,0x00,0x00, /*"g"=47h*/
0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00, /*"h"=48h*/
0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00, /*"i"=49h*/
0x00,0x20,0x40,0x44,0x3D,0x00,0x00,0x00, /*"j"=4Ah*/
0x00,0x00,0x7F,0x10,0x28,0x44,0x00,0x00, /*"k"=4Bh*/
0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00, /*"l"=4Ch*/
0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00, /*"m"=4Dh*/
0x00,0x7C,0x08,0x04,0x04,0x78,0x00,0x00, /*"n"=4Eh*/
0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00, /*"o'=4Fh*/
0x00,0x7E,0x0C,0x12,0x12,0x0C,0x00,0x00, /*"p"=50h*/
0x00,0x0C,0x12,0x12,0x0C,0x7E,0x00,0x00, /*"q"=51h*/
0x00,0x7C,0x08,0x04,0x04,0x08,0x00,0x00, /*"r"=52h*/
0x00,0x58,0x54,0x54,0x54,0x64,0x00,0x00, /*"s"=53h*/
0x00,0x04,0x3F,0x44,0x40,0x20,0x00,0x00, /*"t"=54h*/
0x00,0x3C,0x40,0x40,0x3C,0x40,0x00,0x00, /*"u"=55h*/
0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00, /*"v"=56h*/
0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00, /*"w"=57h*/
0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, /*"x"=58h*/
0x00,0x1C,0xA0,0xA0,0x90,0x7C,0x00,0x00, /*"y"=59h*/
0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00, /*"z"=5Ah*/
0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00, /*"{"=5Bh*/
0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00, /*"|"=5Ch*/
0x00,0x00,0x41,0x36,0x08,0x00,0x00,0x00, /*"}"=5Dh*/
0x00,0x02,0x01,0x02,0x04,0x02,0x00,0x00, /*"~"=5Fh*/
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00 /*" "=0x60*/
};
/* 中文字符库定义 */
unsigned char code CCTAB[128]={
0x82,0x8A,0x92,0xB2,0x02,0xA7,0x92,0x5E, /*蓬90 = 00H*/
0x2A,0xAF,0x2A,0x5A,0x4A,0x83,0x82,0x00,
0x00,0x80,0x40,0x3F,0x41,0x90,0x95,0x95,
0x95,0xFF,0x95,0x95,0x95,0xD0,0x40,0x00,
0x80,0x64,0x24,0x24,0x3F,0x24,0xA6,0x64, /*勃90 = 01H*/
0x20,0x20,0xFF,0x20,0x20,0xF0,0x20,0x00,
0x00,0x08,0x49,0x89,0x7D,0x0B,0x89,0x40,
0x30,0x0E,0x41,0x80,0x40,0x3F,0x00,0x00,
0x40,0x42,0x44,0xCC,0x00,0x20,0x22,0xE2, /*远90 = 02H*/
0x22,0x22,0xE2,0x23,0x32,0x20,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x50,0x4C,0x43,
0x40,0x40,0x47,0x48,0x48,0x6E,0x20,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F, /*大90 = 03H*/
0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00
};
/*************************************************/
/*延时*/
/*************************************************/
void delay(void)
{unsigned char i,j;
for(i=32;i>0;i--)
for(j=255;j>0;j--);
}
/*************************************************/
/*延时*/
/*************************************************/
void delay1(void)
{unsigned char i,j;
for(i=255;i>0;i--)
{
for(j=255;j>0;j--)
{nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();}
}
}
/*************************************************/
//初始化
/*************************************************/
void lcd_init(void)
{
rst=0;
delay();
rst=1;
delay();
wcom(0xa3); //LCD BIAS SET ( A2 1/8;A3 1/65DUTY)
wcom(0xa0); //ADC select,NORMAL 0-->127
wcom(0xaf); // DISPLAY ON/OFF
wcom(0x2f); //power control(VB,VR,VF=1,1,1)
wcom(0x23); // VOLT REGULATOR RADIO SET
wcom(0x81); //ELECTRONIC VOLUME mode setting 100B 对比度命令
wcom(0x28); //REFERENCE VOLT REG set
wcom(0xc0); //SHL SELECT
wcom(0xaf); //DISPLAY ON/OFF
wcom(0x40); // DISPLAY START LINE SET
nop();
nop();
}
/*************************************************/
//检查按键是否有动作,有动作则显示下一屏内容
//没动作则延时1s继续显示下一屏内容
/*************************************************/
/*************************************************/
//写命令
/*************************************************/
void wcom(unsigned char com)
{
cs1=0;
nop();
a0=0;
nop();
write(com);
nop();
nop();
cs1=1;
}
/*************************************************/
//写数据
/*************************************************/
void wdata(unsigned char dat)
{
cs1=0;
nop();
a0=1;
nop();
write(dat);
nop();
nop();
cs1=1;
}
/*************************************************
//串口移位输出
/*************************************************/
void write(unsigned char dat)
{ unsigned char s,temp;
int i;
sclk=0;
s=dat;
for(i=8;i>0;i--)
{sclk=0;
nop();
nop();
temp=s & 0x80;
if(temp)
{di=1;}
else {di=0;}
sclk=1;
s=s<<1;
}
}
/********************************************/
/* 西文字符写入函数:CW_PR */
void cwpr(unsigned char cod,unsigned char page,unsigned char seg)
{ unsigned char zmseg;
unsigned char date1;
wcom(0xB0+page);
delay();
wcom(0x10+0x0F&(seg>>4));
delay();
wcom(0x0F&seg);
delay();
for(zmseg=0;zmseg<=7;zmseg++)
{
wdata(success[cod*8+zmseg]);
delay();
}
}
/*16*16汉字写入子程序*/
void ccwpr(unsigned char cod,unsigned char page,unsigned char seg)
{ unsigned char zmseg;
unsigned char date1;
wcom(0xB0+page+1);
delay();
wcom(0x10+0x0F&(seg>>4));
delay();
wcom(0x0F&seg);
delay();
for(zmseg=16;zmseg<=31;zmseg++)
{
wdata(CCTAB[cod*32+zmseg]);
delay();
}
wcom(0xB0+page);
delay();
wcom(0x10+0x0F&(seg>>4));
delay();
wcom(0x0F&seg);
delay();
for(zmseg=0;zmseg<=15;zmseg++)
{
wdata(CCTAB[cod*32+zmseg]);
delay();
}
}
/*************************************************/
//写disdate_a数据
/*************************************************/
void disdate_a(unsigned char dat_a,unsigned char dat_b)
{
int seg;
unsigned char page;
for(page=0xb0;page<0xb9;page++) //写页地址共9页 0xb8----0xb9
{ wcom(page); //如下汉字可改
wcom(0x10);
wcom(0x00);
for(seg=0;seg<64;seg++)
{ wdata(dat_a);
wdata(dat_b);
}
}
wcom(0xaf);
}
/*************************************************/
//写disdate_b数据
/*************************************************/
void disdate_b(unsigned char *p)
{
int seg;
unsigned char page;
wcom(0xaf);
for(page=0xb0;page<0xb9;page++) //写页地址共8页 0xb0----0xb8
{
wcom(page);
wcom(0x10);
wcom(0x00);
for(seg=0;seg<128;seg++)
{
wdata(*p++);
}
}
}
/*************************************************/
//写disdate_c数据
/*************************************************/
void disdate_c(unsigned char *q)
{ int seg;
unsigned char page;
wcom(0xaf);
for(page=0xb0;page<0xb9;page++) //写页地址共8页 0xb0----0xb8
{
wcom(page);
wcom(0x10);
wcom(0x00);
q=q+128;
for(seg=128;seg>0;seg--)
{
wdata(*q--);
}
q=q+128;
}
}
/**************************************************/
//test user
/**************************************************/
/*
void data_send(unsigned char dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
*/
/*************************************************/
/*主程序
/*************************************************/
void main(void)
{
delay();
delay();
lcd_init();
while(1) //START
{
// disdate_b(&tab1);
// delay1();
// delay_keycheck();
disdate_a(0x00,0x00);
ccwpr(0,1,32);//清
ccwpr(1,1,48);//达
ccwpr(2,1,64);//光
ccwpr(3,1,80);//电
cwpr(0x10,4,16);
cwpr(0x11,4,24);
cwpr(0x10,4,32);
cwpr(0x0d,4,40);
cwpr(0x16,4,48);
cwpr(0x12,4,56);
cwpr(0x10,4,64);
cwpr(0x15,4,72);
cwpr(0x11,4,80);
cwpr(0x12,4,88);
cwpr(0x10,4,96);
cwpr(0x19,4,104);
delay1();
disdate_a(0xaa,0xaa);
delay1();
// delay_keycheck();
disdate_a(0x55,0x55);
delay1();
// delay_keycheck();
disdate_a(0xff,0x00);
delay1();
// delay_keycheck();
disdate_a(0x00,0xff);
delay1();
// delay_keycheck();
disdate_a(0xaa,0x55);
delay1();
// delay_keycheck();
disdate_a(0xff,0xff);
delay1();
// delay_keycheck();
disdate_a(0x00,0x00);
delay1();
// delay_keycheck();
// disdate_b(&tab2);
// delay1();
// delay_keycheck();
// disdate_c(&tab3);
// delay1();
// delay_keycheck();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -