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

📄 cm12864_driver.c

📁 该压缩包内还有51单片机常用各类外设驱动C程序源码(128*64点阵屏
💻 C
字号:
#include "AT89S52.h"
#include "CONFIG.h"
#include "CM12864_Driver.h"
#include <intrins.h>
#include <absacc.h>




//**********************************************************************************************************************子程序
#ifdef _BUS_
bit Lcd_Busy()// 测试LCD忙碌状态
{
 	ACC=BUSY;
 	return ACC_7;
}


void Lcd_Wcmd_L(uchar cmd)// 写入指令数据到LCD左
{
 	while(Lcd_Busy());
	CMD_L = cmd;
}



void Lcd_Wcmd_R(uchar cmd)// 写入指令数据到LCD右
{
 	while(Lcd_Busy());
	CMD_R = cmd;
}


void Lcd_Wdat_L(uchar dat)//写入字符显示数据到LCD左
{
 	while(Lcd_Busy());
  	WDAT_L = dat;
}



void Lcd_Wdat_R(uchar dat)//写入字符显示数据到LCD右
{
	while(Lcd_Busy()); 
	WDAT_R = dat;	
}


uchar Lcd_Rdat_L(void)//读入字符显示数据到LCD左
{
uchar data dat;
	while(Lcd_Busy()); 
	 dat=RDAT_L;	
	return dat;
}

uchar Lcd_Rdat_R(void)//读入字符显示数据到LCD右
{
uchar data dat;
	while(Lcd_Busy()); 
	 dat=RDAT_R;
	return dat;
}

#else

void Lcd_Wcmd_L(uchar cmd)// 写入指令数据到LCD左
{

	CS1=0;
	CS2=1;
	DI=0;
	RW=0;
	P0 = cmd;
	E=1;
	E=0;
}



void Lcd_Wcmd_R(uchar cmd)// 写入指令数据到LCD右
{

	CS1=1;
	CS2=0;
	DI=0;
	RW=0;
	P0 = cmd;
	E=1;
	E=0;
}


void Lcd_Wdat_L(uchar dat)//写入字符显示数据到LCD左
{
 
  	CS1=0;
	CS2=1;
	DI=1;
	RW=0;
	P0 = dat;
	E=1;
	E=0;
}



void Lcd_Wdat_R(uchar dat)//写入字符显示数据到LCD右
{

	CS1=1;
	CS2=0;
	DI=1;
	RW=0;
	P0 = dat;
	E=1;
	E=0;	
}
#endif


/*--------------------------------------
		写数据到液晶屏
		 dat:数据
		 page:目标页
		 column:目标列
--------------------------------------*/
void Lcd_Wdat(uchar dat,uchar page,uchar column)
{

if(column<64)	
		{
			Lcd_Wcmd_L(page| 0xb8);
			Lcd_Wcmd_L(column | 0x40);
			Lcd_Wdat_L(dat);
		}
else	
		{
			Lcd_Wcmd_R(page| 0xb8);
			Lcd_Wcmd_R((column-64) | 0x40);
			Lcd_Wdat_R(dat);
		}
}

/*--------------------------------------
		 从液晶屏读数据
		 page:目标页
		 column:目标列
--------------------------------------*/
uchar Lcd_Rdat(uchar page,uchar column)
{

if(column<64)	
		{
			Lcd_Wcmd_L(page| 0xb8);
			Lcd_Wcmd_L(column | 0x40);
			return Lcd_Rdat_L();
		}
else	
		{
			Lcd_Wcmd_R(page| 0xb8);
			Lcd_Wcmd_R((column-64) | 0x40);
			return Lcd_Rdat_R();
		}
}

/*
void Lcd_LRow(uchar row)//LCD左屏显示起始行设置
{
	Lcd_Wcmd_L(row | 0xc0);
}

void Lcd_RRow(uchar row)//LCD右屏显示起始行设置
{
	Lcd_Wcmd_R(row | 0xc0);
}
*/

void Lcd_Row(uchar row)//LCD双屏显示起始行设置
{
	Lcd_Wcmd_L(row | 0xc0);
	Lcd_Wcmd_R(row | 0xc0);
}

void Lcd_On_Off()//LCD开关设置
{
	Lcd_Wcmd_L(0x3f);
	Lcd_Wcmd_R(0x3f);
}

void Lcd_Init()//LCD初始化设置
{
	Lcd_On_Off();
	Lcd_Row(0);
}




⌨️ 快捷键说明

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