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

📄 lcd.c

📁 基于8051的驱动源码.包括STN LCD driver, I2C driver, 键盘(模拟键盘)驱动,串口驱动,中断应用,部分GDI函数
💻 C
字号:
//
//YM12864R
//LCD: STN
//
//


#include "type.h"
#include "reg52.h"
#include "common.h"


/*
P1.0      RS(CS)
P1.1      R/W(SID)
P1.2      E(SCLK)
P1.3      PSB
P1.4      /RST

DB0~7     P0
*/

#define LCDCOM_CLEAR		0x01
#define LCDCOM_ADDR0		0x02

sbit RS = P1^0;
sbit RW = P1^1;
sbit E  = P1^2;
sbit PSB = P1^3;
sbit RST = P1^4;

void LcdWriteCommand(S_BYTE command)
{
	RS = 0x0;//command
	RW = 0x1;
	DelayUs(0);
	RW = 0x0;//write
	E  = 0x1;
	P0 = command;
	DelayUs(0);
	E  = 0x0;
}

S_BYTE LcdReadCommand(void)
{
	S_BYTE command;

	RS = 0x0;//command
	RW = 0x0;
	DelayUs(0);
	RW = 0x1;//read
	E  = 0x1;
	P0 = 0xFF;
	DelayUs(0);
	command = P0;
	E  = 0x0;
	
	return command;
}

void LcdWriteData(S_BYTE Data)
{
	RS = 0x1;//data
	RW = 0x1;
	DelayUs(0);
	RW = 0x0;//write
	E  = 0x1;
	P0 = Data;
	DelayUs(0);
	E  = 0x0;
}

S_BYTE LcdReadData(void)
{
	S_BYTE Data;

	RS = 0x1;//data
	RW = 0x0;
	DelayUs(0);
	RW = 0x1;//read
	DelayUs(0);
	E  = 0x1;
	P0 = 0xFF;
	DelayUs(0);
	Data = P0;
	E    = 0x0;

	return Data;
}

void LcdInit(void)
{
	DelayMs(50);
//	RST = 0x0;//reset
//	DelayMs(1);
//	RST = 0x1;
//	DelayMs(50);
	PSB = 0x1;//select parallel
	LcdWriteCommand(0x30);//graphics mode
//	LcdWriteCommand(0x34);//LCD off
	LcdWriteCommand(0x36);//LCD on
	E = 0x0;
}

void LcdWriteDRAM(S_BYTE x, S_BYTE y, S_WORD Data)
{
//	LcdWriteCommand(0x34);//LCD off
	LcdWriteCommand(0x80+y);
	LcdWriteCommand(0x80+x);
	LcdWriteData((S_BYTE)(Data>>8));
	LcdWriteData((S_BYTE)Data);
//	LcdWriteCommand(0x36);//LCD on
}

S_WORD LcdReadDRAM(S_BYTE x, S_BYTE y)
{
	S_WORD Data;

	LcdWriteCommand(0x80+y);
	LcdWriteCommand(0x80+x);
	LcdReadData();//dummy read
	Data = LcdReadData();
	Data <<= 8;
	Data += LcdReadData();

	return Data;
}

⌨️ 快捷键说明

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