portues软件仿真--LCD12864

proteus 软件仿真之LCD12864(中文显示) 二

大二电子专业小白一名,平时闲来无事在学校老师实验室自学,自学过程中发现一些有困扰到自己的地方,所以特来此记录。一是当作自己学习笔记;二是有幸帮助到有和自己遇到相同问题的童鞋,也是一大善事。因个人水平能力有限,错误之处还请及时纠正。

注:只适合于仿真使用与现实中LCD12864有不同!!!!

以下程序及原理图为实验室老师提供,亲测仿真

proteus仿真原理图

portues软件仿真--LCD12864_第1张图片

程序源码


#include 
#define  uchar  signed char
#define  uint   unsigned  int
//#define in_real_board	//选择是否下载到实际电路
// 常量定义	 
#define lcdrow 		   0xc0//设置起始行
#define	lcdpage		   0xb8//设置起始页
#define	lcdcolumn	   0x40//设置起始列
#define	 c_page_max	   0x08//页数最大值
#define  c_column_max  0x40//列数最大值
//端口定义
#define  bus  P0
sbit  rst=P2^0;
sbit  e=P2^2;
sbit  rw=P2^3;
sbit  rs=P2^4;
sbit  cs1=P2^5;
sbit  cs2=P2^6;
//函数申明
void   delayms(uint);  //延时n ms 
void   delayus10(void);//延时10us
void   select(uchar);  //选择屏幕
void   send_cmd(uchar); //写命令
void   send_data(uchar); //写数据
void   clear_screen(void);//清屏
void   initial(void);  //LCD初始化
void   display_zf(uchar,uchar,uchar,uchar);   //显示字符
void   display_hz(uchar,uchar,uchar,uchar);   //显示汉字
void   display(void);  //在LCD上显示
//字符表
//*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
//取模方式:纵向取模下高位,从上到下,从左到右取模
uchar  code  table_zf[]={
//*--  文字:  P  --*/
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,
//*--  文字:  R  --*/
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
//*--  文字:  O  --*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,
//*--  文字:  T  --*/
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
//*--  文字:  E  --*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,
//*--  文字:  U  --*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
//*--  文字:  S  --*/
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00
};
//汉字表
//*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
//取模方式:纵向取模下高位,从上到下,从左到右取模
uchar code  table_hz[ ]={
//*--  文字:  电  --*/
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,
//*--  文字:  子  --*/
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
//*--  文字:  设  --*/
0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,
//*--  文字:  计  --*/
0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
//*--  文字:  与  --*/
0x00,0x00,0x00,0x00,0x7E,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xCC,0x08,0x00,
0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x24,0x46,0x44,0x20,0x1F,0x00,0x00,
//*--  文字:  创  --*/
0x40,0x20,0xD0,0x4C,0x43,0x44,0x48,0xD8,0x30,0x10,0x00,0xFC,0x00,0x00,0xFF,0x00,
0x00,0x00,0x3F,0x40,0x40,0x42,0x44,0x43,0x78,0x00,0x00,0x07,0x20,0x40,0x3F,0x00,
//*--  文字:  新  --*/
0x20,0x24,0x2C,0x35,0xE6,0x34,0x2C,0x24,0x00,0xFC,0x24,0x24,0xE2,0x22,0x22,0x00,
0x21,0x11,0x4D,0x81,0x7F,0x05,0x59,0x21,0x18,0x07,0x00,0x00,0xFF,0x00,0x00,0x00,
//*--  文字:  的  --*/
0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00,
//*--  文字:  最  --*/
0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00,
0x20,0x20,0x3F,0x15,0x15,0x15,0xFF,0x48,0x23,0x15,0x09,0x15,0x23,0x61,0x20,0x00,
//*--  文字:  佳  --*/
0x40,0x20,0xF0,0x1C,0x47,0x4A,0x48,0x48,0x48,0xFF,0x48,0x48,0x4C,0x68,0x40,0x00,
0x00,0x00,0xFF,0x00,0x40,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x46,0x64,0x40,0x00,
//*--  文字:  平  --*/
0x00,0x01,0x05,0x09,0x71,0x21,0x01,0xFF,0x01,0x41,0x21,0x1D,0x09,0x01,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
//*--  文字:  台  --*/
0x00,0x00,0x40,0x60,0x50,0x48,0x44,0x63,0x22,0x20,0x20,0x28,0x70,0x20,0x00,0x00,
0x00,0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x00

};
void main()
{
initial();
display();
clear_screen();
display();
while(1);
}

//延时10us
void  delayus10(void)
{
uchar i=5;
while(--i);
}
//延时10ms
void  delayms(uint j)
{
uchar i=250;
for(;j>0;j--){ while(--i); i=249;while(--i);i=250;}
						
}
//屏幕选择-cs=0选择双屏,cs=1选择左半屏,cs=2选择右半屏
void   select(uchar cs)
{
#ifdef  in_real_board
if(cs==0)cs1=1,cs2=1;
	else if(cs==1)cs1=1,cs2=0;
		  else  cs1=0,cs2=1;
#else
if(cs==0)cs1=0,cs2=0;
	else if(cs==1)cs1=0,cs2=1;
		  else  cs1=1,cs2=0;
#endif
}
//写命令
void  send_cmd(uchar cmd)
{
rs=0;rw=0; bus=cmd;delayus10();e=1;e=0;
}
//写数据
void  send_data(uchar dat)
{
rs=1;rw=0; bus=dat;delayus10();e=1;e=0;
}
//清屏
void  clear_screen(void)
{
uchar c_page,c_column;
	select(0);
	for(c_page=0;c_page

G.Z.W
2019年6月9日

你可能感兴趣的:(protues软件仿真)