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

合集下载

实验八 LCM1602液晶显示实验

实验八 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液晶显示器

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液晶显示屏的显示

单片机应用技术课程报告
实验名称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液晶显示实验报告实验报告: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进行显示,掌握单片机与外围设备的交互操作,学习并理解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液晶显示实验

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实验报告

实验报告实验名称: [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 条暗线组成的虚线。

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

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

LCD1602液晶显示实验实验报告及程序一、实验目的本次实验的主要目的是熟悉并掌握 LCD1602 液晶显示屏的工作原理和编程方法,能够成功实现字符在液晶屏幕上的显示和控制。

二、实验原理LCD1602 是一种工业字符型液晶,能够显示 16x2 个字符,即每行16 个字符,共 2 行。

它的工作原理是通过控制液晶分子的偏转来实现字符的显示。

LCD1602 有 16 个引脚,主要引脚功能如下:1、 VSS:接地。

2、 VDD:接电源(通常为+5V)。

3、 V0:对比度调整引脚,通过外接电位器来调节屏幕显示的对比度。

4、 RS:寄存器选择引脚,高电平时选择数据寄存器,低电平时选择指令寄存器。

5、 RW:读写选择引脚,高电平时进行读操作,低电平时进行写操作。

6、 E:使能引脚,下降沿触发。

7、 D0 D7:数据引脚,用于传输数据和指令。

LCD1602 的指令集包括清屏、归位、输入方式设置、显示开关控制、光标或显示移位、功能设置、CGRAM 和 DDRAM 地址设置以及读忙标志和地址等。

三、实验设备与材料1、单片机开发板2、 LCD1602 液晶显示屏3、杜邦线若干4、电脑四、实验步骤1、硬件连接将 LCD1602 的 VSS 引脚接地。

将 VDD 引脚接+5V 电源。

将 V0 引脚通过一个 10K 的电位器接地,用于调节对比度。

将 RS、RW、E 引脚分别连接到单片机的三个 I/O 口。

将 D0 D7 引脚连接到单片机的 8 个 I/O 口。

2、软件编程包含必要的头文件。

定义与 LCD1602 连接的 I/O 口。

编写初始化函数,包括设置显示模式、清屏、输入方式等。

编写写指令函数和写数据函数,用于向LCD1602 发送指令和数据。

编写显示字符串函数,实现字符在屏幕上的显示。

3、编译下载程序使用编译软件对编写的程序进行编译,生成可执行文件。

将可执行文件下载到单片机开发板中。

4、观察实验结果给开发板上电,观察 LCD1602 液晶显示屏上是否正确显示预设的字符。

实验八 LCD1602液晶显示实验

实验八 LCD1602液晶显示实验

电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:单片机原理与接口技术实验3、芯片时序表:4、LCD数据存储器地址LCD内置了DDRAM,用来寄存待显示的字符代码。

其地址与屏幕的对应关系如下:也就意味着想要在LCD1602的第一行第一列显示一个“A”字符,就要向DDRAM的00H地址写入“A”,但是在实际写入时,还必须将00H加上80H,即0X80+0X00。

以此类推,如果想要在LCD1602的第二行的第二列显示字符内容,则实际写入地址应该为0X80+0X41。

5、1602LCD的一般初始化(复位)过程(1) 延时15ms。

(2) 写指令38H(不检测忙信号)。

(3) 延时5ms。

(4) 写指令38H(不检测忙信号)。

(5) 延时5ms。

(6) 写指令38H(不检测忙信号)。

(7) 以后每次写指令、读/写数据操作均需要检测忙信号。

(8) 写指令38H:显示模式设置。

(9) 写指令08H:显示关闭。

(10) 写指令01H:显示清屏。

(11) 写指令06H:显示光标移动设置。

(12) 写指令0CH:显示开及光标设置。

6、LCD1602与单片机直接连接典型示意图如图8.1所示。

图8.1 LCD1602液晶显示。

三、实验内容和步骤1、用Proteus设计一LCD1602液晶显示接口电路。

参考实验指导书上的参考程序,编写程序,实现字符的静态显示。

显示字符为:第一行:“姓名全拼(居中)”,第二行:“专业全拼+学号(后3位)”。

将LCD显示截图以及相应的程序保存在下方。

#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" xuzhulin ";uchar code table1[]="zidonghua 031";sbit lcden=P2^7;sbit lcdrw=P2^6;sbit lcdrs=P2^5;uchar num;for(num=0;num<12;num++){write_data(table[num]); //写数据,LCD的第一行显示delay(200);}write_com(0x02); //光标返回write_com(0x80+0x40); //设置数据地址指针,LCD第二行显示for(num=0;num<16;num++){write_data(table1[num]);delay(200);}while(1);}}2、在上一题的基础上,增加两个外部中断,实现不同内容的显示。

LCD1602液晶显示实验要点

LCD1602液晶显示实验要点

LCD1602液晶显示实验要点一、液晶显示原理液晶显示屏是一种电场调制显示器件,通过激励电场使液晶分子的排列状态发生变化,从而控制光的透过程度,实现图像显示。

液晶显示器的基本结构是两块平行的玻璃基板夹层液晶,上面由导电涂层构成的液晶单元。

在液晶单元上方有一块透明电极玻璃,根据控制信号排列液晶分子,形成图像。

二、LCD1602液晶显示屏三、实验器材1. Arduino开发板2.LCD1602液晶显示屏3.面包板4.杜邦线等四、实验步骤1. 接线:将LCD1602液晶显示屏与Arduino开发板通过杜邦线连接。

将VCC接到5V电源、GND接到地、SCL接到A5口、SDA接到A4口。

2. 编写程序:打开Arduino开发环境,编写程序代码,实现液晶显示功能。

3. 初始化:使用LiquidCrystal库,编写代码进行液晶显示屏的初始化设置。

4. 显示字符:通过调用lcd.print(函数,将指定字符显示在液晶屏上。

5. 光标控制:调用lcd.setCursor(函数,设置光标所在位置。

6. 清屏:调用lcd.clear(函数,清除液晶屏上的字符。

7. 控制显示:通过调用lcd.noDisplay(和lcd.Display(函数,控制液晶屏的显示和关闭。

8. 自定义字符:通过调用lcd.createChar(函数,创建自定义字符并显示在液晶屏上。

五、实验注意事项1.液晶显示屏的类型应与编程语言库文件匹配。

2.接线时要确保正确连接,以免损坏LCD1602显示屏。

3.初始化液晶显示屏时,要设置液晶屏的列数和行数。

4.控制液晶显示屏时,要注意操作指令的执行顺序,以免出现误操作。

六、实验结果展示通过编写相应的程序,可以实现在液晶显示屏上显示指定字符、自定义字符,以及控制光标的移动和屏幕的清除等功能。

实验成功时,可以在液晶显示屏上看到所期望的字符和效果。

七、实验应用液晶显示屏广泛应用于各种电子设备和仪器仪表,如电子体温计、电子秤、数码相册、电视机等。

实验七:LCD1602的显示

实验七:LCD1602的显示

实验七:LCD1602的显示
一、实验目的
熟悉并掌握液晶1602 显示屏的使用方法,学习利用有限状态机实现较为复杂的设计与应用。

二、实验设备
硬件:Super Hornet FPGA 核心板及Super Hornet扩展板,LCD1602
软件:QuartusII 9.1开发工具。

三、实验原理
本实验采用的是一个2 行16 字符液晶显示屏LCD,它由HD44780、HD44100 及几个电阻电容组成,详细资料参考1602 LCD字符模块使用手册,这里不再累述。

1602上电后,必须传送给液晶显示屏控制芯片初始化命令,初始化结束后,还要传输指定地址、显示字符的编码数据,接通电源后,FPGA 向液晶显示屏控制芯片发送指令的流程如
下图所示。

四、实验步骤
本实验由LCD时钟模块、LCD控制模块、LCD显示模块组成。

本实验源工程位于:\Super_Hornet_FPGA\Verilog\
EX7_LCD1602 目录下,用户可以从中查看实验内容五、对应引脚
六、实验现象
LCD显示。

51单片机LCD1602液晶显示程序

51单片机LCD1602液晶显示程序

LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/******************************************************************************
*
*函数名 * 函数功能
: 初始化 LCD 屏 :无 :无
*******************************************************************************
/
#ifndef
LCD1602_4PINS
void LcdInit()
//LCD 初始化子程序
{ LcdWriteCom(0x38); //开显示
//以下程序都是在 VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是 STC89C52RC,但是在所有的 51 52 单片机上都是通用的。51 只是一个学习的基础 平台,你懂得。 //程序在关键的位置添加了注释。 //用//11111111111111111 代表第一个程序。//2222222222222222222222222 代表第二个程序, 以此类推
for(a=1;a>0;a--); } }
//误差 0us
}
/******************************************************************************
*
*函数名 * 函数功能
: LcdWriteCom : 向 LCD 写入一个字节的命令
LCD1602_E = 0;

1602显示实验报告

1602显示实验报告

一、1602显示二、实验项目:1602显示三、实验地点:四、五、实验时间:2014年7月9日~2014年7月23日六、实验要求:1、在单片机最小系统中加入LCD1602显示屏。

2、能进行数字和字符的显示3、扩展功能一:将实验四中的“单片机时钟”改为1602显示。

4、用Protel99SE绘制实验原理图并完成实验报告。

七、实验具体内容:1、在单片机最小系统中加入LCD1602显示屏。

(1)实验电路图:(2)实验原理:1602显示屏采用标准的16引脚(有背光),其各个引脚接线及作用说明如下:(3)实验中遇到的问题:在电路接线工作完成以后,上电实验时LCD只有背光,无任何显示。

问题原因分析:在接线过程中,我最为关注的是RS、R/W、E三个端口的接线,忽视了D0~D7的接线顺序,从而使D7~D0的方向接反。

因此1602内部的11条指令码都会对应不上,例如清屏指令是0x01,而我则需要写成0x20。

所以按照正常程序指令,在初始化之后,屏幕会一直没有显示。

(4)实验小结:在完成电路图之后觉得本次的接线相对来说比较简单。

心想只要接好RS、R/W、E正负极不反接,就没什么问题。

结果却出乎我的意料,看是简单的D0~D7八个端口的顺序同样起着关键的作用。

因自己的忽视,使我在完成接线之后长时间找不到问题原因之所在。

这次的接线也很好的提醒了我,看似简单的工作,可千万不敢再掉意轻心。

2、能进行数字和字符的显示并将实验四中的“单片机时钟”改为1602显示。

(1) 实验原理:LCD6102的显示方式是先从DDRAM写入要显示地址,在往DDRAM写入要显示的字符码。

控制其操作的有11条LCD1602的内部指令,具体如下:指令1:清显示;指令2:光标复位,光标复位到地址00H;指令3:光标和显示模式设置;I/D:光标移动方向,高电平左移,低电平右移S:屏幕上所有文字是否左移或者右移(高电平有效,低电平无效)指令4:显示开关控制;D:控制整体显示开关,高电平表示开,低电平表示关C:控制光标的开关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标显示移位;S/C:高电平时移动显示文字,低电平时移动显示光标指令6:功能设置命令;DL:高电平时为四位总线,低电平时为八位总线N:低电平时为单行显示,高电平时为双行显示F:低电平时为5x7点阵字符,高电平时为5x10点阵字符指令7:字符发生器存储器地址:指令8:DDRAM地址设置指令9:读忙信号和光标地址BF为忙标志高电平表示忙,此时模块不能接收命令或者数据,低电平表示不忙指令10:写数据指令11:读数据时序控制:读状态:输入RS=0 R/W=1 E=1 输出:D0~D7=状态字写指令:输入RS=0 R/W=1 D0~D7=指令码E=高脉冲输出:无读数据:输入RS=1 R/W=1 E=1 输出:D0~D7=数据写数据:输入RS=1 R/W=0 D0~D7=数据E=高脉冲输出:无(2)程序流程图如下所示:(3)实验中遇到的问题按下4#键时钟显示减1,当显示为00后,继续减1,会出现ASCLL在0之后的码。

LCD1602液晶显示实验报告

LCD1602液晶显示实验报告

LCD1602液晶显示实验报告一、实验目的(1)了解LCD1602的基本原理,掌握其基本的工作流程。

(2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏上显示出正确的符号。

(3)能够自行改写程序,并实现符号的动态显示。

二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可以实现在LCD1602液晶屏第一行左侧第一位的位置循环显示0~9,并且可以用一个拨码开关BM8实现显示的复位功能。

2.LCD1602基本知识LCD1602液晶能够同时显示16x02即32个字符,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如“A”。

1602通过D0~D7的8位数据端传输数据和指令。

3.系统工作原理系统的状态转换流程图如图3.1.1所示。

通过状态流程图可以看到,LCD1602液晶屏的状态是不断更新的,依次完成液晶的初始化和0~9的动态显示过程,并且过程可由开关控制。

if (!rst_n)cnt <= 0;elsecnt <= cnt + 1'b1;wire lcd_clk = cnt[23]; // (2^23 / 50M)=0.168s always@(posedge lcd_clk)if(cnt1>=24'd2)beginreg lcd_clk1;lcd_clk1=1;cnt1=0;endelsebegincnt1=cnt1+1; //cnt1对lcd_clk二分频lcd_clk1=0;endalways@(posedge lcd_clk1)beginrow1_val<=8'h30;//设初值case(row1_val) //数字0~9循环显示8'h30: row1_val<=8'h31;8'h31: row1_val<=8'h32;8'h32: row1_val<=8'h33;8'h33: row1_val<=8'h34;8'h34: row1_val<=8'h35;8'h35: row1_val<=8'h36;8'h36: row1_val<=8'h37;8'h37: row1_val<=8'h38;8'h38: row1_val<=8'h39;8'h39: row1_val<=8'h30;default: row1_val<=8'h30;endcaseendparameter IDLE = 8'h00;parameter DISP_SET = 8'h01; // 显示模式设置parameter DISP_OFF = 8'h03; // 显示关闭parameter CLR_SCR = 8'h02; // 显示清屏parameter CURSOR_SET1 = 8'h06; // 显示光标移动设置parameter CURSOR_SET2 = 8'h07; // 显示开及光标设置parameter ROW1_ADDR = 8'h05; // 写第1行起始地址parameter ROW1_0 = 8'h04;reg [5:0] current_state, next_state; // 现态、次态always @ (posedge lcd_clk, negedge rst_n)if(!rst_n) current_state <= IDLE;else current_state <= next_state;//在时钟信号作用期间,次态重复的赋给现态alwaysbegincase(current_state)IDLE : next_state = DISP_SET;DISP_SET : next_state = DISP_OFF;DISP_OFF : next_state = CLR_SCR;CLR_SCR : next_state = CURSOR_SET1;CURSOR_SET1 : next_state = CURSOR_SET2;CURSOR_SET2 : next_state = ROW1_ADDR;ROW1_ADDR : next_state = ROW1_0;ROW1_0 : next_state = ROW1_ADDR;default : next_state = IDLE ;endcaseendalways @ (posedge lcd_clk, negedge rst_n)beginif(!rst_n)beginlcd_rs <= 0;lcd_data <= 8'hxx;endelsebegincase(next_state)IDLE : lcd_rs <= 0;DISP_SET : lcd_rs <= 0;DISP_OFF : lcd_rs <= 0;CLR_SCR : lcd_rs <= 0;CURSOR_SET1 : lcd_rs <= 0;CURSOR_SET2 : lcd_rs <= 0;ROW1_ADDR : lcd_rs <= 0;ROW1_0 : lcd_rs <= 1;endcasecase(next_state)IDLE : lcd_data <= 8'hxx;DISP_SET : lcd_data <= 8'h38;DISP_OFF : lcd_data <= 8'h08;CLR_SCR : lcd_data <= 8'h01;CURSOR_SET1 : lcd_data <= 8'h04;CURSOR_SET2 : lcd_data <= 8'h0C;ROW1_ADDR : lcd_data <= 8'h80;ROW1_0 : lcd_data <= row1_val[127:120];endcaseendendassign lcd_e = lcd_clk; // 数据在时钟高电平被锁存assign lcd_rw = 1'b0; // 只写endmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2三个使能端选通LCD1602液晶屏,EP2C8Q208C8就会工作在给液晶下命令的状态,使得点阵正常工作,如图3.5.1所示。

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

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

实验三 LCD1602液晶显示实验姓名专业学号成绩一、实验目的1.掌握Keil C51软件与proteus软件联合仿真调试的方法;2.掌握LCD1602液晶模块显示西文的原理及使用方法;3.掌握用8位数据模式驱动LCM1602液晶的C语言编程方法;4.掌握用LCM1602液晶模块显示数字的C语言编程方法。

二、实验仪器与设备1.微机一台 C51集成开发环境仿真软件三、实验内容1.用Proteus设计一LCD1602液晶显示接口电路。

要求利用P0口接LCD1602液晶的数据端,~做LCD1602液晶的控制信号输入端。

~口扩展3个功能键K1~K3。

参考电路见后面。

2.编写程序,实现字符的静态和动态显示。

显示字符为第一行:“1.姓名全拼”,第二行:“2.专业全拼+学号”。

3.编写程序,利用功能键实现字符的垂直滚动和水平滚动等效果显示。

显示字符为:“1.姓名全拼 2.专业全拼+学号 EXP8 DISPLAY ”主程序静态显示“My information!”四、实验原理液晶显示的原理:采用的LCD显示屏都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背光层,背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。

当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。

1.LCD1602采用标准的14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明如表:2.1602液晶模块内部的控制器共有11条控制指令,如表所示:3.芯片时序表:4.1602LCD的一般初始化(复位)过程(1) 延时15ms。

(2) 写指令38H(不检测忙信号)。

(3) 延时5ms。

(4) 写指令38H(不检测忙信号)。

(5) 延时5ms。

LCD1602液晶显示

LCD1602液晶显示

实验十一、LCD1602液晶显示一、实验目的1、熟悉Protuse仿真软件的使用;2、熟悉利用Keil软件编译程序的过程;3、了解LCD1602液晶显示器的工作原理及学会翻阅芯片的数据手册;4、掌握LCD1602液晶显示器的驱动流程和编程方法。

二、实验内容LCD1602液晶显示器的驱动流程:1、写操作(写指令(RS=0)和写数据(RS=1))1.1、写指令函数write_cmd(u8 cmd)1.2、写数据函数write_data(u8 dat)2、初始化液晶2.1、归位write_cmd(0x02);2.2、设置输入方式write_cmd(0x06);2.3、控制显示开关write_cmd(0x0c);2.4、功能设置write_cmd(0x38);2.5、清屏write_cmd(0x01);3、写显示的数据3.1、选择显示的行write_cmd(0x80);3.2、写显示的数据write_data(‘I’);Protuse 仿真环境的搭建:1、在Pick Devices中查找所需要的器件AT89C51、LM061L、RESPACK-8;同时搭建晶振电路和复位电路。

2、将其按照(图11.1)进行相连;3、将生成的.hex文件导入AT89C51芯片中进行仿真实验。

三、实验过程Keil软件程序:#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned char u8; //对数据类型进行声明定义typedef unsigned int u16;#define DATA P0sbit rs = P2^1; //寄存器选择变量sbit rw = P1^5; //读写操作选择变量sbit en = P1^6; //工作使能变量void delay(u16 num) //延时函数{u16 x,y;for (x=num; x>0; x--)for(y=110; y>0; y--);}void write_cmd (u8 cmd) //写指令函数{rs = 0; //指令寄存器rw = 0; //写操作DATA = cmd;delay(5);en = 1;delay(5);en = 0;}void write_data (u8 dat) //写数据函数{rs = 1; //数据寄存器rw = 0; //写数据DATA = dat;delay(5);en = 1;delay(5);en = 0;}void lcd_init (void) //液晶初始化函数{write_cmd(0x02); //归位write_cmd(0x06); //输入方式,AC自动加1,画面不动write_cmd(0x0c); //显示开关开,光标开,闪烁关write_cmd(0x38); //功能设置,8位数据接口,两行显示,5*7点阵字符write_cmd(0x01); //清屏}int main (void){ u8 *string="I Love You";u8 n=0;u8 dp=0xc0; //第二行初位信息rw = 0;rs = 0;en = 0;lcd_init();write_cmd(0x80); //第一行初位信息write_data('I');write_data(' ');write_data('L');write_data('O');write_data('V');write_data('E');write_data(' ');write_data('D');write_data('P');write_data('J');write_cmd(dp); //第二行while(*string!='\0'){ write_cmd(dp);dp++;write_data(*string);string++;n++;}while(1);}Protuse 仿真:图11.1 LCD液晶显示实验四、实验现象在AT89C51芯片中下载程序后LCD液晶显示屏上显示”I lOVE DPJ”和”I Love You”两行字符。

实验八 LCD1602液晶显示实验

实验八 LCD1602液晶显示实验

实验报告八实验名称:LCD1602液晶显示实验实验目的:1了解LCD显示的基本原理2了解LCD的接口与控制方法3掌握LCD显示图形的方法4掌握LCD显示字符的方法实验原理:1、LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。

,2、由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。

驱动模块具有八位数据总线,外加一些电源接口和控制信号。

而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。

由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。

硬件原理图:1602液晶显示模块可以和单片机AT89C51直接接口,电路如图下图所示:PROTEUS中仿真观察结果.图一程序如下所示:RS EQU p2.6RW EQU p2.5E EQU p2.7ORG 0000HMOV SP , #70HMOV p0, #01HCALL ENABLEMOV p0, #38HCALL ENABLEMOV p0, #0FHCALL ENABLEMOV p0, #06HCALL ENABLEMOV p0, #80HCALL ENABLEMOV DPTR, #TABLE1CALL WRITE1MOV p0, #0C0HCALL ENABLEMOV DPTR, #TABLE2CALL WRITE1MOV p0, #0C2HCALL ENABLEJMP $ENABLE: CLR RSCLR RWCLR ECALL DELAYSETB ERETWRITE1: MOV R1, #00HA1: MOV A, R1MOVC A, @A+DPTRCALL WRITE2INC R1CJNE A, #00H, A1RETWRITE2: MOV p0 , ASETB RSCLR RWCLR ECALL DELAYSETB ERETDELAY: MOV R4, #05D1: MOV R5, #0FFHDJNZ R5, $DJNZ R4, D1RETTABLE1: DB" XIA MEN GUANJIE ",00HTABLE2: DB"XIAN SHI QI TECHNOLOGY ",00H END程序流程图如下所示:实验现象:从左往右逐字显示,闪动两次,清屏,再从右往左显示,闪动两次,清屏,安周期性重复上述现象!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;}七、实验问题解决及总结实验中出现了运行垂直或水平效果时若按下暂停/继续按键再按返回按键后,再按垂直或水平按键不继续运行的情况。

相关文档
最新文档