单片机实验--LCD显示实验
液晶显示器实训实验报告
![液晶显示器实训实验报告](https://img.taocdn.com/s3/m/44337e6f5b8102d276a20029bd64783e09127de0.png)
一、实验目的1. 理解液晶显示器(LCD)的基本工作原理和组成结构。
2. 掌握液晶显示器驱动电路的设计与调试方法。
3. 熟悉液晶显示器的接口技术及其与单片机的连接方式。
4. 通过实验验证液晶显示器的显示功能,并实现简单图形和文字的显示。
二、实验原理液晶显示器(LCD)是一种利用液晶材料的光学各向异性来实现图像显示的设备。
它主要由液晶层、偏光片、电极阵列、驱动电路等部分组成。
液晶分子在电场作用下会改变其排列方向,从而改变通过液晶层的光的偏振状态,实现图像的显示。
三、实验器材1. 液晶显示器模块(如12864 LCD模块)2. 单片机开发板(如STC89C52单片机)3. 电源模块4. 连接线5. 实验平台(如面包板)四、实验内容1. 液晶显示器模块的识别与检测首先,对所购买的液晶显示器模块进行外观检查,确保无损坏。
然后,根据模块说明书,连接电源和单片机开发板,进行初步的检测。
2. 液晶显示器驱动电路的设计与调试根据液晶显示器模块的技术参数,设计驱动电路。
主要包括以下部分:- 电源电路:将单片机提供的电压转换为液晶显示器所需的电压。
- 驱动电路:负责控制液晶显示器模块的行、列电极,实现图像的显示。
- 接口电路:将单片机的信号与液晶显示器的控制信号进行连接。
在设计电路时,需要注意以下几点:- 电源电压要稳定,避免对液晶显示器模块造成损害。
- 驱动电路的驱动能力要足够,确保液晶显示器模块能够正常显示。
- 接口电路的信号传输要可靠,避免信号干扰。
设计完成后,进行电路调试,确保电路正常工作。
3. 液晶显示器的控制程序编写根据液晶显示器模块的控制指令,编写控制程序。
主要包括以下部分:- 初始化程序:设置液晶显示器的显示模式、对比度等参数。
- 显示程序:实现文字、图形的显示。
- 清屏程序:清除液晶显示器上的显示内容。
在编写程序时,需要注意以下几点:- 控制指令要正确,避免对液晶显示器模块造成损害。
- 程序要简洁,易于调试和维护。
miniSTM32F103开发版LCD显示实验和触摸屏实验文档[1]
![miniSTM32F103开发版LCD显示实验和触摸屏实验文档[1]](https://img.taocdn.com/s3/m/861697c776eeaeaad1f330fa.png)
图 16.1.1 ALIENTEK 2.8 寸 TFTLCD 外观图 模块原理图如图 16.1.2 所示:
图 16.1.2 ALIENTEK 2.8 寸 TFTLCD 模块原理图 TFTLCD 模块采用 2*17 的 2.54 公排针与外部连接,接口定义如图 16.1.3 所示:
图 16.1.3 ALIENTEK 2.8 寸 TFTLCD 模块接口图 从图 16.1.3 可以看出,ALIENTEK TFTLCD 模块采用 16 位的并方式与外部连接,之所以 不采用 8 位的方式, 是因为彩屏的数据量比较大, 尤其在显示图片的时候, 如果用 8 位数据线, 就会比 16 位方式慢一倍以上, 我们当然希望速度越快越好, 所以我们选择 16 位的接口。 图 16.1.3 还列出了触摸屏芯片的接口,关于触摸屏本章我们不多介绍,后面的章节会有详细的介绍。该 模块的 80 并口有如下一些信号线: CS:TFTLCD 片选信号。 WR:向 TFTLCD 写入数据。 RD:从 TFTLCD 读取数据。 D[15:0]:16 位双向数据线。 RST:硬复位 TFTLCD。 RS:命令/数据标志(0,读写命令;1,读写数据) 。 80 并口在上一节我们已经有详细的介绍了, 这里我们就不再介绍, 需要说明的是, TFTLCD
表 16.1.2 0X36 指令描述 从上表可以看出,0X36 指令后面,紧跟一个参数,这里我们主要关注:MY、MX、MV 这三个位,通过这三个位的设置,我们可以控制整个 ILI9341 的全部扫描方向,如表 16.1.3 所 示: 控制位 MY 0 1 0 1 0 0 1 1 MX 0 0 1 1 0 1 0 1 MV 0 0 0 0 1 1 1 1 效果 LCD 扫描方向(GRAM 自增方式) 从左到右,从上到下 从左到右,从下到上 从右到左,从上到下 从右到左,从下到上 从上到下,从左到右 从上到下,从右到左 从下到上,从左到右 从下到上,从右到左
单片机液晶显示实验报告
![单片机液晶显示实验报告](https://img.taocdn.com/s3/m/8b340b1876a20029bc642d7a.png)
单片机液晶显示实验报告篇一:点阵液晶显示实验报告单片机实验课程名称:点阵液晶汉字显示实验授课班级:10自动化三班任课教师:文远熔计划学时:32学时实验组员:张腾耀梁钦赵福亮秦菱蔚郑欢王聪慧摘要本文介绍了PROTEUS与Keil联调开发51系列单片机应用系统的方法以及基于PROTEUS环境下的12864液晶显示的仿真设计。
将Keil C开发的程序用Proteus设计的仿真电路中交互运行调试的方法,设计12864的液晶显示汉字图像。
在基于PROTEUS环境下的12864液晶显示的仿真设计中,使用51芯片控制,然后显示在12864显示屏上,最多可显示4行每行8个汉字,并且可以通过按键随时改变12864显示屏上的内容。
通过Proteus环境下的温度报警器的仿真实验证明,在PROTEUS环境下可以完成单片机系统的硬件设计和软件调试,测试系统的性能,在实际应用中可以降低设计成本,缩短开发周期,提高效率。
关键词:Proteus;仿真;单片机;12864目录第一章绪论1.1实验任务和要求???????????????????????..11.2 基于Proteus的12864显示的研究???????????????.1 . 1.3 实验方案及原理??????????????????????..1第二章点阵液晶汉字显示的硬件部分2.1程序流程图?????????????????????????.2 2.2硬件电路图???????????????????????. 2.3芯片12864的简介?????????????????????第三章点阵液晶汉字显示的软件部分3.1 Keil简介??????????????????????????. 3.2 Proteus简介????????????????????????. 3.3 Proteus与Keil软件联合仿真的建立??????????????.第四章结论4.1实验总结??????????????????????????.附录1:点阵液晶汉字显示的源程序第一章绪论1.1 实验任务和要求用LCD128x64点阵液晶显示器显示指定汉字,最多可以显示4行、8个/行汉字,通过键盘可以随时改变显示的内容。
lcd显示实验原理
![lcd显示实验原理](https://img.taocdn.com/s3/m/18ede94391c69ec3d5bbfd0a79563c1ec5dad7c6.png)
lcd显示实验原理
LCD(液晶显示)实验的原理是基于液晶分子的物理特性。
当给液晶施加电压时,液晶分子会重新排列,使光线能够直射出去而不发生任何扭转。
LCD的显像原理是由面板上每一个具有不同色彩与灰阶的像素来构成画面。
每个像素的灰阶与色彩,则是利用像素中液晶分子所透过的光源强弱与颜色来区分。
LCD驱动IC施加不同的电压改变液晶分子的排列方向,使液晶分
子依直立或扭转之状态,形成光闸门来决定背光光源的穿透程度以构成画面。
彩色显示原理是,LCD驱动IC控制液晶分子排列的方向使得单一像素产生
不同的色阶,但这样的色阶只有黑白两种色彩。
为了产生彩色,每一像素需要红、蓝、绿三种子像素来产生该像素之色彩,这部分便需要搭配彩色滤光片来达成。
彩色滤光片产生三种子像素所需的色彩,经过水平偏光片组合之后,便可在显示屏幕上成像。
以上内容仅供参考,如需更全面准确的信息,可以查阅液晶显示技术相关书籍或咨询该领域的专家。
基于C51单片机的键盘及LCD显示
![基于C51单片机的键盘及LCD显示](https://img.taocdn.com/s3/m/307ac43031126edb6f1a1071.png)
}
}
}
1.实验报告格式:
一.实验名称
二.实验目的
三.实验内容
四.设计思想
五.硬件设计
六.程序代码
七.参考文献
2.硬件电路原理图用PROTEL等软件画出。
附录:程序源代码:
附录1
#include "reg51.h"
#include "intrins.h"
#define THCO 0xee
#define TLCO 0x0
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
}
void InitLCD() //液晶初始化
{
send_command(0x30); //功能设置:一次送8位数据,基本指令集
2)ST7920控制器系列中文图形液晶模块资料手册
三、设计指标
利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能:
1.LCD上显示“重庆科技学院”
2.按键至少包括0-9的数字键
3.LCD显示按键值
4.电子钟显示:时,分,秒(选作)
四、实验要求
1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。
{
unsigned char hi=0;//汉字显示
if(x==0) send_command(0x80+y);//
else if(x==1) send_command(0x90+y);
数码显示控制实验报告(3篇)
![数码显示控制实验报告(3篇)](https://img.taocdn.com/s3/m/7492360da55177232f60ddccda38376bae1fe04c.png)
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
数字显示器实验报告
![数字显示器实验报告](https://img.taocdn.com/s3/m/6fbec7c9dc88d0d233d4b14e852458fb770b38e2.png)
一、实验目的1. 了解数字显示器的基本原理和分类。
2. 掌握数字显示器的设计方法和应用。
3. 学会使用数码管和LCD显示器进行数字显示。
4. 提高动手实践能力和问题解决能力。
二、实验内容1. 数码管显示实验2. LCD显示器显示实验三、实验原理1. 数码管显示原理:数码管是一种半导体发光器件,由若干个发光二极管(LED)组成,每个LED代表一个数码管的笔画。
通过控制LED的亮灭,可以显示不同的数字和字符。
2. LCD显示器显示原理:LCD显示器是一种液晶显示器,通过液晶分子的旋转控制光的透过与阻挡,实现图像的显示。
LCD显示器主要由液晶面板、背光源、偏振片、驱动电路等组成。
四、实验步骤1. 数码管显示实验(1)搭建电路:将数码管与AT89C51单片机连接,连接方式包括共阴极和共阳极两种。
(2)编写程序:使用C语言编写程序,实现数码管显示数字和字符。
(3)调试程序:使用Keil软件对程序进行编译和调试,观察数码管显示效果。
2. LCD显示器显示实验(1)搭建电路:将LCD显示器与AT89C51单片机连接,连接方式包括并行和串行两种。
(2)编写程序:使用C语言编写程序,实现LCD显示器显示数字和字符。
(3)调试程序:使用Keil软件对程序进行编译和调试,观察LCD显示器显示效果。
五、实验结果与分析1. 数码管显示实验结果:通过编写程序,数码管能够显示数字和字符,实现了实验目的。
2. LCD显示器显示实验结果:通过编写程序,LCD显示器能够显示数字和字符,实现了实验目的。
3. 分析:(1)数码管显示实验:在实验过程中,发现数码管的共阴极和共阳极连接方式不同,需要根据实际连接方式编写程序。
此外,为了提高显示效果,需要对数码管进行动态扫描显示。
(2)LCD显示器显示实验:在实验过程中,发现LCD显示器的并行和串行连接方式不同,需要根据实际连接方式编写程序。
此外,为了提高显示效果,需要对LCD显示器进行初始化和设置显示模式。
实验五 笔段型LCD的静态驱动
![实验五 笔段型LCD的静态驱动](https://img.taocdn.com/s3/m/10827a3f3169a4517723a3f4.png)
实验五笔段型LCD的静态驱动一、实验目的1.掌握LCD的显示原理;2.掌握单片机驱动笔段型LCD的方法;3.掌握笔段型LCD的静态驱动技术4.理解笔段型LCD静态驱动波形对像素点灰度的影响。
二、实验仪器用具笔段式LCD显示模块EDS801A,单片机开发板,电脑三、实验原理液晶显示器是常用的一种被动发光型显示器件,以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用如图5-1。
显示原理是液晶面板上下两面的导电玻璃上有电极;段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。
有电场的地方液晶透光;无电场不透光;液晶面板底部背光电源。
液晶显示像素可以分为段形和点矩阵两大类,段形显示的电极连接可分为静态驱动连接和动态驱动连接。
静态驱动电极的每个显示段都单独引出。
所有各位显示的段全都公用一个背电极如图5-2所示。
图5-1 液晶显示模块图5-2 静态驱动连接静态驱动法是获得最佳显示质量的最基本的方法,静态驱动法的电路实现见图5-3(b)。
振荡器的脉冲信号经分频后直接施加在液晶显示器件的背电极BP上,而段电极的脉冲信号是由显示选择信号A与时序脉冲通过逻辑异或合成产生,异或逻辑的真值表如表5-1所示。
当某位显示像素被显示选择时,A=1,该显示像素上两电极的脉冲电压相位相差180°,在显示像素上产生2V 的电压脉冲序列,使该显示像素呈现显示特性;当某位显示像素为非显示选择时,A=0,该显示像素上两电极的脉冲电压相位相等,在显示像素上合成电压脉冲为0V ,从而实现显示效果。
这就是静态驱动法,驱动波形如图5-3(C )。
为了提高显示的对比度,适当地调整脉冲的电压即可。
图5-3 静态驱动法原理本次实验所用液晶显示模块为大连东显EDS801A ,实物图如图5-4,图5-5为引脚图及结构图,液晶必须采用交流驱动方式。
当液晶显示器的字符笔划电极与背电极(BP )呈等电位时,液晶不显示(消隐);当二者存在电位差时,液晶方可显示。
单片机LCD显示实验报告
![单片机LCD显示实验报告](https://img.taocdn.com/s3/m/89742532f56527d3240c844769eae009581ba2b1.png)
单片机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的对比度,以适应不同环境下的显示效果要求。
LCD显示实验
![LCD显示实验](https://img.taocdn.com/s3/m/116d5a57f61fb7360a4c6549.png)
单片机实验报告班级:姓名:学号:指导教师:实验三 LCD显示实验(2学时)一、实验目的:学习液晶显示的编程方法,了解液晶显示模块的工作原理。
掌握液晶显示模块与单片机的接口方法。
学习和掌握8255扩展通用I/O的方法。
基于扩展I/O口,实现LCD显示器的控制。
二、实验设备:CPU挂箱、8031CPU模块三、实验内容:在掌握8255扩展I/O口的基础上,实现LCD的显示,并显示“中北大学1105064102 姓名”。
四、实验原理说明LCD显示电路点阵式LCD显示电路是在系统板上外挂电正式液晶显示模块,模块的数据线、状态、控制线都通过插孔引出。
可直接与系统相连。
1、OCMJ2×8液晶模块介绍及使用说明OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。
也可用作一般的点阵图形显示器之用。
提供位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。
完全兼容一般的点阵模块。
OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。
本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。
一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。
同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。
规划整齐的10个用户接口命令代码,非常容易记忆。
标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。
硬件接口接口协议为请求/应答(REQ/BUSY)握手方式。
应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。
项目10单片机LCD液晶显示器实验
![项目10单片机LCD液晶显示器实验](https://img.taocdn.com/s3/m/6b06400e32687e21af45b307e87101f69e31fbc2.png)
功能特点
LCD液晶显示器模块具备清晰的显示效果,能够显 示字母、数字和简单的图像。同时,它还具有低功 耗的优点。
实验中的作用
在实验中,LCD液晶显示器模块将作为显示 界面,用于展示单片机输出的信息和控制界 面。
杜邦线、电源适配器等辅助工具
设备描述
杜邦线用于连接单片机开发板和 LCD液晶显示器模块之间的线路, 电源适配器用于提供稳定的电源。
VS
LCD液晶显示器原理
LCD液晶显示器是一种被动式显示器,通 过背光照明显示文字和图像。它由多个像 素组成,每个像素由一个晶体管控制,通 过改变晶体管的开关状态来控制像素的亮 暗程度,从而实现显示。
掌握单片机与LCD液晶显示器的接口技术
单片机与LCD液晶显示器的连接方式
单片机与LCD液晶显示器通常通过并行或串行接口进行连接。并行接口传输速度快,但连接线较多;串行接口传 输速度较慢,但连接线较少。
显示数据的传输和控制
在单片机与LCD液晶显示器连接后,需要将显示数据传输到LCD液晶显示器上,并对其进行控制。这需要编写相 应的程序来实现。
实现基于单片机的LCD液晶显示器控制
编写控制程序
为了实现基于单片机的LCD液晶显示 器控制,需要编写相应的控制程序。 程序中需要包含初始化、显示数据传 输和控制等部分。
单片机开发板通常具备 丰富的外设接口,如 GPIO、UART、SPI等, 方便与外部设备进行通 信和控制。
实验中的作用
在实验中,单片机开发 板将作为主控制器,负 责控制LCD液晶显示器 的显示内容和操作。
LCD液晶显示器模块
设备描述
LCD液晶显示器模块是实验中用于显示文字 和图像的设备。常见的LCD液晶显示器模块 有1602、12864等。
LCD1602液晶显示实验实验报告及程序
![LCD1602液晶显示实验实验报告及程序](https://img.taocdn.com/s3/m/92562278580102020740be1e650e52ea5518cebe.png)
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液晶显示实验](https://img.taocdn.com/s3/m/60497c4e5ef7ba0d4b733b7e.png)
电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:单片机原理与接口技术实验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、在上一题的基础上,增加两个外部中断,实现不同内容的显示。
单片机原理及应用实验报告
![单片机原理及应用实验报告](https://img.taocdn.com/s3/m/4f3c2d8f68dc5022aaea998fcc22bcd127ff4254.png)
单片机原理及应用实验报告一、引言单片机(Microcontroller Unit,简称MCU)是一种集成电路芯片,内部集成了微处理器、存储器、输入输出接口和定时器等功能模块,广泛应用于各种电子设备和控制系统中。
本实验报告将介绍单片机的基本原理以及其在实际应用中的实验。
二、单片机的基本原理单片机的核心是微处理器,它负责执行程序指令。
单片机的存储器包括程序存储器(Program Memory)和数据存储器(Data Memory)。
程序存储器用于存储程序指令,数据存储器用于存储数据和中间结果。
单片机通过输入输出接口与外部设备进行通信,通过定时器来控制程序的执行时间。
三、单片机的应用实验1. LED闪烁实验LED闪烁实验是单片机入门实验的经典案例。
通过控制单片机的输出口,周期性地改变LED的状态,从而实现LED的闪烁效果。
这个实验可以帮助初学者了解单片机编程的基本概念和操作。
2. 温度测量实验温度测量实验可以通过连接温度传感器和单片机的输入口,实时地获取环境温度,并通过数码管或LCD显示器来显示温度数值。
这个实验可以帮助学生掌握单片机输入输出口的使用方法,以及模拟信号的处理和显示。
3. 蜂鸣器控制实验蜂鸣器控制实验可以通过连接蜂鸣器和单片机的输出口,实现对蜂鸣器的控制。
通过编写程序,可以使蜂鸣器发出不同的声音,如单调的蜂鸣声、警报声等。
这个实验可以帮助学生学习单片机的数字输出和PWM(脉冲宽度调制)技术。
4. 电机控制实验电机控制实验可以通过连接电机和单片机的输出口,实现对电机的控制。
通过编写程序,可以控制电机的转动方向和速度。
这个实验可以帮助学生理解单片机输出口的电流和电压特性,以及电机的控制原理。
5. 红外遥控实验红外遥控实验可以通过连接红外接收器和单片机的输入口,实现对红外遥控信号的解码和处理。
通过编写程序,可以实现对各种红外遥控器的解码和按键处理。
这个实验可以帮助学生学习单片机输入口的中断处理和红外通信原理。
单片机LCD显示
![单片机LCD显示](https://img.taocdn.com/s3/m/7917eb7e7e21af45b307a862.png)
目录1、设计题目2、设计要求及实现功能3、硬件电路原路图4、软件流程图5、程序代码6、实验结果7、实验总结8、参考文献一、设计题目题目三:液晶LCD显示二、设计要求及实现功能要求:用实验台上的16列*1行的字符LCD显示器显示两屏字符:Welcome!Design By 姓名实现功能:编写完程序后,运行时可以在LCD字符显示器上显示:Welcome!Design By 姓名三、硬件电路原理图字符LCD 模块是一种专用显示字符、数字或符号的液晶显示模块。
这种模块每一个符号由5×7、5×8 或5×11 的点阵像素排列组成的,字符间隔为一个点距,行间隔为一个行距,模块本身附有显示驱动控制电路,可以与单片机的I/O 口线直接连接,使用方便。
目前广泛使用的字符LCD 模块其显示驱动控制电路多是HD44780 或兼容品,其接口信号、操作指令相同。
本实验选用的字符LCD 模块是香港精电公司生产的规格为16×1 的字符LCD 模块,可以在一行上显示16 个字符。
该模块与8051 单片机I/O 口线直接连接的电路如图1所示。
字符LCD模块的接口信号:①GND、VCC:电源,VCC=+5V。
②Vee:液晶显示对比度调节电压输入。
可以通过调节LCD 左上角的多圈电位器RW2 来调节。
③DB7~ DB0:数据总线,三态。
用于与模块之间传送信息。
这里连接P1.0~P1.7。
以下3 个信号为控制信号:④RS:寄存器选择信号,输入。
这里连接P3.3(INT1)。
模块中有两类寄存器,一类是指令寄存器,用于写入指令;另一类是数据寄存器,用于写入的数据。
RS=0,选择指令寄存器。
RS=1,选择数据寄存器。
⑤R/W :读/写信号,输入。
这里连接P3.4(T0)。
R/W =1,读操作;R/W =0,写操作⑥E:使能信号,输入。
模块的读/写控制信号。
这里连接P3.5(T1)。
读操作时,E 为高电平时,模块的数据或状态输出至DB7~DB0 上,供单片机读取;写操作时,E 信号的下降沿将单片机送至数据总线上的数据或指令写入模块中。
制作一个采用LCD1602显示的电子钟
![制作一个采用LCD1602显示的电子钟](https://img.taocdn.com/s3/m/054130e6b52acfc788ebc968.png)
计算机科学与工程系实验报告实验题目:制作一个采用LCD1602显示的电子钟班级:姓名:学号:日期:一、实验目的掌握单片机使用定时器/计数器控制字符型液晶显示器LCD1602的设计与软件编程二、实验要求在LCD上显示当前的时间。
显示格式为“时时:分分:秒秒”。
设有4个功能键k1~k4,功能如下:(1)k1——进入时间修改。
(2)k2——修改小时,按一下k2,当前小时增1。
(3)k3——修改分钟,按一下k3,当前分钟增1。
(4)k4——确认修改完成,电子钟按修改后的时间运行显示。
三、实验要求提交的实验报告中应包括:电路原理图、实验设计思路、C51源程序(含注释语句)、运行效果(含运行截图与说明)、实验小结三、硬件电路原理图的设计四、编程思路及C51源程序编程思路:1、实现当按下K1之后,使中断T0停止计数2、实现当按下K2之后,使小时加一3、实现当按下K3之后,使分钟加一4、实现当按下K4之后,使中断T0恢复计数源程序:#include<reg51.h>#ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#define uchar unsigned char#define uint unsigned intsbit lcdrs = P2^0;sbit lcdrw = P2^1;sbit lcden = P2^2;void delay(uint z)//延时函数,此处使用晶振为11.0592MHz {uint x,y;for(x=z;x>0;x--){for(y=110;y>0;y--){;}}}void write_com(uchar com) //写入指令数据到lcd{lcdrw=0;lcdrs=0;P3=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date) //写入字符显示数据到lcd{lcdrw=0;lcdrs=1;P3=date;delay(5);lcden=1;delay(5);lcden=0;}void init1602()//1602液晶初始化设定{lcdrw=0;lcden=0;write_com(0x3C);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);}/*void write_string(uchar *pp,uint n)//采用指针的方法输入字符,n为字符数目{int i;for(i=0;i<n;i++)write_data(pp[i]);}*/void write_sfm(uchar add,uchar date)//向指定地址写入数据{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);}#endif#define uchar unsigned char#define uint unsigned intsbit Key1 = P1^0;sbit Key2 = P1^1;sbit Key3 = P1^2;sbit Key4 = P1^3;uchar int_time;//定义中断次数计数变量uchar second;//秒计数变量uchar minute;//分钟计数变量uchar hour;//小时计数变量uchar code date[]=" H.I.T. CHINA ";//LCD第1行显示的内容uchar code time[]=" TIME 23:59:55 ";//LCD第2行显示的内容uchar second=55,minute=59,hour=23;void clock_init(){uchar i,j;for(i=0;i<16;i++){write_data(date[i]);}write_com(0x80+0x40);for(j=0;j<16;j++){write_data(time[j]);}}void clock_write( uint s, uint m, uint h){write_sfm(0x47,h);write_sfm(0x4a,m);write_sfm(0x4d,s);}void Keyscan1(){if(Key1==0) {delay(10);if(Key1==0) while(!Key1); TR0=0;}if(Key4==0) {delay(10);if(Key4==0) while(!Key4); TR0=1;}if(Key3==0){delay(10);if(Key3==0)while(!Key3);minute++;if(minute==60)minute=0;} if(Key2==0){delay(10);if(Key2==0)while(!Key2);hour++;if(hour==24)hour=0;}}void main(){init1602();//LCD初始化clock_init();//时钟初始化TMOD=0x01;//设置定时器T0为方式1定时EA=1; // 总中断开ET0=1; // 允许T0中断TH0=(65536-46483)/256;//给T0装初值TL0=(65536-46483)%256;TR0=1;int_time=0;//中断次数、秒、分、时单元清0second=55;minute=59;hour=23;while(1){clock_write(second ,minute, hour);Keyscan1();}}void T0_interserve(void) interrupt 1 using 1 //T0中断服务子程序{int_time++;//中断次数加1if(int_time==20) //若中断次数计满20次{int_time=0; //中断次数变量清0second++;//秒计数变量加1}if(second==60)//若计满60s{second=0; //秒计数变量清0minute ++;//分计数变量加1}if(minute==60)//若计满60分{minute=0;//分计数变量清0hour ++;//小时计数变量加1}if(hour==24){hour=0;//小时计数计满24,将小时计数变量清0 }TH0=(65536-46083)/256;//定时器T0重新赋值TL0=(65536-46083)%256;}五、仿真运行效果展示仿真初始状态按下k1键,进入修改模式六、实验小结通过本次实验,我掌握了LCD1602编程的方法,将所学知识运用到实践中,这是一件慢慢的过程,首先要把理论知识理解透彻,然后就是例题看懂,弄懂举一反三。
LCD与单片机的连接电路图和LCD显示程序
![LCD与单片机的连接电路图和LCD显示程序](https://img.taocdn.com/s3/m/c5ae5d800d22590102020740be1e650e52eacfa3.png)
LCD与单片机的连接电路图和LCD显示程序LCD与单片机的连接电路图和LCD显示程序/LCD测试程序3.2.5 LCD显示电路液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性来显示信息的。
要使用点阵型LCD显示器,必须有相应的LCD控制器、驱动器来对LCD显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储写入的命令和显示字符的点阵。
现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块。
液晶显示模块是一种常见的人机界面,在单片机系统中的应用极其广泛。
液晶显示模块既可以显示字符,又可以显示简单的图形。
本系统采用的是1602的LCD接口。
1602是一种点阵字符型液晶显示模块,可以显示两行共32个字符。
根据LCD型号的不同,所需要的背光电阻大小会不同,可自行调节。
本系统采用的LCD为RT-1602C,其主要引脚的功能如下:RS:数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
RW:读/写选择端,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时,可以写入指令或者显示地址;当RS为低电平、RW为高电平时,可以读忙信号;当RS为高电平、RW为低电平时,可以写入数据。
E:使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
图3-9 LCD显示电路LCD测试程序#include <>/********IO引脚定义*********************************************************** /sbit LCD_RS=P2^7;//定义引脚sbit LCD_RW=P2^6;sbit LCD_E=P2^5;/********宏定义*********************************************************** / #define LCD_Data P0#define Busy 0x80 //用于检测LCD状态字中的Busy标识/********数据定义*********************************************************** **/ unsigned char code uctech[] = {"Happy every day"};unsigned char code net[] = {""};/********函数声明*********************************************************** **/ void WriteDataLCD(unsigned char WDLCD); //写数据void WriteCommandLCD(unsigned char WCLCD,BuysC); //写命令unsigned char ReadDataLCD(void); //读数据unsigned char ReadStatusLCD(void); //读状态void LCDInit(void); //初始化void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); //相应坐标显示字节内容void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); //相应坐标开始显示一串内容void Delay5Ms(void); //延时void Delay400Ms(void); //延时/***********主函数开始********************************************************/ void main(void){Delay400Ms(); //启动等待,等LCD讲入工作状态LCDInit(); //初始化Delay5Ms(); //延时片刻(可不要)DisplayListChar(0, 0, uctech);DisplayListChar(1, 5, net);ReadDataLCD(); //测试用句无意义while(1);}/***********写数据********************************************************/ void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD(); //检测忙LCD_Data = WDLCD;LCD_RS = 1;LCD_RW = 0;LCD_E = 0; //若晶振速度太高可以在这后加小的延时LCD_E = 0; //延时LCD_E = 1;}/***********写指令********************************************************/ void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCD(); //根据需要检测忙LCD_Data = WCLCD;LCD_RS = 0;LCD_RW = 0;LCD_E = 0;LCD_E = 0;LCD_E = 1;}/***********读数据********************************************************/ unsigned char ReadDataLCD(void){LCD_RS = 1;LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;return(LCD_Data);}/***********读状态*******************************************************/ unsigned char ReadStatusLCD(void){LCD_Data = 0xFF;LCD_RS = 0;LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;while (LCD_Data & Busy); //检测忙信号return(LCD_Data);}/***********初始化********************************************************/ void LCDInit(void){LCD_Data = 0;WriteCommandLCD(0x38,0); //三次模式设置,不检测忙信号Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCD(0x08,1); //关闭显示WriteCommandLCD(0x01,1); //显示清屏WriteCommandLCD(0x06,1); //显示光标移动设置WriteCommandLCD(0x0C,1); //显示开及光标设置}/***********按指定位置显示一个字符*******************************************/void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData){Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码WriteDataLCD(DData);}/***********按指定位置显示一串字符*****************************************/void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]>=0x20){ //若到达字串尾则退出if (X <= 0xF){ //X坐标应小于0xFDisplayOneChar(X, Y, DData[ListLength]); //显示单个字符ListLength++;X++;}}}/***********短延时********************************************************/ void Delay5Ms(void){unsigned int TempCyc = 5552;while(TempCyc--);}/***********长延时********************************************************/ void Delay400Ms(void){unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);}LCD与单片机连接的引脚并不是固定的,如有不同只需要在程序里改一下引脚即可。
单片机实验报告
![单片机实验报告](https://img.taocdn.com/s3/m/b9b5f6565bcfa1c7aa00b52acfc789eb162d9e74.png)
单片机实验报告《单片机系统实验》实验报告院系:学号:姓名:2017年12月一、实验目的1.了解32位单片机(STM32系列)原理及其应用,熟悉单片机的资源,掌握单片机的最小系统设计及扩展技术,掌握单片机的编程语言。
2.通过本实验了解LCD液晶工作原理,能通过编程操作液晶的显示。
二、实验设备STM32实验系统一套,PC机一台。
三、实验原理(1)I/O口及定时器实验:STM32的GPIO口控制4个发光二极管,了解其硬件连接方式,学会使用STM32的一个定时器,掌握对定时器计时方式的编程。
编写程序循环点亮4个发光二极管,控制点亮时间为1秒钟闪烁。
(2)外部中断实验:掌握STM32单片机外部中断的用法,学会设置中断优先级,在实验(1)的基础上完成,如果有外部中断发生改变发光二极管的发光规律。
(如,仅其中2个灯亮,再次触发外部中断后,发光二极管重新变成4个灯循环点亮。
)(3)串行口通信实验:掌握STM32单片机与计算机之间的硬件连接方式,了解二者之间的传输协议,进行数据传输。
(4)LCD实验:掌握STM32单片机与液晶之间的硬件连接方式,单片机如何驱动液晶进行显示。
四、内容与步骤1.学会使用IAR或KEIL的编译链接调试环境,熟悉有关STM32使用到的库,并能顺利建立包含各种库文件的工程。
(2学时)2.I/O口实验:在建立工程的基础上能点亮发光二极管。
(2学时)3.定时器实验:循环定时(用定时器做)点亮4个灯,即每1秒闪烁点亮一个灯,循环往复(或叫跑马灯实验)。
(2学时)4.外部中断实验:按键作为触发外部中断的条件,中断发生时,改变发光二极管的点亮规律。
(2学时)5.串行口通信实验:编写串行口通信实验程序,能在计算机与STM32系统间进行ASCII码的传输。
(2学时)6.LCD实验:通过自行编写库文件和了解液晶显示字库,能在液晶上显示“北京航空航天大学机械工程及自动化学院”字样。
(6学时)五、关键代码1.I/O口及定时器实验/*通过定时器3中断函数实现跑马灯,现象为每个LED灯依次点亮1秒后熄灭*/void TIM3_IRQHandler(void){extern uint8_t LED_Status[5];if(TIM3->SR&0X0001)//溢出中断{if(LED_Status[1]==0){LED1_ON;LED2_OFF;LED3_OFF;LED4_OFF;LED_Status[1]=1;}else if(LED_Status[1]==1){LED1_OFF;LED2_ON;LED3_OFF;LED4_OFF;LED_Status[1]=2;}else if(LED_Status[1]==2){LED1_OFF;LED2_OFF;LED3_ON;LED4_OFF;LED_Status[1]=3;}else if(LED_Status[1]==3){LED1_OFF;LED2_OFF;LED3_OFF;LED4_ON;LED_Status[1]=0;}}TIM3->SR&=~(1<<0);//清除中断标志位}2.外部中断实验/*LED灯的发光规律有两种:一种是每个LED灯依次点亮1秒后熄灭,另一种是每次2个LED灯同时点亮,持续1秒后向前移动1个LED灯的位置。
基于STM32F103C8T6单片机的LCD显示系统设计
![基于STM32F103C8T6单片机的LCD显示系统设计](https://img.taocdn.com/s3/m/b0565e49854769eae009581b6bd97f192279bf9a.png)
基于STM32F103C8T6单片机的LCD显示系统设计一、引言随着科技的不断进步,单片机逐渐成为各种电子设备中不可或缺的核心芯片。
而LCD(液晶显示器)作为一种常见的显示设备,广泛应用于各种电子产品中。
本文将介绍一种,该设计能够实现图形和文本的显示,并且具有较高的灵活性和可扩展性。
本文以STM32F103C8T6单片机为基础,通过编程和电路设计实现了LCD的驱动和控制,从而实现了一种简单而实用的LCD显示系统。
二、设计方案1. 硬件设计(1)STM32F103C8T6单片机STM32F103C8T6是一款由意法半导体(STMicroelectronics)生产的32位ARM Cortex-M3内核的单片机,具有丰富的外设资源和强大的计算能力,非常适合用于LCD显示系统的设计。
(2)LCD模块我们选择了一块128x64点阵的LCD模块,该模块具有较大的显示区域和较高的分辨率,能够满足大部分应用需求。
(3)与STM32F103C8T6单片机连接的电路设计根据LCD模块的接口规范,设计一个与STM32F103C8T6单片机相连接的电路,包括数据线和控制线的连接。
使用合适的电平转换电路,将STM32F103C8T6单片机输出的信号适配到LCD模块。
2. 软件设计(1)LCD驱动程序设计设计一个LCD驱动程序,实现与LCD模块的通信和控制。
通过配置STM32F103C8T6单片机的GPIO端口,向LCD模块发送指令和数据,并设置显示模式、显示位置等参数,控制LCD的显示内容。
(2)图形显示程序设计设计一个图形显示程序,实现在LCD上绘制简单的图形,如线段、矩形等。
通过调用相关图形库函数,将需要显示的图形绘制在指定的位置。
(3)文本显示程序设计设计一个文本显示程序,实现在LCD上显示字符串。
通过调用相关文本库函数,将需要显示的字符串按照指定的字体和样式显示在指定的位置。
三、实现与测试根据以上设计方案,进行硬件和软件的实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验19L C D显示实验
一、实验目的:
学习液晶显示的编程方法,了解液晶显示模块的工作原理。
掌握液晶显示模块与单片机的接口方法。
二、所需设备
CPU挂箱、8031CPU模块
三、实验内容
编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技
有限公司”。
四、实验原理说明
五、实验步骤
1、实验连线
8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255
接CS0。
2、运行实验程序,观察液晶的显示状态。
六、程序框图
八、附:点阵式LCD
模块
点阵式LCD模块
由一大一小两块液晶
模块组成。
两模块均
由并行的数据接口和
应答信号接口两部分
组成,电源由接口总
线提供。
(1)OCMJ2×8液晶
模块介绍及使
用说明
OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和 ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。
OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器
之用。
提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。
完全兼容一般的点阵模块。
OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。
本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。
一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。
同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。
规划整齐的10个用户接口命令代码,非常容易记忆。
标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。
硬件接口
接口协议为请求/应答(REQ/BUSY)握手方式。
应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。
发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。
OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。
可以再送下一个数据。
如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节
后才开始执行整个命令的内部操作,因此,最后一个字节的应答BUSY 高电平(BUSY =1)持续时间较长,具体的时序图和时间参数说明查阅相关手册。
用户命令
用户通过用户命令调用 OCMJ 系列液晶显示器的各种功能。
命令分为操作码及操作数两部分,操作数为十六进制。
共分为 3 类10 条。
分别是:
一)、字符显示命令:1、显示国标汉
字;
2、显示8X8 ASCII
字符;
3、显示8X16ASCII
字符;
二)、图形显示命令:4、显示位点
阵;
5、显示字节点阵;
三)、屏幕控制命
令:
6、清屏;
7、上移;
8、下移;
9、左移;10、右移;
(以下所示取值范围分别为:2X8、4X8、5X10的取值范围)
1)显示国标汉字
命令格式: F0 XX YY QQ WW
该命令为5字节命令(最大执行时间为毫秒,Ts2=),其中
XX:为以汉字为单位的屏幕行坐标值,取值范围00到07、02到09、00到09
YY:为以汉字为单位的屏幕列坐标值,取值范围00到01、00到03、00到04
QQ WW:坐标位置上要显示的GB 2312 汉字区位码
2) 显示8X8 ASCII字符
命令格式:F1 XX YY AS
该命令为4字节命令(最大执行时间为毫秒,Ts2=),其中
XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
AS:坐标位置上要显示的ASCII 字符码
3) 显示8X16 ASCII字符
命令格式:F9 XX YY AS
该命令为4字节命令(最大执行时间为毫秒,Ts2=),其中
XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
AS:坐标位置上要显示的ASCII 字符码
4) 显示位点阵
命令格式: F2 XX YY
该命令为3字节命令(最大执行时间为毫秒,Ts2=),其中
XX:为以1*1点阵为单位的屏幕行坐标值,取值范围00到7F、20到9F、00到9F
YY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到40、00到40、00到40
5) 显示字节点阵
命令格式: F3 XX YY BT
该命令为4字节命令(最大执行时间为毫秒,Ts2=),其中
XX:为以1*8点阵为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
BT:字节像素值,0 显示白点,1 显示黑点(显示字节为横向)6) 清屏
命令格式:F4
该命令为单字节命令(最大执行时间为11毫秒,Ts2=11mS),其功能为将屏幕清空。
7) 上移
格式:F5
该命令为单字节命令(最大执行时间为25毫秒,Ts2=25mS),其功能为将屏幕向上移一个点阵行。
8) 下移
命令格式:F6
该命令为单字节命令(最大执行时间为30毫秒,Ts2=30mS),其功能为将屏幕向下移动一个点阵行。
9) 左移
命令格式:F7
该命令为单字节命令(最大执行时间为12毫秒,Ts2=12mS),其功能为将屏幕向左移动一个点阵行。
10) 右移
命令格式: F8
该命令为单字节命令(最大执行时间为12毫秒,Ts2=12mS),其功能为将屏幕向右移动一个点阵行。
显示窗口坐标关系
以上列表为汉字、ASCⅡ码显示屏幕坐标(ASCⅡ码Y坐标一点阵坐标为准)。
如显示图形点阵,则以128*64(OCMJ4X8)或128*32(OCMJ2X8)点阵坐标为准,可在屏幕任意位置显示。
(2)OCMJ2×8液晶模块外部连接原理图及接口说明
图3 –55 89C52与OCMJ4X8模块连接图
模块上DB0~DB7插孔对应于位数据线;BUSY、REQ插孔分别对应于图中相应的引脚。
(3)OCMJ2×8液晶模块的基本测试方法
CPU模块的~接DB0~DB7,T0接BUSY,T1接REQ。
运行测试程序,液晶屏上应显示“北京理工达盛科技有限公司”。
测试参考程序如下:
BUSY BIT
STOBE BIT
CSEG AT 0000H
LJMP START
CSEG AT 4100H
START: CLR STOBE
SETB BUSY
MOV A, #0F4H
ACALL SUB2
ACALL DELAY ;清屏
START1: MOV R0, #01H
MOV R1, #3CH
HE1: JB BUSY HE1
ACALL SUB1
ACALL SUB2
DJNZ R1, HE1
ACALL DELAY
ACALL DELAY
ACALL DELAY
LJMP START1
DELAY: MOV R2, #23H
DEL0: MOV R4, #06FH
DEL1: MOV R6, #06FH
DEL2: DJNZ R6, DEL2
DJNZ R4, DEL1
DJNZ R2, DEL0
RET
SUB2: NOP
MOV P1,A
SETB STOBE
INC R0
HE2: NOP
JNB BUSY,HE2
CLR STOBE
RET
SUB1: MOV A, R0 ;显示“北京理工达盛科技有限公司”
MOVC A,@A+PC
RET
DB 0F0H,01D,00D,17D,17D,0F0H,02D,00D,30D,09D
DB 0F0H,03D,00D,32D,77D,0F0H,04D,00D,25D,04D
DB 0F0H,05D,00D,20D,79D,0F0H,06D,00D,42D,02D
DB 0F0H,01D,01D,31D,38D,0F0H,02D,01D,28D,28D
DB 0F0H,03D,01D,51D,48D,0F0H,04D,01D,47D,62D
DB 0F0H,05D,01D,25D,11D,0F0H,06D,01D,43D,30D
END。