资源描述
网上搜集的M12864-7A7的程序,能正常显示,希望对大家有用,在此谢谢作者。
#include <reg51.h>
#include <string.h>
#include <math.h>
#include "LCD_12864_data.h"
#define Disp_on 0x3f //开显示
#define Disp_off 0x3e //关显示
#define Col_add 0x40 // 列起始地址
#define Page_add 0xb8 //页起始地址
#define Start_line 0xc0 //行起始地址
#define lcd_bus P2 // MCU P0<------> LCM
sbit di =P1^0; //指令数据 0 指令,1 数据RS
sbit rw =P1^1; //读写控制
sbit en =P1^2; //6800 mode Enable single E
sbit cs1 =P3^6; //片选端 CS1 Mcs
sbit cs2 =P3^7; //片选端 CS2 Scs
void delay(unsigned int t) //延时子程序
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
void write_com(unsigned char cmdcode) //写指令
{
di=0;
rw=0;
lcd_bus=cmdcode;
delay(0);
en=1;
delay(0);
en=0;
}
void write_data(unsigned char dispdata) //写数据
{
di=1;
rw=0;
lcd_bus=dispdata;
delay(0);
en=1;
delay(0);
en=0;
}
void frame() //显示框架
{
unsigned char i;
cs1=1;cs2=1;
write_com(Page_add+0); //设置页
write_com(Col_add+0); //设置列
for(i=0;i<64;i++) write_data(0x01);
write_com(Page_add+7);
write_com(Col_add+0);
for(i=0;i<64;i++) write_data(0x80);
for(i=0;i<8;i++)
{
cs1=1;
cs2=1;
write_com(Page_add+i);
write_com(Col_add+63);
write_data(0xff);
cs1=1;
cs2=1;
write_com(Page_add+i);
write_com(Col_add+0);
write_data(0xff);
}
}
void Clr_Scr() //清屏函数
{
unsigned char j,k;
cs1=1;cs2=1;
write_com(Page_add+0);
write_com(Col_add+0);
for(k=0;k<8;k++)
{
write_com(Page_add+k);
for(j=0;j<64;j++)
write_data(0x00);
}
}
void Disp_Img(unsigned char code *img) //显示图片
{
unsigned char j,k;
Clr_Scr();
for(k=0;k<8;k++)
{
cs1=1;cs2=0;delay(10);
write_com(Page_add+k);
write_com(Col_add+0);
for(j=0;j<64;j++) write_data(img[k*128+j]);
cs1=0;cs2=1; delay(10);
write_com(Page_add+k);
write_com(Col_add+0);
for(j=64;j<128;j++) write_data(img[k*128+j]);
}
}
void Disp_H_Line() //显示行线
{
unsigned char i,j;
cs1=1;
cs2=1;
write_com(Disp_on);
write_com(Page_add);
write_com(Start_line);
write_com(Col_add);
for(j=0;j<8;j++)
{
write_com(Page_add+j);
write_com(Col_add+0);
// write_com(Start_Line+0);
for(i=0;i<64;i++)write_data(0x55);
}
}
void Disp_V_Line() //显示列线
{
unsigned char i,j;
write_com(Disp_on);
write_com(Page_add);
write_com(Start_line);
write_com(Col_add);
for(j=0;j<8;j++)
{
write_com(Page_add+j);
write_com(Col_add+0);
write_com(Start_line+0);
for(i=0;i<32;i++)
{
write_data(0x00);
write_data(0xff);
}
}
}
void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk) //行列显示
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_com(Page_add+pag+j); //第3、4行
write_com(Col_add+col); //列选
for(i=0;i<16;i++) write_data(hzk[16*j+i]);
}
}
void init_lcd() //显示初始化
{
//Lcd_Rst=0;
delay(100);
//Lcd_Rst=1;
delay(100);
cs1=1;
cs2=1;
delay(100);
write_com(Disp_off);
write_com(Page_add+0);
write_com(Start_line+0);
write_com(Col_add+0);
write_com(Disp_on);
}
void Msg(int flg)
{
Clr_Scr();
frame();
if(flg==0)
{ //显示"延安大学"
cs1=1;cs2=0;
hz_disp16(3,32,yan);
delay(4000);
hz_disp16(3,48,an);
delay(4000);
cs1=0;cs2=1;
hz_disp16(3,0,da);
delay(4000);
hz_disp16(3,16,xue);
delay(4000);
}
else if(flg==1)
{ //显示"测试完毕"
cs1=1;cs2=0;
hz_disp16(3,32,ce);
hz_disp16(3,48,shi);
cs1=0;cs2=1;
hz_disp16(3,0,wan);
hz_disp16(3,16,bi);
}
}
/*
void display_imge1()
{
Disp_Img(FirstPage);
}
void display_imge2()
{
Disp_Img(SecondPage);
} */
void main() //主程序
{
unsigned char i=0;
while(1)
{
init_lcd();
//display_imge1();
//delay(30000);
Msg(0);
delay(30000);
//display_imge2();
//delay(30000);
Disp_H_Line();
delay(10000);
Disp_V_Line();
delay(10000);
Msg(1);
}
}
#include <reg51.h>
char code yan[]=
{0x02,0x22,0x72,0x2E,0xE2,0x00,0x04,0xE4,0x04,0x04,0xFC,0x42,0x42,0x42,0x00,0x00,
0x40,0x23,0x14,0x08,0x17,0x20,0x20,0x47,0x44,0x44,0x47,0x44,0x44,0x44,0x44,0x00//"延",0
};
char code an[]=
{0x80,0x90,0x8C,0x84,0x84,0xF4,0xA5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x84,0x00,
0x80,0x80,0x80,0x40,0x47,0x28,0x28,0x10,0x28,0x24,0x43,0xC0,0x40,0x00,0x00,0x00//"安",1
};
char code da[]=
{0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00//"大",2
};
char code xue[]=
{0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00//"学",3
};
char code ce[]=
{0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00//"测",0
};
char code shi[]=
{0x40,0x42,0xDC,0x08,0x00,0x90,0x90,0x90,0x90,0x90,0xFF,0x10,0x12,0x1C,0x10,0x00,
0x00,0x00,0x7F,0x20,0x10,0x20,0x20,0x1F,0x10,0x10,0x01,0x06,0x18,0x20,0x78,0x00//"试",0
};
char code wan[]=
{0x00,0x90,0x8C,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x94,0x8C,0x04,0x00,
0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00,0x00//"完",0
};
char code bi[]=
{0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00//"毕",0
};
展开阅读全文