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

📄 12864z.c

📁 液晶12864驱动c 中英文显示驱动程序
💻 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 + -