- 概述
1.1课程设计简介
亮丽实用的广告牌可以给我们的生活添加光彩、可以给店铺招揽生意。传统的广告牌都是固定的汉字,并且时间长了会掉色,使汉字模糊难认,这就给我的生活带来很多的不便。尤其到了晚上传统广告牌就会失去其该有的作用。所以在这里我们需要一种造价低廉、使用方便、可以发光并且比较耐用的电子广告牌。本文主要介绍LCD文字循环显示的基本原理以及制作流程来解决以往的传统广告牌并且做到节约资源来达到比以往达到更好的效果。本课题设计了一种以AT59C51单片机为核心的低成本、高精度、微型化LCD文字循环显示系统。
主要实现循环显示4个字符串,在第1行显示一字符串,5s后,第2行显示另外一字符串,再过5s后,第1行显示其他字符串,再过5s后,第2行显示另外一字符串(要求一个字符一个字符地显示)的功能。
1.2 系统方案论证与设计
方案一、基于单片机的LED显示广告牌
LED显示屏是由发光二极管排列组成的。它采用低电压扫描驱动,具有耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点。可以显示各种文字、数字、图像及动画等信息。
方案二、基于单片机的LCD显示广告牌
随着集成电路在为微小型化、低功耗和高可靠性方面的发展,使得它们具有占用面积小、价格低廉、易于购买、零辐射、低耗能、散热小、轻薄纤巧、精确还原图像、显示字符锐利、屏幕调节方便等诸多优点。
在设计的过程中,方案的选择必须与实际相联系,要从各个方面考虑设计的可行性,不仅要考虑其先进性也要考虑其现实性和实用性,要从多个方面综合寻求最佳方案。在方案一中利用LED点阵显示的方式能够实现广告牌显示的目的,但电路相比方案二相对复杂,而且控制起来还需要掌握其他一些附加的芯片。
在方案二中,所用技术相对先进,而且硬件电路相对简单可靠,不需要附加其他的芯片,故利用方案一更为合理,故暂不采用方案一。
第2章 系统硬件设计
2.1 系统总电路的设计
2.1.1 系统的总框图
图2.1系统总框图(详见附件)
图2.1是LCD的电子广告牌的系统总框图,它的基本组成由核心芯片AT89C51,最小系统以及LCD1602显示屏。
2.1.2 芯片的选择
1、AT89C51介绍
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机。片内4kbytes的可反复擦写的只读存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)
和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各个控制领域。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系提供了一种灵活性高且价廉的方案。
图2.2 AT89C51引脚图
AT89C51具有以下标准功能:8k字节Flash,256字节RAM,32位IO口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C51可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
引脚功能介绍
VCC:供电电压
GND:接地
P2口:P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2、LM016L介绍
我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位 为“ 1 ”,其它 的 为“ 0 ”,为“ 1 ”的 点 亮,为“ 0 ”的 不 亮。这 样一 来 就 组 成 某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
图2.3 LM016L引脚图
表2.1 LM016L引脚功能表
2.2 最小系统设计
2.2.1 时钟电路的选择与设计
图2.5 时钟电路图
时钟电路用于产生MCS-51单片机工作时所必需的时钟控制信号,严格执行指令进行工作,在执行指令时,CPU首先要到程序存储器中取出所需要的指令作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。CPU发出的时序信号有两类,一类用于片内对各个功能部件的控制,另一类用于对片外存储器或I/O端口的控制。MCS-51单片机各功能部件的运行都是以时钟信号为基准,有条不紊地一拍一拍地工作,因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。1.内部时钟电路 AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端引脚为XTAL2,。这两个引脚外部跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。 电路中的电容C1和C2的典型值为30pF。晶体振荡频率通常选择6MHZ、12MHZ(可准确地定时)的石英晶体。
2.2.2 复位电路的选择与设计
图2.6 复位电路图
为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位,一般电路正常工作需要供电电源为4.75-5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体震荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作.AT89C51单片机的复位由外部的复位电路实现。复位电路有上电复位与人工复位两种。上电复位的工作原理是+5V的电源通过电容C与电阻Rk回路,给电容C充电加给RST引脚上一个短暂的高电平信号,此信号随着Vcc对电容C的充电过程中而逐渐回落。充电时间越长,复位时间越长。当时钟频率选择6MHZ时,电容C的参考值为22pF,两个电阻Rs与Rk的参考阻值分别为220Ω与1kΩ一般来说,单片机的复位速度比外围I/O接口快些,因此实际设计中,为保证系统可靠复位,单片机初始化时可安排一定的复位延迟时间,保证与外围I/O接口电路都能可靠地复位。
2.2.3 电源电路的选择与设计
芯片AT89C51及LCD1602工作电压为5V,而proteus给出的模拟的电压默认为5V,所以直接供电的。
2.1.3 LCD显示电路
AT89C51中的P2口分别和LCD1602中的D0~D7连接,P2.0对应D0,以此类推。P3.0端连接RS端,P3.1端连接R/W端,P3.2端连接使能端E端。Vss接电源地,Vdd接+5V逻辑电源,Vee连接滑动变阻器。通过以上连接构成显示电路,为之后的调试仿真奠定基础。
第3章 系统软件设计
3.1 设计方案及原理
利用LCD循环显示四行固定字符串。第一步先显示每行字符串 ,四行需要四个LOOP循环,显示出每行字符。第二步解决每行之间的时间间隔,添加一个延时程序,通过调用延时程序实现行与行之间的长延时。第三步LCD显示字符串的时候,要求是一个一个字符显示,故要利用小延时程序,可解决。显示一个字符后,光标加一表示下一个字符显示的位置。因此显示四行固定字符串的时候,我们可以先将四行固定字符串通过子程序表示出来,然后通过程序调用。光标操作为当写一个字符后地址指针加一。最后,选择好初始地址后,利用一个循环结构程序将整个字符串内容在LCD上显示出来。因为要显示四行而LM160L只能显示2行,所以需要清屏操作,而使字符串循环显示只需加一个程序即可。
3.2 系统软件流程图
3.1流程图 (详见附件)
3.3 子程序的介绍
3.3.1 初始化
- RS EQU P3.0 ;定义P3.0引脚变量
- RW EQU P3.1 ;定义P3.1引脚变量
- E EQU P3.2 ;定义P3.2引脚变量
- LCD EQU P2 ;定义P2口
- BF EQU P2.7
- ORG 0000H
- LJMP MAIN
- ORG 0100H
- MAIN: MOV A,#01H ;01H为清屏操作命令(命令1)
- ACALL W_CMD ;向1602写入命令01H
- MOV A,#38H ;38H为功能设置命令(命令6)
- ACALL W_CMD ;向1602写入命令38H
- MOV A,#0CH ;0CH为显示控制命令(命令4)
- ACALL W_CMD ;向1602写入命令0CH
- MOV A,#14H ;14H为光标移位命令(命令5)
- ACALL W_CMD ;向1602写入命令14H
- MOV A,#83H ;80H(80H+03H)显示位置设置(命令8) ,第1行从00H
- 开始
- ACALL W_CMD ;向1602写入命令80H
- MOV DPTR,#TAB ;显示字符的ASCII码表的首地址送DPTR
- MOV R0,#0 ;寄存器R0为显示字符个数的计数器
- 上述这段程序是我们对LCD1602引脚进行的定义,写入相应的命令字以及显示字符串的位置。
- 3.3.2 显示程序
- LOOP1: MOV A,R0
- MOVC A,@A+DPTR ;将显示字符的ASCII码送A
- ACALL W_DATA ;显示字符的ASCII码1602
- INC R0 ;字符个数的计数器增1
- ACALL DELAY ;字符之间的小延时,使字符一个一个显示
- CJNE R0,#10,LOOP1 ;第1行显示10个字符是否发送完毕
- MOV A,#0C3H ;C0H(80H+43H)显示位置设置(命令8) ,第2行从 40H 开始
- ACALL W_CMD ;向1602写入显示位置设置命令
- ACALL DELAY5S ;每行之间延时5S
- 上述这段程序是一个小循环,主要在LCD1602第一行上显示出相应的字符串,间隔5S。然后依次显示第二行,第三行,第四行。第二行显示的程序和第一行是大同小异的,只是显示的位置不同而已。第三行显示之前有个清屏的程序即MOV A,#01H;ACALL W_CMD,其他部分都整体相同。第四行显示原理及程序和第二行差不多。
- W_CMD: ACALL WAIT
- MOV LCD,A
- CLR RS
- CLR RW
- SETB E
- NOP
- CLR E
- RET
上段程序为写入命令子程序,入口参数A中存储了向1602写入的命令,通过子程序调用使之功能实现。下表为关于RS、RW引脚的介绍。
表2.2 LM016L寄存器选择控制表
3.3.3 延时程序
DELAY5S: PUSH 04H
PUSH 05H
PUSH 06H
MOV R4,#50
DELAY5S_0: MOV R5,#200
DELAY5S_1: MOV R6,#245
DJNZ R6,$
DJNZ R5,DELAY5S_1
DJNZ R4,DELAY5S_0
POP 06H
POP 05H
POP 04H
RET
上段程序是一个5S的延时程序,它首先开辟存储空间,堆栈将循环指令放在存储空间中,因为存储空间最大数字为256,所以多条进栈、出栈,循环嵌套使之能延时5S。其中DJNZ指令表示减一不为零转移指令,通过这条指令可对延时时间进行计算。程序当中还有个小延时程序,它主要实现字符一个一个显示,其原理大致与延时5S差不多。
第4章 软件仿真
4.1 keil软件介绍
keilC51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
C51工具包的整体结构,μVision与Ishell分别是C51 for Windows 和for Dos 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.obj)。目标文件可由LIB51 创建生成库文件,也可以与库文件一起经L51 连接定位生成绝对目标文件(.abs)。abs文件由OH51 转换成标准的hex 文件,以供调试器dScope51 或tScope51 使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil μVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
4.2 proteus软件介绍
Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。在Proteus 软件包中,不存在同类仪表使用数量的问题Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。
4.3 仿真电路图
图4.1 总电路图
上图是LCD的电子广告牌的总电路图,它的基本组成由核心芯片AT89C51,时钟电路,复位电路以及LCD1602显示屏。
4.4 仿真结果与分析
图4.2 仿真电路图
上图是我们点击开始之后的第一个仿真效果图,显示的是第一行的字符串”Welcome To”,间隔5S之后第二行显示Wu Hu字符串,经过软件进行清屏以后,间隔5S后,在第一行位置显示第三行的An Gong Cheng字符串,间隔5S之后在第二行位置显示第四行Zi Dong Hua字符串,然后一直循环显示上述字符串。
小 结
本次课程设计经过我们小组成员共同努力做成了LCD电子广告牌的设计,主要实现循环显示4个字符串,在第1行显示一字符串,5s后,第2行显示另外一字符串,再过5s后,第1行显示其他字符串,再过5s后,第2行显示另外一字符串(要求一个字符一个字符地显示)的功能。
当然在设计的过程中我们也遇到了一些问题。比如问题一“显示每行字符串,硬件图连接好,且程序编译通过没有错,生成.hex文件后下载到protues单片机进行仿真,点开始后,液晶屏亮,但是液晶屏并没有显示,一段时间后仍是如此”,检查程序后,发现有一行程序其控制显示字符并没有弄懂什么意思就使用,导致程序没错,就是无法显示。通过上网,查阅书籍寻找答案,并解决。问题二“还有我们想显示第三第四行的程序但是和第一第二行程序混合在一起”,通过查阅书籍和在老师的帮助下,添加了一个清屏的操作,使第三第四行显示出来。问题三“四行程序完全显示结束之后就结束了,没有达到设计要求”,经过小组讨论,添加一个AJMP MAIN程序,使程序能循环显示。
通过这次课程设计,我深刻理解到像单片机这种课程,如果一味专研课本,盲目记忆指令,这样得来的知识是表层的,是肤浅的,是不能灵活运用于实际生活中去的。只有在掌握相关理论只是后,配以相应实践练习,多动手锻炼自己,不但加深了对理论知识的理解,还让自己对课程设计产生了浓厚的兴趣。而且看到了自己学习的知识在现实生活中的应用。
通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的电路应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!我将会在以后的生活中继续学习。
参考文献
[1]张毅刚,刘杰. MCS-51系列单片机原理及应用[M]. 哈尔滨:哈尔滨工业大学出版社,2004.
[2]蔡美琴,张为民等.MCS-51系列单片机系统及其应用[M]. 北京:高等教育出版社,1992.
[3]王鸿钰.步进电机控制入门[M].上海:同济大学出版社,1990..
[4]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[M].北京:北 京航空航天大学出版社,2006
[2]蔡美琴,张为民等.MCS-51系列单片机系统及其应用[M]. 北京:高等教育出版社,1992.
[3]王鸿钰.步进电机控制入门[M].上海:同济大学出版社,1990..
[4]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[M].北京:北 京航空航天大学出版社,2006
[5]李广弟,朱月秀,冷祖祁.单片机基础[M].北京:北京航空航天大学出版社,2007
附录A