LCD1602液晶显示实验实验报告及程序
实验八 LCM1602液晶显示实验

实验九 LCM1602液晶显示实验一、实验目的1.掌握keil C51软件与protues软件联合仿真调试的方法;2.掌握LCM1602液晶模块显示西文的原理及使用方法;3.掌握用8位数据模式驱动LCM1602液晶的C语言编程方法;二、实验仪器与设备1、微机一台 2 keilC51集成开发环境 3 Protues仿真软件三、实验内容1.用protues设计一LCM1602液晶显示接口电路。
要求利用P0接LCM1602液晶的数据端,P2.0~P2.2做LCM1602液晶的控制信号输入端。
P3.0~P3.4口扩展4个功能键K1~K4,电路如下2.编写程序,实现字符的静态和动态显示,字符为第一行“姓名全拼”第二行“专业全拼+学号”。
液晶的初始化,字符显示程序可参考官网的程序文件。
3.编写程序,利用功能键实现字符的纵向滚动和横向滚动等效果显示,显示字符如下:1.姓名全拼2.专业全拼+学号3.MCS-51 EXP84.LCD DISPLAY 主程序静态显示“My Informatiom”5.实验源程序见附录。
6.实验电路图:四、实验说明液晶显示的原理:采用的LCDxianshiping都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背景层,背景层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元产生扭曲,从而经穿过其中的光线进行有规则的折射,然后经过第二层过滤在屏幕生显示出来。
1、LCM1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接第二脚:VDD接5V正电源。
第三脚:VL为液晶显示器对比度调整端,接正电源时的对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第四脚:RS为寄存器选择高电平时选择数据寄存器,低电平时选择指令寄存器。
LCD1602液晶显示器

实验11:1602液晶显示屏显示(字符型液晶显示器)字符型液晶显示器用于数字、字母、符号并可显示少量自定义符号。
这类液晶显示器通常有16根接口线,下表是这16根线的定义。
字符型液晶接口说明编号符号引脚说明编号符号引脚说明1 Vss 电源地 9 D2 数据线22 Vdd 电源正 10 D3 数据线33 VL 液晶显示偏压信号 11 D4 数据线44 RS 数据/命令选择端 12 D5 数据线55 R/W 读/ 写选择端 13 D6 数据线66 E 使能信号 14 D7 数据线77 D0 数据线0 15 BLA 背光源正极8 D1 数据线1 16 BLK 背光源负极(本学习板配的内部已经接地)下图是字符型液晶显示器与单片机的接线图。
这用了P0口的8根线作为液晶显示器的数据线,用P20、P21、P22做为3根控制线。
字符型液晶显示器与单片机的接线图字符型液晶显示器的使用,字符型液晶显示器一般采用HD44780芯片做为控制器的。
1.字符型液晶显示器的驱动程序这个驱动程序适用于1602型字符液晶显示器,1) 初始化液晶显示器命令(RSTLCD)设置控制器的工作模式,在程序开始时调用。
参数:无。
2) 清屏命令(CLRLCD)清除屏幕显示的所有内容参数:无3) 光标控制命令(SETCUR)用来控制光标是否显示及是否闪烁参数:1个,用于设定显示器的开关、光标的开关及是否闪烁。
4) 写字符命令(WRITECHAR)在指定位置(行和列)显示指定的字符。
参数:共有3个,即行值、列值及待显示字符,分别存放在XPOS、YPOS和A中。
其中行值与列值均从0开始计数,A中可直接写入字符的符号,编译程序自动转化为该字符的ASCII值。
5) 字符串命令(WRITESTRING)在指定位置显示指定的一串字符。
参数:共有3个,即行值、列值和R0指向待显示字符串的内存首地址,字符串须以0结尾。
如果字符串的长度超过了从该列开始可显示的最多字符数,则其后字符被截断,并不在下行显示出来。
单片机应用技术课程报告~1602LCD液晶显示屏的显示

