⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd12864.txt

📁 LCD12864的C51并行C程序 本人亲测
💻 TXT
字号:
#include <regx52.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char       //自定义关键字
#define BUSY_FLAG P0_7       //液晶模块忙标志
#define MPU_RS_CH P2_7       //寄存器选择输入   RS
#define MPU_RW_CH P2_6       //读写控制     RW
#define MPU_ENABLE P2_5       //使能控制        E
#define MPU_PS_CH P3_6       //串/并传输控制    PSB
#define MPU_RESET P3_7       //液晶复位控制    RST
#define LCD_DATA P0        //液晶数据口    P0
#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, 0, 100, "13号"); delaySec(1);
dispString(2, 1, 100, "学院");      delaySec(1);
dispString(3, 1, 100, "工程"); delaySec(6);
lcdClear();
dispString(0, 1, 100, "单片机开发");          delaySec(1);
dispString(1, 0, 100, "电子设备研究开发"); delaySec(1);
dispString(2, 1, 100, "工业过程模拟"); delaySec(1);
dispString(3, 0, 100, "结构有限元分析"); delaySec(6); 
lcdClear();
dispString(0, 0, 100, "联系人:");    delaySec(1);
dispString(1, 0, 100, "电话:05"); delaySec(1);
dispString(2, 0, 100, "手机:1"); delaySec(1);
dispString(3, 1, 100, "共同学习共同进步");      delaySec(6); 
lcdClear();
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -