能力拓展训练基于液晶显示单元的单片机实验和C语言开发.docx
- 文档编号:27165172
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:19
- 大小:176.36KB
能力拓展训练基于液晶显示单元的单片机实验和C语言开发.docx
《能力拓展训练基于液晶显示单元的单片机实验和C语言开发.docx》由会员分享,可在线阅读,更多相关《能力拓展训练基于液晶显示单元的单片机实验和C语言开发.docx(19页珍藏版)》请在冰豆网上搜索。
能力拓展训练基于液晶显示单元的单片机实验和C语言开发
目录
摘要Ⅰ
1循环移位液晶显示系统概述1
1.1课程设计基本要求1
1.2LCD12864功能1
1.3液晶显示系统前景2
2仿真软件Proteus和Keil简介3
2.1Proteus简介3
2.2Keil简介3
3系统工作原理分析5
3.112864LCD结构5
3.2AT89C52模块8
3.3字模提取软件10
4程序流程图设计12
5Proteus仿真原理图13
6课程设计体会14
参考文献15
附:
源程序代码16
摘要
在信息显示技术中,人们发现了信息数字化的重要作用和意义。
数字化的信息更加准确,同一性,更易传输和识别。
很多信息可以直接由数字表示,从而数字化信息显示又成为信息显示的又一个重要内容。
又从数字化显示发展到字符显示,它把人类特有的语言文字用于显示,这种显示与数字显示合在一起用途更广用量更大。
在这同时,人们还希望用图形和图像进行显示,且显示的内容为五彩缤纷,并且可以实时活动和具有三维立体效果。
这零零总总的各类显示正为你做着各种各样的服务,相信在不久的将来显示技术的发展将会为人类做出更大的贡献。
关键词:
信息显示数码管显示技术LED
1循环移位液晶显示系统概述
1.1课程设计基本要求
围绕Proteus仿真结合C语言开发的应用方向,进行设计一种字符(或图形)液晶显示显示的电路,并实现循环移位显示给定字符串(或自行设计动态显示方式)。
要求进行电路实验或仿真,并使用C语言进行程序的开发。
本次选用了OCMJ4X8C(128X64)LCD显示器,它是128(列)×64(行)点阵的LCD显示模块。
在该系统中,通过单片机输入输出接口,利用单片机C语言编程模拟出LCD资料传输和显示所需时序,以实现对LCD的控制,使其显示各种复杂动态变化的图形。
1.2LCD12864功能
LCD12864分为两种,带字库和不带字库的,个人比较喜欢不带字库的,因为显示汉字的时候可以选择自己喜欢的字体,而带字库的液晶,只能显示GB2312的宋体,当然了,也可以显示其他的字体,不过不是液晶本身字库中带的了,而是用图片的形式显示。
不带字库的LCD12864,现就以Proteus中的LCD12864为例进行讲解,Proteus中AMPIRE128*64,如下图所示,该液晶驱动器为KS0108,我在网上搜了好就都没找到它的datasheet,不过我们可以找到类似的芯片的手册,它的控制逻辑和HD61202是类似的,我们可以网上下载它的datasheet进行参考。
与带字库液晶不同,此块液晶中含有两个液晶驱动器,一块驱动器控制64*64个点,左右显示,这就是为什么AMPIRE128*64引脚有CS1和CS2的原因。
学习液晶主要看的它的指令系统,再次先说明一下“页”的概念,此液晶有8页,一页有8行。
68/8=8。
1.3液晶显示系统应用前景
LCD显示器(LCD)具有功耗低、体积小、重量轻、超薄等其它显示器无法比拟的优点,近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。
LCD可分为段位式LCD、字符式LCD和点阵式LCD。
其中段位式LCD和字符式LCD只能用于字符和数字的简易显示,不能满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线和汉字,并且可以实现屏幕上下左右滚动,动画功能,分区开窗口,反转,闪烁等功能,用途十分广泛。
LCD技术的发展已历经两代,第一代技术以小型化、轻量化和薄型化为主攻方向,主要应用对象是笔记本电脑;第二代技术则以高亮度、高色再现性和宽视角为代表,主要应用领域是电视机和监视器。
目前的发展阶段介于第二代和第三代之间,其技术开发的重点是:
突破LCD自身的各种局限性,提高其作为多媒体电视显示器的动画显示性能,并大力简化制造工艺以确保其在价格上具有竞争力。
随着LCD显示器产品价格的下降,LCD显示器产品的利润也在逐渐下降,显示器厂商必将会寻找新的利润增长点,而宽屏LCD显示器产品就是厂商所选定的目标。
在对宽屏进行了两年多的市场预热后,未来众多显示器厂商都将加大宽屏LCD显示器产品的研发以及市场推广的力度,以求促进宽屏LCD显示器销量的增长。
随着LCD显示器产品价格的下降,LCD显示器产品的利润也在逐渐下降,显示器厂商必将会寻找新的利润增长点,而宽屏LCD显示器产品就是厂商所选定的目标。
在对宽屏进行了两年多的市场预热后,未来众多显示器厂商都将加大宽屏LCD显示器产品的研发以及市场推广的力度,以求促进宽屏LCD显示器销量的增长。
2仿真软件Proteus和Keil简介
2.1Proteus简介
Proteus是英国Labcenter公司开发的电路分析与仿真软件。
该软件的特点是:
①集原理图设计、仿真和PCB设计于一体,真正实现从概念到产品的完整电子设计工具,②具有模拟电路、数字电路、单片机应用系统、嵌入式系统(不高于ARM7)设计与仿真功能,③具有全速、单步、设置断点等多种形式的调试功能,④具有各种信号源和电路分析所需的虚拟仪表,⑤支持KeilC51uVision2、MPLAB等第三方的软件编译和调试环境,⑥具有强大的原理图到PCB板设计功能,可以输出多种格式的电路设计报表。
拥有PROTEUS电子设计工具,就相当于拥有了一个电子设计和分析平台。
2.2Keil简介
KeilSoftware公司推出的uVision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。
除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。
此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。
uVision3提供逻辑分析器,
KeilC51是KeilSoftware公司出品的51系列兼容C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
3系统工作原理分析
3.112864LCD结构
本次课程设计使用12864LCD实现。
12864LCD是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
下面以12864液晶显示器为例,介绍其用法。
12864M汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:
电源:
VDD3.3V~+5V(内置升压电路,无需负压);
显示内容:
128列×64行
显示颜色:
黄绿
显示角度:
6:
00钟直视
LCD类型:
STN与MCU
接口:
8位或4位并行/3位串行配置LED背光
多种软件功能:
光标显示、画面移位、自定义字符、睡眠模式等:
图3-112864模块结构
3.2AT89C52模块
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。
图3-2AT89C52引脚图
AT89C52提供以下标准功能:
8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
AT89C52单片机的内部结构与MCS-51系列单片机的构成基本相同。
CPU是由运算器和控制器所构成的。
运算器主要用来对操作数进行算术、逻辑运算和位操作的。
控制器是单片机的指挥控制部件,主要任务的识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。
它的程序存储器为8K字节可重擦写Flash闪速存储器,闪烁存储器允许在线+5V电擦除、电写入或使用编程器对其重复编程。
数据存储器比51系列的单片机相比大了许多为256字节RAM。
AT89C52单片机的指令系统和引脚功能与MCS-51的完全兼容。
图3-3AT89C52内部结构
AT89C52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,3个16位定时器/计数器,一个响亮2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。
故此选用AT89C52单片机。
3.3字模提取软件
字模提取软件是一款方便用户在编程中轻松算模的软件,该软件界面简洁,操作方便,而且深受到使用的人的极大表扬。
可以自定义大小,能精准提取字模,用来提取字模的工具,很容易使用。
轻松的生成C51或者A51的格式。
图3-4数码管显示模块仿真图
制作字模提取工具的原理,其实方法都大同小异。
从字模库中直接提取。
该方法受限于字模库,比如你需要16*16的字模和20*20的字模,你就必须去找到这2个字模库。
从ttf库中直接提取。
该方法提取出来的字模很光滑,效果很好。
同样你需要一个ttf库,它是矢量的,可以支持不同的大小。
在内存的位图上画出文字,然后生成字模。
该方法写出来的程序不需要额外的字库文件,依赖于操作系统中的字体。
但是一般操作系统中都带有大量的字体,足够我们使用,还可以很自由的选择自己喜欢的字体、大小等等。
4程序流程图设计
程序流程图:
图4-1程序流程图
当有不同按键,进入不同的服务子程序,同时在查询的时候判断是不是整点,有没有到达闹铃设置的时间,进入服务子程序采用的是查询的模式。
在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。
于是汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
5Proteus仿真原理图
列出元件连线仿真,如图:
图5-1移位显示系统总图
从点阵生成区取出字模数据,粘贴到程序中去即可。
将程序(见附录)使用Keil进行编译,生成HEX格式文件。
将HEX文件烧写进单片机,点击运行进行仿真。
6课程设计体会
单片机这么课程在电子信息工程专业中,是极为重要的一门,有些理论在课上没有完全的融会贯通,在此次课程设计当中,一方面可以自己动手实践,另一方面也能学到一些课本上没有的东西,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵,在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
学到很多很多的东西,还可以巩固了以前所学过的知识,同时学到了很多在书本上所没有学到过的知识。
我相信在今后社会的发展和学习实践过程中,我一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
我学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
参考文献
[1]徐煜明,韩雁.单片机原理及接口技术,电子工业出版社
[2]万光毅,严义,邢春香.单片机实验与实践教程,北京航空航天大学出版社
[3]张迎新.单片机中级教程,北京航空航天大学出版社
[4]丁元杰.单片机原理与应用,机械工业出版社
[5]孙育才.MCS-51系列单片微型计算机及其应用,东南大学出版社
附:
源程序代码
#include
#include
#defineDISPON0x3f
#defineDISPOFF0x3e
#defineFIRSTROW0xc0
#defineSETY0xb8
#defineSETX0x40
#defineLLCD_CMD_WRXBYTE[0xf4f0]
#defineLLCD_DAT_WRXBYTE[0xf5f0]
#defineLLCD_CMD_RDXBYTE[0xf6f0]
#defineLLCD_DAT_RDXBYTE[0xf7f0]
#defineRLCD_CMD_WRXBYTE[0xf8f0]
#defineRLCD_DAT_WRXBYTE[0xf9f0]
#defineRLCD_CMD_RDXBYTE[0xfaf0]
#defineRLCD_DAT_RDXBYTE[0xfbf0]
sbitK1=P1^0;
sbitK2=P1^1;
voiddelay(unsignedchartimer)
{unsignedchari;
while(--timer)
for(i=0;i<100;i++);}
codeunsignedcharlogo[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x80,0x40,0x40,0x40,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,
0x40,0xC0,0x00,0x38,0xE0,0x00,0x00,0x00,0x20,0x60,0x40,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x40,0x60,0x20,0xE0,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0xE0,0x20,0x20,0x20,0x00,
0xE0,0x90,0x10,0x08,0x88,0xF8,0x48,0x48,0x08,0x04,0x04,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x10,0x10,0x08,0x04,0x04,
0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x04,0x04,0x08,0x10,0x10,
0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x06,0x44,0xC4,0x06,0x02,0xF2,0x82,
0xC2,0x02,0x02,0x02,0x3F,0xE2,0x82,0x02,0x02,0x02,0x02,0x06,0x04,0x04,0x00,0x00,
0x00,0x00,0x30,0x61,0x83,0x06,0x00,0x00,0x80,0xC1,0x07,0x0C,0x18,0xF0,0xE0,0xB8,
0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x08,0x0B,0xFC,0x06,0x02,0x80,
0x00,0x03,0x02,0x80,0xC0,0x47,0xFC,0x46,0x42,0x42,0x02,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x60,0x10,0x0C,0x03,0x00,0x00,0x20,0x20,0x30,0x10,0x08,
0x08,0x08,0x0C,0x04,0x0C,0x08,0x08,0x10,0x10,0x00,0x00,0x80,0x00,0x40,0x40,0x40,
0x20,0x30,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x30,0x20,0x40,0x00,0x00,
0x00,0x00,0x03,0x0C,0x10,0x60,0x80,0x00,0x00,0x00,0x00,0x63,0x20,0x10,0x1F,0x0C,
0x06,0x03,0x00,0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x10,0x30,0x3C,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x61,0x10,0x0C,0x26,0x23,0x20,0x38,0x0C,0x07,0x01,0x00,0x01,
0x06,0x0C,0x18,0x30,0x20,0x20,0x00,0x00,0x00,0x60,0x30,0x18,0x0F,0x06,0x03,0x01,
0x40,0x60,0x20,0x20,0x10,0x10,0x3F,0x10,0x10,0x10,0x10,0x30,0x20,0x00,0x00,0x00,
0x00,0x00,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x30,0x18,0x0E,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
0x40,0x40,0x40,0x40,0xC0,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x02,0x04,0x88,0x84,
0xC4,0x5C,0x30,0x30,0x10,0x18,0x14,0x16,0x13,0x20,0x20,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0C,0x02,0x02,0x02,0x02,0x02,0x06,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x83,0xE1,0x1F,0x01,0x09,0x39,0x61,
0x81,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x47,0x46,0x43,0x41,0x21,0x22,
0x62,0xF2,0x2E,0x20,0x20,0x20,0x20,0x22,0x22,0x22,0x23,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x06,0x08,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x03,0x06,0x0C,0x30,0x60,0x40,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0xC0,0x40,
0x60,0x30,0x18,0x08,0x04
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 能力拓展训练 基于液晶显示单元的单片机实验和C语言开发 能力 拓展 训练 基于 液晶显示 单元 单片机 实验 语言 开发