单片机应用技术课程报告
实验名称1602LCD液晶显示屏的显示实验时间2020年 7月 9日学生姓名实验地点钉钉群线上
同组人员专业班级
1、实验目的
1、会使用单片机4个并行I/O端口连接外部设备并构建单片机最小应用系统。
2、能使用工具软件绘制单片机硬件原理图、能编写简LCD控制程序。
3、会使用LCD1602显示指定的内容。
2、任务设计要求
采用STC89C52单片机构建最小系统,在I/O口外接1602,编程实现在1602字符型LCD显示:实现字符的静态和动态显示。
显示字符为第一行:“I am xx”,第二行:“Hou are you”。
3、总体设计方案
根据实验任务要求,通过功能分析,设计的系统总体方案如图所示。
并
行接口AT89C51
单片机
电源
时钟电路
复位电路
实现led显示屏显示
4、硬件电路设计
5、软件程序设计
(2)程序清单
#include<reg51.h>
#include<intrins.h>//包含_nop_()空函数指令的头文件#define uchar unsigned char
#define uint unsigned int
#define out P0
sbit RS=P2^0;//位变量
sbit RW=P2^1;//位变量
sbit E=P2^2;//位变量
void lcd_ini();//LCD初始化函数
void check_busy();//检查忙标志函数
2)性能指标测试及结果分析。
LCD1602液晶显示实验报告

LCD1602液晶显示实验报告实验报告:LCD1602液晶显示实验实验目的:1.了解LCD1602液晶显示的工作原理和基本结构;2.掌握LCD1602液晶显示的驱动控制方法;3.能够通过Arduino控制LCD1602液晶显示。
实验材料:1.Arduino UNO开发板2.LCD1602液晶显示屏3.面包板4.杜邦线实验步骤:1.将Arduino UNO开发板与面包板连接,确保连接正确并牢固;2.将LCD1602液晶显示屏与面包板连接,连接时应注意引脚的对应关系,确保连接正确;3.将杜邦线的一端连接到Arduino UNO开发板的数字引脚上,另一端连接到对应的液晶显示屏引脚上;4.编写Arduino代码,实现液晶显示屏的控制功能;5.将编写好的代码上传到Arduino UNO开发板上,运行程序,观察LCD1602液晶显示屏上的显示结果。
实验结果:通过实验,我们成功实现了对LCD1602液晶显示屏的控制。
在液晶显示屏上可以显示出我们想要的文字、数字或符号。
通过控制液晶显示屏的引脚电平,可以控制液晶显示出不同的字符。
实验总结:通过本次实验,我们了解了LCD1602液晶显示的工作原理和基本结构。
液晶显示屏通过控制引脚电平来控制液晶分子的排列,从而实现文字、数字或符号的显示。
我们还掌握了LCD1602液晶显示的驱动控制方法,通过编写Arduino代码,我们能够实现对液晶显示屏的控制。
在实验中,我们还学习到了Arduino的使用,它是一款开放源代码的电子原型平台,由硬件和软件组成。
通过编写Arduino代码,我们可以控制与Arduino连接的各种外设,包括LCD1602液晶显示屏。
通过本次实验,我们不仅加深了对LCD1602液晶显示的理解,还学会了使用Arduino控制液晶显示屏。
这对我们的电子制作和嵌入式系统开发有重要意义。
单片机LCD显示实验报告

单片机LCD显示实验报告实验目的:本实验旨在通过使用单片机控制LCD进行显示,掌握单片机与外围设备的交互操作,学习并理解LCD显示原理。
实验器材:1. 单片机开发板2. LCD1602液晶显示屏3. 杜邦线若干4. 电阻若干实验原理:液晶显示原理是在液晶材料施加电场的作用下,通过改变传输光的偏振状态来实现图像显示。
本实验使用的LCD1602是一种16×2的字符型液晶显示模块,其中每个字符由5×8的点阵构成。
实验步骤:1. 连接电路:将LCD1602与单片机开发板通过杜邦线连接。
一般来说,液晶显示屏的引脚布局如下:- VSS: 接地- VDD: 供电(一般为5V)- V0:对比度控制端(通过电位器调节)- RS:数据/指令选择端(通常连接到单片机的I/O口)- RW:读写选择端(连接至地)- E:使能端(通常连接到单片机的I/O口)- D0-D7:数据线(连接到单片机的I/O口)- A:背光灯正极(连接5V)- K:背光灯负极(连接至地)2. 编写程序:根据实验要求,使用相应的单片机编程语言编写程序。
在程序中,需要调用相关的LCD1602命令来实现字符的显示。
3. 烧录程序:使用相应的烧录工具将编写好的程序下载到单片机开发板中。
4. 实验验证:将开发板上电,通过观察LCD1602的显示情况来验证程序的正确性。
实验结果与分析:在本次实验中,我使用单片机控制LCD1602成功实现了字符的显示。
实验结果表明,编写的程序能够正确地将字符显示在液晶屏上,并且显示效果良好。
实验中遇到的问题及解决方法:在实验过程中,我遇到了一些问题,例如LCD1602无显示、乱码或显示异常等情况。
针对这些问题,我采取了以下解决方法:1. 检查接线是否正确:确保LCD1602的引脚与单片机开发板之间的连接准确无误。
2. 检查电源供应:确认LCD1602的电源供应是否正常,电源电压是否稳定。
3. 调整对比度:通过旋转电位器调整LCD1602的对比度,以适应不同环境下的显示效果要求。
单片机实训报告液晶显示

