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

📄 12864c.h

📁 51以串行方式驱动12864
💻 H
字号:
#ifndef __12864C_H__
#define __12864C_H__


#include <at89x52.h>

#define uchar unsigned char 
#define uint  unsigned int

/************************************************************
//LCD工作在串行模式时,PSB要接低电平,RS要接高电平,RST低电平有效
//引脚定义
*************************************************
| R/W-----P1.4		|	E----P1.5	
*************************************************
*/

sbit _SID   =  P1^4;	/* R/W  数据输入端*/
sbit _CLK   =  P1^5;	/* E    同步时钟*/


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

//************************************************************
//函数说明:串行传送一字节数据
//入口:dat为要要传送的数据(8位)
//出口:
//************************************************************
void sendBYTE(unsigned char dat)
{
	uchar i;
	for (i=0;i<8;i++)
	{
	   _CLK = 0;
	   if ((dat & 0x80)!=0)//判断最高位是否为1
	      _SID = 1;
	   else 
	      _SID = 0;
	   _CLK = 1;
	   dat = dat<<1;
	}	
}


//****************************************************************
//函数说明:写控制指令
//入口:dat为要写入的控制指令
//出口:
//****************************************************************
void sendCMD(unsigned char dat)/*写控制指令*/
/* 写入控制指令 */
{
	unsigned char temp,i;
		sendBYTE(0xf8);		/*首先写入串口初始化命令:1 1 1 1 1 R/W RS 0*/
		temp = dat & 0xf0;
		sendBYTE(temp);
		temp = (dat<<4)&0xf0;
		sendBYTE(temp);
}

//***************************************************************8
//函数说明:写显示数据
//入口:dat为要写入的显示数据
//出口:
//*****************************************************************
void sendDAT(unsigned char dat)/*写显示数据*/
/* 写入显示数据 */
{
	unsigned char temp;
		sendBYTE(0xfa);		/*首先选写入串口初始化命令:1 1 1 1 1 R/W RS 0*/
		temp = dat & 0xf0;
		sendBYTE(temp);
		temp = (dat<<4)&0xf0;
		sendBYTE(temp);

}

//*****************************************************************************
//函数说明:/*写汉字到LCD屏指定位置*/
//入口:/*x_add 显示RAM地址*//*dat/dat1 显示汉字编码*/
//出口:
//******************************************************************************
void disHZ(unsigned char x_add,unsigned char dat,unsigned char dat1)
{
	sendCMD(x_add);
	sendDAT(dat);
	sendDAT(dat1);
}

//******************************************************************************
//函数说明:/*写汉字串到LCD屏指定位置*/
//入口:addr为地址,*hz 为字符串起始地址
//出口:
//*****************************************************************************
void disSTR(unsigned char addr,unsigned char *hz) 
{
	sendCMD(addr);
	while(*hz!='\0')
	{
	    sendDAT(*hz++);
	    sendDAT(*hz++);
	}
}

//*********************************************************
//函数说明:/*初始化LCM*/
//入口:
//出口:
//********************************************************
void initlcm(void)
{
	sendCMD(0x30);/*功能设置:一次送8位数据,基本指令集*/
	sendCMD(0x04);/*点设定:显示字符/光标从左到右移位,地址加一*/
	sendCMD(0x0c);/*显示设定:开显示,显示光标,当前显示位反白闪动(0x0f)*/
	sendCMD(0x01);/*清DDRAM*/
	sendCMD(0x02);/*DDRAM地址归位*/
}


#endif

⌨️ 快捷键说明

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