一、实验要求
参考书中例7.2.2的相关代码,实现第一行从右侧移入“Hello everyone!”,同时第二行从右侧移入“Welcome to here!”,完全移入后再完全移出屏幕,如此反复,实现滚动的效果。保存相关原理图,代码及实验效果图,完成实验报告。
二 、实验原理图

三 、实验代码
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Hello everyone!";
uchar code table1[]="Welcome to here!";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
uchar num;
void delay(uint z){
uint x,y;
for(x=z;x>0;x--){
for(y=110;y>0;y--);
}
}
void write_com(uchar com){
lcdrs=0; //选择写命令模式
P0=com; //将要求的命令字送到数据总线上
delay(5); //稍作延时以待数据稳定
lcden=1; //使能端给一高脉冲,因为初始化函数已经将lcden置为0
delay(5);
lcden=0; //将使能端置0以完成高脉冲
}
void write_date(uchar date){
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init(){
lcden=0;
write_com(0x38); //设置16*2 显示,5*7点阵,8位数据接口
write_com(0x0c); //设置开显示,不显示光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //显示清0,数据指针清0
}
void main(){
init();
write_com(0x80+0x10); //将数据写在液晶第一行非显示区域地址处
for(num=0;num<15;num++){
write_date(table[num]);
delay(5);
}
write_com(0x80+0x50); //将数据写在第二行非显示区域地址处
for(num=0;num<16;num++){
write_date(table1[num]);
delay(5);
}
while(1){
for(num=0;num<10;num++){
write_com(0x18); //整屏左移指令,同时光标跟随移动
//write_com(0x1c); //整屏右移,同时光标跟随移动
delay(200);
}
}
}四、实验效果截图



版权声明:本文为qq_51649461原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。