还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计说明书课程名称protel软件及单片机技术综合训练教学部专业班级学号学生姓名指导教师沈航北方科技学院课程设计任务书
(一)主要内容熟练掌握ocmj4x8c_3型号液晶显示屏,尺寸128*64DOTS,通过MCS-51单片机提供控制字发送指令,以8位16进制转换成数据,在液晶屏上显示出来
(二)基本要求1.用液晶屏显示辽宁省地图,并标出省会沈阳的位置2.完成课程设计报告
(三)主要参考书
[1]李鸿.单片机原理与应用.湖南大学出版社,2005年
[2]李恩林,陈斌生.微机接口技术300例.机械工业出版社,2003年
[3]王浩.单片机系统设计与实践.湖南大学出版社,2005年
[4]祁宏林.微机接口技术.机械工业出版社,2003年
[5]张俊谟、单片机中级教程-原理与应用.北京____大学出版社,1999
[6]汪道辉.单片机系统设计与实践.电子工业出版社,2006年
[7]何宏.单片机原理与接口技术.国防工业出版社,2006年
[8]李鸿.单片机原理与应用.湖南大学出版社,2005年
[9]李恩林,陈斌生.微机接口技术300例.机械工业出版社,2003年
[10]许瑞.单片机原理与接口技术.人民大学出版社,2006年
[11]王浩.单片机系统设计与实践.湖南大学出版社,2005年
(四)评语
(五)成绩指导教师年月日负责教师年月日摘要单片机具有控制功能强,集成度高、可靠性高、体积小,低电压、低能耗等特点,并且具有优异的性能__比自20世纪70年代问世以来,受到人们的广泛__几十年间,单片机的发展十分迅猛,在控制领域独占鳌头在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种这次课程设计通过对它的学习、应用,以单片机为核心,辅以必要的电路,设计了一个简易的液晶屏显示地图的程序,它由直流电源供电,通过LCD显示出来LCD还可以显示字母、数字符号、中文字型,具有绘图及文字画面混合显示功能现代社会对液晶屏显示一些字体和图形的应用十分普遍,比如公交车上的报站牌,建筑楼上的__标语等等本此课设所要求的是将单片机与LCD液晶屏相结合,并编写相应的程序在液晶屏上显示出辽宁省地图关键词LCD液晶屏51单片机辽宁省地图目录TOC\o1-3\u摘要I1绪论12总体方案设计
22.1OCMJ4X8C_3型液晶显示屏的工作原理
22.2串行接口与串行传输资料
42.3汉字图形显示步骤53硬件设计
63.1电路设计
63.2LCD液晶屏外形尺寸图及坐标图
63.3功能模块设计74软件设计
94.1主程序流程图
94.2LCD显示模块设计105调试分析106结论107总结11附录一12附录二121绪论 单片机又称单片微控制器它不是完成某一个逻辑功能的芯片而是把一个计算机系统集成到一个芯片上概括的讲一块芯片就成了一台计算机它的体积小、质量轻、__便宜、为学习、应用和__提供了便利条件同时,学习使用单片机是了解计算机原理与结构的最佳选择 单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件 它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别单片机是靠程序的,并且可以修改通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的一个不是很复杂的功能要是用美国50年代__的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! 由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级___还要用呢?很多高级的语言已经达到了可视化编程的水平___不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的 可以说,__世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代不过,这种电脑,通常是指个人计算机,简称PC机它由主机、键盘、显示器等组成还有一类计算机,大多数人却不怎么熟悉这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制因为它体积小,通常都藏在被控机械的“肚子”里它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等现在有些工厂的技术人员或其它业余电子__者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上在当今社会中,LCD液晶屏的使用非常广泛,在工业上可以通过液晶屏显示一些数值,比如测量电压表等;在生活中,可以通过液晶屏显示一些人们日常生活中所需的资料但液晶屏显示的使用也非常方便,只需要工作人员很简单的操作、控制,人们就可以很直观的去查看一些信息液晶屏的使用简单方便,本文介绍的是ocmj4x8c_3型号液晶显示屏,尺寸是128*64DOTS,通过51单片机以8位16进制转换的数据,在液晶屏上显示出来此系统核心部件是MCS-51单片机、LCD显示器2总体方案设计
2.1OCMJ4X8C_3型液晶显示屏的工作原理此模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块内置2M-位中文字型ROMCGROM总共提供8192个中文字型16x16点阵,16K位半宽字型ROMHCGROM总共提供126个符号字型16x8点阵,64x16位字型产生RAMCGRAM,另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示提供多功能指令画面清除(Displayclear)、光标归位(Returnhome)、显示打开/关闭(Displayon/off)、光标显示/隐藏(Cursoron/off)、显示字符闪烁(Displaycharacterblink)、光标移位(Cursorshift)、显示移位(Displayshift)、垂直画面卷动(Verticallinescroll)、反白显示(By_linereversedisplay)、待命模式(Standbymode)表-1OCMJ4X8C_3的引脚说明引脚名称方向说明1VSS-GND0V2VDD-SupplyVoltageForLogic+5V3NC-SupplyVoltageForLCD悬空4RSCSIH:DataL:InstructionCode5R/WSTDIH:ReadL:Write6ESCLKIEnableSignal高电平有效7DB0I/O数据08DB1I/O数据19DB2I/O数据210DB3I/O数据311DB4I/O数据412DB5I/O数据513DB6I/O数据614DB7I/O数据715P__IH:ParallelModeL:SerialMode16NC-空脚17/RSTIResetSignal低电平有效18NC-空脚19LEDA-背光源正极(+5V)20LEDK-背光源正极(0V)图5液晶显示电路
2.2串行接口与串行传输资料当P__脚接低电位时,模块将进入串行模式从一个完整的串行传输流程来看,一开始先传输启始字节,它需先接收到五个连续的〝1〞(同步位字符串),在启始字节,此时传输计数将被重置并且串行传输将被同步,再跟随的两个位字符串分别指定传输方向位(RW)及寄存器选择位(RS),最后第八的位则为〝0〞在接收到同步位及RW和RS资料的启始字节后,每一个八位的指令将被分为两个字节接收到较高4位(DB7~DB4)的指令资料将会被放在第一个字节的L__部分,而较低4位(DB3~DB0)的指令资料则会被放在第二个字节的L__部分,至于相关的另四位则都为0串行传输讯号请参考下图说明图6液晶显示时序图图7串行接口时序图
2.3汉字图形显示步骤
1、显示资料RAM(DDRAM)显示数据RAM提供64x2个字节的空间,最多可以控制4行16字(64个字)的中文字型显示,当输入显示资料RAM时,可以分别显示CGROM,HCGROM与CGRAM的字型;本系列模块可以显示三种字型,分别是半宽的HCGROM字型、CGRAM字型及中文CGROM字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H~0006H的定字型,02H~7FH的编码中将选择半编码中将选择CGRAM的自宽英数字的字型,至于A1以上的编码将自动的结合下一个字节,组成两个字节的编码达成中文字型的编码BIG5(A140~D75F)GBA1A0~F7FF,详细各种字型编码如下1).显示半宽字型将8位资料写入DDRAM中,范围为02H~7FH的编码2).显示CGRAM字型将16位资料写入DDRAM中,总共有0000H,0002H,0004H,0006H四种编码3).显示中文字形将16位资料写入DDRAM中,范围为A140H~D75FH的编码BIG5,A1A0H~F7FFH的编码GB将16位资料写入DDRAM方式为透过连写入两个字节的资料来完成,先写入高字节(D15~D8)再写入低字节(D7~D0)
2、绘图RAM(GDRAM)绘图显示RAM提供64x32个字节的记忆空间由扩充指令设定绘图RAM地址,最多可以控制256x64点的二维绘图缓冲空间,在更改绘图RAM时,由扩充指令设定GDRAM地址先设垂直地址再设水平地址连续写入两个字节的数据来完成垂直与水平的坐标地址,再写入两个8位的资料到绘图RAM,而地址计数器(AC)会自动加一整个写入绘图RAM的步骤如下1).先将垂直的字节坐标(Y)写入绘图RAM地址2).再将水平的字节坐标(X)写入绘图RAM地址3).将D15~D8写入到RAM中写入第一个Bytes4).将D7~D0写入到RAM中写入第二个Bytes3硬件设计
3.1电路设计图1电路设计图
3.2LCD液晶屏外形尺寸图及坐标图图2液晶屏外形尺寸图图3液晶屏坐标图
3.3功能模块设计根据分析整个系统主要划分两个主模块,即51控制模块和LCD显示模块,以及51控制模块中的调用子程序模块,功能模块图如图2所示图4系统功能模块图151控制模块该模块实现提供控制字,发送数据和命令2LCD显示模块该模块实现将数据扫描成地图在LCD上显示出来3调用子程序模块
①MOVA#34H34H--扩充指令操作LCALLSEND_I写指令子程序扩充指令操作
②MOVA#30H30H--基本指令操作LCALLSEND_I写指令子程序基本指令操作
③MOVA#80HLCALLSEND_I设定绘图RAM地址
④MOVCA@A+DPTRLCALLSEND_D查表指令,调用数据
⑤MOVA#01HLCALLSEND_I待命模式
⑥MOVDPTR#TAB5显示图形LCALLPHO_DISP
⑦A#34HLCALLSEND_I调用count的数值
⑧MOVALCD_YLCALLSEND_I输出Y轴值
⑨MOVALCD_XLCALLSEND_I输出X轴值4软件设计
4.1主程序流程图图8主程序流程图
4.2LCD显示模块设计图9LCD显示模块设计图5调试分析在设计本系统的过程中,LCD液晶屏上的汉字显示出现乱码和字体不对齐的现象,经过研究,发现一个汉字代表两个byte,所以在源程序中改正对齐,最后显示的结果符合要求6结论经过这五周的努力,反复的调试与修改,最终顺利的完成了本次课设,任务书上所要求的效果也在实验箱上实现出来,并通过了老师的检查本程序可以实现辽宁省地图的图形显示但编写的程序还是有些许不足,比如在调用子程序上就略显冗余不够精炼,反映出自己在处理一些细节方面的基本功不够扎实,如果今后有机会一定要做到更好7总结为期五周的课程设计结束了,经过不断的努力,在老师的主导帮助下,终于完成了《液晶屏显示辽宁省地图》这个课程设计在此期间,我学到了很多新的东西,让我更丰富了自己,经过这些课设的锻炼,发现自己的不足,并开始有意识的去找寻未知,更积极的去探索自己不足的东西,使我更渴望了对新事物的研究与学习通过查看相关的资料和书籍,反复对比与摘取,把最精髓的部分挑出来用在实验中,让此程序最接近课设的要求每一次否定自己先前的选择都是一种进步,我会告诉自己总会有更合适的方法使其达到同样的效果不满足的心态也是我此次试验的一大收获虽然过程很艰难,程序的调试也是很枯燥的,但当实验的效果出来时,我非常的开心,觉得再多的付出也是值得的虽然编写的程序不是很__,但我相信,通过今后的磨练,自己会做的一次比一次好这次做论文的经历也会使我终身受益,我__到做设计是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,是对自己所有努力的一个交代,不得有半点马虎我感觉通过这次试验,使我更加体会到了程序的魅力,我会更加严谨的对待每次难得的提高自己的机会,相信以后自己会做的更好附录一附录二;******************OCM4x8C串口******************RSEQUP
3.0;接收__STDEQUP
3.1;读写指令SCLKEQUP
3.2;时钟__P__EQUP
3.3;行列选RSTEQUP
3.5;复位RS_STUEQU20H.0LCD_XEQU30HLCD_YEQU31HCOUNTEQU34HCOUNT1EQU35HCOUNT2EQU36HCOUNT3EQU37HLCD_DATAEQU38HLCD_DATA1EQU39HLCD_DATA2EQU3AHDA_INEQU__HWR_COUNT1EQU3CHWR_COUNT2EQU3DH;***********************************************ORG0000HLJMPMAINORG0100HMAIN:NOPNOPMOVSP#5FHSETBRSTCLRP__;********************初始化**********************LGS0:MOVA#34H;34H--扩充指令操作LCALLSEND_I;写指令子程序扩充指令操作MOVA#30H;30H--基本指令操作LCALLSEND_I;写指令子程序基本指令操作MOVA#01H;清除显示;***********************************************LGS3:MOVA#34HLCALLSEND_IMOVA#30HLCALLSEND_IMOVDPTR#TAB3;显示汉字和字符MOVCOUNT#40HMOVA#80HLCALLSEND_I;设定绘图RAM地址LGS31:CLRAMOVCA@A+DPTRLCALLSEND_DINCDPTRDJNZCOUNTLGS31LCALLDELAY3;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$LGS4:MOVA#01HLCALLSEND_I;待命模式LCALLDELAY2LCALLDELAY2;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$LGS5:MOVDPTR#TAB5;显示图形LCALLPHO_DISPLCALLDELAY3LCALLDELAY3LJMPLGS5;***********************************************PHO_DISP:MOVCOUNT3#02H;全屏显示图形子程序MOVLCD_X#80HPHO_DISP1:MOVLCD_Y#80HMOVCOUNT2#20HPHO_DISP2:MOVCOUNT1#10HLCALLWR_ZBPHO_DISP3:CLRAMOVCA@A+DPTRLCALLSEND_DINCDPTRDJNZCOUNT1PHO_DISP3INCLCD_YDJNZCOUNT2PHO_DISP2MOVLCD_X#88HDJNZCOUNT3PHO_DISP1MOVA#36HLCALLSEND_I;调用count2的数值MOVA#30HLCALLSEND_I;X轴坐标数值RET;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$CLRRAM:MOVLCD_DATA1#00H;GDRAM写0子程序MOVLCD_DATA2#00HRET;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$WR_ZB:MOVA#34HLCALLSEND_I;调用count的数值MOVALCD_YLCALLSEND_I;输出Y轴值MOVALCD_XLCALLSEND_I;输出X轴值MOVA#30HLCALLSEND_I;X轴坐标数值RET;***********************************************SEND_D:SETBRS_STU;写数据子程序MOVDA_INALCALLSERIAL_WRRETSEND_I:CLRRS_STU;写指令子程序MOVDA_INALCALLSERIAL_WRRET;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;DA_IN:数据或指令;RS_STU:数据指令选择;WR_COUNT1:计数器1;WR_COUNT2:计数器2SERIAL_WR:PUSHACCMOVADA_INSETBCSMOVWR_COUNT1#05HSETBSTD;1SERIAL_WR1:CLRSCLKSETBSCLKDJNZWR_COUNT1SERIAL_WR1CLRSTD;RWCLRSCLKSETBSCLKJNBRS_STUCLR_RSSETBSTD;写数据SJMPSETB_RSCLR_RS:CLRSTD;写指令SETB_RS:CLRSCLKSETBSCLKCLRSTD;0CLRSCLKSETBSCLKMOVWR_COUNT1#02HSERIAL_WR2:MOVWR_COUNT2#04HSERIAL_WR21:RLCAMOVSTDCCLRSCLKSETBSCLKDJNZWR_COUNT2SERIAL_WR21MOVWR_COUNT2#04HCLRSTD;0SERIAL_WR22:CLRSCLKSETBSCLKDJNZWR_COUNT2SERIAL_WR22DJNZWR_COUNT1SERIAL_WR2CLRSCLKCLRCSLCALLDELAY2POPACCRET;***********************************************DELAY3:MOVR5#16HDEL31:MOVR6#0FFHDEL32:MOVR7#0FFHDEL33:DJNZR7DEL33DJNZR6DEL32DJNZR5DEL31RETDELAY2:MOVR6#06HDEL21:MOVR7#18HDEL22:DJNZR7DEL22DJNZR6DEL21RET;***********************************************TAB3:DB辽宁省地图DBDBDBTAB5:DB00000000000000000000000000000000DB000000000000000000003EH0000000000DB00000000000000000000238000000000DB000000000000000000000C0H7EH00000000DB00000000000000000000800307800000DB0000000000000000000080008CH0C0H0000DB0000000000000000000080000C8H400000DB00000000000000000007000070400000DB00000000000000000018000000700000DB00000000000000000010000000180000DB000000000000000701F0000000060000DB00000000000000060FEH00000000010000DB000000000000003EH0000000000010000DB000000000000070E0H0000000000000E0H00DB00000000000004000000000000002000DB0000000000000FCH000000000000001EH00DB00000000000FH80000000000000000400DB00000000001000000000000000001800DB00000000006000000000000000001000DB001CH00000FH8000000000000000000800DB00740000300000000000000000000800DB00830E0H030C0H0000000000100000000700DB000E0H1002000000000000100000000080DB0020181EH00000000000000000000000C0HDB00200CH30000000000000000000000060DB00600660000000000000000000000010DB0040028000000000000000000000000EHDB00200180000000000000000000000002DB00200000000000000000000000000002DB00300000000000000000000000000006DB0008000000000000000000000000000EHDB00100000000000000000000000000001DB0030000000000000000000000000000EHDB00400000000000000000000000000010DB000C0H00000000000E0H000000000000010E0HDB01800000000019100000000000000EH00DB0EH000000000FH0EEH100000000000000800DB040000000038000EH0000000000000F0H00DB1CH000000007000030000000000018000DB10000000000F0H00000C0H00000000020000DB080000000180000020000000000CH0000DB000C0H0000070000006000000000300000DB003000000CH0000000C0H00000000400000DB000FH0C0H00180000010000000000400000DB000020001000000300000000000C0H0000DB00002000300000060000000001000000DB000010010E0H00000CH000000070FEH000000DB0000010EH000000180000030F8H00000000DB000007700000000E0H0000026000000000DB000001800000030000003EH0000000000DB000000000000020000010E0H0000000000DB00000000000003000006000000000000DB0000000000001FH000018000000000000DB0000000000002EH00000E0H000000000000DB00000000000032000300000000000000DB000000000000010F8H0600000000000000DB00000000000000701800000000000000DB00000000000000601000000000000000DB00000000000000103000000000000000DB000000000000070FDH0C0H00000000000000DB00000000000004130000000000000000DB00000000000078380000000000000000DB000000000000610C0H0000000000000000DB0000000000002EH000000000000000000END。