?? lcd12864.h
字號:
#ifndef _12864_h_
#define _12864_h_
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define PORT P2
sbit bflag=P2^7;
sbit CS1=P3^7;
sbit CS2=P3^6;
sbit E=P3^3;
sbit RW=P3^4;
sbit RS=P3^5;
uchar code Tab[]={
0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x38,0x06,0x80,0x39,0x07,0x80,0x3B,0x07,0x80,
0x33,0x03,0x00,0xA3,0x05,0x00,0xA2,0x06,0x00,0x02,0x07,0x00,0xFF,0x0B,0x00,0xFF,
0x08,0x00,0x13,0x0C,0x00,0x71,0x0C,0xC0,0xD1,0x0E,0xE0,0xDF,0x07,0xC0,0x9F,0x03,
0x00,0xF1,0x03,0x00,0xF1,0x07,0x00,0x33,0x0E,0x00,0x0F,0x1E,0x00,0x0F,0x1C,0x00,
0x00,0x1C,0x00,0x00,0x0C,0x00,0x00,0x0C, //波
0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x18,0x04,0x00,0x19,0x06,0x80,0x19,0x07,0x80,
0xF9,0x07,0x80,0xFF,0x03,0x80,0xFF,0x00,0x80,0x19,0x00,0x80,0xFF,0x0F,0x80,0xFF,
0x0F,0x80,0xFF,0x0F,0x80,0x19,0x08,0x80,0x19,0x08,0x00,0x52,0x0C,0x00,0x62,0x0C,
0x00,0x23,0x0E,0x00,0x33,0x06,0x80,0x39,0x07,0x80,0x19,0x03,0xC0,0x8D,0x03,0x80,
0xE8,0x01,0x00,0xE0,0x00,0x00,0x40,0x00, //形
0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x0C,0x03,0x80,
0x0F,0x03,0x80,0x0F,0x03,0x00,0x8D,0x05,0x00,0xCC,0x0D,0x00,0xEC,0x0C,0xC0,0x7F,
0x0C,0xC0,0x7F,0x06,0xC0,0xD7,0x07,0x00,0x94,0x03,0x80,0xF5,0x01,0xC0,0xF5,0x03,
0xC0,0x34,0x03,0x00,0x04,0x06,0x00,0x04,0x0E,0x00,0x00,0x1E,0x00,0x00,0x1C,0x00,
0x00,0x1C,0x00,0x00,0x0C,0x00,0x00,0x04, //發
0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x10,0x06,0x00,
0x5C,0x06,0x00,0x6F,0x06,0x80,0x67,0x06,0x80,0x65,0x06,0x00,0x64,0x06,0x00,0x64,
0x06,0xC0,0xFF,0x07,0xC0,0xFF,0x07,0xC0,0xFF,0x07,0x00,0x64,0x06,0x00,0x64,0x06,
0x00,0x64,0x04,0x00,0x64,0x0C,0x00,0x64,0x0C,0x00,0x04,0x0E,0x00,0x00,0x0E,0x00,
0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x02, //生
0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x01,0x00,0x80,0x01,0xC0,0x9B,0x07,0xC0,
0xDB,0x0F,0x80,0xD2,0x0F,0x80,0x52,0x09,0x80,0x72,0x09,0x80,0x37,0x0D,0xC0,0xBB,
0x0F,0x00,0x1C,0x07,0x00,0x3C,0x01,0xC0,0x3B,0x0F,0xC0,0x3B,0x0F,0x80,0x7E,0x09,
0x80,0x7E,0x09,0x80,0xDA,0x09,0x80,0xD2,0x0F,0x80,0xD3,0x0F,0x80,0xD1,0x01,0x00,
0x80,0x03,0x00,0x80,0x01,0x00,0x80,0x00, //器
};
uchar code Str[]={
0x00,0x00,0x00,0x01,0x20,0x01,0xB0,0x1F,0xE0,0x1E,0x60,0x0B,0xA0,0x0B,0xF0,0x1F,
0x70,0x1E,0x30,0x00,0xF0,0x3F,0x10,0x09,0x90,0x08,0x70,0x0F,0x30,0x07,0x00,0x00,//邵
0x00,0x00,0x20,0x00,0xF0,0x3F,0xF0,0x3F,0x20,0x09,0xA0,0x0D,0x60,0x0F,0x20,0x06,
0xE0,0x1F,0x60,0x1F,0x20,0x11,0x20,0x11,0xE0,0x1F,0xE0,0x1F,0x00,0x00,0x00,0x00,//陽
0x00,0x00,0x00,0x0C,0xC0,0x0D,0xC0,0x04,0x70,0x24,0x60,0x25,0x40,0x25,0x70,0x37,
0x70,0x3F,0x40,0x1F,0x70,0x05,0x70,0x05,0x40,0x04,0xC0,0x0D,0xC0,0x0C,0x00,0x04,//學
0x00,0x00,0x20,0x00,0xE0,0x3F,0xA0,0x0D,0xE0,0x25,0x60,0x23,0xE0,0x30,0x20,0x1B,
0xA0,0x0F,0xB0,0x01,0xB0,0x0F,0xA0,0x19,0x20,0x31,0xE0,0x30,0xE0,0x30,0x00,0x18,//院
0x00,0x01,0x00,0x01,0xC0,0x11,0x70,0x1F,0x60,0x03,0xF0,0x3F,0xF0,0x3F,0xC0,0x02,
0x40,0x1F,0x00,0x01,0xE0,0x17,0xC0,0x37,0x00,0x30,0xF0,0x1F,0x20,0x00,0x00,0x00,//制
0x00,0x00,0x60,0x00,0x60,0x00,0xE0,0x1F,0xE0,0x1F,0xB0,0x00,0xD0,0x00,0x60,0x00,
0x70,0x00,0xF0,0x3F,0xE0,0x3F,0x60,0x05,0x60,0x05,0x40,0x05,0x40,0x05,0x40,0x00,//作
0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x18,0x00,0x0E,0x80,0x07,0xF0,0x03,
0xF0,0x01,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x1C,0x00,0x38,0x00,0x30,0x00,0x10,//人
0x00,0x00,0x00,0x04,0xE0,0x24,0xE0,0x24,0xA0,0x14,0xE0,0x17,0xA0,0x1F,0xB0,0x0D,
0xF0,0x07,0x70,0x1F,0x60,0x1D,0x20,0x15,0x20,0x3C,0xE0,0x2C,0x00,0x0C,0x00,0x04,//賓
0x00,0x00,0x00,0x35,0x20,0x15,0xA0,0x2D,0xA0,0x24,0xE0,0x3F,0x60,0x0D,0xF0,0x1D,
0xF0,0x1D,0x60,0x2C,0x60,0x3E,0xF0,0x3E,0x80,0x0E,0x80,0x1A,0x80,0x10,0x80,0x10,//淼
0x00,0x00,0x00,0x04,0xC0,0x06,0x40,0x03,0xC0,0x03,0xF0,0x1F,0xC0,0x01,0x40,0x07,
0x40,0x06,0x40,0x03,0xF0,0x3F,0xF0,0x1F,0x40,0x03,0x40,0x06,0x00,0x0E,0x00,0x04,//林
0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,//波
0x40,0x80,0x42,0x40,0x42,0x30,0xFE,0x0F,0x42,0x00,0x42,0x00,0xFE,0x7F,0x42,0x00,
0x42,0x84,0x40,0x42,0x10,0x21,0x88,0x10,0xE4,0x08,0x47,0x0E,0x02,0x04,0x00,0x00,//形
0x44,0x04,0xF4,0x04,0x4F,0x04,0xE4,0xFF,0x44,0x02,0x64,0x02,0x90,0xFF,0x98,0x4A,
0x94,0x8A,0x93,0x7F,0x14,0x00,0x98,0x3F,0x08,0x80,0xD0,0xFF,0x10,0x00,0x00,0x00,//輸
0x00,0x00,0x00,0x00,0xFC,0x7E,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0xFF,0x3F,
0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0xFC,0x7E,0x00,0x00,0x00,0x00,//出
0x20,0x44,0x3C,0x43,0x20,0x20,0x20,0x10,0xBF,0x0B,0x24,0x04,0x24,0x43,0x00,0x40,
0xF2,0x27,0x1A,0x18,0xD6,0x07,0x12,0x08,0x12,0x10,0xF2,0x27,0x02,0x60,0x00,0x00,//頻
0x00,0x08,0x0C,0x0A,0x14,0x09,0xA4,0x08,0x04,0x08,0x64,0x0A,0x35,0x0B,0xAE,0xFE,
0x64,0x0A,0x24,0x0B,0x14,0x0C,0xA4,0x08,0x14,0x09,0x04,0x0A,0x04,0x08,0x00,0x00,//率
0x40,0x00,0x41,0x00,0xCE,0x7F,0x04,0x20,0x00,0x90,0x80,0x80,0x40,0x40,0xBE,0x43,
0x82,0x2C,0x82,0x10,0x82,0x10,0xBE,0x2C,0xC0,0x43,0x40,0xC0,0x40,0x40,0x00,0x00,//設
0x00,0x80,0x20,0x80,0x2F,0x80,0xA9,0xFF,0xA9,0xAA,0xAF,0xAA,0xE9,0xAA,0xB9,0xAA,
0xA9,0xAA,0xAF,0xAA,0xA9,0xAA,0xA9,0xFF,0x2F,0x80,0x20,0x80,0x00,0x80,0x00,0x00,//置
0x00,0x00,0x00,0x40,0x02,0x21,0x22,0x13,0xB2,0x09,0xAA,0x05,0x66,0x41,0x62,0x81,
0x22,0x7F,0x11,0x01,0x4D,0x05,0x81,0x09,0x01,0x13,0x01,0x62,0x00,0x00,0x00,0x00,//系
0x20,0x20,0x30,0x22,0x2C,0x23,0xA3,0x12,0x60,0x12,0x10,0x92,0x84,0x40,0xC4,0x30,
0xA4,0x0F,0x9D,0x00,0x86,0x00,0x84,0x3F,0xA4,0x40,0xC4,0x41,0x84,0x70,0x00,0x00,//統
0x00,0x00,0xFC,0x0F,0xFC,0x0F,0x3C,0x08,0xF0,0x00,0xC0,0x03,0x00,0x07,0xC0,0x01,
0x78,0x00,0xFC,0x0F,0xFC,0x0F,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//M
0x00,0x00,0xFC,0x0F,0xFC,0x0F,0x44,0x08,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,
0x44,0x08,0xFC,0x0F,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//H
0x00,0x08,0x0C,0x0E,0x04,0x0F,0x84,0x09,0xE4,0x08,0x74,0x08,0x1C,0x08,0x0C,0x0C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//Z
};
uchar code Num[]={
0x80,0x07,0xC0,0x08,0x30,0x0C,0x10,0x04,0x18,0x06,0x88,0x01,0xF0,0x00,0x00,0x00,//0
0x00,0x04,0x90,0x0F,0xE8,0x01,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 +16
0x00,0x1E,0x60,0x1B,0x50,0x09,0x90,0x0D,0x98,0x0C,0x58,0x00,0x70,0x00,0x00,0x00,//2 +32
0x00,0x0C,0x00,0x08,0xB0,0x08,0xD0,0x0C,0xD0,0x0C,0xD0,0x04,0x50,0x03,0x30,0x00,//3 +48
0x80,0x03,0x40,0x02,0x20,0x02,0xA0,0x0F,0xD0,0x03,0x68,0x03,0x18,0x00,0x00,0x00,//4 +64
0x00,0x0A,0xE0,0x0C,0xD0,0x0C,0x58,0x04,0x58,0x06,0x98,0x03,0x18,0x00,0x00,0x00,//5 +80
0x00,0x07,0xC0,0x0F,0xE0,0x08,0x70,0x0C,0x58,0x06,0xC8,0x01,0x08,0x00,0x00,0x00,//6 +96
0x00,0x00,0x00,0x0C,0x18,0x0F,0x88,0x03,0xC8,0x00,0x68,0x00,0x38,0x00,0x18,0x00,//7 +112
0x00,0x00,0x00,0x0C,0x30,0x0B,0xC8,0x08,0x6C,0x07,0x2C,0x00,0x1C,0x00,0x0C,0x00,//8 +128
0x00,0x00,0x40,0x00,0xE0,0x01,0x30,0x09,0x98,0x04,0x98,0x03,0xE8,0x00,0x78,0x00,//9 +144
};
//**************************************************************************驅動函數
void Left() //開啟左半屏
{
CS1=0;
CS2=1;
}
void Right() //開啟右半屏
{
CS1=1;
CS2=0;
}
void Busy_12864() //判忙程序
{
do{E=0;
RS=0;
RW=1;
PORT=0xff;
E=1;
E=0;}while(bflag);
}
void Wreg(uchar c)
{ //寫指令程序
Busy_12864();
RS=0;
RW=0;
PORT=c;
E=1;
E=0;
}
void Wdata(uchar c) //寫數據程序
{
Busy_12864();
RS=1;
RW=0;
PORT=c;
E=1;
E=0;
}
void Pagefirst(uchar c) //首頁定義
{
uchar i;
i=c;
c=i|0xb8;
Busy_12864();
Wreg(c);
}
void Linefirst(uchar c) //首列定義
{
uchar i;
i=c;
c=i|0x40;
Busy_12864();
Wreg(c);
}
/**********************************************************************
void Rowfirst(uchar c) //首行定義
{
uchar i;
i=c;
c=i|0xc0;
Busy_12864();
Wreg(c);
}
***********************************************************************/
void Ready_12864() //清屏函數
{
uint i,j;
Left();
Wreg(0x3f);
Right();
Wreg(0x3f);
Left();
for(i=0;i<8;i++)
{
Pagefirst(i);
Linefirst(0x00);
for(j=0;j<64;j++)
{
Wdata(0x00);
}
}
Right();
for(i=0;i<8;i++)
{
Pagefirst(i);
Linefirst(0x00);
for(j=0;j<64;j++)
{
Wdata(0x00);
}
}
}
/**********************************************************************************
//*s:地址指針,page:頁碼,line:列碼
//com:所寫字的列數,若為24×24的,則寫3×c個字節;為16×16,則寫2×c個字節
//dat=0,是16×16漢字程序;dat=1,是24×24漢字程序
**********************************************************************************/
void Display(uchar *s,uchar page,uchar line,uchar com,uchar dat)
{
uchar i;
for(i=0;i<com;i++)
{
Pagefirst(page);
Linefirst(line+i);
Wdata(*s);
s++;
Pagefirst(page+1);
Linefirst(line+i);
Wdata(*s);
s++;
if(dat==0)continue;
else
{
Pagefirst(page+2);
Linefirst(line+i);
Wdata(*s);
s++;
}
}
}
/******************************畫橫線*********************************************/
void hengxian()
{
uchar i;
Left();
for(i=0;i<64;i++)
{
Pagefirst(0x03);
Linefirst(i);
Wdata(0x36);
}
Right();
for(i=0;i<64;i++)
{
Pagefirst(0x03);
Linefirst(i);
Wdata(0x36);
}
}
void dot(uchar page){
Left();
Pagefirst(page);
Linefirst(62);
Wdata(0x33);
Wdata(0x33);
}
void ClrWave(void){
uchar i;
Right();
for(i=0;i<64;i++)
{
Pagefirst(0x02);
Linefirst(i);
Wdata(0x00);
}
for(i=0;i<64;i++)
{
Pagefirst(0x03);
Linefirst(i);
Wdata(0x00);
}
}
void Wave1(void){
uchar i;
Right();
ClrWave();
for(i=1;i<10;i++)
{
Pagefirst(0x03);
Linefirst(i);
Wdata(0x20);
}
Pagefirst(0x02);
Linefirst(10);
Wdata(0xfc);
Pagefirst(0x03);
Linefirst(10);
Wdata(0x3f);
for(i=11;i<21;i++)
{
Pagefirst(0x02);
Linefirst(i);
Wdata(0x04);
}
Pagefirst(0x02);
Linefirst(21);
Wdata(0xfc);
Pagefirst(0x03);
Linefirst(21);
Wdata(0x3f);
for(i=22;i<33;i++)
{
Pagefirst(0x03);
Linefirst(i);
Wdata(0x20);
}
Pagefirst(0x02);
Linefirst(33);
Wdata(0xfc);
Pagefirst(0x03);
Linefirst(33);
Wdata(0x3f);
for(i=34;i<44;i++)
{
Pagefirst(0x02);
Linefirst(i);
Wdata(0x04);
}
}
void Wave2(void){
uchar i,a;
a=0x80;
ClrWave();
Right();
for(i=1;i<9;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x80;
for(i=9;i<13;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a>>1;
}
Pagefirst(0x02);
Linefirst(13);
Wdata(0xf8);
Pagefirst(0x03);
Linefirst(13);
Wdata(0xff);
a=0x80;
for(i=14;i<22;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x80;
for(i=22;i<26;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a>>1;
}
Pagefirst(0x02);
Linefirst(26);
Wdata(0xf8);
Pagefirst(0x03);
Linefirst(26);
Wdata(0xff);
a=0x80;
for(i=27;i<35;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x80;
for(i=35;i<39;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a>>1;
}
Pagefirst(0x02);
Linefirst(39);
Wdata(0xf8);
Pagefirst(0x03);
Linefirst(39);
Wdata(0xff);
}
void Wave3(){
uchar i,a;
Right();
ClrWave();
a=0x80;
for(i=1;i<9;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x80;
for(i=9;i<13;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x08;
for(i=13;i<18;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a<<1;
}
a=0x01;
for(i=18;i<26;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a<<1;
}
a=0x80;
for(i=25;i<33;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x80;
for(i=33;i<37;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a>>1;
}
a=0x08;
for(i=37;i<42;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a<<1;
}
a=0x01;
for(i=42;i<50;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a<<1;
}
}
void Wave4(void){
uchar i,a;
a=0x80;
ClrWave();
for(i=2;i<8;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a>>1;
}
Pagefirst(0x02);
Linefirst(8);
Wdata(0x04);
Wdata(0x04);
a=0x04;
for(i=9;i<17;i++){
Pagefirst(0x02);
Linefirst(i);
Wdata(a);
a=a<<1;
}
a=0x01;
for(i=15;i<21;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a<<1;
}
Pagefirst(0x03);
Linefirst(21);
Wdata(0x20);
Wdata(0x20);
a=0x20;
for(i=23;i<29;i++){
Pagefirst(0x03);
Linefirst(i);
Wdata(a);
a=a>>1;
}
}
/***********************************************************************************/
/*********************************12864 初始化顯示**********************************/
void Init_12864()
{
Ready_12864(); //登錄頁面顯示
hengxian();
dot(0x07);
Left();
Display(Tab,0x00,4,24,1);
Display(Tab+72,0x00,28,24,1);
Display(Tab+144,0x00,52,12,1);
Display(Str,0x04,32,16,0);
Display(Str+32,0x04,48,16,0);
Display(Str+128,0x06,13,16,0);
Display(Str+160,0x06,29,16,0);
Display(Str+192,0x06,45,16,0);
Right();
Display(Tab+180,0x00,0,12,1);
Display(Tab+216,0x00,12,24,1);
Display(Tab+288,0x00,36,24,1);
Display(Str+64,0x04,0,16,0);
Display(Str+96,0x04,16,16,0);
Display(Str+224,0x06,0,16,0);
Display(Str+256,0x06,16,16,0);
Display(Str+288,0x06,32,16,0);
}
void maths(uchar c,uchar line,uchar ye) //數字顯示函數
{
uchar i=0,j;
i=c*16;
j=ye;
Display(Num+i,j,line,8,0);
}
void DisControl(void){
Ready_12864();
dot(0x03);
dot(0x05);
Left();
Display(Str+320,0x02,0,16,0);
Display(Str+352,0x02,16,16,0);
Display(Str+384,0x02,32,15,0);
Display(Str+416,0x02,47,15,0);
Display(Str+448,0x04,0,16,0);
Display(Str+480,0x04,16,16,0);
Display(Str+512,0x04,32,15,0);
Display(Str+544,0x04,47,15,0);
Display(Str+576,0x00,32,16,0);
Display(Str+608,0x00,48,16,0);
Right();
Display(Str+512,0x00,0,16,0);
Display(Str+544,0x00,16,16,0);
Display(Str+672,0x04,40,16,0);
Display(Str+704,0x04,50,16,0); //HZ
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -