基于单片机的液晶显示广告牌

基于单片机的液晶显示广告牌
基于单片机的液晶显示广告牌

基于单片机的液晶显示广告牌

摘要:随着社会的发展,各式电子产品已在人们的日常生活中日渐占据主导地位,其中当然也包括信息的传播。现在,在一些单位内部、医院和公共场所的监控系统中,常要发布流动的信息。字符显示器为单位内部、公共场所的监控系统发布信息提供了完整的方案。通过指令方便地修改和显示中西文信息,真正实现了信息发布的无纸化。

关键词:单片机显示器液晶

LCD billboard based on micro computer unit Abstract:With the development of society, various types of electronic products have already occupied the leading position day by day in daily life, among them certainly include the spread of information too. Now, inside some units, in the monitoring systems of the hospital and public place, often release the information of flowing. Have released information and offered the intact scheme in monitoring system by inside the unit , public field of the character display. Revising and showing the information of the Chinese and western language conveniently through the order, the ones that have really realized information issue are with no paper at all..

Keywords: Micro Computer Unit Character Display LCD

目录

绪论 (3)

1 单片机及显示器简介 (4)

1.1 单片机概述和发展 (5)

1.2 液晶显示器及其特点 (6)

2 方案论证 (6)

2.1 CPU的选择 (7)

2.2 显示器的选择 (9)

3 系统硬件设计 (17)

3.1 硬件总体框图设计 (17)

3.2 电源电路设计 (18)

3.3 CPU系统设计 (19)

3.4 CPU与显示器接口电路设计 (20)

4 系统软件设计原理 (21)

4.1 液晶显示程序控制流程 (21)

总结体会 (22)

致谢 (23)

参考文献 (24)

附录 (25)

附录1: 源程序

附录2: 硬件总电路图

附录3:运行图片及部分数据

绪论

现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。显示器是人与机器沟通的重要界面,随着社会的发展,各式电子产品已在人们的日常生活中日渐占据主导地位,其中当然也包括信息的传播。现在,在一些单位内部和公共场所的信息系统中,经常需要发布流动的信息。字符显示器为单位内部和公共场所的信息发布提供了良好的条件。通过程序可以方便地修改显示中西文信息,真正实现了信息发布的无纸化。本设计用单片机89S51及字符点阵型LCD模块设计一个简易的广告移动牌。可应用在广告移动控制器、舞台灯光控制器等领域。

1单片机及显示器简介

1.1单片机概述和发展

在微处理器问世后不久,便出现了以一个大规模集成电路为主组成的微型计算机——单片微型计算机(Micro Computer Unit简称单片机)。由于单片机面向控制性领域,嵌入到各种产品中,以提高产品的智能化,所以单片机又成为嵌入式微控制器(Embedded Microcontroller),在单片机内部含有计算机的基本功能部件,CPU,存储器,各种接口电路。给单片机配上外围设备和软件,便构成单片机的应用系统。单片机发展经历3个阶段

1.1.1 20世纪70年代为单片机的初级阶段

这个阶段一Intel公司的MCS-48系列单片机为典型代表,但因受工艺和集成度的限制,单片机中的CPU功能低,存储器容量小,IO接口的种类和数量少,只能用在简单场合。

1.1.2 20世纪80年代为单片机的成熟阶段

这个阶段以Intel的MCS-51.MCS-96系列单片机为典型代表。出现了性能较高的8位和16位单片机。提高了CPU的功能,扩大了存储器的容量,增加了IO接口种类和数量,单片机内部包含了异步串行口,A/D,多功能定时器等特殊IO电路。单片机应用也得到了推广。

1.1.3 20世纪90年代至今为单片机缟素发展阶段阶段

世界上著名的半导体厂商不断推出各种i新型的8位,16位和32位的单片机,单片机的性能不断完善,品种大量增加,在功能,功耗,价格,体积等方面能满足各种复杂的或简单的应用场合需求,单片机应用深入到各行业和消费类电子产品中。

1.2 显示器概述及液晶显示器特点

显示器为主,但随着科技不断进步,各种显示技术如雨后春笋般诞生,近来由于液晶(LCD)显示器具有轻薄短小、耗电量低、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,在近年来价格不断下跌的吸引下,逐渐取代CRT之主流地位,显示器明日之星架势十足。那么液晶显示器与传统的显示器相比,到底有什么新的特点呢?

一、显示质量高

由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不象阴极射线管显示器(CRT)那样需要不断刷新亮点。因此,液晶显示器画质高而且绝对不会闪烁,把眼睛疲劳降到了最低。

二、没有电磁辐射

传统显示器的显示材料是荧光粉,通过电子束撞击荧光粉而显示,电子束在打到荧光粉上的一刹那间会产生强大的电磁辐射。而液晶显示器在防止辐射方面具有先天的优势,因为它根本就不存在辐射。在电磁波的防范方面,液晶显示器也有自己独特的优势,它采用了严格的密封技术将来自驱动电路的少量电磁波封闭在显示器中,而普通显示器为了散发热量的需要,必须尽可能地让内部的电路与空气接触,这样内部电路产生的电磁波也就大量地向外“泄漏”了。

三、可视面积大

对于相同尺寸的显示器来说,液晶显示器的可视面积要更大一些。液晶显示器的可视面积跟它的对角线尺寸相同。而阴极射线管显示器,显像管前面板四周有一英寸左右的边框,不能用于显示。

四、应用范围广

最初的液晶显示器由于无法显示细腻的字符,通常应用在电子表、计算器上。随着液晶显示技术的不断发展和进步,字符显示开始细腻起来,同时也支持基本的彩色显示,并逐步用于液晶电视、摄像机的液晶显示器、掌上游戏机上。而随后出现的DSTN和TFT则被广泛制作成电脑中的液晶显示设备,DSTN液晶显示屏用于早期的笔记本电脑;TFT则既应用在笔记本电脑上(现在大多数笔记本电脑都使用TFT显示屏),又用于主流台式显示器上。

五、画面效果好

与传统显示器相比,液晶显示器一开始就使用纯平面的玻璃板,其显示效果是平

实现高分辨率,例如,17英寸的液晶显示器就能很好地实现1280×1024分辨率,而通常18英寸CRT彩显上使用1280×1024以上分辨率的画面效果是不能完全令人满意的。

六、数字式接口

液晶显示器都是数字式的,不像阴极射线管彩显采用模拟接口。也就是说,使用液晶显示器,显卡再也不需要像往常那样把数字信号转化成模拟信号再行输出了。理论上,这会使色彩和定位都更加准确完美。

七、“身材”匀称小巧

传统的阴极射线管显示器,后面总是拖着一个笨重的射线管。液晶显示器突破了这一限制,给人一种全新的感觉。传统显示器是通过电子枪发射电子束到屏幕,因而显像管的管颈不能做得很短,当屏幕增加时也必然增大整个显示器的体积。而液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示目的,即使屏幕加大,它的体积也不会成正比的增加,而且在重量上比相同显示面积的传统显示器要轻得多。

八、功率消耗小

传统的显示器内部由许多电路组成,这些电路驱动着阴极射线显像管工作时,需要消耗很大的功率,而且随着体积的不断增大,其内部电路消耗的功率肯定也会随之增大。相比而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比传统显示器也要小得多。

2 方案论证

2.1 CPU的选择

本设计采用的是ATMEL公司的AT89S51

如图1所示:

以下是对89S51各管脚的功能说明:

D8-D6:数据输入线。

RESET:复位端口。

T0,T1:计数器端口外部计数脉冲输入线。

XTAL1,XTAL2:时钟电路。

GND:接地。

图1 89S51功能说明图

P0口:P0口是一个8位三态双向I/O端口,在访问外部存储器时,它是分时作低8位地址线和8位双向数据总线用。在不访问外部存储器时,作通用I/O 端口用,用于传送CPU的输入输出数据。P0端口能以吸收电流的方式驱动8个LSTTL负载,一般作为扩展时地址数据总线使用。

P1口:P1端口是一个带内部上拉电阻的8位准双向I/O端口(作为输入时,端口锁存器置1)。对P1端口写1时,P1端口被内部的上拉电阻拉为高电平,这时可作为输入口。当P1端口作为输入端口时,因为有内部上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P1端口能驱动(吸收或输出电流)4个TTL(transistor-transistor logic,晶体管晶体管逻辑)负载,它的每一个引脚都可定义为输入或输出线,其中P1.0、P1.1兼有特殊的功能。

P2口:P2端口是一个带内部上拉电阻的8位准双向I/O端口,当外部无扩展或扩展存储器容量小于256B时,P2端口可作一般I/O端口使用,扩充容量在64KB范围时,P2端口为高8位地址输出端口。当作为一般I/O端口使用时,可直接连接外部I/O设备,能驱动4个LSTTL负载。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址

口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3端口是一个带内部上拉电阻的8位准双向I/O端口。向P3端口写入1时,P3端口被内部上拉为高电平,可用作输入口。当作为输入时,被外部拉低的P3端口会因为内部上拉而输出电流。第一功能作为通用I/O端口,第二功能作控制口。P3能驱动4个LSTTL(low-power schottky TTL)负载。

注:P3口也可作为AT89S51的一些特殊功能口,如下所示:

P3口管脚备选功能:

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH 地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2.2 液晶显示器的选择

2.2.1液晶显示原理

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

2.2.2液晶显示器各种图形的显示原理

线段的显示

点阵图形式液晶由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条暗线组成的虚线。这就是LCD显示的基本原理。

字符的显示

用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

汉字的显示

汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。

1602字符型LCD简介

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图2:

图2 1602字符型液晶显示器实物图

1602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3所示:

图3 1602尺寸图

1602LCD主要技术参数:

显示容量:16×2个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:

表1:引脚接口说明表

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

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

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

1602液晶模块内部的控制器共有11条控制指令,如表2所示:

表2:控制命令表

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:字符发生器RAM地址设置。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

与HD44780相兼容的芯片时序表如下:

表3:基本操作时序表

读写操作时序如图4和5所示:

图4读操作时序

图5 写操作时序

1602LCD的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图6是1602的内部显示地址。

图6 1602LCD内部显示地址

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)

+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于

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

图7 CGROM 和CGRAM中字符代码与图形对应关系

1602LCD的一般初始化(复位)过程

延时15mS

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

延时5mS

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

延时5mS

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

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

写指令38H:显示模式设置

写指令08H:显示关闭

写指令01H:显示清屏

写指令06H:显示光标移动设置

写指令0CH:显示开及光标设置

3 系统硬件设计

3.1 硬件总体框图设计

如图8为液晶显示原理硬件框图

图8 液晶显示原理硬件图

系统硬件电路主要有液晶显示器、AT89S51单片机、单片机上电复位和电源等部分组成。上电复位电路为单片机提供上电复位。电源电路为各部分提供稳定的+5V电源。

3.2 电源电路设计

图9 电源电路

变压器输入220V交流电压,输出9V交流电压。经过桥式整流输出大约9V脉动电压,经过4700UF的滤波电容可得到平稳的直流电压.再经过三端稳压芯片7805稳压输

出稳定的+5V电压。

3.3 CPU系统设计

本设计的CPU采用美国的ATMEL公司的AT89S51Flash单片机,工作电压为+5V,128×8位的内部RAM,2个16位定时/计数器,6个中断源,以及低功耗和掉电保护方式等一系列功能。如图10所示为单片机电源、复位、晶体振荡电路图。

图10 CPU系统

1复位电路

单片机上电复位时,当振荡器正在运行时,只要持续给出RST引脚两个周期的高电平,便可以完成复位。

2晶体振荡电路

XTAL1脚和XTAL2脚分别构成片内振荡器的反向放大器的输入和输出端,外接晶体和补偿电容C1C2构成谐振电路。

3.4 CPU与显示器接口电路设计

1.液晶显示器1602如图11所示

图11液晶显示器1602 2.接口电路

单片机与液晶显示器接口电路如图12所示。

基于单片机的液晶显示

滨江学院 学年论文 题目基于单片机的液晶显示 院系自动控制系 专业电气工程与自动化学生姓名 学号 指导教师 二零一三年十二月二十五号

目录 1.引言 (1) 2.现状 (1) 3.主要目的 (2) 4.实现方案和步骤 (2) 4.1 KS0108 (2) 4.1.1 KS0108特点 (2) 4.1.2 KS0108的引脚功能 (3) 4.1.3 KS0108的指令系统 (4) 4.2 图形点阵式液晶显示控制 (5) 4.3汉字编码原则 (8) 4.4程序实现流程 (9) 5.实验结果及结果讨论 (10) 6.结论 (11) 7.参考文献 (11) 8.附件 (12)

南京信息工程大学滨江学院学年论文 基于单片机的液晶显示 南京信息工程大学滨江学院自动控制系,南京 210044 摘要:本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机8051,采用的液晶显示控制器的芯片是SED1520,主要实现中文显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。 关键字:单片机、液晶显示、8051、SED1520 1、引言 单片机液晶显示系统主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组成的一个显示系统[1]。我们在许多地方可以看到LCD显示屏的应用,例如空调,车内广告,冰箱和显示仪表盘等等,它们都是一个小型的单片机控制液晶显示系统。在日常生活中,我们也可以看到一些类似的由单片机控制的显示系统,如火车站售票大厅的候车信息显示屏,在这些屏幕上,可以显示各种不同的图形、汉字等,并且可以实现上下滚屏与左右移动等。这就是在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,需要能够显示更丰富信息和通用性较强的显示器,便于开发和应用,并要求其体积小、重量轻、功耗小。图形点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕画面滚动等功能,是信息处理、信息输出的重要手段之一,具有广泛的应用前景[2]。我选择的单片机液晶显示系统的开发,是基于KS0108液晶显示控制器,在C8051F020单片机实验系统上实现KS0108是点阵型液晶显示控制器,利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计。 2、现状 液晶显示器具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品当中。液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。字符型LCD是一种用5×7点阵图形来显示字符的

单片机之LCD显示原理

5.自制单片机之五LCD1602的驱动 LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示: 字符型LCD的引脚定义 HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: DDRAM地址与显示位置的对应关系 我们知道文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是用两个字节的代码记录。在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。例如“A” 字的字模: 01110 ○■■■○ 10001 ■○○○■ 10001 ■○○○■ 10001 ■○○○■ 11111 ■■■■■ 10001 ■○○○■

10001 ■○○○■ 上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。看出是个“A”字了吗?在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,你就看到“A”这个字了。 刚才我说了想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。 HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。下图说明了CGROM和CGRAM与字符的对应关系。 从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。可见它的代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。PC在编译时就把“A”先转为41H代码了。 字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。后面我会详细说的。 0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。 那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。 共11条指令: 1.清屏指令 功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 2.光标归位指令 功能:<1> 把光标撤回到显示器的左上方; <2> 把地址计数器(AC)的值设置为0; <3> 保持DDRAM的内容不变。

单片机实验lcd显示实验

实验19 LCD显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 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 握手协议,简单可靠。 1)表—1:OCMJ2X8(128X32)引脚说明 硬件接口 接口协议为请求/应答(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个字节,模块在接收到最后一个字节后才开始执行整个命令的内

基于51单片机1602液晶显示简易计算器设计

#include #include #define uint unsigned int #define uchar unsigned char #define PI 3.141592 sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2; sbit led=P2^4; sbit speek=P3^7; uchar table0[]={"Welcome to use"}; uchar table1[]={"made by Ms. Li"}; uchar table2[]={"error"}; uchar count; void main(void) { uchar error=0,i,first=0,dot1,dot2,dot1_num,dot2_num,minus1,minus2;//错误标志、第一次清屏标志、小数点标志以及小数点个数负号标志、负号个数 uchar Sin,Cos,Tan,ln; uchar Key_num,last_key_num; //键号 uchar flag=0,equal_flag; //运算符、等于符 double num1=0,num2=0,num=0,result=0,save_result; //第一个数、第二个数、计算结果

uchar first_num=0,Ans=0,second_num=0; InitLcd(); EA=1; ET0=1; TMOD=0X01; TH0=(65536-500)/256; TL0=(65536-500)%256; write_com(0x80+0x40+15); write_Dat('0'); write_com(0x80); while(1) { while(key_scan()==0xff); TR0=1; if(first==0) { first=1; write_com(0x01); } Key_num=key_scan(); switch(key_scan()) { case 1: if(last_key_num!=Key_num) { write_Dat('l'); write_Dat('n'); ln=1; }break; case 2: if(last_key_num!=Key_num) { write_Dat('s'); write_Dat('i'); write_Dat('n'); Sin=1; }break; case 3: if(last_key_num!=Key_num) { write_Dat('c'); write_Dat('o'); write_Dat('s'); Cos=1;

根据C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示 一、实验目的 1.掌握矩阵式键盘的数字键和功能键的编程方法。 2.掌握LCD的接口技术和编程方法。 3.掌握仪器监控程序设计和调试方法。 二、预习与参考 1. 结合ST7920 控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。 2. 参考资料 1)实验板说明书 2)ST7920 控制器系列中文图形液晶模块资料手册 三、设计指标 利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: 1.LCD上显示“重庆科技学院” 2.按键至少包括0-9的数字键 3.LCD显示按键值 4.电子钟显示:时,分,秒(选作) 四、实验要求 1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。 2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。

五、实验仪器设备和材料清单 单片机实验板、连接导线、ST7920图形液晶模块、PC机; Keil c51软件 六、实验设计及实施的指导 1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。 2.经指导教师检查,预习达到要求者进入实验室实验。 3.按照设计的电路连线,构建键盘及显示系统,经检查无误方可进入下一步。 4.在指导教师指导下调试LCD显示程序。 5.在指导教师指导下调试按键程序。 6.综合调试直到满足设计要求。 七、实验成绩评定方法 实验成绩包括预习、实验完成质量、实验报告质量4部分组成,各部分所占比例分别为30%、30%、40%。 八、实验报告要求 1.实验报告格式: 一.实验名称 二.实验目的 三.实验内容 四.设计思想 五.硬件设计 六.程序代码

基于51单片机的LCD1602显示程序模块

这个是我自己编写的基于51单片机控制lcd602显示的库函数,请下载我的头文件,在网上本人还分享了很多热门模块的库函数,都是现成的,欢迎下载!!!! /************************************************************************ 1,先初始化1602:lcd_init(); 2,调整显示位置:lcd_pos(hang,lie); 3,送显示:lcd_wdat(uchar dat);显示字符 lcd_show(uchar dis[]);显示字符串 4,清屏为:lcd_wcmd(0x01); //清除lcd内容 delay12_ms(2); 注: 显示的时候必须传送对应的ASK码 显示字符串的时候如果超过本行显示范围不会自动跳到第二行占用了P0和P25,P26,P27 同时包含delay.c文件必须 ************************************************************************/ #include "myconfig.h" #include "delay.h" #define LCD_RS P26 //1602的命令和数据选择端 #define LCD_RW P25 //1602的读写控制端 #define LCD_EP P27 //1602是能信号 #define LCD_DATE P0 //1602的数据传输或命令端口 /****************(外部不操作)测忙程序************************/ uchar lcd_bz() { uchar result; LCD_RS =0; LCD_RW =1; LCD_EP =1; _nop_(); _nop_(); _nop_(); _nop_(); result =(P0 &0x80); LCD_EP =0; return result;//返回结果,1为忙,0位空闲 } /****************(外部不操作)写命令函数************************/ void lcd_wcmd(int cmd) { while(lcd_bz()); LCD_RS =0; LCD_RW =0;

基于单片机的电子时钟设计报告(LCD显示)

单片机原理及应用课程设计任务书 题目:电子时钟(LCD显示) 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1~K4功能下。 K1—设置小时。 K2—设置分钟。 K3—设置秒。 程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。 2、工作原理 本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。 3、参考电路 硬件设计电路图如下图所示: 硬件电路原理图 单片机原理及应用课程设计任务书

题目:电子时钟(LCD显示) 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1~K4功能下。 K1—设置小时。 K2—设置分钟。 K3—设置秒。 程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。 2、工作原理 本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。 3、参考电路 硬件设计电路图如下图所示: 硬件电路原理图 基于AT89C51单片机的电子时钟设计报告

一、设计要求与目的 1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。 2)、使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。3)、用3个功能键操作来设置当前时间。 4)、熟悉掌握proteus编成软件以及keil软件的使用 二、本设计原理 本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是否有按键操作,并对每个按键的操作在LCD显示器上作出相应的反应。由于LCD显示器每八位对应一个字符,故把秒、分、时的个位和十位分开表示。 该课题中有三个控制开关KM1、KM2、KM3分别控制时、分、秒的调整,时间按递增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。 三、硬件设计原理(电路) 硬件电路原理图

单片机实验LCD显示实验

实验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)持续时间较长,具体的时序图和时间参数说明查阅相关手册。

实验八单片机液晶显示实验

实验八单片机液晶显示实验 一、实验目的 1、了解液晶显示屏的控制原理及方法。 2、了解点阵汉字的显示原理。 二、实验说明 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 三、实验仪器 计算机 伟福实验箱(lab2000P ) 四、实验内容 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 3、直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。计算机通过地址译码控制E1和E2的选通;读/写操作信号R/W由地址线A1控制;命令/数据寄存器选择信号AO由地址线A0控制。实际电路如上图所示。地址映射 如下(地址中的X由LCD CS决定,可参见地址译码部分说明) 五、思考题 1、显示自己的班级和姓名; 2、可以动态显示,上下或者左右移动; 六、源程序修改原理及其仿真结果 CWADD1 EQU 08000H ;写指令代码地址(E1) DWADD1 EQU 08001H ;写显示数据地址(E1) CRADD1 EQU 08002H ;读状态字地址(E1) DRADD1 EQU 08003H ;读显示数据地址(E1) CWADD2 EQU 08004H ;写指令代码地址(E2) DWADD2 EQU 08005H ;写显示数进地址(E2) CRADD2 EQU 08006H ;读状态字地址(E2) DRADD2 EQU 08007H ;读显示数据地址(E2) PD1 EQU 3DH ;122/2 分成左右两半屏122x32 COLUMN EQU 30H PAGE_ EQU 31H ;页地址寄存器D1,DO:页地址 CODE_ EQU 32H ;字符代码寄存器 COUNT EQU 33H ;计数器 DIR equ 34h dtp1 equ 35h

基于51单片机的液晶显示屏控制系统设计

基于51单片机的液晶显示屏控制系统设计 1 概述 1.1系统背景 液晶显示器件在中国已有二十余年的发展历史。二十余年来,液晶显示器件从实验室走向大规模生产集团,形成了独立的产业部门。现在,液晶显示几乎已经应用于生产,生活的各个领域,人们几乎时时处处都要与这一神奇而又普通的面孔打交道。 液晶显示是集单片机技术、微电子技术、信息处理于一体的新型显示方式。由于液晶显示器具有低压低功耗,显示信息量大易于彩色化,无电磁辐射,长寿命,无污染等特点。LCD是目前显示产业中发展速度最快,市场应用最广的显示器件,成为众多显示媒体中的佼佼者,在越来越多的领域中发挥作用,是目前显示器件中一个理想的选择。 LCD在监控系统中的应用:目前大多数监控系统自带的显示系统为LED数码管显示,这样显示效果比较单一,只能显示监控系统的测量值。而LCD液晶显示器不仅可以显示数值、汉字等,并且可以显示文本和图形。利用LCD和键盘实现人机交互,使监控系统独立工作成为可能。通过监控系统对现场的单回路控制器进行参数设置,对各个单回路控制器的工作进行监控。 LCD在时钟中的应用:在日常生活中我们会经常看到时间的显示,这些显示大都是采用液晶显示器来显示的,而对其中的汉字无法用显示来解决。我们利用LCD液晶模块制成的小屏幕实现了时间的显示,显示格式为“时时:分分:秒秒”。另外,可以增加闹钟功能,时间到了则产生音乐声;还可以增加万年历显示“年月日”等多项功能。 LCD在大屏幕显示中的应用:大屏幕显示的应用范围极广,随着社会发展,公众生活的加强,人们对能够面向广大公众传递信息的显示装置越来越感到必需。使用液晶投影显示大屏幕,不仅有投影仪,指挥用大屏幕,还有液晶投影彩色电视。它可以用一个体积很小的系统装置,实现100英寸以上的非常漂亮的大屏幕电视显示。它与传统的显示媒体相比,具有分辨率极高,透过性好,显示内容丰富,彩色易于控制等优点。 随着计算机技术及电子通信技术的发展,LCD显示屏作为一种新的传媒工具,现已经应用到商业、军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业,大到几十平方米的大屏幕,小到家庭影院用的图文显示屏,以及政府部门应用的电子黑板,证券、银行等部门用的信息数字混合屏。LCD显示屏带来广泛的社会效益和经济效益,具有良好的发展前景。

单片机LED点阵显示方法与程序代码

单片机LED点阵显示方法与程序代码 点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 以逐行扫描为例,从上图可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如下图所示。

一、行扫描静态显示, 用51单片机实现上图静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图显示效果的程序如下:

基于单片机的多功能液晶显示数字时钟设计

基于单片机的多功能液晶显示数字时钟设计 摘要 计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。单片机在这种情况下诞生了。截止今日,单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。 单片计算机即单片微型计算机。是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本文通过对一个基于单片机的能实现定时,秒表,闹钟等功能的多功能电子时钟的设计学习,详细介绍了单片机应用中的数据转换显示,液晶显示原理,键盘扫描原理。从而达到学习、了解单片机相关指令在各方面的应用。系统由AT89C51、温度检测芯片、时钟芯片、液晶显示器等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示和实时温度显示。也具有时钟、日历的校准,定时时间的设定和闹铃等功能。文章后附有电路原理图、PCB板图和程序清单,以供读者参考。因水平有限,难免有疏落不足之处,敬请老师和同学能给与批评指正。 关键字:AT89C51 定时秒表闹钟

Designs of LCD digital clock based on MCS-51 Abstract Computers have accelerated the transformation of the world's human pace, but it is after all bulky. SCM in this case was born. As of today, SCM application rapid development of technology, looking around us now in all spheres of life, from missiles, navigation equipment, to the various instruments on the aircraft control from a computer network communications and data transmission, industrial automation to real-time process control and data processing, and our lives extensive use of the smart card, electronic pets, which is inseparable from the microcontroller. Monolithic single-chip micro-computer or computer. That is the set of CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. Its small size, low cost, high performance, which are widely used in smart industries, and industrial automation. And 51 Series SCM SCM is the most typical and the most representative one. The graduation design Through the study, and thereby achieve the study, design, development hardware and software capabilities. Based on a microcontroller based on the will to achieve timing, stopwatch, alarm clocks, and other functions of a multi-functional electronic clock design study, in detail, the computer application of data conversion, Principle LCD, keyboard scanning principle. Thereby achieve studying and understanding the relevant directives SCM in all aspects of the application. By AT89C51 system, temperature detection chip, the clock chips, liquid crystal displays of components, to achieve clock calendar display function can be carried out, hours seconds of the show and real-time temperature display. Also calculated with the calendar and clock, calendar calibration, regular hours and set the alarm function. The article attached circuit diagram, the PCB plans and procedures checklist for the reference of our readers. Due to limited, and it will inevitably be lighter inadequate, locations will give teachers and students correction and criticism. Key words: AT89C51; timing; stopwatch; alarm clocks

单片机电子时钟LCD显示

单片机电子时钟L C D 显示 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

单片机综合实验报告 题目:电子时钟(LCD)显示 班级: 0310405班 学号: 学生姓名:张金龙 指导老师:高林 2013年 6 月 17 日 一、实验内容: 以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: ●使用字符型LCD显示器显示当前时间。 ●显示格式为“时时:分分:秒秒”。 ●用4个功能键操作来设置当前时间,4个功能键接在~引脚上。 功能键K1~K4功能如下。 ●K1—进入设置现在的时间。 ●K2—设置小时。 ●K3—设置分钟。 ●K4—确认完成设置。 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。

