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

📄 lcd.c

📁 这是一个产品的开发项目(基本程序)。有按键计算
💻 C
字号:
#include "p89v51rx2.h"
#include	<intrins.h>
#include	<string.h>

//-----------------------------------------------
//TS12864并口相关设定//
#define	BUSY_FLAG	P0_7						//液晶模块忙标志
//#define	BG_LED_SET	P1_7						//液晶背景光控制
#define	MPU_RS_CH	P2_6						//寄存器选择输入
#define	MPU_RW_CH	P2_7						//读写控制
#define	MPU_ENABLE	P2_3						//使能控制
#define	MPU_PS_CH	P2_3						//串/并传输控制
#define	MPU_RESET	P2_5						//液晶复位控制
#define	LCD_DATA	P0							//液晶数据口
#define LOW			0							//低电平
#define	HIGH		1							//高电平
//-----------------------------------------------
//液晶模块定义集指令//
#define	cClearDisplay	0x01					//清显示指令
#define	cEntryModeSet	0x06					//设置输入模式
#define	cDisplayOnCtrl	0x0c					//设置开显控制
#define	cFunctionSetB	0x30					//功能设定(基本指令)
#define	cFunctionSetE	0x34					//功能设定(扩充指令)
#define	cFuncDrawOn		0x36					//设置绘图功能
//unsigned char lcdPosX, lcdPosY;					//X,Y坐标
//unsigned char halfScr, blStart, basicBlock;		//半屏,下半屏,16*8块
//-----------------------------------------------
extern void delayMs (unsigned char ms)	 ;
void lcdWriteCommand (unsigned char Command);
void lcdClear (void);
void checkLcdBusy (void);
//===============================================
void lcdInit (void)
{
	MPU_RESET = LOW;
	delayMs(40);
	MPU_RESET = HIGH;
	delayMs(1);
	MPU_PS_CH = HIGH;
 
	lcdWriteCommand(cFunctionSetE);
	lcdWriteCommand(cFunctionSetB);
	lcdClear();
	lcdWriteCommand(cEntryModeSet);
	lcdWriteCommand(cDisplayOnCtrl);
}
//===============================================
void lcdClear (void)
{
/*#define	cClearDisplay	0x01					//清显示指令
*/
	lcdWriteCommand(cClearDisplay);
}
//===============================================
void lcdWriteCommand (unsigned char Command)
{
	checkLcdBusy();
	MPU_RS_CH = LOW;
	MPU_RW_CH = LOW;
	LCD_DATA = Command;
	MPU_ENABLE = 1;
	delayMs(1);
	MPU_ENABLE = LOW;
}
//===============================================
void lcdWriteData (unsigned char Data)
{
	checkLcdBusy();
	MPU_RS_CH = HIGH;
	MPU_RW_CH = LOW;
	LCD_DATA = Data;
	MPU_ENABLE = HIGH;
	delayMs(1);
	MPU_ENABLE = LOW;
}
//===============================================
void checkLcdBusy (void)
{
	LCD_DATA = 0xff;
	MPU_RS_CH = LOW;
	MPU_RW_CH = HIGH;
	MPU_ENABLE = HIGH;
	while (BUSY_FLAG);
	MPU_ENABLE = LOW;
}

//===============================================
void char_in_String_10(unsigned char _data, unsigned char y,signed char *msg,signed char sign)	{

    unsigned char *Ptr;
	  Ptr=msg+y;
		if(_data>99)_data=99;
	  *(Ptr--)  =_data%10+0x30;
    *(Ptr--)  =(_data/10)+0x30;
	Ptr-- ;
	if(sign)
		*(Ptr)  ='>';
    else        
	    *(Ptr)  =' ';
}

//===============================================
void dispString (unsigned char X, Y, speed, unsigned char *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 delaySec (unsigned char sec)
{
	unsigned char i;
	while (--sec)
	{
		for (i = 0; i < 200; i++)
		{
			delayMs (6);
		}
	}
}
//===============================================
/**/

⌨️ 快捷键说明

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