单片机开控制液晶显示器LCD1602.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
根据文档内容,“标题单片机开控制液晶显示器LCD1602”,主要研究了单片机控制字符型液晶显示器的接口设计以及软件编程知识实验涵盖了初始化检查忙标志写命令写数据等功能,并通过编程实现了一系列字符的快速输出该文档旨在加深学生对单片机系统结构的理解,提高编程技能

计算机科学与工程系实验报告

成绩:课程名称:单片机原理与应用

成绩:

实验题目:单片机开控制液晶显示器LCD1602

班级:姓名:学号:日期:

一、实验目的

掌握单片机控制字符型液晶显示器LCD1602的接口设计与软件编程

二、实验要求

1、用单片机控制字符型液晶显示器LCD1602字符信息“HappyNewYear”和“WelcometoHit”;

2、上述信息分别从LCD1602右侧第1行、第2行滚动移入,然后从左侧滚动移出,反复循环显示。

三、实验要求

提交的实验报告中应包括:电路原理图、实验设计思路、C51源程序(含注释语句)、运行效果(含运行截图与说明)、实验小结

三、硬件电路原理图的设计

四、编程思路及C51源程序

(1)编程思路:首先1.LCD初始化2.检查忙标志函数3.写命令函数4.写数据函数5.设置延时函数,然后是主函数调用对LCD初始化函数,插入数据。

(2)C51源程序:

#includereg51.h

#includeintrins.h //包含_nop_()空函数指令的头文件

#defineucharunsignedchar

#defineuintunsignedint

#defineoutP0

sbitRS=P2^0; //位变量

sbitRW=P2^1; //位变量

sbitE=P2^2; //位变量

voidlcd_initial(void); //LCD初始化函数

voidcheck_busy(void); //检查忙标志函数

voidwrite_command(ucharcom); //写命令函数

voidwrite_data(uchardat); //写数据函数

voiddelay(uint); //延时函数

voidmain(void) //主函数

{

uchartab1[]=HappyNewYear;

uchartab2[]=WelcometoHIT;

uchari,j,t;

lcd_initial(); //调用对LCD初始化函数

for(t=0;t29;t++) //实现循环移动

{

for(i=0;i14;i++) //循环完成14个字符的字符串

{

write_command(0x8f+1+i);//指针加1

write_data(tab1[i]); //显示对应指针的字符

}

for(j=0;j14;j++)

{

write_command(0xcf+1+j);

write_data(tab2[j]);

}

write_command(0x18); //外循环,t循环一次,画面左平移一个字符

delay(200);

}

}

voiddelay(uinta) //1ms延时子程序

{

ucharb=250;

for(;a0;a--)

{

while(--b);

b=249;

while(--b);

b=250;

}

}

voidcheck_busy(void) //检查忙标志函数

{

uchardt;

do

{

dt=0xff;

E=0;

RS=0;

RW=1;

E=1;

dt=out;

}while(dt0x80);

E=0;

}

voidwrite_command(ucharcom) //写命令函数

{

check_busy();

E=0;

RS=0;

RW=0;

out=com;

E=1;

_nop_();

E=0;

delay(1);

}

voidwrite_data(uchardat) //写数据函数

{

check_busy();

E=0;

RS=1;

RW=0;

out=dat;

E=1;

_nop_();

E=0;

delay(1);

}

voidLCD_initial(void) //液晶显示器初始化函数

{

write_comma

文档评论(0)

偶遇 + 关注
实名认证
文档贡献者

个人介绍

1亿VIP精品文档

相关文档