一、实训目的本次实训旨在通过实际操作,让学生掌握单片机与液晶显示模块的接口连接方法,学会编写程序实现液晶显示模块的基本功能,如字符显示、图形显示等,并了解液晶显示模块在嵌入式系统中的应用。
二、实训内容1. 硬件环境- 单片机:AT89C51- 液晶显示模块:LCD1602- 开发工具:Keil uVision4- 仿真软件:Proteus2. 实训步骤- 熟悉LCD1602液晶显示模块的引脚功能。
- 设计单片机与LCD1602的接口电路。
- 编写程序实现LCD1602的初始化。
- 实现字符显示功能,包括中文字符和英文字符。
- 实现图形显示功能,如直线、矩形等。
- 优化程序,提高显示效果。
3. 实训要求- 熟练掌握LCD1602液晶显示模块的硬件连接。
- 熟练掌握Keil uVision4软件的使用。
- 熟练掌握C语言编程。
- 能够根据实际需求设计并实现LCD1602的显示功能。
三、实训过程1. 硬件连接- 将LCD1602的RS、RW、EN引脚分别连接到单片机的P1.0、P1.1、P1.2引脚。
- 将LCD1602的DB0-DB7引脚分别连接到单片机的P0.0-P0.7引脚。
- 将LCD1602的VCC、GND分别连接到单片机的VCC和GND。
2. 程序编写- 使用Keil uVision4编写程序,实现LCD1602的初始化。
- 编写程序实现字符显示功能,包括中文字符和英文字符。
- 编写程序实现图形显示功能,如直线、矩形等。
3. 仿真调试- 使用Proteus软件对程序进行仿真调试,确保程序能够正常运行。
四、实训结果1. 成功实现了LCD1602的初始化。
2. 成功实现了字符显示功能,包括中文字符和英文字符。
3. 成功实现了图形显示功能,如直线、矩形等。
五、实训心得1. 通过本次实训,我对单片机与液晶显示模块的接口连接方法有了更深入的了解。
2. 通过编程实现LCD1602的显示功能,提高了我的编程能力。
8-实验八 LCM1602液晶显示实验

实验八 LCM1602液晶显示实验一、实验目的1.学习单片机C语言和汇编语言的编程方法。
2.了解LCM1602液晶显示模块的功能和使用方法。
3.掌握LCM1602液晶显示程序的编写方法。
二、实验原理1.LCM1602液晶显示模块:LCD(Liquid Crystal Display)是液晶屏,LCM(Liquid Crystal Module)则是液晶模块,它包括有LCD液晶屏、PCB线路板、驱动电路和背光灯等。
LCM1602的主要特性有:1)5V电源供电,低功耗、长寿命、高可靠性;2)内置192种字符;3)具有64个字节的自定义字符RAM;4)背光方式:底部LED。
5)可以显示2行,每行16个英文字符。
LCM1602实物图如右图所示,其采用标准的16脚接口。
第1脚:VSS为电源地,接GND;第2脚:VDD接5V正电源;第3脚:VL为液晶显示器对比度调整端,接10K电位器;第4脚:RS为寄存器选择引脚,高电平时选择数据寄存器,低电平时选择指令寄存器;第5脚:RW为读写信号线引脚,高电平时进行读操作,低电平时进行写操作;第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;第7~14脚:D0~D7为8位双向数据线;第15脚:BLA背光电源正极(+5V)输入引脚;第16脚:BLK背光电源负极,接GND。
2.硬件模块连线:LCM1602的使能引脚E、读写信号线引脚RW和寄存器选择引脚RS分别通过跳帽开关与单片机P1口低3位(P1.2~P1.0)连接。
单片机P0口8位(P0.7~P0.0)分别与LCM1602 的8个数据输入输出引脚相连,用于传输显示数据。
三、实验内容1.使用LCM1602芯片手册,学习并理解LCM1602液晶显示模块的原理、功能以及使用方法。
2.用C语言或汇编语言编写LCM1602液晶显示程序。
3.调节电位器,观察液晶显示的对比度。
四、实验步骤1.连接本实验用到的硬件模块:单片机系统模块、LCM1602液晶显示模块。
1602实验报告

