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

📄 24c08_lcd.h

📁 I2C存储器24C08记录按键C次数程序(LCD12864显示)
💻 H
字号:
/*===============================================================
 
  程序名称:带字库液晶显示模块12864并行驱动程序 						  
  -----------------------------------------------
  ( http://www.bluepw.com  http://www.bluepw.cn )


 Agni 07-EV开发板 LCD(12864)与单片机接线方式:

	P1.0--RS 
	P1.1--RW
	P1.2--E
	P1.3--PSB
	P1.4--RST

 注:(1):主芯片AT89S52使用11.0592M晶振

	(2):Keil uV3 3.30编译运行通过

	(3):本例程在 Agni 07-EV 开发平台上成功运行通过

	(4):蓝极风电子技术网版权所有,只供学习参考,不得应用于商业用途.

==================================================================*/
#include <at89x52.h>
#define  uchar unsigned char
#define  uint unsigned int

/********引脚定义***********/
#define RS    P1_0	//RS=0为执行指令;RS=1为执行数据;
#define RW    P1_1	//读写
#define E     P1_2	//使能
#define PSB   P1_3	//低电平(串口驱动);高电平(并口驱动)
#define RST   P1_4	//LCD复位

/*************************定义字符串数组***************************/
//uchar code title[] ={"  并行LCD 测试  "};
//uchar code website[]={" www.bluepw.com "};
uchar code dig[]={"0123456789"};
//uchar code dig2[]={0,1,2,3,':'};   //

/**************************定义函数原型****************************/
void Init_lcd();					//初始化液晶
void lcd_busy();					//忙标志查询
void delay100us();					//100us延时程序
void write(uchar x,uchar Data);		//写单字节函数
void Show(uchar address,uchar L,uchar STR1[]);
void Show_dig(uchar address,uint number);
										        
/*****延时*****/
void delay100(int n)
{
	unsigned char i;
	while(n--)
	for(i=0;i<40;i++);
}

/*LCD 忙标志查询*/               
void lcd_busy(void)
{
	uchar busy;
	P0 = 0xff;
	RS = 0;
	RW = 1;
	do{
		E = 1;
		busy = P0;
		E = 0;
	}while(busy>0x7f);
}

/*写单字节函数*/
void write(uchar x,uchar Data)
{
	lcd_busy();	   		//忙查询
	if(x == 0) 	   
	{
		RS = 0; RW = 0; //写单字节命令字
	}  
	else if(x == 1) 
	{
		RS = 1; RW = 0; //写单字节数据
	}	
	E  = 1;
	P0 = Data;
	E  = 0;
	P0 = 0xff;
}

/*******LCD初始化******/               
void Init_lcd(void)
{
  delay100(10);              //启动等待,等LCM讲入工作状态
  PSB=1; ;   	             //并口驱动模式
  RST=0; delay100(2); RST=1; // 复位LCD
  write(0,0x30);	         //8 位介面,基本指令集
  write(0,0x0c);	         //显示打开,光标关,反白关
  write(0,0x01);	         //清屏,将DDRAM的地址计数器归零
}

/*****对外来数据进行处理*****/
void Show(uchar address,uchar L,uchar STR1[])
{
	  uchar i;	  
	  write(0,address); for(i=0;i<L;i++)  write(1,STR1[i]);
}

/****纯阿拉伯数字显示,参数入口:Show_dig(地址,数字)*/
void Show_dig(uchar address,uint number)
{
	uchar buffer[8];
	uchar j,k;
	uchar i=0;
	write(0,address);
	do{
		buffer[i++]=number%10;
		number=number/10;
		j=i;
	}while(number!=0);
	for(k=j;k>0;k--)
	{
		write(1,dig[buffer[k-1]]);
	}
}

/**********主程序**********			
void main(void)
{
	uint k=12345;
	Init_lcd();
	while(1)
	{
		Show(0x80,16,title);	  //写数组里的内容
		Show(0x91,6,"变量X=");
		Show_dig(0x94,k);		  //写阿拉伯数字变量
		Show(0x88,16,website);	  //写英文
		Show(0x98,16,"蓝极风电子技术网");  //写实时数组
	}
}	

************************* end ***************************/		 

⌨️ 快捷键说明

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