- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
proteus单片机仿真
一 人机接口
/******************************************************************
**文件名 LCD1604.c
**文件描述 1604液晶驱动程序
**创建时间 2012-9-11
********************************************************************/
#include reg51.h
#include intrins.h
#include stdio.h
#include string.h
#define uchar unsigned char
#define uint unsigned int
//定义管脚
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
//延时
void Delayms(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i120;i++);
}
}
/********************************************************************
**函数名称 Busy_Check()
**函数描述 检查总线是否忙碌
**传入参数 无
**传出参数 无
**返回值 LCD_Status
********************************************************************/
static uchar Busy_Check()
{
uchar LCD_Status;
RS = 0;
RW = 1;
EN = 1;
Delayms(1);
LCD_Status = P0;
EN = 0;
return LCD_Status;
}
/********************************************************************
**函数名称 Write_LCD_Command(uchar cmd)
**函数描述 写入指令
**传入参数 指令
**传出参数 无
**返回值 无
********************************************************************/
static void Write_LCD_Command(uchar cmd)
{
while((Busy_Check()0x80)==0x80);
RS = 0;
RW = 0;
EN = 0;
P0 = cmd;
EN = 1;
Delayms(1);
EN = 0;
}
/********************************************************************
**函数名称 Write_LCD_Data(uchar dat)
**函数描述 写入数据
**传入参数 数据
**传出参数 无
**返回值 无
********************************************************************/
void Write_LCD_Data(uchar dat)
{
while((Busy_Check()0x80)==0x80);
RS = 1;
RW = 0;
EN = 0;
P0 = dat;
EN = 1;
Delayms(1);
EN = 0;
}
/********************************************************************
**函数名称 Initialize_LCD()
**函数描述 液晶初始化
**传入参数 数据
**传出参数 无
**返回值 无
********************************************************************/
void Initialize_LCD()
{
Write_LCD_Command(0x38);
Delayms(1);
Write_LCD_Command(0x01);
Delayms(1);
Write_LCD_Command(0x06);
Delayms
文档评论(0)