📄 lcd显示c程序全解(hd61202).txt
字号:
Locatexy(); //定位坐标,返回时保留分区状态不变
Datalcm = 0xFF;
Dilcm = 1;
Rwlcm = 1; //read data
Elcm = 1; //read data to LCM
_nop_();
cbyte = Datalcm;
Elcm = 0;
Locatey();
Datalcm = 0xFF;
_nop_();
Dilcm = 1;
Rwlcm = 1;
Elcm = 1;
_nop_();
cbyte = Datalcm; //从数据品读数据,真读
Elcm = 0;
}
/************************数据写输出***************************/
void Wrdata(uchar X)
{
Locatexy();
Dilcm = 1; //data out
Rwlcm = 0; //write out
Datalcm = X; //data out to dataport
Elcm = 1; //read to LCM
_nop_();
Elcm = 0;
}
/************************************命令输出到左区控制口**************************////
void WrcmdL(uchar X)
{
lcdbusyL(); //确定分区,返回时保留分区状态不主变
Dilcm = 0;
Rwlcm = 0;
Datalcm = X;
Elcm = 1;
_nop_();
Elcm = 0; //read to LCM
}
/*****************************命令输出到中区控制口********************************/
void WrcmdM(uchar X)
{
lcdbusyM();
Dilcm = 0;
Rwlcm = 0;
Datalcm = X;
Elcm = 1;
_nop_();
Elcm = 0;
}
/*******************************命令输出到右区控制口************************************/
void WrcmdR(uchar X)
{
lcdbusyR();
Dilcm = 0;
Rwlcm = 0;
Datalcm = X;
Elcm = 1;
_nop_();
Elcm = 0;
}
/*****************************分区操作允许等待,返回时保留分区选择状态************************************/
void lcdbusyL(void)
{
CSALCM = 0;
CSBLCM = 0; //清0,CS,CSB,选择左区
wtcom();
}
void lcdbusyM(void)
{
CSALCM = 0;
CSBLCM = 1; //清0,CS,CSB,选择左区
wtcom();
}
void lcdbusyR(void)
{
CSALCM = 1;
CSBLCM = 0; //清0,CS,CSB,选择左区
wtcom();
}
void wtcom(void)
{
Dilcm = 0;
Rwlcm = 1;
Datalcm = 0xFF;
Elcm = 1;
_nop_();
while (Datalcm & Lcdbusy) ;
Elcm = 0;
}
/*******************************根据设定的坐标数据,定位LCM上的下一个操作单元位置***********************/
void Locatexy()
{
unsigned char x, y;
switch (col & 0xco)
{
case 0:
lcdbusyL();
break;
case 0x40:
lcdbusyM();
break;
case 0x40:
lcdbusyM();
break;
}
x = col & 0x3F | SETX;
y = row & 0x07 | SETY;
wtcom();
Dilcm = 0; //DI clear to 0
Rwlcm = 0; //RW clear to 0
Datalcm = y; //MOV P0, Y
Elcm = 1;
_nop_();
Elcm = 0;
wtcom();
Dilcm = 0;
Rwlcm = 0;
Datalcm = x;
Elcm = 1;
_nop_();
Elcm = 0;
}
/****************************液晶习屏初始化********************************/
void Lcminit(void)
{
cbyte DIPSOFF;
WrcmdL(cbyte);
WrcmdM(cbyte);
WrcmdR(cbyte);
cbyte = DISPON;
WrcmdL(cbyte);
WrcmdM(cbyte);
WrcmdR(cbyte);
cbyte = DISPFIRST;
WrcmdL(cbyte);
WrcmdM(cbyte);
WrcmdR(cbyte);
Lcmcls();
col = 0;
row = 0;
Locatexy();
}
/****************************延时*******************************/
void Delay(uchar MS)
{
uchar us, usn;
while (MS!=0)
{
usn = 4;
while (usn!=0)
{
us = 0xf0;
while(us!=0)
{
us--;
}
usn--;
}
MS--;
}
}
/********************************定义字符串数组***********************************/
uchar code STR1[] = China Mobile;
uchar code STR2[] = Communications;
uchar code STR3[] = Corporation;
uchar code STR4[] = Welcome you!;
/********************************定义中文字库**************************************/
uchar code Hzk[] = {
0x00, 0xF8, 0X08, 0X08, 0X08, 0X08, 0X08, 0XFF, 0X08, 0X08, 0X08,
0X08, 0X08, 0XFC, 0X08, 0X00,
0X00, 0X03, 0X01, 0X01, 0X01, 0X01, 0X01, 0XFF, 0X01, 0X01, 0X01,
0X01, 0X01, 0X03, 0X00, 0X00, //中
OXOO, OXFE, OX02, OX0A, OX8A, OX8A, 0X8A, 0XFA, 0X8A, 0XCA, 0X8E,
0X0A, 0X02, 0XFF, 0X02, 0X00,
0X00, 0XFF, 0X40, 0X50, 0X50, 0X50, 0X50, 0X5F, 0X50, 0X52, 0X54,
0X50, 0X40, 0XFF, 0X00, 0X00, //国
0X24, 0X24, 0XA4, 0XFE, 0XA3, 0X22, 0X10, 0X88, 0X8C, 0X57, 0XE4,
0X24, 0X14, 0X0C, 0X00, 0X00,
0X04, 0X02, 0X01, 0XFE, OX00, 0X83, 0X80, 0X88, 0X44, 0X46, 0X29,
0X31, 0x11, 0x0D, 0x03, 0x00, //移
0x20, 0x24, 0x24, 0xE4, 0x26, 0x34, 0x20, 0x10, 0x10, 0xFF, 0x10,
0x10, 0x10, 0xF8, 0x10, 0x00,
0x08, 0x1C, 0x0B, 0x08, 0x08, 0x8A, 0x4C, 0x30, 0x0C, 0x03, 0x40,
0x80, 0x40, 0x3F, 0x00, 0x00, //动
0x40, 0x42, 0x44, 0xCC, 0x00, 0x00, 0xF1, 0x91, 0x95, 0xF9, 0x95,
0x93, 0xF9, 0x10, 0x00, 0x00,
0x00, 0x40, 0x20, 0x1F, 0x20, 0x40, 0xBF, 0x84, 0x84, 0xBF, 0x94,
0xA4, 0x9F, 0xC0, 0x40, 0x00, //通
0x80, 0x40, 0x20, 0xF8, 0x07, 0x24, 0x24, 0x24, 0x25, 0x26, 0x24,
0x24, 0xb4, 0x26, 0x04, 0x00,
0x00, 0x00, 0x00, 0xff, 0x00, 0x01, 0xfd, 0x45, 0x45, 0x45, 0x45,
0x45, 0xfd, 0x01, 0x00, 0x00, //信
0x20, 0x10, 0x08, 0xfc, 0x57, 0x54, 0x54, 0xfd, 0x56, 0x54, 0x54,
0x56, 0x04, 0x00, 0x00, 0x00,
0x04, 0x44, 0x44, 0x27, 0x15, 0x0d, 0x05, 0xff, 0x05, 0x0d, 0x15,
0x25, 0x65, 0x24, 0x04, 0x00, //集
0x00, 0xfe, 0x22, 0x22, 0x22, 0x22, 0xa2, 0x62, 0xfe, 0x22, 0x22,
0x32, 0x22, 0xff, 0x02, 0x00,
0x00, 0xff, 0x48, 0x44, 0x42, 0x41, 0x50, 0x60, 0x5f, 0x40, 0x40,
0x40, 0x40, 0xff, 0x00, 0x00, //团
0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0xc0, 0x06, 0x18, 0x20,
0x40, 0x80, 0x80, 0x80, 0x00,
0x01, 0x01, 0x00, 0x30, 0x28, 0x24, 0x23, 0x20, 0x20, 0x28, 0x30,
0x60, 0x00, 0x01, 0x00, 0x00, //公
0x10, 0x10, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0xd2, 0x9a, 0x12,
0x02, 0xff, 0x02, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x3f, 0x00, 0x40,
0x80, 0x7f, 0x00, 0x00, 0x00, //司
};
/********************************定义ASCII字库
8列×16行***************************************/
uchar code Ezk[] = {
//文字:space--0x20//0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x,
0x, 0x, 0x, 0x,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
//!--0x21
0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x27, 0x00, 0x00, 0x00, 0x00,
//--0x22
0x00, 0x08, 0x04, 0x02, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
//#--0x23
0x40, 0x40, 0xf8, 0x40, 0x40, 0xf8, 0x40, 0x00, 0x04, 0x3f, 0x04,
0x04, 0x3f, 0x04, 0x04, 0x00,
//$--0x24
0x00, 0x70, 0x88, 0xfc, 0x08, 0x08, 0x30, 0x00, 0x00, 0x1c, 0x20,
0xff, 0x21, 0x22, 0x1c, 0x00,
//%--0x25
0xF0, 0x08, 0xF0, 0x80, 0x70, 0x08, 0x00, 0x00, 0x00, 0x31, 0x0E,
0x01, 0x1E, 0x21, 0x1E, 0x00,
//&--0X26
0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x1E, 0x21, 0x23, 0x24,
0x18, 0x16, 0x20, 0x00, 0x00,
//'--OX27
0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
//(--0X28
0x00, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x08, 0x04, 0x00, 0x00, 0x00,
0x00, 0x03, 0x0C, 0x10, 0x20,
//)--0X29
0x04, 0x08, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x0C,
0x03, 0x00, 0x00, 0x00, 0x00,
//*--0X2A
0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00, 0x02, 0x02, 0x01,
0x0F, 0x01, 0x02, 0x02, 0x00,
//+--0X2B
0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
0x0F, 0x01, 0x01, 0x01, 0x00,
//,--0X2C
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
//---0X2D
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x00,
//.--0X2E
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
///--0X2F
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x00, 0x40, 0x30,
0x0C, 0x03, 0x00, 0x00, 0x00,
//0--0X30
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x0F, 0x10,
0x20, 0x20, 0x10, 0x0F, 0x00,
//1--OX31
0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
0x3F, 0x20, 0x20, 0x00, 0x00,
//2--0X32
0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x28,
0x24, 0x22, 0x21, 0x30, 0x00,
//3--0X33
0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, 0x00, 0x18, 0x20,
0x20, 0x20, 0x11, 0x0E, 0x00,
//4--0X34
0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x04,
0x24, 0x24, 0x3F, 0x24, 0x00,
//5--0X35
0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, 0x19, 0x21,
0x20, 0x20, 0x11, 0x0E, 0x00,
//6--0X36
0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x11,
0x20, 0x20, 0x11, 0x0E, 0x00,
//7--0X37
0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x00, 0x00, 0x00, 0x00,
//8--0X38
0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0xEC, 0x22,
0x21, 0x21, 0x22, 0x1C, 0x00,
//9--0X39
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x31,
0x22, 0x22, 0x11, 0x0F, 0x00,
//:--
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -