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

📄 lcd1602_8.h

📁 通过DS1302时钟芯片和LCD实现时钟显示功能
💻 H
字号:
/*------------------------------------------------------------------------------*/
//File:	LCD1602_8.H
//Date:	08-7-29
//Time:	16:09
//Note:	LCD1602 Mini Driver. 




/*------------------------------------------------------------------------------*/
#ifndef __LCD1602_8_H__
#define __LCD1602_8_H__
#include<intrins.h>




/*------------------------------------------------------------------------------*/
//LCD接口定义					
sfr		 io	= 0x80;				//P0-0x80,P1-0x90,P2-0xA0,P3-0xB0;
sbit	 rs = P2^0;				//LCD数据/命令选择端(H/L)
sbit	 rw = P2^1;				//LCD读/写选择端(H/L)
sbit	 ep = P2^2;				//LCD使能控制
sbit     bz = io^7;				//LCD忙标志位





/*------------------------------------------------------------------------------*/
//函数声明		
void lcd_busy(void);					//测试LCD忙碌状态程序
void lcd_wcmd(unsigned char cmd);		//写入指令到LCD程序
void lcd_wdat(unsigned char dat);		//写入数据到LCD程序
void lcd_pos (unsigned char x, bit y);	//LCD数据指针位置程序
//void printc(unsigned char CHAR);		//显示字符
void prints(unsigned char *string);		//显示字符串
void lcd_init(void);					//LCD初始化设定程序



/*------------------------------------------------------------------------------*/
//测试LCD忙碌状态
void lcd_busy(void)
{	
	do{
		ep = 0;
		rs = 0;		//指令
		rw = 1;		//读出
		io = 0xff;
		ep = 1;
		_nop_();	//高电平读出	1us	
	}while(bz);		//bz=1表示忙,bz=0表示空闲
	ep = 0;		
}




/*------------------------------------------------------------------------------*/
//写入指令到LCD
void lcd_wcmd(unsigned char cmd)
{							
	lcd_busy();	//检测忙
	rs = 0;		//指令
	rw = 0;		//写入
	ep = 1;	
	io = cmd;	//指令
	ep = 0;		//下降沿有效	
}




/*------------------------------------------------------------------------------*/
//写入数据函数
void lcd_wdat(unsigned char Data)
{
	lcd_busy();  //检测忙
	rs = 1;		 //数据
	rw = 0;		 //写入
	ep = 1;
	io = Data;	 //数据
	ep = 0;		 //下降沿有效
}




/*------------------------------------------------------------------------------*/
//LCD数据指针位置程序
void lcd_pos(unsigned char x, bit y)
{						
	if(y)lcd_wcmd(x|0xc0);	//y=1,第二行显示;y=0,第一行显示		0<=x<16
	else lcd_wcmd(x|0x80);	//数据指针=80+地址码(00H~27H,40H~67H)
}




/*------------------------------------------------------------------------------*/
//显示字符
/*
void printc(unsigned char CHAR)
{
	lcd_wdat(CHAR);
}
*/



/*------------------------------------------------------------------------------*/
//显示字符串
void prints(unsigned char *string)
{
	unsigned char i;
	//do{lcd_wdat(string[i]);i++;}while(string[i]!='\0');//生成代码比for循环大
	for(i=0;string[i]!='\0';i++)lcd_wdat(string[i]);	 //有时用for循环也好哈
}




/*------------------------------------------------------------------------------*/
//LCD初始化设定
void lcd_init()
{						
	lcd_wcmd(0x38);		//设置LCD为16X2显示,5X7点阵,八位数据接口
	lcd_wcmd(0x06);		//LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)
	lcd_wcmd(0x0c);		//LCD开显示及光标设置(光标不闪烁,不显示"_")
	lcd_wcmd(0x01);		//清除LCD的显示内容
}


#endif

⌨️ 快捷键说明

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