《本科毕业设计--基于avr单片机的led点阵屏设计.doc》由会员分享,可在线阅读,更多相关《本科毕业设计--基于avr单片机的led点阵屏设计.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、济南大学毕业设计毕业设计题 目 基于AVR单片机 的LED点阵屏的设计 摘 要 LED显示屏是一种由很多个发光二极管组成的点阵,通过控制半导体发光二极管的亮灭来显示内容的显示屏。LED显示屏分为数码显示屏、图文显示屏和视频显示屏,都是由LED矩阵块组成。目前由于LED显示屏造价昂贵,主要应用于比较高档的场所,主要集中在城市的繁华场所。本文介绍了一款以AVR单片机为控制器的LED点阵显示屏系统的设计。该系统可实现字母汉字的静态显示和动态滚动效果,并且可以通过外扩接口级连的方式来扩大显示屏幕的尺寸以达到增加显示内容的目的。系统采用PC机作为上位机,上位机向单片机发送控制命令和上位机所存储的字模数据
2、,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 emitting diodes usually red light.emitting diode
3、s 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. This paper introduces a design of the LED lattic
4、e 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 PC sends control commands and displays code to m
5、icrocontroller, 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 addition, the system will take up only a small amou
6、nt 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点阵显示屏32.1.3 LED点阵屏的驱动方式32.1.4 硬件设计方案42.2 系统软件方案52.2.1 单
7、片机编程语言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第4章 系统软件设计184.1 主程序设计184.2 显示程序设计194.2.1 显示驱动程序的设
8、计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点阵显示屏是八十年代后期迅速风靡全球的新型信息显示媒体,显示屏由几万几十万个半导体发光二极管点阵像素均匀排列组成。利用不同的制作材料可以制造不同发光颜色的LED
9、像素点。目前应用最广泛的是红色、绿色、黄色。而蓝色和绿色LED显示屏的开发已经达到了实用阶段。LED显示屏可以显示变化的字母、数字、文字、图形图像,不仅可以用于室内装饰还可以用于室外环境,具有投影仪、电视墙、液晶显示屏都无法比拟的优点。在短短的十几来年中,LED显示屏就以其功耗小、亮度高、能够承受各种恶劣气候而得到了广泛的应用。LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高的发光密度、更高的发光均匀性、更高耐气候性、可靠性、全色化的方向发展。LED显示屏的应用涉及到社会经济的方方面面,主要应用的场合有:(1)车站的买票公告栏(2)广场的LED电视直播(3)银行的交易信息及利率等信息的
10、显示(4)商店超市的广告牌等等。1.1.2 我国现状 自LED显示屏诞生至今,我国在LED显示屏领域的研究,在国际上还是名列前茅的。目前各种形式的LED屏幕在我国都有生产,其中最流行的彩色LED显示屏做的很突出,这种显示屏主要用在广场跟街头的城市电视中。现在一些电脑的显示器也开始采用了LED显示技术,应该来说在这方面,我也没有落后于别的国家,联想研制的新型笔记本,很多采用了LED显示技术,突破了原来的LCD显示,这种笔记本电脑的显示屏亮度更高,功耗更低,可谓是理想的选择。相信在未来的中国将会有更多的电子产品采用LED显示技术。1.1.3 LED显示屏的市场前景由于LED显示技术也是最新兴起的技
11、术,目前LED显示技术的发展还是比较迅速,其中大多数用于商家的广告牌,晚上在城市的街道,到处可以看见LED显示屏的影子。LED显示技术是跟信息技术紧密相连的,信息技术的发展必定会带动LED显示技术的进步,在不久的将来,也将会出现更多的电子产品采用LED显示。可以将发光二极管做的更小,这样生产出来的LED显示屏的分辨率会更高。第2章 方案论证与选择2.1 系统硬件方案设计大多数的LED显示屏都在户外,所以对屏幕的材质硬件的质量要求非常的高。为方便检修和维护硬件电路设计,常常采用模块化的设计方法。硬件的设计采用模块化设计,既要满足模块本身功能要求又要能够和整个系统兼容。如图2.1所示,根据显示系统
12、的功能特点,从而确定系统硬件由控制部分,显示屏部分,通信系统及上位机四部分组成。上位机通过通信串口部分向主控芯片发送控制指令和显示内容字模数据,主控芯片执行显示指令,将需要显示内容的字模数据转换为二极管的亮灭,从而显示出内容。PC机LED显示屏 通信系统AVR单片机图2.1 系统硬件结构2.1.1 通信系统 通信部分的设计要满足要求就是稳定、快速、简单易实现。因为在通常情况下显示屏和上位机之间的传输距离不会很远,所以对通信距离的要求不是很高,采用RS232标准就可以。计算机通信的方式主要有并行通信和串行通信两种方式。 (1)并行通信 计算机并行通信时,数据是一起发送的。一起发送的数据位数就是并
13、行通信的宽度,这个宽度可以是一个字节也可以是一个字。并行传输的速度较快,因为可以一起传送很多的位数,但是并行传输的成本很高,故在远距离传输时,我们选用串行通信。(2)串行通信串行通信每次只可以发送一位数据,所有的数据信号都是在一条数据线上发送的,所以只需要很少几根线就可以进行,串行通信的速度低,但传送的距离长,因此串行通信适用于长距离而速度要求不是很严格的场合。在串行通信时,数据是一位一位按顺序进行的,而计算机内部的数据是并行进行处理的。因此,当计算机向外发送数据时,必须将计算机内部的并行数据转换为串行数据再发送。反之,当计算机接收数据时,又必须将串行数据转换为并行数据进行处理。这种转换可以由
14、硬件来实现也可以由软件实现。如果仅用软件实现又会增加CPU的负担,降低其利用率,故目前常通常采用硬件实现。通用异步接收/发送器,简称UART(Universal Asynchromous Receeiver/Trabsnitter)是完成这一功能的硬件电路。在AVR单片机芯片中,UART已经集成在单片机内,作为其组成部分,构成一个串口。 综上所述,在本系统中将采用UART来实现单片机与上位机之间的通信,由于串口已经集成在了单片机的内部,故只需设置相关寄存器就可以使用串口了。2.1.2 LED点阵显示屏显示部分有可以显示汉字的显示屏和对显示屏进行驱动的底层硬件电路。由于单片机的I/O口有限且计算
15、机IO口的驱动能力不是很强,故不能直接用单片机的I/O口来驱动LED显示屏,所以需要对单片机IO口进行扩展来增加单片机并行输出和驱动能力。LED显示屏是由一个一个的发光二极管组成的点阵构成的,要构成大尺寸的LED显示屏就需要很多的发光二极管。构成LED屏幕的方法有两种,一是由单个的发光二极管逐点连接起来构成的,如图2.2所示;二是选用一些由单个发光二极管构成的LED点阵单元模块来构成较大的LED点阵模块。目前市场上普遍采用的点阵单元模块有88、1616几种。这两种屏幕构成方法各有自己的优缺点,单个发光二极管构成显示屏优点是当某个发光二极管出现问题时只需更换一个二极管便可以正常工作,检修的成本较
16、低,缺点在于连接线路较为复杂;而点阵模块构成的方法却正好与之相反,采用点阵模块构成显示屏节约了大量的连线,但是一旦某个发光二极管出现问题时,与其同在一个模块的所有LED都必须被更换,这样就加大了维修的成本。两种方法相比较,本系统中采用模块点阵的方法,这样可以避免较为复杂的连线。为了避免点阵模块的缺点,在本系统中选用8x8LED点阵的基础单元模块,这样一段某个发光二极管出现问题,我们只需更换一个8x8的点阵模块,若选用16x16的单元模块,则更换的成本太高了。2.1.3 LED点阵屏的驱动方式 LED点阵的驱动方式有两种:恒流驱动方式和非恒流驱动方式。在非恒流驱动方式中,可以将74HC595输出
17、的数据直接接到点阵屏上,即用74HC595输出的电流来驱动显示屏,但有74HC595输出电流有限,不能驱动很多的发光二极管同时点亮,所以当一排点亮很多二极管时,会出现跟其他排亮度不一的现象。恒流驱动是将74HC164的输出接到三极管基极,三极管的发射极接到电源上,集电极接到LED显示屏幕上。图 2.2 LED点阵图一个1616的LED显示屏行和列各有16支引脚,我们不能直接用单片机来驱动显示屏,因为单片机的IO口驱动能力很弱,而且直接接到单片机上,会占用大量的IO口。在单片机驱动LED显示屏时,常采用IO口扩展的方式,在这里我们采用74HC595、74HC164来进行IO 口扩展,这样只需要占
18、用少量的IO口便可以驱动显示屏了。由于74HC595芯片输出的电流只有30mA,所以不能驱动很多的发光二极管同时发光,这样我们需要在每个芯片的输出端口加上功放电路,这样我们就可以同时点亮很多的发光二极管,这就是LED显示屏的恒流驱动。但是,采用恒流驱动的方式,对于电源的要求也相应的提高了,要求电源必须能够提供足够的电流,来驱动大量的发光二极管同时发光。2.1.4 硬件设计方案最终方案如图2.3所示,在这里,我们让PC机作为上位机,在PC机上运行串口调试助手,通过此软件来实现上位机与单片机之间的通信。在上位机中,存储着字模数据和控制数据显示的方式的控制指令。首先上位机将字模数据发送到单片机内,单
19、片机接受到字模数据,通过译码电路,将字模数据还原出来,利用这些01字符串来控制发光二极管的亮灭,从而在点阵屏幕上显示出内容。题目将以此涉及方案为指导展开具体的硬件电路设计。图2.3 硬件设计方案2.2 系统软件方案软件的设计除了满足系统的功能外,还必须满足容易读写,方便下载和编译的特点。在系统设计目标和硬件总体结构确定的情况下,系统程序可以由主程序,显示驱动程序和各种特效显示程序,串口通信程序三个主要部分组成。具体结构如图2.4所示。图2.4 软件功能结构框图程序的编写需要借助编辑编辑器和编译软件,本系统中采用ICCAVR这个集成开发环境来编写编译程序,编译完成后还需要下载软件将编译生成的HE
20、X文件下载到单片机中执行。编写程序之前首先选择一种合适的程序设计语言以及配套的编辑器和编译软件。最后还需要选择与所选单片机相适应的下载器和下载软件,来把程序执行生成的hex文件下载到单片机中。2.2.1 单片机编程语言在单片机开发领域所用的主流编程语言为汇编语言和C语言。两种语言相比较各有优点。汇编语言(Assembly Language)是面向特定机器的程序设计语言,是一种功能很强的程序设计语言,汇编语言是直接控制计算机的硬件来执行的,所以它对编程人员的要求好高,程序员要充分的了解所使用的单片机的硬件架构及组成特性。汇编语言具有执行速度快,占内存空间少等优点,所以它一般用在对于时间空间要求比
21、较严格的场合,在平时我们开发单片机程序时,一般都用不到。汇编语言对于机器的依赖性较强,在一种型号的单片机上编写的汇编程序不能移植到另一型号的单片机上,这就限制了它的应用。C语言是一种高级程序设计语言,C语言经过若干年的使用,可以证明其强大性,C语言最初是用来开发UNIX操作系统,在C语言在其编译效率、执行速度等方面显示出了强大的优越性,这就扩大了它的使用范围。C语言相比于其他程序设计语言,最大的特点是可以直接控制硬件,这是JAVA、C#等高级语言多没有的特性,它兼顾了高级语言的特点,又具有汇编语言的特点,其执行速率也是很快的。所以C语言成为了嵌入式开发领域的主流语言。另外,C语言还是一种结构化
22、语言,在C语言中最基本的单元就是函数,我们可以把功能接近的代码,放在一个函数中,这样我们的程序就成为了由一个个函数组成的整体,在主函数中我们可以调用相应的函数来实现某种功能,C语言的这种特点使其很容易调试、修改。在C语言中,有很多的库函数,如果在我们的程序中要实现某种功能,而这种功能在函数库中已经得以实现,那么我们就可以将这个函数库直接包含在我们的程序中,可以减少我们自己多要编写的代码量。综合比较了两种语言,在本系统设计中,我们采用C语言作为程序设计语言。2.2.2 系统软件编译器介绍用C语言编写好的程序不能直接被单片机所执行,要想让C语言控制单片机运行,需要对C语言程序进行编译,所以编译程序
23、是不可缺少的。支持AVR用C语言编程的编译器主要有:ICCAVR编译器和AVRStudio编译器。目前在单片机开发中普遍都是使用ICCAVR来进行编译。因此软件设计最终方案为采用C语言为编程语言,ICCAVR为编译工具按照控制、通信、显示等几个功能模块来编写程序。2.2.3 上位机控制传输软件本系统采用PC机作为上位机,这样对该系统的控制就变得简单了,因为PC机可以直观的反应单片机的状态。本系统中上位机的作用是存储字模数据并控制单片机的显示,通过通信系统将控制指令传送到单片机中控制LED的显示。LED点阵屏的显示一般有存储显示和实时显示两种。存储显示是将要显示数据的字模通过串口由上位机发送到单
24、片机内,单片机接到上位机发来的数据,再接受上位机的控制信息便可以在LED显示屏上显示了。实时显示即上位机屏幕上显示的内容会同步的显示到单片机多控制的LED显示屏上。两种显示方法相比较:实时显示对于硬件的要求较高,对于通信系统的要求很高,上位机需要不断的将更新的数据发动到LED屏幕上,通信开销交大,此种显示方式多用于广场的新闻播报显示屏。存储显示不要求有较高的传输速率,对硬件要求不是很高,多用于需要较长时间在显示屏上显示信息的场合,上位机将数据发送到单片机后,单片机便可以将其长期的显示在屏幕上了。本系统设计中,对于实时性要求不是很好,另外,从成本方面考虑,选用存储显示来设计系统。2.2.4 下载
25、软件 AVR单片机的下载软件主要有:AVRFighter ,Mucode,AVRStudio。AVRStudio在下载程序时,不方便设置熔丝位,而AVRFighter ,Mucode可以方便直观的设置AVR的熔丝位,所以本系统采用AVRFighter作为下载软件。第3章 系统硬件设计在第二章中,讨论过不同的软硬件设计方案,选择了最有效的方案,在本章中详细设计系统的硬件,其中包括AVR单片机最小系统的设计,串口通信硬件设计,ISP下载口设计,JTAG调试口设计,LED点阵屏幕设计,LED驱动电路设计。3.1 硬件系统的总体设计本系统采用AVR单片机为核心控制器件,用四块8*8点阵相连组成16*1
26、6点阵屏,作为显示部分,用两片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机采用的是RS232电平,+15V代表逻辑0,.15V代表逻辑1,与单片机的逻辑电平不一致,所以采
27、用MAX232芯片进行电平转换。3.2.1 串口通信电路设计在串口通信设计中,我们选用UART与上位机进行通信,串行通信可分为同步串行通信与异步串行通信。同步串行通信的代表有SPI、IIC,这种通信的最显著特点是,收发方有相同的时钟来协调双方的发送。异步串行通信的代表是UART,在这种通信方式里,我们没有统一的时钟来协调收发方。收发方数据一致性的保证是波特率,在这种发送方式中,每个数据帧的格式是一位起始位,后跟若干数据位,奇偶校验位,停止位。数据位的位数我们可以在配置寄存器中进行设置,而选用奇偶校验也可以在配置寄存器中进行设置,这样就可以保证了数据发送的正确性质了。 串口通信电路原理图如图3.
28、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电阻两端有个很大的压降,10K电阻RESET端为低电平,单片机复位。图3.2 复位电路3.2.3 单片
30、机的下载口 在PC机上写好的程序要下载到单片机里才能控制单片机的IO口输出高低电平,从而控制LED点阵屏亮灭。对于AVR单片机来说,可以有两种下载程序的方法,一种通过ISP在线下载,一种通过JTAG仿真调试,在调试后程序自动下载到单片机里,同时JTAG仿真调试可以很方便的找出程序中的错误,有利于调试,所以在的最小系统中也加入了JTAG口。 ISP下载口的电路原理图如图3.3所示,接口的2管脚接VCC,4、6、8、10管脚接GND ,在下载器上可以通过跳线设置通过下载线给单片机供电,接口的第3管脚悬空,1、5、7、9接到单片机的程序下载口上,这样通过下载器就可以向单片机里下载程序了。图3.3 I
31、SP下载口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点阵屏设计及驱动电路设计3.3.1 驱动电路设计 本系统中采用两片74HC595和两片74HC164将串行数据转换为并
34、行数据,在LED点阵屏设计时,采用三极管来驱动显示屏,这样可以是每个二极管的亮度都达到饱和。图3.7为三极管组成的驱动电路。在电路中,采用的是PNP 型三极管,三极管的基极接到74HC164的输出端,发射极接到电源,集电极接到LED点阵屏上,这样当74HC164某个管脚输出低电平时,其对应的三极管导通,电流通过三极管流到LED点阵屏,点亮相应的二极管。当74HC164输出高电平时,其对应的三极管不能导通,所驱动的发光二极管不会被点亮。这样就能很好的控制发光二极管的亮灭了。图3.7 三极管驱动电路3.3.2 行驱动电路设计 在行驱动电路中,采用2片74HC164来扩展IO口,74HC164的输出
35、通过4.7K的电阻接到三极管的基极。图3.8为74HC164的管脚图。 图3.8 74HC16474HC164是一种串入并出的芯片,在本设计中,将芯片的1、2管脚接在一起,使1、2管脚成为线与的关系,数据从1、2管脚串行进入芯片,时钟线接在第8管脚,在每个时钟周期的上升沿,串行数据写入芯片内,在8个时钟周期后,数据就并行的从芯片输出。同时,芯片的第13管脚,也是芯片的级联管脚,可以将第13管脚接到下一片芯片的输入端,这样就可以输出16位并行数据了。图3.9为本设计中74HC164的级联图,本系统中用单片机的IO口模拟芯片输入的数字时钟,通过IO口不断的拉高拉低来实现时钟的效果,在每次的上升沿数
36、据就写入到了芯片内,16个上升沿后,16位数据就在IO口准备好了,输出到16个三极管的基极,为低电平的IO口所对应的三极管导通,三极管驱动相应的发光二极管点亮。 图 3.9 74HC164级联效果图3.3.3 列驱动电路设计在列驱动电路里,用了两片74HC595来扩展IO口,74HC595芯片的功能类似于74HC164,但74HC595芯片带有锁存功能,在时钟引脚上,每来一个上升沿,串行数据就向高位移位,待8为数据都准备好时,在锁存时钟引脚上来一个上升沿,就打开锁存端口,并行数据发出。74HC595输出端接在限流电阻端,限流电阻另一端接在了LED点阵屏幕上。图3.10为74HC595的引脚图。
37、图3.10 74HC595管脚图其中第14管脚为数据输入管脚,第9管脚为级联管脚,本设计中将两片595芯片级联起来,当低位芯片满八位时,通过级联端口向高位移位,第11管脚为595芯片的时钟输入端,每次在11管脚上产生一个上升沿时,串行数据就向前移动一位,第12管脚为595芯片的数据锁存端,当在12管脚上产生上升沿时,锁存输出打开,595中的数据并行输出。第13管脚为595的使能端,在本设计中,直接将13管脚接低电平,即595芯片一直处于使能状态。第10管脚为芯片的擦除引脚,当在第10管脚加低电平时,就将595芯片内部存储的数据擦除,在本设计中,不需要擦除芯片,所以直接将第10管脚接高电平。图3
38、.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点阵,左边的一列引脚为LED点阵的行信号输入引脚,上面一行为LED点阵的列信号输入引脚。当在某一行输
39、入引脚输入高电平,某一列输入引脚输入低电平时,相应的行列交错点的发光二极管将被点亮。我们将4个8x8LED点阵对应的引脚连接起来,就形成了16x16点阵。如图3.13所示。图3.13 16x16LED点阵引脚图第4章 系统软件设计4.1 主程序设计系统控制程序采用C语言编写,按照模块化程序设计的思想来设计。首先分析程序所要实现的功能,程序要实现PC机与单片机的串口通信,LED显示屏的静态显示与动态显示三大功能。串口程序接收上位机数据,交给主程序处理后再通过显示控制程序选择不同的显示方式进行显示。 主程序的工作流程如图4.1所示:图4.1 主程序流程图程序开始时首先必须对单片机进行初始化,其中包
40、括:各IO口功能的设定,中断初始化,串行通信方式的选择和波特率的设定等。单片机上电后,首先进入主程序,在主程序中,调用串口程序,待上位机的指令通过串口发送到单片机,且单片机接受完指令时,主程序开始调用显示程序,将信息显示在LED显示屏上。4.2 显示程序设计4.2.1 显示驱动程序的设计显示驱动程序是显示部分的核心,显示驱动程序有行驱动程序跟列驱动程序组成,行驱动程序主要是74HC164芯片的驱动程序,列驱动程序主要是对74HC595芯片的驱动。对于行驱动程序,第一次将第一位输出为0,这样相应的三极管导通LED点阵的第一行被阳极为高电平,这样第一行所有阴极被置为低电平的二极管点亮。在下一个脉冲
41、到来时,74HC164芯片内的数据向高位移位,同时在程序中让低位补1,这样第2行的二极管的阳极置为高电平,同样,第二行所有阴极被置为低电平的二极管将被点亮。对于列驱动程序,单片机移位输入的是显示内容的字模数据,将数据移位16次后,在74HC595芯片的数据锁存端给一个上升沿,将16位并行数据全部输出。注意在这里,我们输入到595芯片内的数据是要显示信息的字模的反码,因为列扫描程序对应的是二极管的阴极,在行扫描程序中,我们已经给了二极管的阳极高电平,所以在列扫描程序中应该给出低电平才能点亮相应的发光二极管。图4.2为LED显示屏显示的动态扫描过程。图4.2 LED显示的动态扫描过程 第一次在第一
42、行输出高电平,同时列输出的是字模数据在第一行对应的字节的反码,第二次在第二行输出高电平,同时列输出的是字模数据在第二行对应的字节的反码。以此类推,直到第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)初始化,其控制位分布如表。EA为中断允许总控制位,EA=1时CPU开中断;EA=0时,CPU屏蔽所有中断,
44、只有打开总中断,所有模块的终端才会起作用,ET、ES、EX1、ET0、EX0为对应的定时器/计数器1中断、串行口中断、外部中断1中断、外部中断0中断、定时器/计数器0中断的中断允许位,对应位为1时允许其中断,对应位为0时,禁止其中断。有些读者可能搞不懂总中断与其他中断的关系,图4.4做了形象的描述。图4.4 总中断与分中断的关系表 4.1 中断允许寄存器格式D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0 在系统初始化时设定中断允许寄存器初值为0XFF,指令为 IE=0XFF。设置串口工作方式1,波特率9600,计算可得计数器初值的十六进制表示为0XFD。通信协议如表4.2所示
45、:表4.2 串行通信协议格式数据结构第1个字节第2至第33个字节第34个字节内容起始标志位S显示数据控制指令作用判断是否开始接收数据LED的显示内容控制LED显示方式 具体串口中断程序流程图如图4.5所示,在主程序中先进行了串行中断的初始化,初始化内容包括了串行工作方式选择,波特率的设定,计数初值的设定。程序开始进入中断等待,当PC机向单片机发送数据时产生中断接收允许位RI置1,将SBUF(缓冲寄存器)中的值输入到暂存器中进行数据处理。首先判断数据是否设定的起始标志位S如果是则开始接收起始位后的33个字节,不是则中断返回继续等待。接收到第34个字节后便将收到的数据发送回PC机进行验证比较。所有的程序编写完成后都必须经过编译才能烧写到单片机中运行。为了减小程序的修改和优化难度,按照模块化编程的思想,将各个功能写入到一个模块中,每完成一个模块就用总程序调用测试,测试通过则继续编写下一个模块。各子模块编译没有错误后再输入单片机进行验证。这两项都通过后,再将所有的程序整合到一起,进行集成测试,测试通过则完成了该系统的软件设计。中断开始YNNN接收到第34位?接收起始位后33位数据Y起始位S将第2位起的32位数据发回PC机接收串口数据RI=1?中断返回Y图4.5 串口程序的调试第5章 系统制作与调试在系统设计完成后,必须对其进行实物