版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、济南大学毕业设计毕业设计题 目 基于avr单片机 的led点阵屏的设计 学 院 专 业 班 级 学 生 学 号 指导教师 二一二年 六 月 八 日-38-济南大学毕业设计摘 要 led显示屏是一种由很多个发光二极管组成的点阵,通过控制半导体发光二极管的亮灭来显示内容的显示屏。led显示屏分为数码显示屏、图文显示屏和视频显示屏,都是由led矩阵块组成。目前由于led显示屏造价昂贵,主要应用于比较高档的场所,主要集中在城市的繁华场所。本文介绍了一款以avr单片机为控制器的led点阵显示屏系统的设计。该系统可实现字母汉字的静态显示和动态滚动效果,并且可以通过外扩接口级连的方式来扩大显示屏幕的尺寸以达
2、到增加显示内容的目的。系统采用pc机作为上位机,上位机向单片机发送控制命令和上位机所存储的字模数据,avr 单片机接收字模数据并处理pc机的控制命令,由显示驱动模块驱动一个1616分辨率的led点阵显示屏的扫描显示。pc机与单片机之间的通信采用rs232c通信标准来实现。该系统只占用了单片机少量的i /o口和内存,为系统留下了功能扩展的空间。关键字:led点阵显示屏,avr单片机,595驱动,串口通信 abstract led matrix display is a kind of display that is composed of a lot of semiconductor light
3、 emitting diodes usually red light.emitting diodes which show character by the led on and off. led display is divided into digital display, graphic display and video display, which is composed by led matrix. because of high price of the led matrix , now it is mainly used in relatively luxury places.
4、 this paper introduces a design of the led lattice display system base on mcu avr .the system can display in both chinese and english characters of the show and from top to bottom and move around the magic show. and can be cascaded to expand the screen size to achieve increased content purposes. the
5、 pc sends control commands and displays code to microcontroller, avr receives control commands from pc and shows the code, driver module drives a 1616.resolution led lattice leds panel display scan showed. communication between pc and the microcontroller using rs.232c communications standards. in ad
6、dition, the system will take up only a small amount of the mcu i/o and memory,so that the system has functional space for expansion.key words: led matrix, avr, 595 driver, uart 目 录摘 要iabstracti第1章 绪论11.1 课题背景11.1.1 选题背景11.1.2 我国现状11.1.3 led显示屏的市场前景1第2章 方案论证与选择22.1 系统硬件方案设计22.1.1 通信系统22.1.2 led点阵显示屏3
7、2.1.3 led点阵屏的驱动方式32.1.4 硬件设计方案42.2 系统软件方案52.2.1 单片机编程语言52.2.2 系统软件编译器介绍62.2.3 上位机控制传输软件62.2.4 下载软件7第3章 系统硬件设计73.1 硬件系统的总体设计83.2 avr单片机最小系统设计83.2.1 串口通信电路设计83.2.2 复位电路设计93.2.3 单片机的下载口103.2.4 avr单片机的时钟电路113.2.5 avr单片机最小系统113.3 led点阵屏设计及驱动电路设计123.3.1 驱动电路设计133.3.2 行驱动电路设计133.3.3 列驱动电路设计153.4 led点阵屏设计16
8、第4章 系统软件设计184.1 主程序设计184.2 显示程序设计194.2.1 显示驱动程序的设计194.2.2 点阵数据的获取194.2.3 串口通信程序的设计20第5章 系统制作与调试235.1 系统硬件部分的调试235.1.1 短路与虚焊检测235.1.2 上电测试235.1.3 串口调试245.2 系统软件调试方法245.3 系统软硬件调试及结果26结 论27参考文献28致 谢29附录1:系统pcb30附录2 系统运行样式31附录3:系统程序部分代码32济南大学毕业设计第1章 绪论1.1 课题背景1.1.1 选题背景led点阵显示屏是八十年代后期迅速风靡全球的新型信息显示媒体,显示屏
9、由几万几十万个半导体发光二极管点阵像素均匀排列组成。利用不同的制作材料可以制造不同发光颜色的led像素点。目前应用最广泛的是红色、绿色、黄色。而蓝色和绿色led显示屏的开发已经达到了实用阶段。led显示屏可以显示变化的字母、数字、文字、图形图像,不仅可以用于室内装饰还可以用于室外环境,具有投影仪、电视墙、液晶显示屏都无法比拟的优点。在短短的十几来年中,led显示屏就以其功耗小、亮度高、能够承受各种恶劣气候而得到了广泛的应用。led显示屏的发展前景极为广阔,目前正朝着更高亮度、更高的发光密度、更高的发光均匀性、更高耐气候性、可靠性、全色化的方向发展。led显示屏的应用涉及到社会经济的方方面面,主
10、要应用的场合有:(1)车站的买票公告栏(2)广场的led电视直播(3)银行的交易信息及利率等信息的显示(4)商店超市的广告牌等等。1.1.2 我国现状 自led显示屏诞生至今,我国在led显示屏领域的研究,在国际上还是名列前茅的。目前各种形式的led屏幕在我国都有生产,其中最流行的彩色led显示屏做的很突出,这种显示屏主要用在广场跟街头的城市电视中。现在一些电脑的显示器也开始采用了led显示技术,应该来说在这方面,我也没有落后于别的国家,联想研制的新型笔记本,很多采用了led显示技术,突破了原来的lcd显示,这种笔记本电脑的显示屏亮度更高,功耗更低,可谓是理想的选择。相信在未来的中国将会有更多
11、的电子产品采用led显示技术。1.1.3 led显示屏的市场前景由于led显示技术也是最新兴起的技术,目前led显示技术的发展还是比较迅速,其中大多数用于商家的广告牌,晚上在城市的街道,到处可以看见led显示屏的影子。led显示技术是跟信息技术紧密相连的,信息技术的发展必定会带动led显示技术的进步,在不久的将来,也将会出现更多的电子产品采用led显示。可以将发光二极管做的更小,这样生产出来的led显示屏的分辨率会更高。第2章 方案论证与选择2.1 系统硬件方案设计大多数的led显示屏都在户外,所以对屏幕的材质硬件的质量要求非常的高。为方便检修和维护硬件电路设计,常常采用模块化的设计方法。硬件
12、的设计采用模块化设计,既要满足模块本身功能要求又要能够和整个系统兼容。如图2.1所示,根据显示系统的功能特点,从而确定系统硬件由控制部分,显示屏部分,通信系统及上位机四部分组成。上位机通过通信串口部分向主控芯片发送控制指令和显示内容字模数据,主控芯片执行显示指令,将需要显示内容的字模数据转换为二极管的亮灭,从而显示出内容。pc机led显示屏 通信系统avr单片机图2.1 系统硬件结构2.1.1 通信系统 通信部分的设计要满足要求就是稳定、快速、简单易实现。因为在通常情况下显示屏和上位机之间的传输距离不会很远,所以对通信距离的要求不是很高,采用rs232标准就可以。计算机通信的方式主要有并行通信
13、和串行通信两种方式。 (1)并行通信 计算机并行通信时,数据是一起发送的。一起发送的数据位数就是并行通信的宽度,这个宽度可以是一个字节也可以是一个字。并行传输的速度较快,因为可以一起传送很多的位数,但是并行传输的成本很高,故在远距离传输时,我们选用串行通信。(2)串行通信串行通信每次只可以发送一位数据,所有的数据信号都是在一条数据线上发送的,所以只需要很少几根线就可以进行,串行通信的速度低,但传送的距离长,因此串行通信适用于长距离而速度要求不是很严格的场合。在串行通信时,数据是一位一位按顺序进行的,而计算机内部的数据是并行进行处理的。因此,当计算机向外发送数据时,必须将计算机内部的并行数据转换
14、为串行数据再发送。反之,当计算机接收数据时,又必须将串行数据转换为并行数据进行处理。这种转换可以由硬件来实现也可以由软件实现。如果仅用软件实现又会增加cpu的负担,降低其利用率,故目前常通常采用硬件实现。通用异步接收/发送器,简称uart(universal asynchromous receeiver/trabsnitter)是完成这一功能的硬件电路。在avr单片机芯片中,uart已经集成在单片机内,作为其组成部分,构成一个串口。 综上所述,在本系统中将采用uart来实现单片机与上位机之间的通信,由于串口已经集成在了单片机的内部,故只需设置相关寄存器就可以使用串口了。2.1.2 led点阵显
15、示屏显示部分有可以显示汉字的显示屏和对显示屏进行驱动的底层硬件电路。由于单片机的i/o口有限且计算机io口的驱动能力不是很强,故不能直接用单片机的i/o口来驱动led显示屏,所以需要对单片机io口进行扩展来增加单片机并行输出和驱动能力。led显示屏是由一个一个的发光二极管组成的点阵构成的,要构成大尺寸的led显示屏就需要很多的发光二极管。构成led屏幕的方法有两种,一是由单个的发光二极管逐点连接起来构成的,如图2.2所示;二是选用一些由单个发光二极管构成的led点阵单元模块来构成较大的led点阵模块。目前市场上普遍采用的点阵单元模块有88、1616几种。这两种屏幕构成方法各有自己的优缺点,单个
16、发光二极管构成显示屏优点是当某个发光二极管出现问题时只需更换一个二极管便可以正常工作,检修的成本较低,缺点在于连接线路较为复杂;而点阵模块构成的方法却正好与之相反,采用点阵模块构成显示屏节约了大量的连线,但是一旦某个发光二极管出现问题时,与其同在一个模块的所有led都必须被更换,这样就加大了维修的成本。两种方法相比较,本系统中采用模块点阵的方法,这样可以避免较为复杂的连线。为了避免点阵模块的缺点,在本系统中选用8x8led点阵的基础单元模块,这样一段某个发光二极管出现问题,我们只需更换一个8x8的点阵模块,若选用16x16的单元模块,则更换的成本太高了。2.1.3 led点阵屏的驱动方式 le
17、d点阵的驱动方式有两种:恒流驱动方式和非恒流驱动方式。在非恒流驱动方式中,可以将74hc595输出的数据直接接到点阵屏上,即用74hc595输出的电流来驱动显示屏,但有74hc595输出电流有限,不能驱动很多的发光二极管同时点亮,所以当一排点亮很多二极管时,会出现跟其他排亮度不一的现象。恒流驱动是将74hc164的输出接到三极管基极,三极管的发射极接到电源上,集电极接到led显示屏幕上。图 2.2 led点阵图一个1616的led显示屏行和列各有16支引脚,我们不能直接用单片机来驱动显示屏,因为单片机的io口驱动能力很弱,而且直接接到单片机上,会占用大量的io口。在单片机驱动led显示屏时,常
18、采用io口扩展的方式,在这里我们采用74hc595、74hc164来进行io 口扩展,这样只需要占用少量的io口便可以驱动显示屏了。由于74hc595芯片输出的电流只有30ma,所以不能驱动很多的发光二极管同时发光,这样我们需要在每个芯片的输出端口加上功放电路,这样我们就可以同时点亮很多的发光二极管,这就是led显示屏的恒流驱动。但是,采用恒流驱动的方式,对于电源的要求也相应的提高了,要求电源必须能够提供足够的电流,来驱动大量的发光二极管同时发光。2.1.4 硬件设计方案最终方案如图2.3所示,在这里,我们让pc机作为上位机,在pc机上运行串口调试助手,通过此软件来实现上位机与单片机之间的通信
19、。在上位机中,存储着字模数据和控制数据显示的方式的控制指令。首先上位机将字模数据发送到单片机内,单片机接受到字模数据,通过译码电路,将字模数据还原出来,利用这些01字符串来控制发光二极管的亮灭,从而在点阵屏幕上显示出内容。题目将以此涉及方案为指导展开具体的硬件电路设计。图2.3 硬件设计方案2.2 系统软件方案软件的设计除了满足系统的功能外,还必须满足容易读写,方便下载和编译的特点。在系统设计目标和硬件总体结构确定的情况下,系统程序可以由主程序,显示驱动程序和各种特效显示程序,串口通信程序三个主要部分组成。具体结构如图2.4所示。图2.4 软件功能结构框图程序的编写需要借助编辑编辑器和编译软件
20、,本系统中采用iccavr这个集成开发环境来编写编译程序,编译完成后还需要下载软件将编译生成的hex文件下载到单片机中执行。编写程序之前首先选择一种合适的程序设计语言以及配套的编辑器和编译软件。最后还需要选择与所选单片机相适应的下载器和下载软件,来把程序执行生成的hex文件下载到单片机中。2.2.1 单片机编程语言在单片机开发领域所用的主流编程语言为汇编语言和c语言。两种语言相比较各有优点。汇编语言(assembly language)是面向特定机器的程序设计语言,是一种功能很强的程序设计语言,汇编语言是直接控制计算机的硬件来执行的,所以它对编程人员的要求好高,程序员要充分的了解所使用的单片机
21、的硬件架构及组成特性。汇编语言具有执行速度快,占内存空间少等优点,所以它一般用在对于时间空间要求比较严格的场合,在平时我们开发单片机程序时,一般都用不到。汇编语言对于机器的依赖性较强,在一种型号的单片机上编写的汇编程序不能移植到另一型号的单片机上,这就限制了它的应用。c语言是一种高级程序设计语言,c语言经过若干年的使用,可以证明其强大性,c语言最初是用来开发unix操作系统,在c语言在其编译效率、执行速度等方面显示出了强大的优越性,这就扩大了它的使用范围。c语言相比于其他程序设计语言,最大的特点是可以直接控制硬件,这是java、c#等高级语言多没有的特性,它兼顾了高级语言的特点,又具有汇编语言
22、的特点,其执行速率也是很快的。所以c语言成为了嵌入式开发领域的主流语言。另外,c语言还是一种结构化语言,在c语言中最基本的单元就是函数,我们可以把功能接近的代码,放在一个函数中,这样我们的程序就成为了由一个个函数组成的整体,在主函数中我们可以调用相应的函数来实现某种功能,c语言的这种特点使其很容易调试、修改。在c语言中,有很多的库函数,如果在我们的程序中要实现某种功能,而这种功能在函数库中已经得以实现,那么我们就可以将这个函数库直接包含在我们的程序中,可以减少我们自己多要编写的代码量。综合比较了两种语言,在本系统设计中,我们采用c语言作为程序设计语言。2.2.2 系统软件编译器介绍用c语言编写
23、好的程序不能直接被单片机所执行,要想让c语言控制单片机运行,需要对c语言程序进行编译,所以编译程序是不可缺少的。支持avr用c语言编程的编译器主要有:iccavr编译器和avrstudio编译器。目前在单片机开发中普遍都是使用iccavr来进行编译。因此软件设计最终方案为采用c语言为编程语言,iccavr为编译工具按照控制、通信、显示等几个功能模块来编写程序。2.2.3 上位机控制传输软件本系统采用pc机作为上位机,这样对该系统的控制就变得简单了,因为pc机可以直观的反应单片机的状态。本系统中上位机的作用是存储字模数据并控制单片机的显示,通过通信系统将控制指令传送到单片机中控制led的显示。l
24、ed点阵屏的显示一般有存储显示和实时显示两种。存储显示是将要显示数据的字模通过串口由上位机发送到单片机内,单片机接到上位机发来的数据,再接受上位机的控制信息便可以在led显示屏上显示了。实时显示即上位机屏幕上显示的内容会同步的显示到单片机多控制的led显示屏上。两种显示方法相比较:实时显示对于硬件的要求较高,对于通信系统的要求很高,上位机需要不断的将更新的数据发动到led屏幕上,通信开销交大,此种显示方式多用于广场的新闻播报显示屏。存储显示不要求有较高的传输速率,对硬件要求不是很高,多用于需要较长时间在显示屏上显示信息的场合,上位机将数据发送到单片机后,单片机便可以将其长期的显示在屏幕上了。本
25、系统设计中,对于实时性要求不是很好,另外,从成本方面考虑,选用存储显示来设计系统。2.2.4 下载软件 avr单片机的下载软件主要有:avrfighter ,mucode,avrstudio。avrstudio在下载程序时,不方便设置熔丝位,而avrfighter ,mucode可以方便直观的设置avr的熔丝位,所以本系统采用avrfighter作为下载软件。第3章 系统硬件设计在第二章中,讨论过不同的软硬件设计方案,选择了最有效的方案,在本章中详细设计系统的硬件,其中包括avr单片机最小系统的设计,串口通信硬件设计,isp下载口设计,jtag调试口设计,led点阵屏幕设计,led驱动电路设计
26、。3.1 硬件系统的总体设计本系统采用avr单片机为核心控制器件,用四块8*8点阵相连组成16*16点阵屏,作为显示部分,用两片74hc595作为列驱动控制,用74ls164作为行驱动控制,系统硬件总体方框图如图3.1所示。单片机74hc595列驱动74hc164行驱动led点阵模块时钟电路复位电路图 3.1 系统硬件总体框图3.2 avr单片机最小系统设计 avr单片机最小系统包括uart串口,avr芯片,复位电路,时钟电路,isp下载口,jtag仿真调试接口,电源供电接口。在串口通信中采用max232芯片作为电平转换芯片,avr单片采用的是ttl电平:+5v代表逻辑1,0v代表逻辑0而pc
27、机采用的是rs232电平,+15v代表逻辑0,.15v代表逻辑1,与单片机的逻辑电平不一致,所以采用max232芯片进行电平转换。3.2.1 串口通信电路设计在串口通信设计中,我们选用uart与上位机进行通信,串行通信可分为同步串行通信与异步串行通信。同步串行通信的代表有spi、iic,这种通信的最显著特点是,收发方有相同的时钟来协调双方的发送。异步串行通信的代表是uart,在这种通信方式里,我们没有统一的时钟来协调收发方。收发方数据一致性的保证是波特率,在这种发送方式中,每个数据帧的格式是一位起始位,后跟若干数据位,奇偶校验位,停止位。数据位的位数我们可以在配置寄存器中进行设置,而选用奇偶校
28、验也可以在配置寄存器中进行设置,这样就可以保证了数据发送的正确性质了。 串口通信电路原理图如图3.1所示,在db9中只用到3跟线,其中第五管脚接地,第二管脚接到max232的第14管脚,在max232中11管脚输入的数据经过电平转换从14管脚发送出去,传送到上位机中,其中11管脚接单片机的串口发送端。db9的第3管脚接到单片机的13管脚上,上位机发送的数据通过13管脚进行电平转换,从max232的第12管脚发送出去,传送到单片机的串口接收端。图3.1 串口通信电路原理图3.2.2 复位电路设计复位电路是确保单片机最小系统中不可缺少的一部分,当单片机上电后,单片机会自动运行存储在flash中的程
29、序,当程序出现问题时候,我们希望程序重新开始执行,那么我们会使用到复位,单片机重新开始执行程序,我们会在自小系统中设置一个按键,当手按下,单片机会自动复位,这种复位叫做上电复位。另一种复位是上电复位,但我们打开电源时候,单片机会自动复位,从flash开始处,执行程序。复位电路工作原理如图3.3所示,当系统上电时,电流经过10k电阻和10uf电容,系统导通,此时在电容的正极上是低电平,而avr单片机是低电平复位,所以此时单片机复位。在上电过程中,电容有个充放电的过程,所以上电后瞬间电容又放电。此电路中还有手动复位的功能,当按下按键时,电流经过10k电阻,又经过1k电阻,电路导通,此时在10k电阻
30、两端有个很大的压降,10k电阻reset端为低电平,单片机复位。图3.2 复位电路3.2.3 单片机的下载口 在pc机上写好的程序要下载到单片机里才能控制单片机的io口输出高低电平,从而控制led点阵屏亮灭。对于avr单片机来说,可以有两种下载程序的方法,一种通过isp在线下载,一种通过jtag仿真调试,在调试后程序自动下载到单片机里,同时jtag仿真调试可以很方便的找出程序中的错误,有利于调试,所以在的最小系统中也加入了jtag口。 isp下载口的电路原理图如图3.3所示,接口的2管脚接vcc,4、6、8、10管脚接gnd ,在下载器上可以通过跳线设置通过下载线给单片机供电,接口的第3管脚悬
31、空,1、5、7、9接到单片机的程序下载口上,这样通过下载器就可以向单片机里下载程序了。图3.3 isp下载口jtag仿真调试口电路原理图如图3.4所示,其中1、3、5、9分别接到单片机的jtag调试口,在avrstudio开发环境中,可以通过jtag仿真调试逐句执行程序语句来观察单片机控制的led显示屏的现象还帮助调试。同时也可以用仿真调试器来给系统供电。图3.4 jtag下载口3.2.4 avr单片机的时钟电路对于avr单片机来说,片内已经集成了晶振,可以采用外部晶振提供时钟源,也可以通过设置单片机的熔丝位来改用内部晶振。但是,在系统对时钟要求严格的场合应选用外部晶振。在本系统中,由于要用到
32、串口通信,在串口通信中要用波特率来保持上位机跟单片机传输数据的一致。所以的系统采用外部晶振的工作方式。如图3.5为单片机的时钟电路。图3.5 时钟电路3.2.5 avr单片机最小系统avr单片机最小系统是单片机能够正常工作时,所需要连接的最少管脚数,一般avr单片机要能够工作需要接电源、地、晶振、下载口。图3.6为avr单片机的最小系统原理图,在本系统中,由于采用了74hc595芯片及74hc164芯片实现串行数据转换为并行数据,所以在的系统中只用到少量的io口,这样其他的io口可以用来控制其他的外设,达到减少io口的目的。在画原理图的过程中,我大量的使用了网络标号,网络标号相同的结点可以正常
33、的连接起来,这样可以避免在画电路原理图时,采用大量的连线。采用网络标号可以达到模块化的目的,这样画较为复杂的电路原理图时,可以很整洁清晰的表达出来。也有利于原理图的纠错,避免了复杂难看的线路连接网络。其实,avr单片机内部已经集成了很多外围设备接口,在avr单片机内部集成了晶振,所以在avr最小系统中可以不画外围晶振,最简单的avr最小系统只需要两根电源线,4根程序下载线。由于在本系统中,我们用到了串口,所以需要设置波特率,那么对于时钟源的精确度就有要求了。所以我们采用外部晶振的方式,采用11.9582m的晶振来为系统提供电源。图 3.6 avr单片机最小系统3.3 led点阵屏设计及驱动电路
34、设计3.3.1 驱动电路设计 本系统中采用两片74hc595和两片74hc164将串行数据转换为并行数据,在led点阵屏设计时,采用三极管来驱动显示屏,这样可以是每个二极管的亮度都达到饱和。图3.7为三极管组成的驱动电路。在电路中,采用的是pnp 型三极管,三极管的基极接到74hc164的输出端,发射极接到电源,集电极接到led点阵屏上,这样当74hc164某个管脚输出低电平时,其对应的三极管导通,电流通过三极管流到led点阵屏,点亮相应的二极管。当74hc164输出高电平时,其对应的三极管不能导通,所驱动的发光二极管不会被点亮。这样就能很好的控制发光二极管的亮灭了。图3.7 三极管驱动电路3
35、.3.2 行驱动电路设计 在行驱动电路中,采用2片74hc164来扩展io口,74hc164的输出通过4.7k的电阻接到三极管的基极。图3.8为74hc164的管脚图。 图3.8 74hc16474hc164是一种串入并出的芯片,在本设计中,将芯片的1、2管脚接在一起,使1、2管脚成为线与的关系,数据从1、2管脚串行进入芯片,时钟线接在第8管脚,在每个时钟周期的上升沿,串行数据写入芯片内,在8个时钟周期后,数据就并行的从芯片输出。同时,芯片的第13管脚,也是芯片的级联管脚,可以将第13管脚接到下一片芯片的输入端,这样就可以输出16位并行数据了。图3.9为本设计中74hc164的级联图,本系统中
36、用单片机的io口模拟芯片输入的数字时钟,通过io口不断的拉高拉低来实现时钟的效果,在每次的上升沿数据就写入到了芯片内,16个上升沿后,16位数据就在io口准备好了,输出到16个三极管的基极,为低电平的io口所对应的三极管导通,三极管驱动相应的发光二极管点亮。 图 3.9 74hc164级联效果图3.3.3 列驱动电路设计在列驱动电路里,用了两片74hc595来扩展io口,74hc595芯片的功能类似于74hc164,但74hc595芯片带有锁存功能,在时钟引脚上,每来一个上升沿,串行数据就向高位移位,待8为数据都准备好时,在锁存时钟引脚上来一个上升沿,就打开锁存端口,并行数据发出。74hc59
37、5输出端接在限流电阻端,限流电阻另一端接在了led点阵屏幕上。图3.10为74hc595的引脚图。图3.10 74hc595管脚图其中第14管脚为数据输入管脚,第9管脚为级联管脚,本设计中将两片595芯片级联起来,当低位芯片满八位时,通过级联端口向高位移位,第11管脚为595芯片的时钟输入端,每次在11管脚上产生一个上升沿时,串行数据就向前移动一位,第12管脚为595芯片的数据锁存端,当在12管脚上产生上升沿时,锁存输出打开,595中的数据并行输出。第13管脚为595的使能端,在本设计中,直接将13管脚接低电平,即595芯片一直处于使能状态。第10管脚为芯片的擦除引脚,当在第10管脚加低电平时
38、,就将595芯片内部存储的数据擦除,在本设计中,不需要擦除芯片,所以直接将第10管脚接高电平。图3.11为74hc595的级联连接,在本设计中用单片机的pa1口作为芯片的时钟信号输入端,利用单片机的io口输出高低电平来模拟时钟信号,单片机的pa2口接到芯片的锁存控制端,通过io口输出的高低电平来实现上升沿。图3.11 74hc595级联图3.4 led点阵屏设计 在本设计中,采用的是8x8的led点阵来拼成一个16x16的点阵屏,将4片8x8led点阵相同的列与相同的行连接起来,形成一个16x16的点阵屏幕。图3.12为8x8点阵的引脚图。图3.12 8x8led点阵引脚图图中为共阳型led点
39、阵,左边的一列引脚为led点阵的行信号输入引脚,上面一行为led点阵的列信号输入引脚。当在某一行输入引脚输入高电平,某一列输入引脚输入低电平时,相应的行列交错点的发光二极管将被点亮。我们将4个8x8led点阵对应的引脚连接起来,就形成了16x16点阵。如图3.13所示。图3.13 16x16led点阵引脚图第4章 系统软件设计4.1 主程序设计系统控制程序采用c语言编写,按照模块化程序设计的思想来设计。首先分析程序所要实现的功能,程序要实现pc机与单片机的串口通信,led显示屏的静态显示与动态显示三大功能。串口程序接收上位机数据,交给主程序处理后再通过显示控制程序选择不同的显示方式进行显示。
40、主程序的工作流程如图4.1所示:图4.1 主程序流程图程序开始时首先必须对单片机进行初始化,其中包括:各io口功能的设定,中断初始化,串行通信方式的选择和波特率的设定等。单片机上电后,首先进入主程序,在主程序中,调用串口程序,待上位机的指令通过串口发送到单片机,且单片机接受完指令时,主程序开始调用显示程序,将信息显示在led显示屏上。4.2 显示程序设计4.2.1 显示驱动程序的设计显示驱动程序是显示部分的核心,显示驱动程序有行驱动程序跟列驱动程序组成,行驱动程序主要是74hc164芯片的驱动程序,列驱动程序主要是对74hc595芯片的驱动。对于行驱动程序,第一次将第一位输出为0,这样相应的三
41、极管导通led点阵的第一行被阳极为高电平,这样第一行所有阴极被置为低电平的二极管点亮。在下一个脉冲到来时,74hc164芯片内的数据向高位移位,同时在程序中让低位补1,这样第2行的二极管的阳极置为高电平,同样,第二行所有阴极被置为低电平的二极管将被点亮。对于列驱动程序,单片机移位输入的是显示内容的字模数据,将数据移位16次后,在74hc595芯片的数据锁存端给一个上升沿,将16位并行数据全部输出。注意在这里,我们输入到595芯片内的数据是要显示信息的字模的反码,因为列扫描程序对应的是二极管的阴极,在行扫描程序中,我们已经给了二极管的阳极高电平,所以在列扫描程序中应该给出低电平才能点亮相应的发光
42、二极管。图4.2为led显示屏显示的动态扫描过程。图4.2 led显示的动态扫描过程 第一次在第一行输出高电平,同时列输出的是字模数据在第一行对应的字节的反码,第二次在第二行输出高电平,同时列输出的是字模数据在第二行对应的字节的反码。以此类推,直到第16行扫描结束,又回到第一行继续扫描。4.2.2 点阵数据的获取 对于一些简单的字母或者汉字,我们可以在16x16的表格上写出0、1的点阵数据获取要显示信息的字模,但是当我们要显示的文字很多时,这样非常麻烦。在这里介绍一种去字模的软件pctolcd,在这里我们输入要显示的汉字字母等信息,点击获取字模就可以得到我们需要显示的内容的字模。图4.3为取字
43、模软件的界面。在软件中,设置好字宽字高字体等信息后,点击获取字模就可以得到字模数据了,非常方便。图4.3 pctolcd界面4.2.3 串口通信程序的设计 系统采用串行中断的方式进行通信。avr单片机的中断源两种类型:一类是外部中断源;另一类是内部中断源,包括三个定时器/计数器(t0和t1)的溢出中断和串行口的接收和发送中断。avr单片机设置了4个专用寄存器用于中断控制,分别为定时器控制寄存器(tcon),串行口中断控制器(scon),中断允许控制寄存器(ie),中断优先级控制寄存器(ip)。编程时通过设置其状态来管理中断系统。总中断分中断在编写中断程序时首先是将中断控制寄存器(ie)初始化,
44、其控制位分布如表。ea为中断允许总控制位,ea=1时cpu开中断;ea=0时,cpu屏蔽所有中断,只有打开总中断,所有模块的终端才会起作用,et、es、ex1、et0、ex0为对应的定时器/计数器1中断、串行口中断、外部中断1中断、外部中断0中断、定时器/计数器0中断的中断允许位,对应位为1时允许其中断,对应位为0时,禁止其中断。有些读者可能搞不懂总中断与其他中断的关系,图4.4做了形象的描述。图4.4 总中断与分中断的关系表 4.1 中断允许寄存器格式d7d6d5d4d3d2d1d0eaeset1ex1et0ex0 在系统初始化时设定中断允许寄存器初值为0xff,指令为 ie=0xff。设置
45、串口工作方式1,波特率9600,计算可得计数器初值的十六进制表示为0xfd。通信协议如表4.2所示:表4.2 串行通信协议格式数据结构第1个字节第2至第33个字节第34个字节内容起始标志位s显示数据控制指令作用判断是否开始接收数据led的显示内容控制led显示方式 具体串口中断程序流程图如图4.5所示,在主程序中先进行了串行中断的初始化,初始化内容包括了串行工作方式选择,波特率的设定,计数初值的设定。程序开始进入中断等待,当pc机向单片机发送数据时产生中断接收允许位ri置1,将sbuf(缓冲寄存器)中的值输入到暂存器中进行数据处理。首先判断数据是否设定的起始标志位s如果是则开始接收起始位后的3
46、3个字节,不是则中断返回继续等待。接收到第34个字节后便将收到的数据发送回pc机进行验证比较。所有的程序编写完成后都必须经过编译才能烧写到单片机中运行。为了减小程序的修改和优化难度,按照模块化编程的思想,将各个功能写入到一个模块中,每完成一个模块就用总程序调用测试,测试通过则继续编写下一个模块。各子模块编译没有错误后再输入单片机进行验证。这两项都通过后,再将所有的程序整合到一起,进行集成测试,测试通过则完成了该系统的软件设计。中断开始ynnn接收到第34位?接收起始位后33位数据y起始位s将第2位起的32位数据发回pc机接收串口数据ri=1?中断返回y图4.5 串口程序的调试第5章 系统制作与
47、调试在系统设计完成后,必须对其进行实物测试,本系统的测试包括:硬件测试、软件测试、软硬件集成测试。检查系统的各项功能是否得以实现。5.1 系统硬件部分的调试硬件调试主要是各芯片的输出输入电压是否符合设计要求和调试各部分的焊接是否合格,最后测试各硬件部分能否完成设计功能。因此把硬件调试按照以下四部分分步来进行:(1)用万用表检测所用的电路是否导通,整个板子是否存在虚焊及其短路;(2)用万用表检测每个芯片的电源端与接地端的电压是否符合芯片对电源的要求;(3)测试单片机的程序下载口能否正常工作;(4)测试单片机与上位机之间的串口通信功能能否实现。由于整个系统的显示功能需要应用程序的配合,所以在硬件调
48、试部分只测试单片机的各个管脚的电平及是否存在虚焊,整个系统的显示功能部分的测试放在系统联合调试部分来完成。5.1.1 短路与虚焊检测 此项测试中,工具是多用电表,利用多用电表的报警功能,测试各个连接点是否连接好,如果连接无缝,则万用表会发出声响提示连接无误。这样就检测出了电路中不存在虚焊。再用万用表测试芯片相邻的管脚,看看是否发出警报,发出警报证明系统存在短路,需要用电烙铁占松香进行清除。5.1.2 上电测试本系统设计中是采用usb电源供电,输出电压为5v。系统中所用到的单片机、74hc595芯片、74hc164芯片的工作电压都是5v,所以在本系统中所有的芯片都是采用相同的电源进行供电。 上电
49、后首先要观察整个电路是否有发热、冒烟的现象。经过长时间的测试观察发现电路工作正常,没有上述现象产生。接着,将万用表的旋钮调到直流电压档位,测试各个芯片的电源端与接地端的电压范围,经过测试,发现电压范围大致都在4.8v至5.12v之间,所以芯片的工作电压正常。5.1.3 串口调试串口作为上位机与单片机通信的部分,是整个系统的关键部分,所以必须认真测试。测试串口时,串口的连接如图5.1所示,将max232芯片的第9管脚之直接与第10管脚端接,这样表示上位机发送过来的数据未经过单片机而直接从发送口又发送给了上位机,在串口调试助手中,不断的向单片机发送不同的数据,观察串口调试助手能不能将数据原封不动的
50、收回。图 5.1 串口部分的测试5.2 系统软件调试方法由于在上一步中已经进行了硬件测试,所以在这里开始软件的测试。编写好各个芯片的驱动程序后,开始编写应用程序,在应用程序中调用底层的驱动程序,进行动态的显示。为了精确的定位软件的出错点,在这里分模块测试,先测试led显示部分,这是系统最主要的功能,在主程序中调用显示程序,观察显示效果,经过多次测试,发现显示程序没有问题。接着,开始串口程序的测试,由于在硬件测试中已经将串口的发送端与接收端进行短接,所以在这里就不用测试max232芯片的工作状态了。测试串口通信程序的正确性,不但需要连接单片机与上位机,而且还需要串口调试工具协助程序的调试。在这里
51、,我们选用串口调试助手来协助我们调试串口程序,串口调试助手的界面如图5.2所示。在串口调试助手中,选择好与单片机通信的上位机的com口,设置好通信的波特率,选择有无校验位,设置好数据位与停止位的位数。下面就可以开始串口程序的调试了,由于在本系统设计中,只需要上位机向单片机发送控制指令及字模数据,而不需要上位机读取单片机的状态,所以在本系统的串口调试中,我们只检测串口的接受数据的功能。串口调试助手的设置如下图所示,我们选择上位机的com1口,通信的波特率设置为9600,不设置校验位,数据帧的格式为数据位为8位,1位停止位,选择以十六进制的格式发动数据,以十六进制格式显示数据,发送的一串数据以aa
52、开头,当单片机接收到以aa开头的一串数据时,将aa以后的数据提取出来发动到上位机来,我们送的数据是aa 11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff,单片机接收到这串数据后,将aa以后的一串数据发送回来,在串口调试助手中显示为11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff,由于我们设置的是以十六进制的格式发送数据,以十六进制的格式接受数据,所以上位机接受到的数据位正确格式的数据。在这里,一定设置好波特率,这里设置的波特率一定要跟我
53、们在串口通信程序里设置的波特率一致,因为异步串行通信没有统一的时钟线来协调发送方跟接受方,它仅靠着波特率来协调发送方跟接收方的一致。如果串口调试助手中的波特率,跟程序中设置的不一致,那么在串口调试助手这里,我们将会看到单片机发送给上位机的是乱码。 图5.2 串口调试助手调试情况5.3 系统软硬件调试及结果 经过硬件调试与软件调试,我们可以证明硬件电路连接的正确性,排除系统存在虚焊的情况;经过对串口的软硬件调试,可以证明系统串口在硬件上连接无误,同时在软件上,也可以正常运行。下面我们重点调试led点阵显示屏幕,检查屏幕有无坏处。(1)检查屏幕的好坏,我们首先要编写一个逐行扫描的程序,让此程序从点
54、阵屏的第一行开始逐行的向下扫描,扫描到第十六行,观察有无发光二极管没有被点亮。结果发现第一块led点阵单元有俩两个发光二极管没有点亮,因为在之前的测试中由于没有接限流电阻,导致直接在发光二极管的两端加5v电压,烧坏了连个二极管。更换led显示单元,每行的led都会被点亮。(2)通过上一步检测,可以保证屏幕没有问题,每个led像素点都可以发光。现在开始测试我们之前编写的显示程序,显示程序分为动态滚动显示和静态显示。静态显示在led点阵屏上只显示一个汉字,通过反复测试,发现静态显示功能可以正常实现。动态滚动效果是让现实的内容从左到右,从上到下,从下到上滚动显示,通过测试,滚动效果没有问题。这一部测试可以断定整个系统的驱动电路与显示屏没有问题。(3)在上一步中我们证明了系统的屏幕显示汉字没有问题,并且在之前的测试中,我们证明了串口的软硬件结构都没有问题。在这里,我们开始测试串口控制led显示的功能能否得以实现。在串口调试助手中,我们发送控制led屏幕显示的控制代码,观察能否通过串口有效的控制led点阵屏的显示。通过发送控制代码,我们发现led点阵屏幕能够被控制,我们可以通过上位机来控制显示内容的移动情况,同时可以控制移动的速度。结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府采购按绩服务协议
- 股票配资投资者市场营销合同
- 自行车停放租赁合同
- 小学早操晨练活动方案
- 个人担保协议
- 砖混结构施工协议范例
- 国际人才招聘代理合同
- 投标及市场拓展业务激励制度
- 网站联盟合作协议
- 网页设计合同模板
- 机床数控技术PPT完整全套教学课件
- 文印投标服务方案
- 小学美术-7有趣的图形教学课件设计
- 一年级下册英语教学设计-Unit 4 food Lesson1- 人教新起点
- 26个英文字母描红(A4打印版)-26个英文字母描红打印
- 建设美丽中国通用课件
- 2023年江苏省南京市鼓楼区九年级上学期数学期中考试试卷含答案
- 花卉园艺师国家职业资格二级理论知识试卷
- 光伏项目概算计算表
- 植物检疫学复习题及答案(详细)
- 钣金工常用工具简介
评论
0/150
提交评论