📄 lcd24064.h
字号:
//{0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,
//0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF};
/*uchar code line3[]=
{0xFF,0xFF,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};*/
uchar code dian_4[]=
{0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00};/*"电",0*/
uchar code ya_4[]=
{0x00,0x00,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x88,0x2F,0xFC,0x20,0x80,
0x20,0xA0,0x20,0x90,0x20,0x98,0x40,0x90,0x40,0x80,0xBF,0xFE,0x00,0x00,0x00,0x00};/*"压",1*/
uchar code liu_4[]=
{0x20,0x80,0x10,0x40,0x17,0xFE,0x00,0x40,0x80,0x80,0x49,0x10,0x4B,0xF8,0x10,0x08,
0x12,0x50,0x12,0x50,0xE2,0x50,0x22,0x50,0x24,0x52,0x24,0x52,0x28,0x4E,0x20,0x00};/*"流",2*/
//uchar code pin_4[]=
//{0x08,0x00,0x08,0xFE,0x4E,0x20,0x48,0x40,0x48,0xFC,0xFE,0x84,0x00,0xA4,0x08,0xA4,
// 0x4A,0xA4,0x4A,0xA4,0x84,0xA4,0x08,0x50,0x10,0x48,0x20,0x86,0xC3,0x02,0x00,0x00};/*"频",3*/
//uchar code lv_4[]=
//{0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x00,0x22,0x28,0x17,0xD0,0x04,0x80,0x11,0x10,
// 0x22,0x48,0x47,0xC4,0x01,0x20,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00};/*"率",4*/
uchar code bo_4[]=
{0x20,0x40,0x10,0x40,0x10,0x40,0x07,0xFE,0x84,0x44,0x54,0x40,0x54,0x40,0x17,0xF8,
0x25,0x08,0x24,0x90,0xE4,0x90,0x24,0x60,0x28,0x60,0x28,0x98,0x31,0x0E,0x26,0x04};/*"波",5*/
uchar code xing_4[]=
{0x00,0x04,0x7F,0x86,0x12,0x0C,0x12,0x10,0x12,0x20,0x12,0x08,0xFF,0xCC,0x12,0x18,
0x12,0x20,0x12,0x44,0x12,0x86,0x12,0x0C,0x22,0x10,0x22,0x20,0x42,0x40,0x80,0x80};/*"形",6*/
uchar code biao[]=
{0x01,0x00,0x01,0x00,0x3F,0xFC,0x01,0x00,0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x03,0x00,
0x06,0x88,0x0C,0x8C,0x38,0x50,0xC8,0x20,0x09,0x10,0x0A,0x0E,0x0C,0x04,0x08,0x00};/*"表",0*/
/************************************************************************
初始化界面
************************************************************************/
void manu_init(uchar k)
{
//showword(wang,0x20+k,0);
//showword(luo, 0x30+k,0);
showword(shi, 0x40+k,0);
showword(yan, 0x50+k,0);
showword(jian, 0x60+k,0);
showword(ce_2,0x70+k,0);
showword(xi, 0x80+k,0);
showword(tong, 0x90+k,0);
//showword(tong,0xa0+k,0);
}
/***********************************************************
LCM初始化函数
************************************************************/
void LcmInit( void )
{
LcmWriteCommandWith2Par(0x00,0x00,0x40); //设置文本显示区首地址
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41); //设置文本显示区宽度
LcmWriteCommandWith2Par(0x00,0x08,0x42); //设置图形显示区首地址0x0800
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43); //设置图形显示区宽度
LcmWriteCommand(0xA0); //设置光标形状 (8x8方块 0XA7) (横线 0xa0)
LcmWriteCommand(0x9f); //显示开关设置////////////////////
LcmWriteCommand(0x81); //显示方式设置 文本xor图形(异或)
LcmWriteCommand(0x9C); //显示开关设置 文本开,图形开,光标闪烁关
}
/***********************************************************
数据,指令读写判别
判状态位STA1,STA0,读写命令和数据时需为11
************************************************************/
void CheckRWCD(void)
{
while((LcmCmdPort&0x03)!=0x03); //低电平忙
}
/***********************************************************
数据自动写判别
判状态位STA3,忙则等待
************************************************************/
void CheckAutoWrite(void)
{
while((LcmCmdPort&0x08)!=0x08); //低电平忙
}
/***********************************************************
一个数据子写入函数
待写入数据: uData
************************************************************/
void LcmWriteData(uchar uData)
{
LcmDataPort = uData;
}
/***********************************************************
一个数据读出函数
读出数据存放在: uData
************************************************************/
uchar LcmReadData( void )
{
uchar uData;
uData = LcmDataPort;
return uData;
}
/***********************************************************
无参数指令写入函数
写入指令: Command
************************************************************/
void LcmWriteCommand(uchar Command)
{
CheckRWCD(); //检测指令读写状态
LcmCmdPort = Command;
}
/***********************************************************
单参数指令写入函数
写入参数: Parameter 写入指令: Command
************************************************************/
void LcmWriteCommandWith1Par(uchar Parameter,uchar Command)
{
CheckRWCD(); //检测指令读写状态
LcmDataPort = Parameter;
CheckRWCD(); //每次读写均要检测指令读写状态
LcmCmdPort = Command;
}
/***********************************************************
双参数指令写入函数
写入参数: Parameter1,Parameter2 写入指令: Command
************************************************************/
void LcmWriteCommandWith2Par(uchar Parameter1,uchar Parameter2,uchar Command)
{
CheckRWCD(); //检测指令读写状态
LcmDataPort = Parameter1;
CheckRWCD();
LcmDataPort = Parameter2;
CheckRWCD();
LcmCmdPort = Command;
}
/***********************************************************
延时函数
************************************************************/
void Delay(uint MS)
{
uchar us,usn;
while(MS!=0) //12M Crystal
{
usn = 2;
while(usn!=0)
{
us=0xf2;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
/***********************************************************
清显示存储器函数
LcmClear(0x00); --清屏
LcmClear(0xff); --全黑检测
************************************************************/
void LcmClear(uchar FillByte) //FillByte为填充的代码:0x00或0xff
{
uint nn = 8192; //此处仅清8K RAM,如果32K RAM都使用,请修改i=32768(后面也要改)
if(FillByte) //注意如果填充ff时,如果RAM仅使用了8K,那么8192次会写入到文本区
{ //会形成乱码.(24064出厂时候默认将R7断开,即默认使用8KRAM)
nn -= 2*1024; //所以如果填入ff时候要扣除2K的文本区
LcmWriteCommandWith2Par(0x00,0x08,0x24); //填充0xff时候要在图形区
}
else
LcmWriteCommandWith2Par(0x00,0x00,0x24);
LcmWriteCommand(0xB0); //进入自动写
while(nn--)
{
CheckAutoWrite();
LcmWriteData(FillByte);
}
LcmWriteCommand(0xB2); //退出自动写
}
/***********************************************************
设定显示地址函数
坐标参数:x,y 显示方式由 mode 决定
************************************************************/
void LocateXY(uchar x,uchar y,uchar mode)
{
uint temp;
temp= LcmLengthDots/8*y + x;
if(mode) //mode=1为Graphic,mode=0为TXT
{ //如果图形模式要加上图形区首地址0x0800
temp+=0x0800;
}
LcmWriteCommandWith2Par(temp&0xff,temp/256,0x24);
}
/************************************字符图形显示程序区********************************/
/***********************************************************
显示一个ASCII码函数
************************************************************/
void PutChar(uchar x,uchar y,uchar CharByte)
{
LocateXY(x,y,TXT);
LcmWriteCommandWith1Par(CharByte,0xC4);
}
/***********************************************************
显示一个字符串函数
************************************************************/
void PutString(uchar x,uchar y,uchar *str)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -