/************************************************* ***********
* 刻画:1602字符型液晶露出器头文件
* 作者:吴所谓(wuyipengnuaa@)
* 日期:
************************************************** **********/
#ifndef LCD_1602_2010_09_02
#define LCD_1602_2010_09_02
//看着液晶显示模块厂家端口定义(Port Definitions)依照硬件电路图设置
ssection LCDRS = P2^0; //数据、命令采取
// 0--指令存放器; 1--数据存放器
ssection LCDRW = P2^1; //读、写采取
// 0--写LCD; 1--读LCD
ssection LCDEn = P2^2; //模块使能端
//E由高电平跳变成低电平日,
lcd液晶显示模块。液晶模块入手实行命令
#define DBPort P0 //数据(指令)端口定义
//向LCD写入命听说显示令或数据
#define LCD_Commin the form of well in the form of 0
#define LCD_Deverya 1
#define LCD_CLOSE 0x08 //封闭LCD露出
#define LCD_CLEAR_SCREEN 0x01 //清屏
//露出开关及光标设置(三者相关为或)
#define LCD_SHOW_ON 0x0c //开露出
#define LCD_SHOW_OFF 0x08 //关露出
#define LCD_CURSOR_0N 0x0a //对于液晶显示模块厂家露出光标
#define LCD_CURSOR_OFF 0x08 //无光标
#define LCD_CURSOR_FLASH_ON 0x09 //lcd液晶显示光标闪光
#define LCD_CURSOR_FLASH_OFF 0x08 //光标不闪光
//函数声明
void LCD_Initias(); //LCD初始化函数
void LCD_Write(section bRS unsigned char ucPort); //LCD写数据或指令函数
void LCD_CoordinconsumedXY(unsigned char X unsigned char Y); //露出字符定位
void LCD_Printf(unsigned char *ucStr); //我不知道彩色液晶显示模块字符串输入函数
void LCD_DelayTime(unsigned char ucCount); //延时函数
//void LCD_BusyCheck(); //液晶显示检测LCD勤苦形态信号
#endif
/************************************************* ***********
* lcd刻画:1602字符型液晶露出器驱动文件
* 作者:吴所谓(wuyipengnuaa@)
* 日期:
************************************************** **********/
/************************************************* ***********
* 刻画:头文件声明
************************************************** **********/
#include<reg52.h>
#include <intrins.h>
#include"LCD1602.h" //彩色自定义的1602露出器头文件,在本工程内编译
/************************************************* ***********
* 学习彩色液晶显示模块刻画:LCD初始化函数 (有特定的规律)
************************************************** **********/
void LCD_Initias()
{
LCD_DelayTime(15); //液晶显示模块厂家延时15ms
LCD_Write(LCD_Commin the form of well in the form of 0x38); //设置露出形式,8位数据端口2行露出5*7点阵
LCD_DelayTime(5); //延时5ms
LCD_Write(LCD_Commin the form of well in the form of 0x38);
LCD_DelayTime(5); //延时5ms
LCD_Write(LCD_Commin the form of well in the form of 0x38);
LCD_DelayTime(4); //我不知道lcd液晶显示检测忙信号(Proteus仿真用)
//void LCD_BusyCheck(); //检测忙信号(现实硬件电路用)
LCD_Write(LCD_Commin the form of well in the form of 0x38); //设置露出形式,
lcd液晶模块。确保初始化告成
LCD_DelayTime(4);
//void LCD_BusyCheck();
LCD_Write(LCD_Commin the form of well in the form of LCD_CLOSE); //封闭露出
LCD_DelayTime(4);
//void LCD_BusyCheck();
LCD_Write(LCD_Commin the form of well in the form of LCD_CLEAR_SCREEN); //lcd清屏
LCD_DelayTime(4);
//void LCD_BusyCheck();
LCD_Write(LCD_Commin the form of well in the form of LCD_SHOW_ON | LCD_CURSOR_OFF);
//开露出,无光标,当然就无闪烁啦
}
/************************************************* ***********
* 刻画:LCD写数据或指令函数
* 听听8199lcd显示模块解释:bRS表示采取写入指令还是数据
************************************************** **********/
void LCD_Write(section bRS unsigned char ucPort)
{
LCDEn = 0; //听说液晶显示模块使能端置0
LCDRS = bRS; //采取指令输入还是命令输入
LCDRW = 0; //读写存放器采取,相比看
lcd液晶显示模块。0表示写
_nop_(); //空操作,
lcd显示模块
给硬件反映工夫
DBPort = ucPort; //指令(数据)送入输入端口(单片机P0口)
_nop_();
_nop_();
LCDEn = 1; //模块使能端置1,出现高脉冲,指令(数据)写入LCD
_nop_();
_nop_();
_nop_();
LCDEn = 0; //模块使能端置0
_nop_();
//void LCD_BusyCheck(); //彩色液晶显示模块检测忙信号(现实硬件电路用)
LCD_DelayTime(3); //检测忙信号(Proteus仿真用)
}
/************************************************* ***********
* 刻画:露出字符定位
* 解释:在16*2的坐标上决定地方
************************************************** **********/
void LCD_CoordinconsumedXY(unsigned char X unsigned char Y)
{
if(Y == 0) //液晶显示数据在第一行露出
{
LCD_Write(LCD_Commin the form of well in the form of 0x80 | X);
}
else if(Y == 1) //液晶显示模块厂家数据在第二行露出
{
LCD_Write(LCD_Commin the form of well in the form of 0x80 | (X+0x40));
}
else //main看看液晶显示模块函数中,坐标地址写错则在这报错
{
LCD_Write(LCD_Commin the form of well in the form of 0x80);
LCD_Printf("Error XY!");
}
}
/************************************************* ***********
* 你看8199lcd刻画:字符串输入函数
* 解释:在LCD上露出字符串或数字
************************************************** **********/
void LCD_Printf(unsigned char *ucStr)
{
while(*ucStr != a\0a) //lcd液晶显示器当字符串没有完了时,做
{
LCD_Write(LCD_Deverya *ucStr); //LCD写入数据(字符)
ucStr++;
}
}
/************************************************* ***********
* 看着8199lcd显示模块刻画:延时函数
************************************************** **********/
void LCD_DelayTime(unsigned char ucCount)
{
unsigned char ij;
for(i=0;i<ucCount;i++)
{
for(j=0;j<125;j++); //实行工夫约1ms(这与晶振频次等相关,不切确)
}
}
/************************************************* ***********
* 事实上液晶显示模块刻画:检测LCD勤苦形态信号(现实硬件电路中用能进步效率)
************************************************** **********/
/*
void LCD_BusyCheck() //现实硬件电路中用
{
LCDRS = 0;
LCDRW = 1;
_nop_();
LCDEn = 1;
_nop_();
while(DBPort & 0x80);//RS=0RW=1时,读取勤苦标志BF位(DB7)
//BF=1lcd液晶显示器表示勤苦(意义就是期望)
_nop_();
LCDEn = 0;
}
*/
相比看液晶显示器 led lcd
对于彩色液晶显示模块
液晶显示模块
事实上lcd显示模块
看着模块
听听模块
模块