这是我之前做的单片机液晶显示模块的课程设计,附件里包含PROTEUS的仿真工程文件以及课设的文档,文档里也有程序源代码,请大家多多指教
课程名称:单片机课程设计
设计题目:单片机与液晶显示模块接口
一、设计的目的
液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。
二、设计的内容及要求
本设计主要是以AT89C51为控制设备,1602LCD为显示设备,实现的一个可以显示 静态汉字的设备。科技进步给我们的生活带来了很大的变化。液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活。液晶显示器由于具有低压,微功耗、显示信息最大、体积小等特点,在移动通信终端、便携计算机、CPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。
三、指导教师评语
摘要 如今,科技进步给我们的生活带来了很大的变化。液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活。液晶显示器由于具有低压,微功耗、显示信息最大、体积小等特点,在移动通信终端、便携计算机、CPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。 同时,单片机具有控制功能强、集成度高、可靠性高、体积小、低电压、低能耗等特点,并且具有优异的性能价格比。自20世纪70年代以来,受到人们的广泛关注。几十年间,单片机的发展迅猛,在控制领域独占鳌头。在我国,单片机已广泛的应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是个单片机中最为典型和最具代表性的一种。 本设计主要是以AT89C51单片机为控制设备,1602LCD为显示设备,实现的一个可以显示静态汉字液晶显示没计。
一. LCD液晶显示模块* 液晶显示器(LCD)是一种功耗很低的显示器,其以优越的性能,越来越受到各方面的重视。液晶显示的应用领域越来越多,在电子表、计算器、数码相机、计算机的显示器和液晶电视上都可以看到它的身影。* 液晶显示模块是一种集成度比较高的显示组件,其英文名称为“LCD Module”,可以简称为LCM。液晶显示模块将液晶显示器件、控制器、PCB电路板、背光源和外部连接端口等组装在一起,可以方便地用于需要液晶显示的场合。在现代的电子设计中,液晶显示模块的应用也越来越多。1.1 LCD液晶显示概述* LCD液晶显示是依靠液晶显示器来进行数据或者图形显示的。LCD液晶显示弥补了LED显示效果不够美观、不能显示图形和汉字等缺点,因此液晶显示技术得到了越来越广泛的应用。下面介绍液晶显示方面的应用技术。1.1.1 液晶的来源* 液晶,顾名思义,就是固液态之间的一种中间类状态。一般情况下,最常见的物质有三种形态:固态、液态和气态。液晶是另外一种特殊的物质形态,由澳大利亚植物学者莱尼茨尔(Reinitzer)在1888年发现。此后,经过广泛的研究,液晶于二十世纪五十年代开始大规模使用。* 液晶的成分是一种有机化合物,在一定的温度范围内,它既具有液体的流动性、粘度、形变等性质,又具有晶体的热(热效应)、光(光学各向异性)、电(电光效应)、磁(磁光效应)等物理性质。光线穿透液晶的路径由其分子排列所决定。人们通过研究发现,给液晶充电会改变它的分子排列,进而造成光线的扭曲或折射。液晶显示便是根据此原理来制成的。1.1.2 LCD液晶显示器结构及原理* LCD液晶显示器本身不发光,其通过调节光的亮度来达到显示效果,这是一种被动显示器。LCD主要利用液晶的扭曲-向列效应制成,这是一种电场效应。这里首先介绍LCD液晶显示器的结构和原理,以及它的技术和工艺特点。这样才能在选购时有的放矢,更加科学合理地使用和维护。* 液晶是一种有机复合物,由长棒状的分子构成。在自然状态下,这些棒状分子的长轴大致平行。LCD大致有如下两个结构和功能上的特点。1.2 液晶显示模块的种类* 液晶显示模块是以LCD液晶屏为核心,配合一定的控制电路,以达到方便使用显示组件的目的。根据LCD液晶屏可显示内容的不同,液晶显示模块可以分为如下3种:* 1.数显液晶模块* 2.点阵字符液晶模块* 3.点阵图形液晶模块1.3 液晶显示模块的优点* 液晶显示最主要的优势是可以显示多行的汉字以及图形。除了这一点外,使用液晶显示模块作为显示设备还具有其他很多优势,主要表现在如下几个方面:* 体积小、重量轻。液晶显示模块通过显示屏上的电极控制液晶分子状态来达到显示目的,在重量上比相同显示面积的传统显示器件要轻得多。* 功率消耗小。液晶显示模块的功耗主要消耗在其内部的电极和驱动芯片上。因而,对于相同的显示面积,液晶显示模块的耗电量比其他显示器件要小得多。* 显示质量高。由于液晶显示模块每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,不像有些显示设备需要不断刷新亮点。因此,液晶显示模块话质高而不会闪烁,把眼睛疲劳降到了最低。* 无电磁辐射。液晶显示模块的先天特点决定了其没有电磁辐射,这个优点使得液晶电视和计算机的显示器都得到广泛推广。* 简单方便的数字式接口。液晶显示模块都是数字式的,和单片机的接口十分简单,操纵也十分方便。* 应用范围广。液晶显示模块特别是点阵图形液晶模块,可以显示数字、字符、汉字和图形等,可适用于各种场合。二 液晶显示模块控制接口* 液晶显示模块(LCM)一般都内置LCD驱动器,其采用控制指令集来进行显示控制。这类LCM和单片机的接口比较简单,控制比较容易,因此得到了广泛的应用。一般来说,掌握一种液晶显示模块,便可以熟悉采用同类型驱动器的其他液晶显示模块的使用。这里重点介绍点阵图形液晶模块的使用,其可以显示数字、字符、汉字和图形等,功能比较全面。2.1 LCD控制驱动器ST7920概述* LCD控制驱动器主要用于控制液晶的显示,市场上常见的有ST7920、KS0066U、HD44780等。这里介绍广泛使用的ST7920液晶控制驱动器。* ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种功能极强的液晶控制模块,主要包括如下几方面的功能:* 芯片内置128×64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。* 芯片内置8192个中文汉字(16×16点阵)。* 128个字符的ASCII字符库(8×16点阵)。* 64×256点阵显示RAM(GDRAM)。* 芯片内部设计有2MB的中文字型CGROM和64×256点阵的GDRAM绘图区域,便于简单、有效地显示汉字和图形。* 芯片提供有4组可编程控制的16×16点阵造字空间。* ST7920由32个普通驱动器(common)及64个段驱动器segment组成。* 芯片提供了4位并行、8位并行、2线串行以及3线串行等多种接口方式,可以适应多种微处理器和单片机接口的需要。2.3 ST7920功能说明* ST7920包含有两个型号,ST7920-BIG5内建BIG-5码繁体中文字型库,ST7920-GB内建GB简体中文字型库。这里以内建简体中文字型库的ST7920-GB为例,介绍其功能以及如何实现显示字符、汉字和图形等操作。* 1.基本操作功能* 2.忙标志(BF)* 3.地址计数器(AC)* 4.中文字型ROM(CGROM)及半宽字型ROM(HCGROM)* 5.自定义字型RAM(CGRAM)* 6.图标RAM(IRAM)* 7.显示数据RAM(DDRAM)* 8.绘图显示RAM(GDRAM)* 9.LCD驱动电路* 10.游标/闪烁控制电路2.4 ST7920基本指令集* ST7920提供了11条基本指令,当RE=0时为基本指令集模式,分别介绍如下。* 1.清除显示指令* 2.地址复位指令* 3.进入设定点指令* 4.显示状态开关指令* 5.游标或显示移位控制指令* 6.功能设定指令* 7.设定CGRAM地址指令* 8.设定DDRAM地址指令* 9.读取忙标志(BF)和地址指令* 10.写数据到RAM指令* 11.读取RAM的值指令2.5 ST7920扩充指令集* ST7920扩充指令集提供了更高级的液晶显示控制。当RE=1时,为扩充指令集模式,ST7920提供了7种扩充指令,分别介绍如下所述。* 1.待命模式指令* 2.卷动地址或RAM地址选择指令* 3.反白选择指令* 4.睡眠模式指令* 5.扩充功能设定指令* 6.设定IRAM地址或卷动地址指令* 7.设定绘图RAM地址指令2.6 ST7920的操作方式* 液晶控制驱动器ST7920提供了并行和串行两类指令操作方式。其中,并行操作方式又可以分为8位并行操作方式和4位并行操作方式两种。下面分别进行介绍。* 1.并行操作方式* 2.串行操作方式2.7 图形点阵式液晶显示模块* 市场上,图形点阵式液晶显示模块有很多种。这里采用的液晶显示模块为北京宁和电子有限公司生产的NH12864M型LCM,如图所示。2.8 图形点阵式液晶读写子函数* 前面介绍了图形点阵式液晶控制器的指令集、操作方式以及典型的液晶显示模块的引脚接口。这里按照8位并行接口操作方式来给出图形点阵式液晶显示模块的操作子函数,以方便读者调用。* 这里假定E为液晶显示模块的读写使能信号,R_W为液晶显示模块的读写选择信号,RS为液晶显示模块的数据/指令信号,D_I为液晶显示模块的数据指令选择信号。P1端口作为数据指令输入端口。这些符号分别对应液晶显示模块的控制引脚,其将在下面的子函数中使用。* 1.写指令子函数* 2.写数据子函数* 3.初始化子函数* 4.基本指令集清屏子函数* 5.写汉字子函数* 6.扩充指令集画图子函数* 7.扩充指令集清屏子函数2.9 汉字及图形显示实例* 液晶显示模块在现代的电子设计中的应用越来越广泛,特别是图形点阵式液晶显示模块,其不仅可以显示数字和字符,也可以用来显示中文和图形。* 这里采用NH12864M来介绍,如何使用液晶显示模块LCM来显示汉字、图形以及在任意位置显示图形。程序中使用了前面介绍的图形点阵式液晶读写子函数。三.系统总体设计3.1 LCD1602工作原理通过AT89C52单片机控制LCD1602显示字符串,LCD1602的实物图(见图1)和引脚功能(见图2)如下: 图1 LCD1602实物图 图2 LCD1602引脚图 3.1.1 引脚功能说明:1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明如表2所示: 表1 LCD1602引脚接口说明 3.1.2 LCD寄存器的选择表2 LCD寄存器功能说明 3.1.3 LCD指令表表3 LCD指令表 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I/D=1:地址递增,I/D=0:地址递减 S=1:开启显示屏,S=0:关闭显示屏 | | | | | | | | | | | | D=1:开启显示幕 C=1:开启光标 B=1:光标所在位置的字符闪烁 | | | | | | | | | | | | S/C=0、R/L=0:光标左移;S/C=0、R/L=1:光标右移 S/C=1、R/L=0:字符和光标左移;S/C=1、R/L=1:字符和光标右移 | | | | | | | | | | | | DL=1:数据长度为8位,DL=0:数据长度为4位 N=1:双列字,N=0:单列字;F=1:5x10字形,F=0:5x7字形 | | | | | | | | | | | | | | | | | | | 读取地址计数器,并查询LCM是否忙碌,BF表示LCM忙碌 | | | | | | | | | | | 3.1.3 LCD1602内部显示地址图3 LCD1602内部显示地址 3.2 单片机简介单片机工作原理单片机由运算器、控制器、存储器、输入输出设备构成。 单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令。 图4 89C52实物图 图5 89C52引脚图 这里采用Atmel公司的AT89C51单片机作为控制器,同样也可以采用其他兼容的51系列单片机,例如AT89S51、8051、AT89C51等。整个电路的电路图,如图所示。
3.3 程序设计 本程序是有主程序、初始化子程序、写指令程序、判断LCM是否忙碌子程序和写数据子程序组成。 * 仿真结果图:
四 心得体会 经过这段时间的努力,反复的调试与修改,最终完成了本次课设。在此期间,我学到了很多新的东西,让我丰富了自己,经过这段时间的锻炼,发现了自己的不足,并开始有意识的去找寻未知,更积极的去探寻自己不足的东西,使我更渴望了对新事物的研究与学习。通过查看相关的资料和书籍,反复对比与摘取,把最精髓的部分挑出来用在实验中,让此程序更加接近课设的要求。每一次否定自己先前的选择都是一种进步,我会告诉自己总会有合适的方法达到同样的效果。不满足的心态也是我此次实验的一大笔收获。虽然过程很艰难,程序的调试也是十分的枯燥,但当实验的结果出来时,我也是十分的开心,觉得再多的付出都是值得的。 虽然此次编写的程序不是很完美,但我相信,通过经后的磨炼,自己会做的更好。这次的课设也让我收获颇丰,让我明白到,无论做什么事情,都要用心去做,尽自己最大的努力去完成,切不可有一丝马虎。
单片机源码:
- RS bit P3.5
- RW bit P3.6
- E bit P3.7
- LCD EQU P1
- MAIN:
- MOV LCD,#00000001B
- ACALL WR_COMM
- ACALL INIT_LCD
- MOV LCD,#82H
- ACALL WR_COMM
- MOV LCD,#'G'
- ACALL WR_DATA
- MOV LCD,#'O'
- ACALL WR_DATA
- MOV LCD,#'O'
- ACALL WR_DATA
- MOV LCD,#'D'
- ACALL WR_DATA
- MOV LCD,#'L'
- ACALL WR_DATA
- MOV LCD,#'U'
- ACALL WR_DATA
- MOV LCD,#'C'
- ACALL WR_DATA
- MOV LCD,#'K'
- ACALL WR_DATA
- JMP $
- INIT_LCD:
- MOV LCD,#00111000B
- ACALL WR_COMM
- MOV LCD,#00001111B
- ACALL WR_COMM
- MOV LCD,#00000110B
- ACALL WR_COMM
- RET
- WR_COMM:
- CLR RS
- CLR RW
- CLR E
- ACALL CHECK_BF
- SETB E
- RET
- CHECK_BF:
- MOV LCD,#0FFH
- CLR RS
- SETB RW
- CLR E
- NOP
- SETB E
- JB LCD.7,CHECK_BF
- RET
- WR_DATA:
- SETB RS
- CLR RW
- CLR E
- ACALL CHECK_BF
- SETB E
- RET
- END
复制代码
所有资料51hei提供下载(仿真+报告):
|