二、实验电路及功能说明 1)单片机主控制模块 以AT89C51单片机为核心进行一系列控制。 2)时钟显示模块 用1602为LCD显示模块,把对应的引脚和最小系统上的引脚相连,连接后用 初始化程序对其进行简单的功能测试。测试成功后即可为实验所用,如图: 3)时间调整电路 用4个功能键操作来设置当前时间,4个功能键接在~引脚上。功能键K1~ K4功能如下。K1—进入设置现在的时间。K2—设置小时。K3—设置分钟。 K4—确认完成设置。如图: 三、实验程序流程图: 主程序: 时钟主程序流程 子程序:

四、实验结果分析

实验结果及分析:单片机的晶振可以根据要求设定。6MHZ为和现实时间显示相同。实验采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。当烧入程序后开始运行,根据初始值设定可以观察到显示的时间,这里为了更明显观察显示数据变化把起始值设为 23:59:50 运行后显示 ,K1为进入现在设置时间,当按下K1后显示 ,和实验要求相比较,实现了按下K1进入现在时间设置,按下K4确认完成时间设置的功能;不同之处: 当进入时间设置时在按下K1设置小时,再次按下K1是设置分钟。增加功能:进入时间设置并选择设置位置后K2键位数字增加功能,K3键为数字减小功能。根据仿真结果能够确定编程正确,基本实现了所有功能,而且有所改进。 五、心得体会 每次做单片机实验都会有不同的等收获,而这次的实验让我感觉收获更大。这次的实验让我巩固了以往所学,而且锻炼了自己发现问题解决问题的能力。在编程过程,发现自己对C语言很生疏,很多 技巧和函数运用都不会,通过参考资料和询问同学终于让我完成了程序,并实现了程序的功能。这不仅提高了自己动手能力,也培养了自己的思考能力。 这次在编程过程中学到了很多新东西,特别是LCD的显示,在设定的显示字符后,正确编译后显示各种设定值,LCD显示16位字 符,在最初编程时编译正确但是LCD上的显示字符有缺失,显示不 完整,经过不断调试发现空格同样占据字符,只有所有字符不超过 16位且位置正确时才能完整正确显示。时间的显示需要每一个显示 的位子有定义,而且要给“:”留下特定位子。同时编程时发现还可以显示其他如日期。但本实验不需要且很难完成最终没实现。

51单片机控制1602LCD显示程序

LCD显示电路 #include sbit RS=P3^7; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P3^6; //读写选择位,将RW位定义为P2.1引脚 sbit E=P2^7; //使能信号位,将E位定义为P2.2引脚 sbit BF=P0^7; //忙碌标志位,将BF位定义为P0.7引脚 #define Lcd_Data P0 #include #include //包含_nop_()函数定义的头文件 unsigned char code string1[ ]= {0x77,0x75,0x20,0x79,0x61,0x6E,0x67,0x20,0x79,0x61,0x6E,0x67,0x20,0x20,0x20,0x20}; //第一行显示的字符 void Lcd_delay1ms() // 函数功能:延时1ms //注:不同单片机不同晶振需要对此函数进行修改 { unsigned char i,j; for(i=0;i<90;i++) for(j=0;j<33;j++); } void Lcd_delay(unsigned int n) // 函数功能:延时若干毫秒,入口参数:n { unsigned int i; for(i=0;i

/***************************************************** 函数功能:判断液晶模块的忙碌状态 返回值:result。result=1,忙碌;result=0,不忙 ***************************************************/ bit Lcd_BusyTest(void) { bit result; RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; //E=1,才允许读写 _nop_(); //空操作 _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 result=BF; //将忙碌标志电平赋给result E=0; return result; } /***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块 入口参数:dictate ***************************************************/ void Lcd_WriteCom (unsigned char dictate) { while(Lcd_BusyTest()==1); //如果忙就等待 RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0; E=0; //E置低电平(写指令时就是让E从0到1发生正跳变,所以应先置"0" _nop_(); _nop_(); //空操作两个机器周期,给硬件反应时间 Lcd_Data=dictate; //将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); //空操作四个机器周期,给硬件反应时间 E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令} /***************************************************** 函数功能:指定字符显示的实际地址 入口参数:x

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[] = {""};

相关文档
最新文档