📄 sed1520.h
字号:
/******************************************************************************
模块名称:SED1520驱动12232液晶驱动
---------------------------------------------------------------
|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | A0--------P2.1 |
|DB1-----P0.1 | DB5-----P0.5 | E2-------P2.4 | Vo接10k电位器调整对比度 |
|DB2-----P0.2 | DB6-----P0.6 | E1-------P2.5 |
|DB3-----P0.3 | DB7-----P0.7 | RST-------P2.3|
---------------------------------------------------------------
******************************************************************************/
#include <reg51.h>
#define DATA P2
sbit A0 = P0^5;
sbit E1 = P3^7;
sbit E2 = P3^6;
//sbit RW = P2^2;
unsigned char code HZ[6][32] = {
{/*-- 文字: 常 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x18,0x08,0x09,0xEE,0xAA,0xA8,0xAF,0xA8,0xA8,0xEC,0x0B,0x2A,0x18,0x08,0x00,
0x00,0x00,0x3E,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x12,0x22,0x1E,0x00,0x00,0x00},
{/*-- 文字: 州 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xE0,0x00,0x00,0xFF,0x20,0xC0,0x00,0xFE,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,
0x01,0x80,0x60,0x18,0x07,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0xFF,0x00,0x00},
{/*-- 文字: 华 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x10,0x08,0xFC,0x03,0x02,0x10,0x10,0x7F,0x88,0x88,0x84,0x86,0xE4,0x00,0x00,
0x00,0x04,0x04,0x05,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00},
{/*-- 文字: 昌 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0x00},
{/*-- 文字: 电 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
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},
{/*-- 文字: 子 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
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}
};
unsigned char code p[112] = {
/*-- 调入了一幅图像:C:\Documents and Settings\许李冬\桌面\HCE.bmp --*/
/*-- 宽度x高度=56x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x00,0xFC,0x00,0xFC,
0x00,0xFC,0xFC,0xFC,0x00,0xFC,0xFC,0x00,0xFC,0x00,0x00,0x00,0x04,0xFC,0xFC,0x84,
0x80,0x84,0xFC,0xFC,0x04,0x00,0x00,0xF8,0xFC,0x0C,0x0C,0x0C,0x0C,0x1C,0x00,0x00,
0x04,0xFC,0xFC,0x8C,0x8C,0x8C,0x8C,0xDC,0x20,0x30,0x38,0x3C,0x3E,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x38,0x3B,0x38,0x3B,0x00,0x3F,0x3F,0x3F,0x00,0x3F,0x3F,0x00,
0x3F,0x00,0x00,0x00,0x20,0x3F,0x3F,0x21,0x01,0x21,0x3F,0x3F,0x20,0x00,0x00,0x1F,
0x3F,0x30,0x30,0x30,0x30,0x38,0x00,0x00,0x20,0x3F,0x3F,0x31,0x31,0x31,0x31,0x3B
};
#define LCD_DISPLAYON 0xaf //af 开显示,
#define LCD_DISPLAYOFF 0xae //ae 关显示,
#define LCD_DRIVERON 0xa5 //a5 静态显示驱动
#define LCD_DRIVEROFF 0xa4 //a4正常驱动
#define LCD_DUTY16 0xa8 //占空比1/16
#define LCD_DUTY32 0xa9 //占空比1/32
#define LCD_END 0xee /*关闭“读-修改-写”模式,并把列地址指针
恢复到打开“读-修改-写”模式前的位置。*/
#define LCD_RESET 0xe2 /*初始化。① 设置显示初始行为第一行;
②页地址设置为第三页。*/
#define LCD_RWMODE 0xe0 /*“读-修改-写”模式 。执行该指令以后,
每执行一次写数据,指令列地址自动加1;
但执行读数据指令时列地址不会改变。
这个状态一直持续到执行“END”指令。
注意:在“读-修改-写”模式下,
除列地址设置指令之外,其他指令照常执行。*/
#define LCD_STARTLINE0 0xc0 //设置显示起始行 可以加0-31
#define LCD_PAGE0 0xb8 //页地址设置 可以加0-3
#define LCD_COLUMNADDR0 0x00 //列地址设置 可以加0-60
#define LCD_ON() LCD_Command(LCD_DISPLAYON)
#define LCD_OFF() LCD_Command(LCD_DISPLAYOFF)
#define LCD_StaticON() LCD_Command(LCD_DRIVERON)
#define LCD_StaticOFF() LCD_Command(LCD_DRIVEROFF)
#define LCD_Select16() LCD_Command(LCD_DUTY16)
#define LCD_Select32() LCD_Command(LCD_DUTY32)
#define LCD_StartRW() LCD_Command(LCD_RWMODE)
#define LCD_EndRW() LCD_Command(LCD_END)
#define LCD_Reset() LCD_Command(LCD_RESET)
#define LCD_SetStartLine(i) LCD_Command(LCD_STARTLINE0|i)
#define LCD_SetPage(i) LCD_Command(LCD_PAGE0|i)
#define LCD_SetColumn(i) LCD_Command(LCD_COLUMNADDR0|i)
/******************************************************************************************
* 函数名称 :LCD_Command
* 功能描述 :写命令
******************************************************************************************/
void LCD_Command(unsigned char nCommand)
{
A0=0;
E1=1;
E2=1;
DATA=nCommand;
E1=0;
E2=0;
}
/******************************************************************************************
* 函数名称 :LCD_SetRam
* 功能描述 :送显示数据ndata,setMS为0主,1从
******************************************************************************************/
void LCD_SetRam(bit setMS,unsigned char ndata)
{
A0=1;
E1=!setMS;
E2=setMS;
DATA=ndata;
E1=0;
E2=0;
}
/******************************************************************************************
* 函数名称 :LCD_Init
* 功能描述 :液晶初始化
******************************************************************************************/
void LCD_Init()
{
LCD_OFF(); //关闭显示
LCD_Command(LCD_RESET); //复位
LCD_Command(0xa0); //列与段驱动反方向
LCD_Command(LCD_DUTY32); //1/32
LCD_Command(0xa4); //关闭静态显示 打开正常驱动
LCD_EndRW(); //关闭自动列加1
LCD_SetStartLine(0); //设置起始行
LCD_SetColumn(0); //起始列
LCD_SetPage(0); //起始页
LCD_ON(); //开显示
}
/******************************************************************************************
* 函数名称 :clrscr
* 功能描述 :清屏
******************************************************************************************/
void LCD_Clrscr(void)
{
unsigned char i;
unsigned char page;
for( page = 0; page < 4; page++ )
{
LCD_SetPage(page);
for( i = 0; i < 61; i++ )
{
LCD_SetColumn(i);
LCD_SetRam(0,0X00);
LCD_SetRam(1,0X00);
}
}
}
void ClearPageTT(void)
{
unsigned char i;
unsigned char page;
for( page = 2; page < 4; page++ )
{
LCD_SetPage(page);
for( i = 0; i < 61; i++ )
{
LCD_SetColumn(i);
LCD_SetRam(0,0X00);
LCD_SetRam(1,0X00);
}
}
}
/******************************************************************************************
* 函数名称 :drawword
* 功能描述 ://layer 值为0,2;wenzi 码表中的几个字
******************************************************************************************/
void LCD_DispHZ(unsigned char *Dbuf,unsigned char row,unsigned char page)
{
unsigned char column,x;//layer 值为0,2;wenzi 码表中的几个字
bit masl;
for( x = 0; x < 16; x++ )
{
column = row + x;
if( column > 60 )
{
masl = 1;
column -= 61;
}
else
masl = 0;
LCD_SetStartLine(0);//设置起始行
LCD_SetColumn(column);//设置起始列
LCD_SetPage(page);
LCD_SetRam(masl,Dbuf[x]);
LCD_SetStartLine(0);//设置起始行
LCD_SetColumn(column);//设置起始列
LCD_SetPage(page+1);
LCD_SetRam(masl,Dbuf[x+16]);
}
}
void LCD_DispPicture()
{
unsigned char row = 34,masl = 0,column = 0;
unsigned char x;
for( x = 0; x < 56; x++ )
{
column = row + x;
if( column > 60 )
{
masl = 1;
column -= 61;
}
else
masl = 0;
LCD_SetStartLine(0);//设置起始行
LCD_SetColumn(column);//设置起始列
LCD_SetPage(2);
LCD_SetRam(masl,p[x]);
LCD_SetStartLine(0);//设置起始行
LCD_SetColumn(column);//设置起始列
LCD_SetPage(3);
LCD_SetRam(masl,p[x+56]);
}
}
void LCD_DispPD(unsigned char *Dbuf,unsigned char row,unsigned char page)
{
unsigned char column,x;//layer 值为0,2;wenzi 码表中的几个字
bit masl;
for( x = 0; x < 8; x++ )
{
column = row + x;
if( column > 60 )
{
masl = 1;
column -= 61;
}
else
masl = 0;
LCD_SetStartLine(0);//设置起始行
LCD_SetColumn(column);//设置起始列
LCD_SetPage(page);
LCD_SetRam(masl,Dbuf[x]);
LCD_SetStartLine(0);//设置起始行
LCD_SetColumn(column);//设置起始列
LCD_SetPage(page+1);
LCD_SetRam(masl,Dbuf[x+8]);
}
}
/******************************************************************************************
* 函数名称 :
* 功能描述 :
******************************************************************************************/
void LCD_Ready()
{
LCD_Init(); //液晶初始化
LCD_Clrscr();
LCD_DispHZ(HZ[0],13,0);
LCD_DispHZ(HZ[1],29,0);
LCD_DispHZ(HZ[2],45,0);
LCD_DispHZ(HZ[3],61,0);
LCD_DispHZ(HZ[4],77,0);
LCD_DispHZ(HZ[5],93,0);
LCD_DispPicture();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -