?? lcd12864.txt
字號:
#include <regx52.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char //自定義關(guān)鍵字
#define BUSY_FLAG P0_7 //液晶模塊忙標(biāo)志
#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 //液晶復(fù)位控制 RST
#define LCD_DATA P0 //液晶數(shù)據(jù)口 P0
#define LOW 0 //低電平
#define HIGH 1 //高電平
#define OFF 0 //邏輯關(guān)
#define ON 1 //邏輯開
//-----------------------------------------------
//液晶模塊指令集定義
#define cClearDisplay 0x01 //清顯示指令
#define cEntryModeSet 0x06 //設(shè)置輸入模式
#define cDisplayOnCtrl 0x0c //設(shè)置開顯控制
#define cFunctionSetB 0x30 //功能設(shè)定(基本指令)
#define cFunctionSetE 0x34 //功能設(shè)定(擴充指令)
//-----------------------------------------------
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, "大學(xué)"); delaySec(1);
dispString(1, 0, 100, "13號"); delaySec(1);
dispString(2, 1, 100, "學(xué)院"); delaySec(1);
dispString(3, 1, 100, "工程"); delaySec(6);
lcdClear();
dispString(0, 1, 100, "單片機開發(fā)"); delaySec(1);
dispString(1, 0, 100, "電子設(shè)備研究開發(fā)"); delaySec(1);
dispString(2, 1, 100, "工業(yè)過程模擬"); delaySec(1);
dispString(3, 0, 100, "結(jié)構(gòu)有限元分析"); delaySec(6);
lcdClear();
dispString(0, 0, 100, "聯(lián)系人:"); delaySec(1);
dispString(1, 0, 100, "電話:05"); delaySec(1);
dispString(2, 0, 100, "手機:1"); delaySec(1);
dispString(3, 1, 100, "共同學(xué)習(xí)共同進步"); delaySec(6);
lcdClear();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -