1602液晶显示实验

一、实验要求

参考书中例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版权协议,转载请附上原文出处链接和本声明。