📄 12864z.c
字号:
#include <at892051.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char //自定义关键字
#define BUSY_FLAG P1_7 //液晶模块忙标志
#define MPU_RS_CH P3_5 //寄存器选择输入 RS
#define MPU_RW_CH P3_4 //读写控制 RW
#define MPU_ENABLE P3_7 //使能控制 E
//#define MPU_PS_CH P3_1 //串/并传输控制 PSB
#define MPU_RESET P3_3 //液晶复位控制 RST
#define LCD_DATA P1 //液晶数据口 P1
#define LOW 0 //低电平
#define HIGH 1 //高电平
#define OFF 0 //逻辑关
#define ON 1 //逻辑开
//液晶模块指令集定义
//-----------------------------------------------
#define cClearDisplay 0x01 //清显示指令
#define cEntryModeSet 0x06 //设置输入模式
#define cDisplayOnCtrl 0x0c //设置开显控制
#define cFunctionSetB 0x30 //功能设定(基本指令)
#define cFunctionSetE 0x34 //功能设定(扩充指令)
//-----------------------------------------------
void checkLcdBusy (void)
{
LCD_DATA = 0xff;
MPU_RS_CH = LOW;
MPU_RW_CH = HIGH;
MPU_ENABLE = HIGH;
while (BUSY_FLAG);
MPU_ENABLE = LOW;
}
//-----------------------------------------------
void delayMs (uchar ms)
{
uchar i;
while (--ms)
for (i = 0; i < 125; i++);
}
//-----------------------------------------------
void delaySec (uchar sec)
{
uchar i;
while (--sec)
for (i = 0; i < 200; i++)
delayMs (6);
}
//-----------------------------------------------
void lcdWriteCommand (uchar Command)
{
checkLcdBusy();
MPU_RS_CH = LOW;
MPU_RW_CH = LOW;
LCD_DATA = Command;
MPU_ENABLE = HIGH;
delayMs(1);
MPU_ENABLE = LOW;
}
//-----------------------------------------------
void lcdClear (void)
{
lcdWriteCommand(cClearDisplay);
}
//-----------------------------------------------
void lcdInit (void) //初始化LCD子程序
{
MPU_RESET = LOW;
delayMs(40);
MPU_RESET = HIGH;
delayMs(1);
//MPU_PS_CH = HIGH;
lcdWriteCommand(cFunctionSetE);
lcdWriteCommand(cFunctionSetB);
lcdClear();
lcdWriteCommand(cEntryModeSet);
lcdWriteCommand(cDisplayOnCtrl);
}
//-----------------------------------------------
void lcdWriteData (uchar Data)
{
checkLcdBusy();
MPU_RS_CH = HIGH;
MPU_RW_CH = LOW;
LCD_DATA = Data;
MPU_ENABLE = HIGH;
delayMs(1);
MPU_ENABLE = LOW;
}
//-----------------------------------------------
void dispString (uchar X, Y, speed, uchar *msg)
{
if (X == 0) X = 0x80;
else if (X == 1) X = 0x90;
else if (X == 2) X = 0x88;
else if (X == 3) X = 0x98;
Y = X + Y;
lcdWriteCommand(Y);
while (*msg)
{
lcdWriteData(*msg++);
delayMs(speed);
}
}
//-----------------------------------------------
void main (void)
{
lcdInit ();
lcdClear();
while(1)
{
dispString(0, 0, 100, "山西华鑫软件公司"); delaySec(1);
dispString(1, 2, 100, "皮带运输"); delaySec(1);
dispString(2, 1, 100, "综合保护监控"); delaySec(1);
dispString(3, 0, 100, "电话:03537040777"); delaySec(6);
lcdClear();
dispString(0, 0, 100, "公司名称:山西华"); delaySec(1);
dispString(1, 0, 100, "鑫电气软件公司"); delaySec(1);
dispString(2, 0, 100, "地址:山西省阳泉"); delaySec(1);
dispString(3, 0, 100, "市四矿煤山路"); delaySec(6);
lcdClear();
dispString(0, 0, 100, "www.sxhxdq.com"); delaySec(1);
dispString(1, 0, 100, "shanxihx@163.com"); delaySec(1);
dispString(2, 0, 100, "电话:03537040777"); delaySec(1);
dispString(3, 0, 100, "传真:03537042240"); delaySec(6);
lcdClear();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -