1、 目 录1课程设计目的32课程设计题目描述和要求 33课程设计报告内容33.1元器件选型及总体设计方案描述 43.2硬件连接设计部分 53.3程序设计部分 93.4实验调试与问题 164总结16参考文献 171.课程设计的目的掌握单片机应用开发全套基本技能,明确单片机应用开发中的要点与难点,掌握电气工程领域的自动化/智能化控制手段(工具),训练技能。2课程设计题目描述和要求2.1课程设计题目描述液晶显示设计与实现:要求自制单片机小系统板(或在单片机小系统开发板上),选定具体一款液晶,在液晶上实现显示任意中文、英文、数字或图形;或进一步实现滚屏,翻屏,闪烁,黑白反显,汉字倒转等功能。 2.2课程
2、设计要求 (1)根据课题设计内容进行元器件选型、列出元器件清单、自行购买、硬件电路制作与调试(硬件需带串口下载功能),并且使用Protell软件绘制电路原理图; (2)掌握 Keil或HK-51开发仿真系统,进行软件编程与调试;(3)软件编程选择Asm或C51语言均可,要求绘制程序流程图,对所编写的软件进行相应的注释;(4)程序调试成功后,要求烧录(固化)到程序存储器中;(5)完成作品并进行功能验收,完成课程设计说明书(列出元器件清单、Protell软件绘制电路原理3.课程设计报告内容 3.1元器件选型及总体设计方案描述 (1)元器件选型:武汉恒科电子教仪MCS-51仿真实验开发板; STC8
3、9C52单片机 RT12232液晶显示器(2)总体设计方案描述本实验系统分为单片机最小系统板和液晶显示两部分。单片机最小系统负责接收个人计算机所编辑的文本及内容,通过串行接口完成单片机与PC机之间的数据传送,而个人计算机,主要完成显示内容编辑、字模数据的查找、显示程序的发送(烧写)等工作。文本编编辑软件有多种,本次试验我们选用的是集编辑、编译、纠错等多种功能于一体的Keil C。我们先将要显示的内容(包括汉字、中英文字母等)编辑成一个文本文件,然后通过已经编写好的应用程序在特定的字库中依次搜索到文本文件中的内容,并且取出该字符的字模数据。整个程序建立好后通过编译就可以生成一个可烧录的hex文件
4、存放在PC机的硬盘上,等到需要的时候通过串行通信软件将该可烧录文件烧入给液晶显示系统模块的单片机中。因此在单片机的选择上我们选用了STC89C52。显示系统模块上电后,单片机小系统就会按照所编辑的固定一步步运行。在其控制下使液晶不断接收需要显示字符的字模数据。在液晶显示屏上显示出内容。由于12232比较常见,故本次原则RT12232的液晶显示器。根椐设计题目要求选用的是STC89C52单片机芯片和内置控制器为RT12232的液晶显示屏,总体设计共分为3个模块:将在PC机上编译的可执行程序烧录进单片机的串行烧录模块;储存程序以及处理程序的STC89C52芯片;显示效果的LCD液晶电路模块。这3种
5、模块协同工作,组成了整个显示系统。在整个系统中,STC89C52单片机是最重要的核心部件,与其它模块一起协作,构成了整个显示系统。而单片机与复位电路,晶振电路,三者一起构成了单片机最小系统,只有在复位电路,晶振电路相辅助的情况下,单片机才能构正常工作。复位电路提供给单片机的复位引脚一个确定的信号,在单片机在死机,程序跑偏等情况下,可以通过复位电路使单片机恢复到初始状态重新开始工作。在单片机正常运行时可以保证单片机不会误复位。晶振电路提供给单片机一个固定的时钟频率。保证整个单片机各单元间协调统一地运行。串口烧录电路是单片机与PC机之间通信的桥梁。通过烧录电路,用户可以将要显示的字符程序烧进单片机
6、的Flash保存起来。在脱离PC的状态下,给系统通电时,单片机就会自动运行,控制显示屏显示出在程序中设定好的字符。3.2硬件连接设计部分12232液晶与STC89C52单片机电路连接图如下图1所示: 图1液晶与STC89C52单片机电路连接图由上图可以看出,在本系统中只用到STC89C52单片机的P1口与P3口资源,系统采用最简单的直接访问方式,P1作为数据口向12232液晶传送待显示的图形符号字模数据,P3口的P3.4、P3.5、P3.6、P3.7分别独立由单片机控制。来使液晶模块按指定要求正常工作。液晶显示器RT12232由两片SED1520构成,下面将详细介绍STC89C52单片机和SE
7、D1520液晶的功能和用法。 (1)STC89C52的引脚及功能STC89C52的外观及引脚图如下图2所示:图2 STC89C52引脚图P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位驱动8个TTL逻辑电平。对PO口端口写“1”时,引脚作高阻抗输入。当访问外部程序和数据存储时,P0口也被作为低8位地址/数据复用。在这种模式下,P0口具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电
8、阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,与P1口相同。 P3口:与P2口相同。ALE/PROG当访问外部程序储器时,ALE输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/16输出固定的脉冲信号,因些它可对外输出时钟或用于定时目的。PSEN程序存储允许(P
9、SEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序储器器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH)EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。(2)SED1520液晶显示器SED1520液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8位微处理器相连,集行、列驱动器于一体,因此使用起来十
10、分方便,作为内藏式控制器被广泛应用于点阵数较少的液晶显示模块。SED1520液晶显示器的特性有(1)内部显示RAM容量为2560b。其每一位数据控制液晶屏上一点的亮灭状态。“1”表示亮,“0”表示暗;(2)具有16个行驱动输出和61个列驱动输出;(3)可直接与80系列微处理器相连,亦可直接与68系列微处理器相连;(4)驱动占空比为1/16或1/32;(5)可以与SED1520级联使用,以便扩展行、列驱动能力。序号符号状态功能:1Vcc-逻辑电源正, 9DB0三态数据总线(最低位),2GND-逻辑电源地, 10DB1三态数据总线,3V0-液晶显示驱动电源, 11DB2三态数据总线,4RES-复位
11、, 12DB3三态数据总线,5E1输入主工作方式IC的使用信号, 13DB4三态数据总线,6E2输入从工作方式IC的使用信号, 14DB5三态数据总线,7R/W输入读/写选择信号, 15DB6三态数据总线,8A0输入寄存器选择信号, 16DB7三态数据总线(最高位)SED1520控制指令要使内置SED1520图形液晶显示模块还需要了解其软件特性,即SED1520的指令功能。SED1520指令一览表如下表1所示:表1SED1520控制指令指令名称控制信号控制代码A0 R/WD7 D6 D5 D4 D3 D2 D1 D0复位0 01 1 1 0 0 0 1 0显示开关设置0 01 0 1 0 1
12、1 1 DI地址排序设置0 01 0 1 0 0 0 0 A休闲状态设置0 01 0 1 0 0 1 0 S占空比设置0 01 0 1 0 1 0 0 DU显示起始行设置0 01 1 0 L4 L3 L2 L1 L0页面地址设置0 01 0 1 1 1 0 P1 P2列地址设置0 00 C6 C5 C4 C3 C2 C1 C0启动改写方式0 01 1 1 0 0 0 0 0结束改写方式0 01 1 1 0 1 1 1 0读取状态字0 1BUSY ADC ON/OFF RESET 0 0 0 0写显示数据1 0数据读显示数据1 1数据SED1520的13条指令从作用上可以分为两大类:一类为显示方
13、式的设置指令,前六条指令为这一类指令,它们只需在初始化程序中写入一次就可以了。另一类为显示数据读/写操作的指令,从第七条往下(包括状态字)都是这类指令,它们需要经常地使用。3.3程序设计部分程序开始运行后,要对液晶显示进行初始化,初始化后清屏,为输出数据准备。然后调用显示程序,在显示屏上显示数据。如果有按键的话,程序会进行相应的处理,如此循环。主程序框图如下图3所示: 图3 主程序流程图下面将详细描述各块程序:(1)初始化程序初始化主要是完成对于SED1520控制器的设置,由于采用C51语言进行编程,使得初始化十分简捷,只需调用初始化程序分别对两块SED1520液晶进行复位、关休闲,进入正常工
14、作状态、占空比选择1/32、adc选择、设置起始行、开显示、清屏等操作。在液晶显示信息之前,必须先对液晶进行初始化。初始化的流程如图4所示 图4初始化程序流程图程序如下:INIT: MOV COM,#0E2H ;复位 LCALL PR0 LCALL PR3 MOV COM,#0A4H ;关闭休闭状态 LCALL PR0 LCALL PR3 MOV COM,#0A9H ;设置1/32占空比 LCALL PR0 LCALL PR3 MOV COM,#0A0H ;正向排序设置 LCALL PR0 LCALL PR3 MOV COM,#0C0H ;设置显示起始行为第一行 LCALL PR0 LCALL
15、 PR3 MOV COM,#0AFH ;开显示设置 LCALL PR0 LCALL PR3 RET(2)清屏程序CLEAR: MOV R4,#00H ;页面地址暂存器设置 CLEAR1: MOV A,R4 ;取页地址值 ORL A,#0B8H ;或页面地址设置代码 MOV COM,A ;页面地址设置 LCALL PR0 LCALL PR3 MOV COM,#00H ;列地址设置为0 LCALL PR0 LCALL PR3 MOV R3,#50H ;一页清80个字节CLEAR2: MOV DAT,#00H ;显示数据为0 LCALL PR1 LCALL PR4 DJNZ R3,CLEAR2 ;页
16、内字节清零循环 INC R4 CJNE R4,#04H,CLEAR1 ;RAM区清零循环 RETPR0: CLR A0 ;AO0SETB R_W ;R_W1PR01: MOV P1,#0FFH ;P1口置1SETB E1 ;E11MOV A,P1 ;读状态字CLR E1 ;E10JB ACC.7,PR01 ;判忙标志为0,否再读CLR R_W ;R_W0MOV P1,COM ;写指令代码SETB E1 ;E11CLR E1 ;E10RET(2)显示程序如下图5所示,程序运行至中文显示程序时,会在中文字库中查找字符码并计算字模地址。然后设置显示屏的页地址。在计算一列的位置后,程序依次从字库中调出
17、一列字模的数据输出到显示屏上,直到这一页写完为止。写完一页后,程序会调用换屏程序。换屏程序进行清屏,然后继续依次调一列字模数据输出到显示屏上,直到写完这一页。程序可以不停运行,可以调用延时来控制。 图5显示程序流程图比如要显示一个“曾”字。它的字库是:db 00h, 00h,0F0h, 11h, 52h, 14h, 10h,0F0h ;曾db 10h, 14h, 52h, 11h,0F8h, 10h, 00h, 00hdb 00h, 00h, 01h, 01h,0FDh, 55h, 55h, 55hdb 55h, 55h,0FFh, 05h, 01h, 00h, 00h, 00h要在液晶屏上显
18、示出来,要执行下面的程序:AAA: MOV A,#0D8H ;显示起始行为第16行MOV COM,A ;COM是指令寄存器 通过COM写指令LCALL PR0 ;调用写指令代码子程序LCALL PR1 ;调用写数据子程序MOV CTEMP,#0 ;列初值MOV PAGE_,#01H ;页面是第一页MOV A,CTEMP ;设置这个字要从哪一列显示,这里是从00H就是0列ADD A,#00H MOV COLUMN,AMOV CODE_,#00H ;CODE是字符代码寄存器,写入要显示字符的位置,00H是第0个字符,也就是首字符LCALL CCW_PR ; 调用中文显示子程序;;-中文显示子程序C
19、CW_PR: MOV DPTR,#CCTAB ;确定字符字模块首地址MOV A,CODE_ ;取代码MOV B,#20H ;字模块宽度为32个字节MUL AB ;代码32ADD A,DPL ;字符字模块首地址MOV DPL,A ;字模库首地址代码32MOV A,BADDC A,DPHMOV DPH,APUSH COLUMN ;列地址入栈PUSH COLUMN ;列地址入栈MOV CODE_,#00H ;代码寄存器借用为间址寄存器CCW_1: MOV COUNT,#10H ;计数器设置为16MOV A,PAGE_ ;读页地址寄存器ANL A,#03HORL A,#0B8H ;”或”页地址设置代码
20、MOV COM,A ;写页地址设置指令LCALL PR0LCALL PR3POP COLUMN ;取到地址值MOV A,COLUMN ;读列地址寄存器CLR CSUBB A,#PD1 ;列地址减模块参数JC CCW_2 ;0为左半屏显示区域(E1)MOV COLUMN,A ;0为右半屏显示区域(E2)MOV A,PAGE_SETB ACC.3 ;设置区域标志位。MOV PAGE_,A ;”0”为E1,”1”为E2CCW_2: MOV COM,COLUMN ;设置列地址值MOV A,PAGE_ ;判区域标志以确定设置哪个控制器JNB ACC.3,CCW_3LCALL PR3 ;区域E2LJMP
21、CCW_4CCW_3: LCALL PR0 ;区域E1CCW_4: MOV A,CODE_ ;取间址寄存器值MOVC A,A+DPTR ;取汉字字模数据MOV DAT,A ;写数据MOV A,PAGE_JNB ACC.3,CCW_5LCALL PR4 ;区域E2LJMP CCW_6CCW_5: LCALL PR1 ;区域E1CCW_6: INC CODE_ ;间址寄存器加一INC COLUMN ;列地址寄存器加一MOV A,COLUMN ;判列地址是否超出区域范围CJNE A,#PD1,CCW_7CCW_7: JC CCW_8 ;未超出则继续MOV A,PAGE_ ;超出则判是否在区域E2JB
22、 ACC.3,CCW_8 ;在区域E2则退出SETB ACC.3 ;在区域E1则修改成区域E2MOV PAGE_,AMOV COM,#00H ;设置区域E2列地址为”0”LCALL PR3CCW_8: DJNZ COUNT,CCW_4 ;当页循环MOV A,PAGE_ ;读页地址寄存器JB ACC.7,CCW_9 ;判完成标志D7位,”1”则完成退出INC A ;否则页地址加一SETB ACC.7 ;置完成位为”1”CLR ACC.3MOV PAGE_,AMOV CODE_,#10H ;间址寄存器设置为16LJMP CCW_1 ;大循环CCW_9: RET执行完着一段后,整个“曾”字就显示出来
23、了。3.4实验调试与问题 这次课程设计主要是用STC89C52单片机控制由两块SED1520集成块组合成的12232点阵液晶显示器。调试过程中由于接线一些接触不良和串口线的问题花费了我们很多的时间,发现问题出在驱动上后,我们及时更换了一个新的串口线,然后改良了接线稳定性的问题,液晶上终于出现了显示结果。此次系统的设计与制作工作已经全部完成,基本达到了预期的目的与要求。但是在系统的调试方面还不够健全。汉字的动态显示、显示内容的实时更新等方面做得不够好,但是由于时间仓促、条件有限,设计结果并不是很好,诸如:显示内容单一,亮度不够、动态显示效果不明显等问题。4.总结通过这次对课程设计,让我们了解了单
24、片机液晶显示的原理与设计方法。要设计好首先要查阅相关资料,只有弄清楚了原理才能顺利的设计出来。通过这次学习让我了解了只有自己动手才实际操作会有深刻理解。在这次试验中发现了一个问题,那就是程序的设计一定要细心,耐心。这两点是很重要的。在调试过程中,任何小问题都可能导致错误,所以我们必须一点一点细心检查,这就需要我们有足够的耐心。自己觉得这次课程设计十分的有意义。我们在课堂上掌握的仅仅是专业基础课的理论面而只有通过类似的课程才能将理论与现实结合起来,加深我们对理论的而理解,而且能使我们更灵活的在实际中运用它。这门课程为我们提供了良好的实践平台。在做本次实验中,我查阅了很多书籍,也给了我很大收获,发
25、现在学习过程中带着问题去学习的效率很高,边学边思考这样学习效率才会高。这次课程设计顺利完成是得到了老师和同学的帮助,在此,我要真诚的感谢老师和同学们。希望以后还能有这样的机会进行深入的学习 参考文献1胡汉才单片机原理及接口技术北京:清华大学出版社,19962卢艳军单片机基本原理及应用系统北京:机械工业出版社,20053陈宝江MCS单片机应用系统指南北京:机械工业出版社,19974张毅刚等MCS-51单片机应用设计哈尔滨:哈尔滨工业大学出版社,1997.125高海生等单片机应用技术大全.西安西安交通大学出版社, 1991.12课程设计成绩:项 目业务考核成绩(70%)(百分制记分)平时成绩(30%)(百分制记分)综合总成绩(百分制记分)注:教师按学生实际成绩(平时成绩和业务考核成绩)登记并录入教务MIS系统,由系统自动转化为“优秀(90100分)、良好(8089分)、中等(7079分)、及格(6069分)和不及格(60分以下)”五等。指导教师评语:指导教师(签名): 2011年 月 日17