#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS = P2^5; //片选信号(RS)
sbit SID = P2^6; //串行数口 (R/W)
sbit CLK = P2^7; //串行同步时钟 (E)
/*延时100us*/
void LCD12864_delay(uint t)
{
uint a,b;
for(a=t;a>0;a--)
for(b=10;b>0;b--);
}
/*发送数据*/
void sendbyte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if(dat&0x80)
{
SID= 1;
}else{
SID = 0;
}
dat = dat<<1;
CLK = 0;
CLK = 1;
}
}
/*写指令*/
void write_com(uchar cmdcode)
{
CS = 1;
sendbyte(0xf8); //写指令操作
sendbyte(cmdcode & 0xf0);
sendbyte((cmdcode << 4) & 0xf0);
LCD12864_delay(2);
}
/*写数据*/
void write_data(uchar Dispdata)
{
CS = 1;
sendbyte(0xfa); //写数据操作
sendbyte(Dispdata & 0xf0);
sendbyte((Dispdata << 4) & 0xf0);
LCD12864_delay(2);
}
/*LCD12864初始化*/
void LCD_init()
{
//显示字符初始化
write_com(0x30); //基本指令操作
LCD12864_delay(50);
write_com(0x0c); //显示开\关光标
LCD12864_delay(50);
write_com(0x01); //清除LCD的显示内容
LCD12864_delay(50);
// //显示图片初始化
// write_com(0x36); //扩充指令操作
// delay_ms(5);
// write_com(0x3e); //
// delay_ms(5);
// write_com(0x0c); //显示开\关光标
// delay_ms(5);
// write_com(0x01); //清除LCD的显示内容
// delay_ms(5);
}
/*设置显示位置*/
void LCD_pos(uchar X,uchar Y)
{
uchar pos;
if(X==0)
{
X = 0x80;
}
else if(X==1)
{
X = 0x90;
}
else if(X==2)
{
X = 0x88;
}
else if(X==3)
{
X = 0x98;
}
pos = X+Y ;
write_com(pos);
}
/*显示 a行 b列 *c为显示的字符*/
void LCD_Display(uchar a,uchar b,uchar *c)
{
LCD_pos(a,b);
while(*c)
{
write_data(*c);
c++;
}
}
/*清除某一行*/
void LCD_clear_line(uchar n)
{
uint i;
LCD_pos(n,0);
for(i=0;i<16;i++)
{
write_data(' ');
}
}//vo
//图片显示
/*图片全屏显示*/
void tupian(uchar p[][16])
{
uchar x,y,a,b,c;
write_com(0x34); //关闭绘图功能
x = 0x80;
y = 0x80;
for(c=0;c<2;c++)
{
for(a=0;a<32;a++)
{
write_com(y+a);
write_com(x);
for(b=0;b<16;b++)
write_data(p[a+c*32][b]);
}
x=0x88;
}
write_com(0x36); //打开绘图功能
write_com(0x30);
}
/*图片清屏*/
void qingping() //清除DDRAM的数据:送入0
{
uchar x,y,a,b,c;
x=0x80;
y=0x80;
write_com(0x34); //关闭绘图功能
for(a=0;a<2;a++)
{
for(b=0;b<32;b++)
{
write_com(y+b);
write_com(x);
for(c=0;c<16;c++)
write_data(0x00);
}
x=0x88;
}
write_com(0x36); //打开绘图功能
write_com(0x30);
}
#ifndef _LCD12864_H_
#define _LCD12864_H_
#define uchar unsigned char
#define uint unsigned int
extern void write_com(uchar cmdcode); //写指令
extern void write_data(uchar Dispdata); //写数据
extern void LCD_init(); //LCD12864初始化
extern void LCD_pos(uchar X,uchar Y); //设置显示位置
extern void LCD_Display(uchar a,uchar b,uchar *c); //显示 a行 b列 *c为显示的字符
extern void LCD_clear_line(uchar n); //清除某一行
extern void tupian(uchar p[][16]); //图片全屏显示
extern void qingping(); //图片清屏
#endif
#include <reg52.h>
#include "LCD12864.h"
#define uchar unsigned char
#define uint unsigned int
uchar code tu1[][16] = {
0xC0,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFC,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0x8F,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3F,0xFF,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xC0,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFD,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xE1,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3F,0xF1,0xDF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0xC3,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0xE0,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFC,0x07,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xFF,0xC0,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xF8,0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0xFF,0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xE0,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFE,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xF8,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xFF,0x80,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0xC0,0x00,0x00,0x3F,0xF0,0x1F,0xF8,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x00,0xFF,0xF8,0x00,0x00,0x07,0xFE,0x03,0xFF,0x80,0x00,0x01,0xF8,0x00,0x00,0x00,
0x01,0xFF,0xFE,0x00,0x00,0x00,0xFF,0xE0,0x3F,0xF0,0x00,0x03,0xFE,0x00,0x00,0x00,
0x07,0xE0,0x3F,0x00,0x00,0x00,0x0F,0xFC,0x07,0xFE,0x7F,0x83,0xFF,0x00,0x00,0x00,
0x0F,0x80,0x0F,0x80,0x00,0x00,0x01,0xFF,0x80,0xFF,0xFF,0xFB,0xFF,0x80,0x00,0x00,
0x1E,0x00,0x03,0xC0,0x00,0x00,0x00,0x3F,0xF8,0x0F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
0x3C,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xFF,0x3F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
0x38,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x7F,0xFC,0x3F,0xFF,0xFF,0xE0,0x00,0x00,
0x38,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFE,0x03,0xFF,0xFF,0xF0,0x00,0x00,
0x30,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x01,0xFF,0xC0,0x7F,0xFF,0xF8,0x00,0x00,
0x30,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x03,0xDF,0xF8,0x0F,0xFF,0xFC,0x00,0x00,
0x30,0x00,0x00,0x70,0x00,0xFE,0x00,0x00,0x03,0x83,0xFF,0x00,0xFF,0xFC,0x00,0x00,
0x30,0x00,0x00,0x70,0x03,0xFF,0xC0,0x00,0x07,0x80,0x7F,0xF0,0x7F,0xFE,0x00,0x00,
0x30,0x00,0x00,0x70,0x0F,0xFF,0xE0,0x00,0x07,0x00,0x07,0xFE,0x3F,0xFF,0x00,0x00,
0x38,0x00,0x00,0xF0,0x1F,0x01,0xF0,0x00,0x07,0x00,0x00,0xFF,0xBF,0xFF,0x80,0x00,
0x38,0x00,0x00,0xE0,0x1C,0x00,0x70,0x00,0x07,0x00,0x00,0x1F,0xFF,0xFF,0xC0,0x00,
0x3C,0x00,0x01,0xE0,0x38,0x00,0x38,0x00,0x07,0x00,0x00,0x01,0xBF,0xFF,0xE0,0x00,
0x1E,0x00,0x03,0xC0,0x38,0x00,0x38,0x00,0x07,0x80,0x00,0x00,0x7F,0xFF,0xE0,0x00,
0x0F,0x80,0x0F,0x80,0x38,0x00,0x38,0x00,0x03,0x80,0x00,0x00,0x7F,0xFF,0xF0,0x00,
0x07,0xE0,0x3F,0x00,0x1C,0x00,0x70,0x00,0x03,0xC0,0x00,0x00,0xF7,0xFF,0xF8,0x00,
0x03,0xFF,0xFE,0x00,0x1F,0x01,0xF0,0x00,0x01,0xE0,0x00,0x01,0xE7,0xFF,0xFC,0x00,
0x00,0xFF,0xF8,0x00,0x0F,0xFF,0xE0,0x00,0x00,0xF0,0x00,0x03,0xE7,0xFF,0xFE,0x00,
0x00,0x3F,0xE0,0x00,0x07,0xFF,0xC0,0x00,0x00,0x7C,0x00,0x0F,0xC3,0xFF,0xFF,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x7F,0x03,0xFF,0xFF,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFE,0x03,0xFF,0xFF,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xF8,0x03,0xFF,0xFF,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x01,0xFF,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF8,
0x03,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xBF,0xFC,
0x03,0x0E,0x00,0x70,0x01,0x81,0xC0,0xE3,0x00,0x00,0x00,0x00,0x00,0xFF,0xBF,0xFE,
0x06,0x06,0x00,0x30,0x00,0xC0,0xC0,0xC3,0x00,0x00,0x00,0x00,0x00,0x7F,0x1F,0xFE,
0x0F,0xC6,0x00,0x30,0x00,0x1E,0xC1,0x87,0xE0,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFE,
0x06,0xC6,0x03,0xFC,0x00,0x1E,0xC1,0xFF,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFE,
0x06,0xCF,0x80,0x30,0x03,0xB6,0xC3,0xC6,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,
0x07,0xFE,0x00,0x30,0x07,0xB6,0xC0,0xCF,0x80,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFE,
0x06,0xC6,0x01,0xFF,0xC1,0xB6,0xC1,0x8F,0xE0,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,
0x3F,0xF6,0x0F,0x60,0x01,0xB6,0xC3,0xDF,0x80,0x00,0x00,0x00,0x00,0x00,0x0F,0xFE,
0x03,0xC6,0x00,0x66,0x01,0xF6,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,
0x06,0xC6,0x03,0x66,0x03,0xB6,0xC1,0xE3,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,
0x0C,0xC6,0x03,0x3E,0x03,0x60,0xC3,0x1B,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x19,0xDE,0x07,0xE6,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x8C,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
}; //图片数据
void main()
{
LCD_init();
tupian(tu1);
LCD_Display(0,6,"文");
while(1)
{
}
}