- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验九需打印
实验九 LCM1602液晶显示实验
实验目的
掌握keil C51软件与Protues软件联合仿真调试的方法;
掌握LCM1602液晶模块显示西文的原理及使用方法;
掌握8位数据模式驱动LCM1602液晶的C语言编程方法。
掌握用LCM1602液晶模块显示数字的C语言编程方法。
实验内容
用Protues设计一LCM1602液晶显示接口电路。要求利用P0口接LCM1602液晶的数据段,P2.0~P2.2做LCM1602液晶的控制信号输入端。P3.0~P3.3口扩展三个功能键K1~K3。
编写程序,实现字符的静态和动态显示。字符为“姓名全拼+学号”。液晶的初始化、字符显示程序可参考STC官网上的程序文件。
编写程序,利用功能键实现字符的纵向滚动和横向滚动等效果显示。
实验原理及步骤
用Protues设计1602液晶显示接口电路;
在Keil C51中编写液晶显示控制程序,编译通过后,与Protues联合调试;
按动功能按键,观察字符及效果是否正确显示。
实验仪器与设备
1.微机1台 2. keilC51集成开发环境 3.Proteus仿真软件
五、电路设计及调试
(1)实验电路
(2)程序设计与调试
#includereg52.h
#includestring.h
#includelcd.h
#define uint unsigned int
#define uchar unsigned char
uchar num,TEMP;
bit flag=1;
uchar keynum;
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
void delay(uint x)
{
uchar i;
while(x--) for(i=0;i120;i++);
}
uchar keypress()
{
if(P3!=0XFF)
{
delay(5);
num=0;
if(P3!=0XFF)
{
TEMP=P3;
switch(TEMP)
{
case 0xfe:num=1;break;
case 0xfd:num=2;break;
}
while(TEMP==0XFF);
}
return num;
}
}
void main()
{
uchar i;
P0=P3=0XFF;
IT0=1;
EX0=1;EA=1;
Initialize_LCD();
display_string(0,0, gaoqinag );
display_string(0,1, 201012301043 );
while(flag)
{
keypress();
if(num==1)
{
for(i=0;i16;i++)
{
Write_LCD_Command(0x1c);
display_string(16-i,0, gaoqiang);
display_string(16-i,1, 201012301043);
display_string(16+i,0, gaoqinag);
display_string(16+i,1, 201012301043);
display_string(0x0f,0, gaoqinag);
display_string(0x0f,1, 201012301043);
delay(20);
}
display_string(0x0f,0, gaoqinag);
display_string(0x0f,1, 201012301043);
delay(20);
if(num==2) {Write_LCD_Command(0x01);break;}
}
if(num==2)
{
display_string(0,0,gaoqinag);
delay(100);
display_string(0,1,201012301043);
delay(100);
display_string(0,1,gaoqinag);
delay(100);
display_string(0,0,201012301043);
delay(100);
if(num==1) {Write_LCD_Command(0x01);break;}
}
}
}
void exter0()interrupt 0
{
flag=~fl
原创力文档


文档评论(0)