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

📄 lcd.c

📁 51单片机驱动128*64液晶屏例程
💻 C
字号:
#include <AT89X52.H>
#include <lcd.h>
#include <intrins.h>

void delay(unsigned char ms)
{
	unsigned char i,j;
	for(i=ms;i>0;i--)
		for(j=100;j>0;j--);
}

void WriteCommandLCM(unsigned char comm,unsigned char bank)
{  
	while (checkbusy(bank));
	RW = 0;
	RS = 0;
	if(1==bank)	{CS1=0;	CS2=1;}
	if(2==bank) {CS1=1;	CS2=0;}
	if(3==bank) {CS1=0;	CS2=0;}		
	P0 = comm;
	EN = 1;
	EN = 0;	
}
void WriteDataLCM(unsigned char Data,unsigned char bank)
{	
	while (checkbusy(bank));
	RS=1;
	RW=0;	
	if(1==bank)	{CS1=0;	CS2=1;}
	if(2==bank) {CS1=1;	CS2=0;}
	if(3==bank) {CS1=0;	CS2=0;}
	P0=Data;
	EN=1;
	EN=0;
}
void LCMInit(void)
{
	RST = 0;
	EN =0;
	delay(10);
	RST = 1;
	delay(10);
	CS1=0;
	CS2=0;
	WriteCommandLCM(0x3f,3);//打开显示功能;
	WriteCommandLCM(0x40,3);//设置Y地址为0;
	WriteCommandLCM(0xb8,3);//设置行地址为0;
	WriteCommandLCM(0xc0,3);//设置显示起始行为0;

}
unsigned char ReadStatusLCM(unsigned char bank)
{
	unsigned char sta;
	RS=0;
	RW=1;
	if(1==bank)	{CS1=0;	CS2=1;}
	if(2==bank)	{CS1=1;	CS2=0;}
	if(3==bank)	{CS1=0;	CS2=0;}
	P0=0xff;
	EN=1;
	EN=0;
	sta=P0;
	return sta;
}

unsigned char checkbusy(unsigned char bank)
{
	return (ReadStatusLCM(bank)&0x80);
}

void writelcd(unsigned char x,unsigned char y,unsigned char *p)
{
	unsigned char bank=1,row,i;
	row=y;
	if(y>4) {bank=2;row=y-4;}
	WriteCommandLCM(0xb6+x*2,bank);//设置行地址为X;
	WriteCommandLCM(0x30+row*16,bank);//设置列地址为y;
	for(i=0;i<16;i++) WriteDataLCM(p[i],bank);
	WriteCommandLCM(0xb7+x*2,bank);
	WriteCommandLCM(0x30+row*16,bank);
	for(i=0;i<16;i++) WriteDataLCM(p[i+16],bank);
}	

⌨️ 快捷键说明

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