实验报告实验名称: [1602液晶显示]姓名: []学号: [2]指导教师: [解]实验时间: [2014年4月1日]信息与通信工程学院1602液晶实验1实验要求任务1:使液晶显示姓名、学号。
任务2: 实现在LCD1602液晶屏第一行左侧第一位的位置循环显示0~9,并且可以用一个拨码开关BM8实现显示的复位功能。
2实验原理2.1 TLC5620基本原理1>.液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA 移动通信工具等众多领域。
②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由 M×N 个显示单元组成,假设 LCD 显示屏有 64 行,每行有128列,每 8 列对应 1 字节的 8 位,即每行由 16 字节,共 16×8=128 个点组成,屏上 64×16 个显示单元与显示 RAM 区 1024 字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由 RAM 区的 000H——00FH 的 16字节的内容决定,当(000H)=FFH 时,则屏幕的左上角显示一条短亮线,长度为 8 个点;当(3FFH)=FFH 时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H 时,则在屏幕的顶部显示一条由 8 段亮线和 8 条暗线组成的虚线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 LCD1602液晶显示实验姓名专业学号成绩实验目的掌握Keil C51软件与proteus软件联合仿真调试的方法;掌握LCD1602液晶模块显示西文的原理及使用方法;掌握用8位数据模式驱动LCM1602液晶的C语言编程方法;掌握用LCM1602液晶模块显示数字的C语言编程方法。
实验仪器与设备1.微机一台C51集成开发环境仿真软件实验内容用Proteus设计一LCD1602液晶显示接口电路。
要求利用P0口接LCD1602液晶的数据端,~做LCD1602液晶的控制信号输入端。
~口扩展3个功能键K1~K3。
参考电路见后面。
编写程序,实现字符的静态和动态显示。
显示字符为第一行:“1.姓名全拼”,第二行:“2.专业全拼+学号”。
编写程序,利用功能键实现字符的垂直滚动和水平滚动等效果显示。
显示字符为:“1.姓名全拼 2.专业全拼+学号EXP8 DISPLAY ”主程序静态显示“My information!”实验原理液晶显示的原理:采用的LCD显示屏都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背光层,背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。
当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。
LCD1602采用标准的14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明如表:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极1602液晶模块内部的控制器共有11条控制指令,如表所示:芯片时序表:4.1602LCD的一般初始化(复位)过程(1) 延时15ms。
(2) 写指令38H(不检测忙信号)。
(3) 延时5ms。
(4) 写指令38H(不检测忙信号)。
(5) 延时5ms。
(6) 写指令38H(不检测忙信号)。
(7) 以后每次写指令、读/写数据操作均需要检测忙信号。
(8) 写指令38H:显示模式设置。
(9) 写指令08H:显示关闭。
(10) 写指令01H:显示清屏。
(11) 写指令06H:显示光标移动设置。
(12) 写指令0CH:显示开及光标设置。
五、实验步骤用Proteus设计1602液晶显示接口电路;在Keil C51中编写液晶显示控制程序,编译通过后,与Proteus联合调试;按动功能键,观察字符及效果是否正确显示。
六、电路设计调试及程序实验电路程序设计与调试静态显示#include<>#define uchar unsigned char #define uint unsigned int uchar code table[]=" Xin "; uchar code table1[]=" 412381"; sbit lcden=P2^2;sbit lcdrw=P2^1;sbit lcdrs=P2^0;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;delay(5);lcden=0;}void write_data(uchar date) {lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){lcden=0;lcdrw=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80+0x00);}void main(){init();delay(100);while(1){for(num=0;num<12;num++) {write_data(table[num]);delay(200);}write_com(0x02);write_com(0x80+0x40);for(num=0;num<16;num++) {write_data(table1[num]);delay(200);}while(1);}}动态显示#include<>#define uchar unsigned char #define uint unsigned int uchar code table[]=" Xin "; uchar code table1[]=" 412381"; sbit lcden=P2^2;sbit lcdrw=P2^1;sbit lcdrs=P2^0;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;delay(5);lcden=0;}void write_data(uchar date) {lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){lcden=0;lcdrw=0;write_com(0x38);write_com(0x0f);write_com(0x06);write_com(0x01);write_com(0x80+0x00);}void main(){init();delay(100);while(1){for(num=0;num<12;num++) {write_data(table[num]);delay(200);}write_com(0x02);write_com(0x80+0x40);for(num=0;num<16;num++){write_data(table1[num]);delay(200);}write_com(0x01);}}按键实现不同效果#include<>#define uchar unsigned char#define uint unsigned intuchar code table[]="My information!"; uchar code table1[]=" Xin";uchar code table2[]=" 412381"; uchar code table3[]=" EXP8";uchar code table4[]=" DISPLAY"; uchar num,i,j;uchar flag1,flag2,flag3,flag4;sbit k1=P3^0;sbit k2=P3^1;sbit k3=P3^2;sbit k4=P3^3;sbit lcden=P2^2;sbit lcdrw=P2^1;sbit lcdrs=P2^0;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;delay(5);lcden=0;}void write_data(uchar date) {lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){lcden=0;lcdrw=0;write_com(0x38);write_com(0x0f);write_com(0x06);write_com(0x01);}void main(){init();TMOD=0x01;TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1;ET0=1;TR0=1;EX0=1;IT0=1;IP=0x05;EX1=1;IT1=1;delay(100);while(1){ flag3=0;write_com(0x01);write_com(0x80+0x01);delay(50);for(num=0;num<15;num++){write_data(table[num]);delay(200);}delay(200);write_com(0x01);}}void display(){if(k1==0){while(1){if(flag1==1) break;if(flag3==0)//{if(flag1==1)break;//控制返回write_com(0x01);write_com(0x80+0x00);delay(50);for(num=0;num<11;num++) //显示" Xin"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table1[num]);delay(200);}write_com(0x80+0x40);for(num=0;num<16;num++)//显示" 412381"{if(flag1==1) break;while(flag3==1){if(flag1==1) break;}write_data(table2[num]);delay(200);}write_com(0x01);delay(200);write_com(0x80+0x00);for(num=0;num<16;num++)//显示" 412381"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table2[num]);delay(200);}write_com(0x80+0x40);for(num=0;num<13;num++) //显示" EXP8"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table3[num]);delay(200);}write_com(0x01);write_com(0x80+0x00);for(num=0;num<13;num++) //显示" EXP8"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table3[num]);delay(200);}delay(200);if(flag1==1) break;write_com(0x80+0x40);for(num=0;num<13;num++) //显示" DISPLAY"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table4[num]);delay(200);}write_com(0x01);write_com(0x80+0x00);for(num=0;num<13;num++) //显示" DISPLAY"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table4[num]);delay(200);}write_com(0x80+0x40);for(num=0;num<11;num++) //显示" Xin"{if(flag1==1) break;while(flag3==1){if(flag1==1)break;}write_data(table1[num]);delay(200);}}}flag3=0;flag1=0;//清标志位write_com(0x01);//清屏}if(k2==0){//if(flag1==1)break;write_com(0x01);//清屏write_com(0x80+0x00);for(num=0;num<11;num++) //显示" Xin"{if(flag1==1)break;write_data(table1[num]);delay(50);}write_com(0x80+0x10);for(num=0;num<16;num++)//显示" 412381"{if(flag1==1)break;write_data(table2[num]);delay(50);}write_com(0x02);write_com(0x80+0x40);for(num=0;num<13;num++) //显示" EXP8"{if(flag1==1)break;write_data(table3[num]);delay(50);}write_com(0x80+0x50);for(num=0;num<13;num++) //显示" DISPLAY"{if(flag1==1)break;write_data(table4[num]);delay(50);}while(1){if(flag1==1) break;while(flag3==1){if(flag1==1)break;}if(flag3==0){write_com(0x1c); //整屏左移或右移delay(100);if(flag1==1) break;}}flag3=0;flag1=0;//清除标志位write_com(0x01);//清屏}}void time0() interrupt 1 {TH0=(65536-1000)/256; TL0=(65536-1000)%256; display();}void INT_0() interrupt 0{EX0=0;delay(20);EX0=1;flag3=!flag3;}void INT_1() interrupt 2 {EX1=0;delay(20);EX1=1;flag1=1;}七、实验问题解决及总结实验中出现了运行垂直或水平效果时若按下暂停/继续按键再按返回按键后,再按垂直或水平按键不继续运行的情况。