基于单片机的LED显示屏设计 毕业论文.docx_第1页
基于单片机的LED显示屏设计 毕业论文.docx_第2页
基于单片机的LED显示屏设计 毕业论文.docx_第3页
基于单片机的LED显示屏设计 毕业论文.docx_第4页
基于单片机的LED显示屏设计 毕业论文.docx_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

苏州大学学院(部) 城市轨道交通学院 课 题 基于单片机的led显示屏设计 年级 2010级 专业 电气控制及自动化 班级 10控制 学号 1042402029 姓名 指导老师 职称 高级实验师 论文提交日期 2014.5.26 目录摘要1abstract2第一章 绪论3第1.1节 研究的课题内容3第1.2节 研究的背景与意义31.2.1 led灯的发展背景与研究意义3第1.3节 国内外发展现状6第1.4节 论文组织结构7第二章 硬件设计8第2.1节 方案设计82.1.1 方案一的设计82.1.2 方案二的设计112.1.3 方案三的设计132.1.4 方案的对比与选择14第2.2节 主要元器件的介绍162.2.1 器件的种类162.2.2 at89s52单片机的介绍162.2.3 74hc574锁存器的介绍192.2.4 uln2803驱动器的介绍212.2.5 led点阵的介绍22第三章软件设计24第3.1节 led点阵屏显示的两种编程方法分析24第3.2节 led点阵屏c语言编程方框图与逻辑框图25第3.3节 程序的设计与分析263.3.1 键盘模块的设计与分析263.3.2 led显示程序分析29总结33参考文献34致谢35 摘要在科技与经济发展迅速的现代社会中,人们对能源节省以及高效可控性提出了更高的要求。经过长期的发展,led灯以其独有的节省能源,寿命长以及无辐射等特点逐渐代替了其他灯具步入了现代社会的殿堂。本次毕业设计就是经过对led点阵,单片机以及其他电路元器件的学习与分析后,设计制作基于单片机应用的led电子显示屏。通过电路原理的理论分析与电路的方案设计,来确定自己的设计思路,并画出电路原理图。确立了研究的方向后,开始焊接制作,并对焊接电路进行检测与查错。根据实际电路来进行程序流程的分析及程序的总体设计。将程序导入单片机,然后对程序导入的结果与进行检测与分析,并修改程序。最终达到在由5个16*16的led点阵组成的电子显示屏上显示动态滚动的“轨道学院欢迎你”字幕的效果与目的。关键词:led点阵;单片机;电路设计abstractin modern society, which has rapid development of science and technology and the economic, people put forward higher requirements for energy saving and high controllability. after the long-term development, led lamp with its unique energy saving, long service life and no radiation gradually replaced other lamps into modern society. this graduation design ,which is based on the study and analysis of led lattice, single chip and the other circuit components, is to design and manufacture led electronic display screen under the control of the single chip. by analysing the circuit principle and planning the circuit scheme, i determine my own design ideas, and draw the circuit schematic diagram. after making sure the design direction, i start the welding production, and then i test and check the welding circuit. according to the actual circuit, i carry on the task of program flow analysis and program overall design. put the program into the single chip, test the results of the procedure import, and modify the program. eventually achieve the purpose and the target of displaying the dynamic rolling subtitles(“welcome to the urban rail transit school”) on the electronic display screen which is composed of 5 16*16 led lights.key words: led lights; single chip; circuit design第一章 绪论第1.1节 研究的课题内容本次毕业设计我所研究的课题是使用单片机进行控制的led显示屏显示中文设计。应用c语言程序编程的方法来控制51单片机进而对led显示屏进行控制,实现led显示屏显示文字的效果。外围电路通过连接锁存器来减少对单片机端口的使用数目,同时led显示屏采用驱动芯片进行供电。外电路与单片机连接后,形成的整体电路能具备控制led灯的功能。led灯是由20块8*8的点阵组成。由4块8*8的点阵组成一个16*16的点阵来形成一个汉字,最终由5块16*16的点阵组成5个部分,最终形成“轨道学院欢迎你”。这几个文字能够动态滚动,可以左右、上下移动。第1.2节 研究的背景与意义1.2.1 led灯的发展背景与研究意义led发光二极管,是一种只有当它接正向导通电压才能发光的器件,因此我们可以通过控制其阳极和阴极的电压来控制它是否发光。图1-1 发光二极管原理图在20世纪60年代那段时间,美国人利用p-n结单向导电及其发光的原理,进而研制出了led发光二极管。经过数年的发展,人们研制了可以发其他颜色光的二极管,但并没有研制出用于照明的白光。led发光二极管在一开始的时候主要是被用在仪器仪表上用来作为指示灯的作用,后来逐渐发展应用到交通信号灯上和应用于广告服务的显示屏上以及汽车指示灯等等。而随着常年的发展,人们研制出了发蓝色光的led,然后利用红、黄、蓝三种光的“混合”后,在1998年制作出了发白色光的led灯,为led灯的发展迎来了新的篇章。led灯相对于传统灯具也具有相当大的优势。第一它高效节能。几度电能量就能够让led亮长达几千小时,可谓绝对的低能耗。第二它寿命超长。led灯的一般使用的寿命就可以高达五万多个小时,而我们以前使用的普通白炽灯的使用寿命往往仅仅只能有使用一千小时左右。第三由于led灯中不含有紫外线和红外线等光线,所以它不会产生辐射,对人体没有什么伤害。第四它绿色环保。虽然我们现在led灯我们到处可以见到,但是对于led灯的道路还没有走太远,它上面所应用到的技术还不是很成熟,依然给我们提出了很多技术问题,有待我们进一步解决。现有我们所使用的led灯具普遍存在的主要具体问题有以下几种情况,灯不亮或者led发的光衰弱的比较严重,时间长了,其发的光不怎么看得见;led灯具发光所用的能量远远不及其发热所造成的能量损耗,能量的有效使用不太完美等,掉盖子(灯体外围的二次透镜);掉底座(比如e27base部分掉了);价格过高,不够实惠。led显示屏也是在这样的背景,理念与优势下,逐步出现在人们的生活与工作当中,扮演了一定的地位与角色。led显示屏主要是利用将很多的发光二极管通过共阳连接或者是共阴连接的电路连接方式,从而形成了由发光二极管组成的大面积的显示屏,可以用来显示文字、图片等等。且可利用单片机技术加以控制。使其更加灵活,内容可以随意修改,可用于计算机屏幕同步,显示方式也变幻多端。1.2.2 单片机的背景和其应用价值单片微型计算机即我们所说的单片机,是一种嵌入式的微小单片应用的控制器(microcontroller unit)。单片机不是只能够实现某一个具体的逻辑功能的简单的芯片,相反的,它内部的电路非常复杂,它能够实现一个微型计算机几乎全部的功能,可谓功能强大。为了能够将cpu、ram随机存储器、rom只读存储器、i/o端口和中断系统、定时器/计数器等功各个模块能够集成应用到小小的单片机中,从而使它的功能足够的强大,因此使用了超大规模集成电路技术,从而实现了这个目标。有的单片机型号除了上面的最基本的模块,还集成了很多其他一些应用模块,比如显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等等应用模块。但是,尽管单片机小小的身体中已经容纳了不少电路模块,但是它和计算机比起来,还是少了很多的外围电路,这些需要我们在使用单片机时根据需要自行连接片外电路进一步完善单片机的微型系统。如图给我们展示的是一个简单的单片机芯片实际图:图1-2 单片机芯片单片机是在上世纪的1971年被科学家发明研制出来的,它主要经历了以下三个主要的型号:scm、mcu、soc。在早期,单片机发展为scm阶段。scm就是我们通常所说的单片微型计算机(single chip microcomputer),在这段发展时期,人们主要是在构建一种体系结构能够更好的使用嵌入式系统。如intel的mcs-48系列单片机。经历了第一段时期,第二段发展是其中,单片机进入了mcu时期。mcu就是人们通常所说的微控制器(micro controller unit),在这一发展的阶段,人们不断的追求各种外围电路与接口电路来扩展单片机构成的小型系统所具有的能力,从而通过单片机实现更多的控制成为了这个阶段人们追求的目标。philips公司在这个发展的阶段,将mcs-51将单片机迅速高效的发展成为了单片的微控制器。intel和philips这两家国际大公司在单片机的发展历史中做出了伟大的历史贡献。当前趋势为soc阶段。soc及我们所熟悉的嵌入式系统(system on chip),这个阶段我们的而主要目标就是希望能够尽量多的在一个小小的芯片上构建完整的系统。现在社会中的各种比较智能的机器,都是通过单片机的控制才能够实现的,现在我对其应用做一个简要的归类:1. 在智能仪器仪表上的应用在智能仪器仪表中,我们通过在其中加入单片机来控制,从而使得这些原本普通的仪器仪表具有了“智能”,从而提高了仪器的自动化程度和测试的精度,并且,我们还实现了仪器仪表电路、硬件结构的巨大简化,价格从而大大的降低,使得这些智能仪器的使用更加的普及。例如示波器、频谱分析仪等等。2.在家用电器中的应用现在我们从商场上买回来的家电普遍的使用了单片机来进行控制。比如说电饭锅、洗衣机等3.在工业控制中的应用单片机不仅具有控制功能,它还能够处理数据,所以我们可以通过使用单片机来实现系统的闭环反馈控制,从而实现系统的工作效率和其生产的产品的质量的大幅提高。现代电梯的控制就是典型的例子。4.单片机的模块化使用我们通过某些具有专用功能的单片机来设计实现具有某些特定功能的模块,使人们可以很方面的将模块直接拿过来用而不需要懂得模块的具体构成。5.单医用设备中的单片机应用医用设备中通过使用单片机也使得医用设备更加的智能化,更加方面的供医生分析患者的身体状况。医用呼吸机就是单片机在医用设备中应用的典型的例子。单片机在现代社会中的应用非常的广泛,它还广泛应用于办公自动化领域、商业营销领域、教育、国防航空航天等领域,通过它我们可以实现现代产品的智能化,更方面人们的使用。第1.3节 国内外发展现状美国在led照明领域的的技术研究及开发一直保持着世界的前列,引领着全世界这个行业的发展和进步。德国osram公司号在led的生产这方面的能力也是很强大,其建造的生产线号称全球第一。他们在led的制造领域一直追求能够使得led的使用寿命能够得到大幅的增长,他们一直追求者这个目标,并靠着在这方面取得的巨大进步成为了世界第二大led厂商。台湾则是通过引进美国和日本在led这方面的技术,依靠着其价格低廉的劳动力,逐渐成为了世界上最大的led生产基地。目前,我国也有数十所大学和很多的公司正在从事大功率led灯的研究和开发,依靠着国家和社会的推动,led灯产业在我国也有了一定的使用前景和规模了,这是值得我们庆幸的。同时,我们还在蓝光芯片技术上取得了突破,指标已经能够达到国外中档的技术水平了。另外,我们在led封装技术上也有了长足的进步,与国外的差距已经不像以前那样大了,我们总有一天会在国际市场上占有绝对的份额。目前,我国在led照明行业的发展上还存在很多的问题,主要有以下几点:(1)国内在led照明方面的专利太少,还没有能够掌握这方面的核心技术。(2)国外led技术比中国高。(3)我国led景观照明无统一规划。(4)我国led户外照明市场混乱。目前,led照明灯具在我国的市场已经很有市场,随着未来传统灯具进一步被led灯所代替,led照明灯具在我国的市场需求将进一步扩大。我们必须能够跟得上市场对 led 需求的快速增长,所以我们必须抓紧在led照明灯具的进一步研究,争取取得在这个行业的核心技术。第1.4节 论文组织结构本文对电路进行研究对比,对电路元器件进行学习与分析,并查看了led灯的发展历史与市场分析的研究报告,以及单片机的原理与发展的文献资料,在前人的经验与总结下,对单片机控制,以及电路原理上进行研究,对c语言程序控制进行学习与实践。经过画原理图,编程,电路焊接,检测与查错等过程,完成led灯显示屏作品,并在本文中对其过程,其原理,及其结果进行阐述与分析。我的毕业论文主要分为五个章节,下面我将简单的介绍每章的主要内容,分析如下:第一章绪论。讲述了课题内容,与研究的意义。通过查找资料与对其的学习,对led灯的发展历史及原理与单片机的原理及发展等方面进行简单描述。并且我还对led在国内外的发展现状与前景做了简要的分析。并对本文所研究的内容做了可行性分析,并给出了我写此论文的主要思路。第二章硬件设计。在基本电路的构想下,对电路原理图进行具体的方案设计,对各方案进行对比与筛选。经过研究与对比,确定所用的元器件,以及电路的基本构想。同时我还对很多元器件的资料进行了更进一步学习,通过芯片资料中提供的参数,来选择到底选择那些芯片合理。同时我还学习了一些基本的电路结构以使得我设计的电路结构更加的完美。第三章软件设计。经过学习与研究,掌握多种字模研究编写的方案。设计程序与软件,画出软件的方框图与流程图,并根据图进行程序编写,然后进行分析和检测。第四章焊接。对焊接过程,问题及解决,以及焊接结束后的检测等环节进行阐述。总结与收获。总结所做的研究工作,分析自己的收获与不足,提出进一步的研究方向。第二章 硬件设计第2.1节 方案设计2.1.1 方案一的设计本设计的核心思想是在led点阵的行和列上分别接驱动器和锁存器,然后再连单片机,用单片机来进行控制。这是因为单片机p口带载能力不大,而多个led点阵点并联,所以需要驱动器用来为led点阵提供足够的工作电流。同时,51系列单片机仅有p0-p3共四组8位端口,资源较少,而我们所用的led显示屏由20块8位点阵led组成,每块led点阵都需要8位行、8位列进行控制,所需控制接口很多,所以需要将led点阵按要求分组、串接,相应字模显示信息用动态扫描方式完成,需要使用锁存器来进行分配和扩展。我所使用的8*8led集成模块内部的电路连接方式如图2-1所示:图2-1 8*8led集成模块内部的电路连接方式方案一就是依照8*8led集成模块的内部电路连接方式来进行设计的。由图可见,此时col为列,而row为行。显示屏采用一行10块点阵,共二行的方式排列。为了满足设计要求,所需的列(即col)有80列(共10块led点阵的列);所需的行(即row)为8行(共2块led点阵的行)。而led点阵的列与行分别为8位,与uln2803驱动器和74hc574锁存器的输入与输出引脚个数相同,也与52单片机的端口引脚个数相等。于是设计方案如下:1. 10块led点阵的列分别与10块驱动器相连,这10块驱动器又分别与10块锁存器相连。2. 2块led点阵的行分别与2块驱动器相连,而这2块锁存器又与2块锁存器相连。3. 单片机的p3口是用给锁存器的锁存和选通引脚提供控制信号的。因为p3端口数不够,所以需要用三块锁存器进行主从分级。单片机的p0口连上3块所存器,3块所存分别连上上述的12块锁存器,每块连上4块,进行主从分级。4. 20块led点阵的行分别与所对应的行依次相连,列分别与所对应的列依次相连。5. 单片机的p3口是用给锁存器的锁存和选通引脚提供控制信号的,p1口进行按键的扫描控制,p0口负责给led显示屏的行和列提供控制信号。6. 如果我们给行和列都提供高电平时,led灯不亮。给列提供高电平,行提供低电平时,led也不能亮。如图2-2所示的是锁存器与驱动器连接的电路连接方式图2-2 锁存器与驱动器连接的电路连接方式单片机的连线如图2-3所示:图2-3 51单片机最小系统的连接电路图连接在单片机上的锁存器的电路连接如图2-4所示:图2-4 单片机外围锁存器电路连接图从图3-1,3-2,3-3中我们不难看出,单片机的p3口是控制锁存器的,而p0口是给锁存器输入数据的。用于控制行的锁存器和驱动模块的连接图如图2-5所示:图2-5 控制行的锁存器与驱动器的连线图2led点阵的连线如图2-6所示:图2-6 led点阵引脚连线图从图3-1,3-4,3-5中,我们可以知道led点阵的行和列是如何连在驱动器上的。2.1.2 方案二的设计在方案二中我们把led点阵按逆时针旋转了90来进行使用(如图3-6)。此时col为行,row为列。设计方案如下:1. 10块led点阵的列分别与10块锁存器相连,由于单片机端口不够,所以10块锁存器分成两组,每5块与一块锁存器相连,形成主从形式。2. 2块led点阵的行分别与2块驱动器相连,2块驱动器分别与2块锁存器相连。3. 20块led点阵的行分别与所对应的行依次相连,列分别与所对应的列依次相连。4. 单片机p3、p1.6、p1.7、p2.0p2.3口给锁存器的锁存控制引脚提供控制信号,p1.0至p1.5连接按键,p0口输出数据。5. 当我们给行和列都提供高电平时,led灯不亮。给行提供高电平,给列提供低电平时,led也不亮。主从结构的锁存器连线如图2-7所示:图2-7 主从结构的锁存器连线图led点阵连线如图2-8所示:图2-8 led点阵连线图驱动器的连线如图2-8所示:图2-9 led显示屏行上的驱动器与锁存器连线图按键连线如图2-10所示:图2-10 按键连线图单片机连线如图2-11所示:图2-11 单片机连线图2.1.3 方案三的设计方案三中所使用的led点阵放置的方式与方案二相同。具体设计方案如下:1. 10块led点阵的列分别与10块锁存器相连,10块所存器进行串联。2. 2块led点阵的行分别与2块驱动器相连,2块驱动器分别与2块锁存器相连。3. 20块led点阵的行分别与所对应的行依次相连,列分别与所对应的列依次相连。4. 单片机p3、p1.6、p1.7、p2.0p2.3口给锁存器的锁存控制引脚提供控制信号,p1.0至p1.5连接按键,p0口输出数据。5. 当给行和列都提供高电平时,led灯不亮。给行提供高电平时,给列提供低电平时,led才能亮。串联结构的锁存器的接线图如图2-12所示:图2-12 串联结构的锁存器的接线图led点阵连线图如图2-13所示:图2-13 led点阵连线图驱动器连线图如图2-14所示:图2-14 驱动器连线图2.1.4 方案的对比与选择方案的对比如表2-1所示:表2-1 方案对照表方案简述统计优点缺点方案一1. 行用了2块驱动器然后连上了2块锁存器。2. 列用了10块驱动器,再连上10块驱动器。3. 单片机只与3块锁存器相连,而这三块锁存器则与12块二级锁存器构成主从连接的电路结构。总共用了15块锁存器和12块驱动器。1. 用的单片机端口资源较少。2. 在不确定驱动器驱动能力的情况下,可以保证电路功率足够。1. 这个电路比较的复杂,而且它所用器件也太多了,焊接很繁杂。2. 电路排版困难。3. 程序编写比较难,程序编写逻辑复杂容易出错。4. 焊接比较烦,难度大,出问题后难查。方案二1. 行用了2块驱动器分别与2块锁存器相连。2. 列与10块锁存器相连,然后与2块锁存器进行主从连接。总共用了12块锁存器和2块驱动器。1. 所用器件较少,电路排版简单,连线比较轻松。2. 程序编写简单,逻辑清晰,便于检测。1. 电路比较于方案三稍复杂,器件稍多2. 编写程序时时序较方案三多。方案三1. 行用了2块驱动器分别与2块锁存器相连。2. 列与10块锁存器相连,10块锁存器进行串联总共用了10块锁存器和2块驱动器。1. 所用器件最少,电路最为简单,连线排版最轻松。2. 程序编写简单。时序少。1. 编写程序时相对于方案二逻辑条理不够清晰,检查程序时不够方便。选择经过测量与查找资料发现2块驱动器足以驱动,而由于方案一电路过于复杂所以不宜选择。方案二和方案三皆可,各有优缺点,我选择的方案是方案二。第2.2节 主要元器件的介绍2.2.1 器件的种类经设计和研究,本课题所需要的器件需要单片机,驱动器,led点阵,电阻和锁存器。器件种类如表2-2所示:表2-2 所用器件及基本参数一览表器件名称器件型号器件功能基本参数单片机at89c52通过编程对电路进行控制1.32个可编程i/o口线2.输入电压为+5v3.传统最高工作频率为12mhz驱动器uln2803apg为电路提供功率1. 最高承受电压为50v2. 最大电流500ma3. 包含8个npn达林顿管锁存器74hc574使单片机在i/o口的到充分利用1. 电压范围为-0.5v-7v2. 输入钳位电流为20maled点阵sz410788k发光,组成汉字1.8*82.红色,共阳3.边长2*2cm2.2.2 at89s52单片机的介绍at89s52是使用intel公司的高密度非易失性存储器技术研制的一种具有低功率高性能特点的cmos8位微型控制器,它能与80c51产品兼容,而且具备8k的可编程flash存储器。它的引脚如图2-15所示:图2-15 at89c52单片机引脚图各引脚功能如表(按逆时针)2-3所示:表2-3 at89c52引脚功能表引脚功能第二功能p1端口8位双向i/o口,有内部上拉电阻。p1.0 t2作为定时器/计数器t2的外部计数输入,时钟输出。p1.1 t2ex作为t2的捕捉/重载触发信号和方向控制。p1.5 mosi在系统编程用。p1.6 miso在系统编程用。p1.7 sck在系统编程用。rst复位输入。晶振工作时,持续输入两个高电平,使其复位。p3端口8位双向i/o口,有内部上拉电阻。p3.0 rxd串行通信输入。p3.1 txd串行通信输出。p3.2 外部中断0输入。p3.3 外部中断1输入。p3.4 t0计时计数器0输入。p3.5 t1计时计数器1输入。p3.6 外部数据存储器的写入信号。p3.7 外部数据存储器的读取信号。xtal2震荡器反相放大器输出端xtal1内部时钟工作电路的输入以及震荡反相放大器的输入端gnd电源地端,接地p2端口8位双向i/o口,有内部上拉电阻。为at89s52扩充外接程序存储器或数据存储器提供地址总线为a8a15的高字节。外部程序存储器的选通信号。ale当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。prog对flash存储器编程期间,该引脚还用于输入编程脉冲。允许外部访问vppflash存储器编程时,该引脚加上+12v的编程允许电源vpp。p0端口8位双向i/o口,作为输出口。当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。vcc接+5v,电源输入主要的性能有:1. 16位定时器/计数器(3个)2. 8位cpu,可以在系统编程3. 中断源(8个)4. 掉电后中断延续5. 掉电模式和低功耗模式6. i/o可编程端口(32个)7. 1000次擦写周期8. 双数据指针2.2.3 74hc574锁存器的介绍74hc574是八边触发d型触发器,它的特点是总线驱动三态输出。它们特别适合缓冲寄存器,i/o端口,双向总线驱动程序和工作寄存器的运作。8个触发器在从低到高的时钟(clk)输入转变下进行数据输入。缓冲输出启用端口(oe)的输入可以使8个输出分别都置于正常逻辑状态(高或者低的逻辑电平)或者高阻抗状态。在高阻抗状态下,输出既不加载也不驱动总线。高阻抗状态和增强的驱动能够在没有接口和上拉组件的情况下为总线提供驱动能力。并不会影响触发器的内部操作。在输出为高阻抗状态时,旧数据可被保留,新数据可被输出。74hc574可以在-40到85之间进行工作。表2-4 功能表输入输出输出控制时钟数据clk dqlhhlllllhzh=高电平 l=低电平 x=不定 z=高阻态 =从低转换为高电平 =建立稳态输入条件前q的电平它的引脚图如图2-16所示:图2-16 74hc574引脚图逻辑图如图2-17所示:图2-17 74hc574逻辑图推荐工作条件如表2-5所示:表2-5 推荐工作条件表符号参数名称74ii54单位参数值参数值最小典型最大最小典型最大电源电压4.7555.254.555.5v输入高电平电压2.02.0v输入低电平电压0.80.7v输出高电平电流-2.6-1ma输出低电平电流2412ma时钟脉冲宽度高1515ns低1515ns数据建立时间2020ns数据保持时间00nc工作环境温度-4085-551252.2.4 uln2803驱动器的介绍uln2803驱动器的特点是:1. 由8个共同发射极的npn达林顿晶体管构成2. 输出电流为500ma3. 输出击穿电压为50v4. 集成二极管5. 拥有正常的逻辑电路系列6. 输出可以被并联7. 封装类型:ap=dip18,afw=sol188. 温度范围:-40+859. 推荐输入电压为5vuln2803包含8个共射极达林顿晶体管和感性负载积分二极管。每个达林顿晶体管的负载电流的峰值尾600毫安,并且能在关断状态下承受至少50v的电压。为了得到更高的电流能力,输出可以进行并联。uln2803在5v的ttl和cmos上配有数值为2.7k的输入电流。它广泛应用于计算机,工业用和消费类产品中的灯、继电器、打印锤或其它类似负载中。引脚如图2-18所示:图2-18 uln2803引脚图1-8引脚:输入端11-18引脚:输出端9引脚:地端10引脚:电源+内部电路如图2-19所示:图2-19 uln2803内部电路图2.2.5 led点阵的介绍sz410788k是8*8的点阵,它发射红光,且共阳。经过电压表测量其各引脚所对应的信息如下表所示(c指col,r指row):表2-6 sz410788k引脚信息引脚信息引脚信息1r19c52r210c73c211r74r812c85c413r66r314r47r515c68c116c3内部图如图2-20所示:图2-20 led点阵内部图不难从中看出col接高电平,row接低电平时,相应点阵中的点被点亮。在使用时,我们将col接低电平,row接高电平,即逆时针转动90使用,点阵点亮效果不受影响。第三章软件设计第3.1节 led点阵屏显示的两种编程方法分析led点阵显示屏可分为led显示屏部分和控制部分两个部分。led显示屏部分的主要部分是led点阵屏集成模块,同时还得在led显示屏的行上接上驱动电路。本次毕业设计中采用的led点阵显示屏采用的主要是8*8led集成模块拼接而成的。单片机组成的控制电路负责选通每一行,并且在单片机选通每一行之前我们还需要通过程序将需要输出的数据通过单片机的p0口输出,一旦我们给行上面提供高电平的时候,led点阵屏这一行上面的led灯只有在列上面输入低电平时那一列的led灯才能够亮。从led的特性分析,我们无论需要显示图形还是文字,我们只要能够让组成图形或文字的那些led灯发光就行了,这样我们就可以得到所需要的效果,这个显示方法叫静态驱动显示。但是,我们平时应用中我们所用到的显示屏控制方式几乎都不是采用静态驱动显示方式的,而是采用一种叫称为动态扫描的控制显示方法。动态扫描这种控制方法,简单的说就是每行每行的点亮led显示屏,这样我们毕业设计中用到的扫描驱动电路就可以实现很多行只需要一个驱动器。在我的本次毕业设计中用到的16*(16*5)点阵显示屏为例,我所用到的led集成模块是共阳级的。首先我们先给第一行提供高电平,让后给第一行需要亮的那些灯所在的列提供低电平,其他列提供高电平,然后是第一行的那几个灯亮一段时间熄灭;然后我们再给第二行提供高电平,再给这行需要亮的那些列提供低电平,其他列提供高电平,使得那些灯亮一段时间,再熄灭;这样一直循环轮回,使得轮回速度较快,由于人眼无法识别,就能看到显示屏上稳定的图形。综上几种,对于静态显示而言,它所需要的锁存器的数量特别的多,同时对于静态显示而言,它对于单片机的端口数量的需求量比较的高。在单片机端口数量不足的情况下只能尽量的增加对锁存器的数量,这样会使得电路中使用更多的电子元件,使得电路的结构更加的复杂。对于动态显示而言,它对本下次毕业设计造成的难点主要在于对单片机c语言编程提出了更高的要求,而在电路方面它所给我们造成的困扰会比较小,所以,对于动态显示而言,他所需要的电路元器件将会明显的减少,这样我们的毕业设计的电路才能够比较的简单。最终我们决定选择这两种方法进行毕业设计,通过实际的分析讨论出各种方法的优缺点。第3.2节 led点阵屏c语言编程方框图与逻辑框图led点阵屏c语言编程方框图如图3-1所示:图3-1 方框图led点阵屏c语言编程逻辑框图如图3-2所示:图3-2 逻辑框图第3.3节 程序的设计与分析3.3.1 键盘模块的设计与分析1 键盘编程测试的原理本次毕业设计中,对于键盘部分,我采用的是矩阵键盘扫描模式。对电路图2-10进行分析如下:首先将单片机的p1.0和p1.1端口设置成输出模式,将单片机的p1.2、p1.3、p1.4、p1.5端口设置成输入模式。首先给端口p1.0和端口p1.1输出低电平,如果所有的按键没有被按动,则从电路图上可以看出,此时从下面的四个端口测试到的电平都应该是高电平。当某个按键被按下后,假设s2键被按下,则从p1.2端口测试到的电平则为低电平,所以可以通过测试下面四个端口的电平判断出有没按键按下。要判断出具体是那个键按下,方法是:首先给第一行输入低电平,第二行输入高电平,则第二行的键盘按与不按对下面的检测端口都无影响,排除第二行的影响检测第一行有无按键按动,当检测到具体某个列的信号为低电平是,则键盘中按动的键是第一行那一列的的按键。检测第二行的方法类似。2 键盘扫描程序的分析对于这个程序而言,其组成部分有以下几块:单片机端口的初始化、判断键盘是否有按动、键盘去抖程序、等待程序。按照我们之前分析的判断键盘是否按下的编程方法,程序会存在一下几个问题,一是当电路板发生抖动而非主动按的按键,此种情况下,程序依旧会判断这是按了按键而造成误动作;二是当我们把键盘按下时,由于程序一直检测到那个端口的电平是低电平,程序会认为我们按了很多次此键,而造成误动作。因为这两个原因我们引入了键盘去抖程序和等待程序。void key_scan(void) uchar key_check; p1out=0xfe; (1) p1out=0xfe; key_check=p1in; (2) key_check&= 0xfc; (3) if(key_check!=0xfc) (4) delay_ms(20); /键盘消抖,延时20ms key_check=p1in; /再次读取io口状态 if(key_check!=0xfc) /确定是否真正的有键按下 key_check=p1in; /有键按下,读取端口值 switch (key_check & 0xfc) /判断是哪个键按下 case 0xf8:key1=!key1;break; case 0xf4:key2=!key2;break; case 0xec:key3=!key3;break; case 0xd7:key4=!key4;break; default:break; while(key_check & 0xfc)!=0xfc) key_check=p1in; key_check&=0xff; p1out=0xfd; p1out=0xfd; key_check=p1in; key_check&= 0xfc; if(key_check!=0xfc) /确定是否真正的有键按下 key_check=p1in; /有键按下,读取端口值 switch (key_check & 0xfc) /判断是哪个键按下 case 0xf8:key5=!key5;break; case 0xf4:key6=!key6;break; case 0xec:key7=!key7;break; case 0xd7:key8=!key8;break; default:break; while(key_check & 0xff)!=0xff) key_check=p1in; key_check&=0xff; 对上诉程序分析如下:上诉程序中(1)“p1out=0xfe;”是为了给键盘电路的第一行输入低电平,第二行输入高电平。(2)“key_check=p1in;”是将端口测试的电平信号构成的二进制数复制给key_check这个变量。(3)“key_check&= 0xfc”这句程序的目的是使p1端口的地两位的数据被屏蔽掉。(4)“if(key_check!=0xfc)”,如果key_check!等于0xfc,说明键盘的下面四个端口检测到的数据都是高电平,没有按键按下,如果它们不相等则说明有按键按下,进而进行下面的程序。在判断出有按键按动的程序后面加上“delay_ms(20); ”这个延时20ms的程序是为了去除键盘的抖动,延时后再进行一次键盘按键扫描如果还能扫描到键盘按动则说明键盘不是因为抖动而被误判,这就构成了键盘去抖程序。switch (key_check & 0xfc) case 0xf8:key1=!key1;break; case 0xf4:key2=!key2;break; case 0xec:key3=!key3;break; case 0xd7:key4=!key4;break; default:break;这个程序是用来判断第一行哪个键按下,并进行相应的操作。那个键按下那么它所对应的那一列测到的数据就是低电平,每个键因此都会有一个独特的十六进制数,以此就可以判断是那个键按下了。对于如何判断第二行的是哪个键按下程序的原理是类似的,这里就不再讨论。while(key_check & 0xfc)!=0xfc) key_check=p1in; key_check&=0xff;这个程序就是等待程序,防止按键按下时程序会误判按了无数次。分析如下:首先检测key_check是否等于0xfc,如果等于说明此时键盘那边检测到的四个数据均为高电平说明此时按键已经被松开。如果不等与则说明按键还被按着,程序进入while的死循环,不断检测p1口的数据直到按键被松开程序才从这个死循环中跳出,这样就可以使得按键按下去到松开程序只会执行一次该按键按动才执行的效果,防止了上诉误操作的出现。3.3.2 led显示程序分析如图3-3显示的是对于16*16的点阵屏显示“轨道学院欢迎你”具体哪些灯要亮,这样在led的动态扫描显示就能知道对于每行它有哪些灯亮。图3-3(a) “轨”字led灯亮排布图图3-3(b) “道”字led灯亮排布图图3-3(c) “学”字led灯亮排布图图3-3(a) “院”字led灯亮排布图图3-3(d) “欢”字led灯亮排布图在我们的本次设计中是用16*(16*5)点阵led显示屏来做显示屏的,把所有的同一行发光管的阳极连在一起,把所有同一列发光管的阴极连在一起(共阳极接法),这样只有当行的输入电压为高电平这行的led灯才可能亮的,具体要使得哪一列的灯亮则通过控制那一列的输入电压为低电平,不需要亮的列输入高电平,这样就实现了具体某一行具体哪些列的灯发光。我们首先先发送出对应第一行发光管亮灭的数据输送到对应的锁存器并锁存,然后选通第一行使其点亮一定的时间,这里可以通过延时程序实现,然后熄灭;再发送出第二行的数据并锁存,然后选通第二行使其点亮一定的时间,然后熄灭;第十六行之后又重新点亮第一行,这样反复轮回。由于我们人眼存在视觉暂留效果就能看到显示屏上面显示文字。这里对16*16点阵显示“轨”这个字进行详细分析,显示其它字的原理和这个的原理类似就不予分析了。由于led显示所需的功率不是51单片机所能够提供的,所以在单片机的输出端加入了驱动芯片,该芯片是低电平触发,即当输入信号为低电平时对应的输出端口输出高电平。根据本次电路设计的原理图可以得出以下编程所必备的基本资料。对于显示“轨”字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论