- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51单片机驱动1602液晶(4线串行)
51单片机驱动1602液晶(4线串行)
2015-06-26 12:04:01???来源:51hei ??
关键字: 51单片机??1602液晶??4线串行
/*单片机I/O 口使单片机资源的重要组成部分,也是用来扩展外围设备的必选资源,尽可能以更少的I/O口实现更多的功能是单片机工程师追求的目标,现在的一些串行器件也 为这一目标的实现添加了更多的可能性,比如I2C总线,MAXIM力推的1-WIRE等等,都可以以很少的I/O口实现更多的功能,当然这是以降低一定的 速度为代价的。
废话少说,进入正题。
显示器件多见的是LED数码管,LCD液晶屏等。一般的数码管成本低廉,在显示内容要求不多的时候适用;LCD液晶屏以更多的显示空间得到了许多人的爱好,不过成本上要高的多(市场价在20元左右),本文以LCD1602为例说明如何驱动液晶屏。
LCD1602外接的控制接口有RS,R/W,E;数据接口为DB7--DB0。总共有11跟线与单片机的I/O口连接,若使用标准的51单片机, 至少占用了一个端口再加上另一个端口的部分I/O口。这再很多应用场合是不大可取的。所以很有必要减少连接数。从其数据手册上介绍的4线连接方式可以达到 只使用7个I/O口即可满足要求,其中为3个控制口RS,R/W,E和数据口的DB7--DB4;写入数据或指令的顺序是先写高半个字节,再写低半个字 节。
其中P0口的高四位接到LCD1602的DB7-DB4,P3.0-P3.1分别接RS,R/W,E;
下面给出驱动源程序*/
#include reg52.h#include intrins.h
#define uint unsigned int#define uchar unsigned char
#define TRUE 1#define FALSE 0#define nop _nop_()
#define PtData P0 //定义连接口线,#define PtContr P3sbit RS=PtContr^0;sbit RW=PtContr^1;sbit E=PtContr^2;
void InitialLcd();void WriteLcdInstr(uchar);void WriteLcdData(uchar);void CheckLcdBusy();uchar HexToDdram(uchar);
void Delay(unsigned int);
main(){Delay(1000);
InitialLcd();
WriteLcdInstr(0x80);WriteLcdData(e);WriteLcdData(l);WriteLcdData(k);WriteLcdData(e);WriteLcdData(l);WriteLcdData(i);WriteLcdData(k);WriteLcdData(e);
WriteLcdInstr(0xc0);WriteLcdData(L);WriteLcdData(C);WriteLcdData(D);WriteLcdData(1);WriteLcdData(6);WriteLcdData(0);?WriteLcdData(2);
while(1){
WriteLcdInstr(0x0f);Delay(30000);?WriteLcdInstr(0x08);Delay(40000);}
}
//----------------LCD1602函数---------------------////---初始化void InitialLcd(){Delay(600);//延时应大于15ms,不同的晶振使需要修改,本程序再6M下调试通过RS=0;RW=0;nop;E=0;nop;
E=1;nop;PtData=0x20;//???nop;E=0;Delay(200);//延时应大于4.1ms
E=1;nop;PtData=0x20;//???nop;E=0;Delay(5);//延时应大于100us
E=1;nop;PtData=0x20;//?nop;E=0;//设置4位操作;
WriteLcdInstr(0x01);//清屏WriteLcdInstr(0x28);//设置4位操作,1行显示,5x8WriteLcdInstr(0x02);//光标归位WriteLcdInstr(0x06);//AC自动加1,画面不动WriteLcdInstr(0x0f);//0x0f:光标闪烁开;
}//---写指令void WriteLcdInstr(uchar Temp){CheckLcdBusy();RS=0;
您可能关注的文档
最近下载
- 安徽省芜湖市区2024-2025学年七年级下学期期末考试英语试卷(含答案,无听力).pdf VIP
- 2025 党校入党积极分子预备党员考试题库(含答案).docx VIP
- (高清版)-B-T 30146-2023 安全与韧性 业务连续性管理体系 要求.pdf VIP
- 猫病诊疗技术—猫静脉留置针放置技术.pptx VIP
- 保温装饰一体板施工技术交底.docx VIP
- 征信报告模板2025年新版可编辑带水印.pdf
- 2.3一次式 同步练习(4课时)2024-2025学年六年级上册数学沪教版(五四制).docx VIP
- 2025年建筑内部装修设计防火规范.doc
- 2022年中国人民解放军南部战区总医院医护人员招聘题库及答案解析.docx VIP
- 沪教版新教材初中数学2.3(3)一次式的加减.pptx VIP
文档评论(0)