📄 12864f.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit CD=P1^2;
sbit Wr=P1^0;
sbit Rd=P1^1;
sbit RST=P1^3;
#define LcdDataPort P0
unsigned char BUSY()
{
unsigned char dat;
CD=1;Rd=1;Wr=1;
LcdDataPort=0xff;
Rd=0;
dat=LcdDataPort;
Rd=1;
return(dat);
}
/*
//指令,数据 读写状态检查
#define RWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x03; } while(sta!=0x03); }
*/
//指令,数据 读写状态检查
void RWCheck() { while (( BUSY()&0x03)!=0x03) ; }
//数据自动读 状态检查
void AutoRCheck() { while (( BUSY()&0x04)!=0x04) ;}
//数据自动写 状态检查
void AutoWCheck() { while (( BUSY()&0x08)!=0x08) ; }
// 向数据口发Data
void OutPortData(unsigned char dat)
{
RWCheck();
CD=0;
Wr=0;
LcdDataPort=dat;
Wr=1;
CD=1;
}
// 向数据口发Data
/*
#define OutPortData(dat ) { RWCheck(); XBYTE[LcdDataPort]=dat; }
*/
//写有 1 个参数命令
void OutPortCom1(unsigned char command)
{
RWCheck();
CD=1;
Wr=0;
LcdDataPort=command;
Wr=1;
}
/*
#define OutPortCom1(command) { RWCheck(); XBYTE[ComPort]= command; }
*/
//写有 2个参数命令
#define OutPortCom2(dat, command) { OutPortData(dat); OutPortCom1(command); }
//写有 3 个参数命令
#define OutPortCom3(data1, data2, command) { OutPortData(data1); OutPortData(data2); OutPortCom1(command);}
void ClearScreen()
{
unsigned int i; // 清显示 RAM 区 0000h--2000h (8k)
OutPortCom3(0x00,0x00,0x24); //设置指针地址0000H
OutPortCom1(0xb0); //设置自动写状态
for(i=0x00;i<0x2000;i++) OutPortData(0x00); // data=0;
OutPortCom1(0xb2); // 自动写结束
}
/* lcd初始化 */
void LcdInit(void)
{
OutPortCom3(0x00,0x00,0x40); /*文本首址*/
OutPortCom3(0x10,0x00,0x41); /*文本区域*/ //每行显示16个字符
OutPortCom3(0x00,0x01,0x42); /*图形首址*/
OutPortCom3(0x10,0x00,0x43); /*图形区域*/
OutPortCom1(0x81); /*显示方式*/
OutPortCom1(0x9c); /*显示开关*/
OutPortCom1(0xa0); /*光标形状*/
ClearScreen();
}
/* 设定图形x,y值*/
void AddPointer(unsigned char x,unsigned char y)
{
unsigned int z;
z=y*16+x+256;
OutPortCom3(z&0xff,z/256,0x24);
}
//文本显示一个字符,x水平偏移量(0~15)16列,8行;y垂直偏移量(0~7)
void ShowChar(uchar x,uchar y,uchar dat)
{
OutPortCom3(16*y+x,0,0x24);
OutPortCom2(dat-0x20, 0xc0);
}
// 显示16*16点阵汉字,x列地址,分16列,y行地址,分7行
void ShowHZ(uchar x,uchar y,uchar *hzcode)
{
unsigned char i,j;
x=x&0x0f,y=y&0x07;
for (i=0;i<16;i++)
{
for (j=0;j<2;j++)
{
AddPointer(j+x,y*8+i);
OutPortCom2(hzcode[i*2+j], 0xc0);
}
}
}
//反显一个汉字
void RvShowHZ(uchar x,uchar y,uchar *hzcode)
{
unsigned char i,j;
x=x&0x0f,y=y&0x07;
for (i=0;i<16;i++)
{
for (j=0;j<2;j++)
{
AddPointer(j+x,y*8+i);
OutPortCom2(~hzcode[i*2+j], 0xc0);
}
}
}
//以屏中心为中心,显示一个宽度为width,高度为high的图象,width,high都应该为8的整数倍
void ShowPicture(uchar width,uchar high,uchar code *picture)
{ uchar i,j;
for (i=0;i<high;i++) //i 从上到下
{
for (j=0;j<width/8;j++) //从左到右显示
{
AddPointer(j+(128-width)/16,(64-high)/2+i);
OutPortCom2(~picture[i*(width/8)+j], 0xc0);
}
}
}
//取模方式,从左到右,(左高位),从上到下
unsigned char hz_guo[32] = {
0x00,0x04,0x7f,0xfe,0x40,0x24,0x5f,0xf4,0x41,0x04,0x41,0x04,0x41,0x44,0x4f,0xe4,
0x41,0x04,0x41,0x44,0x41,0x24,0x41,0x04,0x5f,0xf4,0x40,0x04,0x7f,0xfc,0x40,0x04
};
unsigned char code bmp_pig1[]={
/*-- 调入了一幅图像:C:\Documents and Settings\zhaochao288\桌面\picture\207.bmp --*/
/*-- 宽度x高度=112x40 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x3F,0xC0,0x80,0x42,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x8A,0x1F,0xFC,0x42,0x04,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,
0x01,0xFF,0xDE,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x2A,0x87,0xF0,0xA2,
0x0A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0x84,0x10,0xA2,0x0A,0x88,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0xFC,0xA2,0x0A,0xF8,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x9F,0x90,0x05,0x2F,0xCA,0xA4,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x80,0x03,0xE1,0xA8,0x4A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xBF,0xC2,0x24,0x48,0x44,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x92,0x84,0x24,0xA8,0x4A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA6,0x58,
0x3D,0x0F,0xD0,0xC4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x23,0x08,0x37,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x40,0x10,0x08,0x40,0x00,0xFF,0x90,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x81,
0x86,0x10,0x40,0x00,0x08,0x08,0x10,0xFF,0x86,0x00,0x00,0x00,0x01,0x02,0x49,0x40,
0x40,0x00,0x7F,0x0B,0xFC,0x08,0x0F,0x00,0x00,0x00,0x01,0x08,0x00,0x40,0x20,0x00,
0x10,0x00,0x10,0x49,0x0F,0x00,0x00,0x00,0x02,0x08,0x00,0x20,0x20,0x01,0xFF,0xDD,
0x10,0x2A,0x0F,0x00,0x00,0x00,0x04,0x31,0x83,0x20,0x20,0x00,0x20,0x04,0x91,0xFF,
0xC6,0x00,0x00,0x00,0x04,0x52,0x44,0x90,0x20,0x00,0x7F,0x04,0x90,0x1C,0x06,0x00,
0x00,0x00,0x09,0xA4,0x28,0x4C,0x10,0x00,0xA1,0x04,0x10,0x2A,0x00,0x00,0x00,0x00,
0x0E,0x44,0xE9,0xC3,0x90,0x01,0x3F,0x04,0x70,0x49,0x06,0x00,0x00,0x00,0x00,0x82,
0xC5,0x81,0x70,0x00,0x21,0x0A,0x01,0x88,0xC6,0x00,0x00,0x00,0x01,0x01,0x83,0x00,
0x80,0x00,0x3F,0x11,0xFC,0x08,0x00,0x00,0x00,0x00,0x01,0x0C,0x70,0x00,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x13,0x87,0x10,0x40,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x20,0x78,0xA0,0x40,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x20,0x00,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x21,0x80,0x60,0x40,0x00,0x00,0x71,0xEE,0x3C,0x00,0x00,0x00,0x00,
0x01,0x11,0x98,0x90,0x80,0x00,0x00,0x8E,0x31,0xC6,0x00,0x00,0x00,0x00,0x01,0x08,
0x18,0x80,0x80,0x00,0x01,0x24,0x24,0x83,0x00,0x00,0x00,0x00,0x00,0x96,0x01,0x01,
0x00,0x00,0x01,0x40,0x28,0x03,0x00,0x00,0x00,0x00,0x00,0x49,0x86,0x03,0x00,0x00,
0x01,0x40,0x28,0x03,0x00,0x00,0x00,0x00,0x00,0x34,0x78,0x8C,0x00,0x00,0x01,0x00,
0x20,0x03,0x00,0x00,0x00,0x00,0x00,0x0E,0x01,0x30,0x00,0x00,0x00,0x80,0x30,0x06,
0x00,0x00,0x00,0x00,0x00,0x71,0x87,0xCE,0x00,0x00,0x00,0x40,0x68,0x0C,0x00,0x00,
0x00,0x00,0x00,0xE0,0x78,0x07,0x00,0x00,0x00,0x20,0xC4,0x18,0x00,0x00,0x00,0x00,
};
unsigned char code bmp_girl[]={
/*-- 调入了一幅图像:C:\Documents and Settings\zhaochao288\桌面\picture\test1.bmp --*/
/*-- 宽度x高度=96x48 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x82,0x80,
0x00,0x00,0x00,0x02,0x10,0x00,0x0F,0xFB,0x00,0x02,0x42,0x80,0x00,0x00,0x00,0x19,
0x18,0x00,0x0B,0xFF,0x00,0x02,0xC2,0x80,0x00,0x00,0x00,0x21,0xFF,0x00,0x0F,0xFF,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -