rt12864m.c

来自「液晶显示程序」· C语言 代码 · 共 103 行

C
103
字号
#include "STC89C51RC.H"
#include "RT12864M.H"
#include "SPI.H"

void Wait1ms()
{
	unsigned char delay = 80;
	unsigned char cnt = 0;
	while(cnt < delay)	cnt++;
}

void WaitNms(int n)
{
	unsigned char i;
	for(i=0;i<n;i++)
	{
		Wait1ms();
	}
}

void LCDInit()
{
	RST = 0;	//复位
	WaitNms(10);
	RST = 1;
	
	WRCommand(0x30);	//基本指令集,8位并行
	WaitNms(10);		//等待时间>37us

	WRCommand(0x06);	//起始点设定:光标右移
	WaitNms(10);		//等待时间>100us

	WRCommand(0x01);	//清除显示DDRAM
	WaitNms(20);		//等待时间>10ms

	WRCommand(0x0E);	//显示状态开关:整体显示开,光标显示关,光标显示反白关
	WaitNms(10);		//等待时间>100us

	WRCommand(0x02);	//地址归零	
}

void RDBF()
{
	unsigned char temp;
	EN = 0;
	RW = 1;
	RS = 0;
	while(1)
	{
		EN = 1;
		temp = DATA;
		EN = 0;
		if((temp & 0x80) == 0)	break;
	}		
}

void WRCommand(unsigned char comm)
{
	RDBF();
	EN = 0;
	RW = 0;
	RS = 0;
	EN = 1;
	DATA = comm;
	EN = 0;
}

void WRData(unsigned char dat)
{
	RDBF();
	EN = 0;
	RW = 0;
	RS = 1;
	EN = 1;
	DATA = dat;
	EN = 0;
}

void ShowChinese(unsigned char addr,unsigned char chinese[],unsigned char count)
{
	unsigned char i;
	WRCommand(addr);	//设定DDRAM地址
	for(i=0;i<count;i++)
	{
		WRData(chinese[2*i]);
		WRData(chinese[2*i+1]);
	}
}

void ShowintChinese(unsigned char addr,unsigned int chinese[],unsigned char count)
{
	unsigned char i;
	WRCommand(addr);	//设定DDRAM地址
	for(i=0;i<count;i++)
	{
		WRData(chinese[i]);
		WRData(chinese[i]>>8);
	}

}


⌨️ 快捷键说明

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