📄 8.5.c
字号:
#include <reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define LcdCommand XBYTE[0xFFFF]
#define LcdDataWrite XBYTE[0xFFFE]
uchar code ZKWU[]=
{0x00,0x10,0x1F,0xF8,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00,0x00,0x10,0x3F,
0xF8,0x01,0x00,0x01,0x04,0xFF,0xFE,0x02,0x80,0x02,0x40,0x04,0x20,0x18,0x1C,0x60,
0x08};
uchar code ZKLIN[]=
{0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xFD,0xFE,0x10,0x20,0x10,0x60,0x38,0x70
,
0x34,0xB0,0x54,0xA8,0x51,0x28,0x92,0x26,0x14,0x24,0x10,0x20,0x10,0x20,0x10,0x20}
;
void Initialize(void);
void delay(uint);
void SetCursor(uchar,uchar);
void WriteOneWork(uchar,uchar,uchar *);
void WriteLine(uchar,uchar,uchar);
void main(void)
{
SP=0x60;
EA=0;
delay(0x30);
Initialize();
delay(0x9);
LcdCommand=0x4f; /* 光标地址自动向下增一 */
WriteOneWork(0,0,ZKWU);
WriteOneWork(0x2,0x80,ZKLIN);
while(1);
}
/******************************** 初始化LCD函数
********************************/
void Initialize(void)
{
uint i;
LcdCommand=0x40; /* ---------LCD SYSTEM SET系统设置令,8个参数-----
--- */
LcdDataWrite=0x30;
LcdDataWrite=0x87;
LcdDataWrite=0x07;
LcdDataWrite=39; /* 显示域长度为320dot */
LcdDataWrite=0x36; /* 确定液晶工作频率 */
LcdDataWrite=239; /* 显示屏高度为240dot */
LcdDataWrite=40; /* 显示屏一行所占显示缓冲区字节数(L) */
LcdDataWrite=0; /* 显示屏一行所占显示缓冲区字节数(H) */
delay(0x9);
LcdCommand=0x44; /* ---------LCD SCROLL显示区设置命令,最多10个参
数--------- */
LcdDataWrite=0x00; /* 显示1区对应的显示RAM起始高8位地址 */
LcdDataWrite=0x00; /* 显示1区对应的显示RAM起始低8位地址 */
LcdDataWrite=240; /* 显示1区占用240个dot行 */
LcdDataWrite=0x80; /* 显示2区对应的显示RAM起始低8位地址 */
LcdDataWrite=0x25; /* 显示2区对应的显示RAM起始高8位地址 */
LcdDataWrite=240; /* 显示3区占用240个dot行 */
LcdDataWrite=0x00; /* 显示3区对应的显示RAM起始低8位地址 */
LcdDataWrite=0x4b; /* 显示3区对应的显示RAM起始高8位地址 */
delay(0x9);
LcdCommand=0x5a; /* 水平卷动,初始化时必须清零 */
LcdDataWrite=0x00;
delay(0x9);
LcdCommand=0x5b; /* 各个显示区的合成方式,1个参数 */
LcdDataWrite=0x1c; /* 参数:显示方式为三屏图形叠加,逻辑或 */
delay(0x9);
LcdCommand=0x59; /* 打开显示,1个参数 */
LcdDataWrite=0x04; /* 只显示第一个区并关闪烁 */
delay(0x9);
LcdCommand=0x4c; /* 光标自动向右增一?*/
delay(0x9);
LcdCommand=0x46; /* 设定光标位置命令 */
LcdDataWrite=0; /* 从0000位置开始 */
LcdDataWrite=0;
delay(0x9);
LcdCommand=0x42; /* 允许MPU连续地把显示数据写入显示区内命令 */
for(i=0;i<32760;i++)
{
LcdDataWrite=0; /* 将32K显缓全部清零,即LCD不显示任何东西 */
}
}
/* --------------------------设定光标,允许显示------------------------- */
void SetCursor(uchar CursorHIGH,uchar CursorLOW)
{
delay(0x9);
LcdCommand=0x46; /* 设定光标位置命令 */
LcdDataWrite=CursorLOW; /* 从0000位置开始 */
LcdDataWrite=CursorHIGH;
delay(0x9);
LcdCommand=0x42; /* 允许MPU连续地把显示数据写入显示区内命令 */
}
/* ---------------------------在指定位置显示一个汉字---------------------------
*/
void WriteOneWork(uchar CurHIGH,uchar CurLOW,uchar * ZiKu)
{
uchar i;
SetCursor(CurHIGH,CurLOW); /* 设定光标,允许显示 */
i=0;
do
{
LcdDataWrite=ZiKu[i];
i=i+2;
}
while(i<0x1e);
SetCursor(CurHIGH,CurLOW+1);
i=1;
while(i<0x1f)
{
LcdDataWrite=ZiKu[i];
i=i+2;
}
}
/* ----------------------延时子程序----------------------------- */
void delay(uint delx)
{
uint i=0;
while(i<delx)
{
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -