图2-4软件功能结构框图
软件的编写需要借助软件编辑器和编译软件,编译完成后还需要下载到单片机中执行。编写软件之前得首先选择一种合适的语言以及配套的编辑器和编译软件。最后还要选择一款与所选单片机的下载器或下载软件来把编写的程序下载到单片机中执行。
2.2.1单片机编程语言
现在主要运用的单片机编程语言为汇编语言和C语言。两种语言相比较各有优点。
汇编语言(Assembly Language)是面向机器的程序设计语言,是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。其具有执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植[8]。
C语言是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生压缩代码。C语言结构是括号{},而不是特殊符号的语言。C语言可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,可分为不同的函数。这种方式可使程序结构化;将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强的数据处理能力;已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。
基于以上理由决定采用C语言为该显示系统的编程语言。
2.2.2系统软件编译器介绍
C语言编写的程序并不能被单片机直接执行还需要编译为单片机可执行的机器语言。因此在系统软件设计中,编译器必不可少。支持MCS-51用C语言编程的编译器主要有两种:Franklin C51编译器和KEILC51编译器。目前在单片机开发中普遍都是使用KEIL C51来进行编译。
因此软件设计最终方案为采用C语言为程序语言,KELC为编译工具按照控制、通信、显示等几个功能模块来编写程序。
2.2.3上位机控制传输软件
其中系统采用现在已经非常普遍的PC机作为上位机,这样对该显示系统的硬件要求便降低了,增加了系统的通用性。上位机的作用是存储并处理显示内容,然后通过通信系统传送到控制系统驱动显示。
LED显示上位机的内容一般有实时显示和存储显示两种方法。实时显示及上位机屏幕上的内容同时显示在LED显示屏上,上位机上内容变化LED显示屏也跟着变化。存储显示是将显示内容处理过后存储在上位机中通过通信系统传输到显示屏显示。两种显示方法相比较:实时显示屏幕能及时反应上位机内容的变化,显示的效果和内容的实时性好多用于新闻播报、实况转播用,但实时显示硬件开销大,对通信系统要求高,工艺复杂,成本高;存储显示虽实时性不高但硬件开销小,成本低廉。课题设计题目对
11
显示的实时性要求较低且所设计的显示屏尺寸不大同时显示的内容不多,所以实时显示就没有必要。所以上位机选择存储显示的方法,控制LED显示屏的显示内容。
第3章 系统硬件设计
3.1硬件整体设计概述及功能分析
显示系统具体设计主要由上位机,电源系统,通信系统,单片机系统,译码驱动电路和8X8的点阵屏六部分组成。具体工作流程为:手机机通过通信系统向单片机发送控制指令和显示代码内容,单片机接收后执行控制指令处理显示代码将显示内容通过I/O口串行输出并且控制译码电路完成串并转换并行输出,最后由显示驱动电路进行电压和电流的处理以达到LED显示屏的显示电流,电压要求进而使显示屏显示内容。
根据硬件的功能结构图选取合适器件,器件不但要求能实现所要求的功能还要能兼容至整个系统之中。通过查阅资料和对比最终的硬件原理图如图3-1所示。
电源 电压转换器件 上位PC 机 宏电 GPRS 收发 模块 RS 232 图3-1硬件原理图
该系统所要实现的功能和要求有以下几点:
(1)驱动电路要能提供LED显示所需范围内的电压和电流要求。
(2)译码电路的高低电平的区分能力以及译码的输入输出频率必须满足单片机以及驱动电路的要求。
(3)单片机要能接收上位机的指令和显示内容且能够处理后控制LED显示屏的显示,并且端口驱动能力要足以驱动译码电路。执行频率要能达到扫描显示的最低要求。
(4)单片机由ISP下载线下载程序和供电,可不设立专用供电电源。
AT 89C52 单片机 MAX 7219 芯片 USB转RS232转换器 8X8 点阵LED屏
12
(5)由串口完成单片机与上位机的通信,通信速度和数据传输的可靠性要达到显示要求。
3.2电源系统设计
由于本方案各个芯片对电压和接口的要求都有自己规范,故将电源系统独立出来。首先,我们的上位机用的是20V——4.5A电源,89C51单片机用和RS232用的是4.5V的USB接口电源,宏电DTU模块用的是12V电源。对于电源电压的转换,不是本次设计的主要内容,对于原理部分,在此就不在详述。电压转换器如图3-2所示。
图3-2插座和电压转换器
3.3控制单元设计
控制单元是整个显示系统的核心,该系统中采用51系列单片机为核心器件,用来和上位机通信处理上位机发送的控制指令和显示内容。并且直接输出数据通过译码电路控制LED显示屏的显示内容和显示状态。根据题目的要求该芯片必须要具有的就是方便的编程能力,因为在软件设计时方便的程序下载对程序的验证和编写非常有用。还有就是为了提高LED显示屏的扫描速度,单片机的执行速度要尽可能的快。在方便购买的情况下选择了AT89C52为控制单元的主控芯片。
3.2.1 AT89C52简介
AT89C52是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。
AT89C52提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。AT89C52空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一
13
个硬件复位。
3.2.2控制系统设计
控制电路设计中采用的是单片机系统,该系统必须要是工作在一个最小系统(指单片机的可以的最小配置系统)。AT89C52的最小系统包括了外界时钟电路和复位电路,选定一定数量的IO口作为控制口控制外部的各种器件和数据的输出。在该系统中,P1各口主要用作LED显示数据的控制输出。其中P1.5P1.6P1.7还复用为ISP下载功能口。端口30,EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。因为没有扩展外部程序存储器所以将EA置为高电平。最小系统如图3-4所示。
图3-4单片机最小系统
由于P3口是特殊功能口,在该系统中基本是采用其第二功能。其第二功能和实际运用如表3-1所示:
端口 P3.0 P3.1 P3.2 P3.3
第二功能 RXD(串行输入口) TXD(串行输出口) 外部中断0 外部中断1 14
实际作用 与上位机通信的数据输入口 与上位机通信的数据输出口 做按键中断,控制显示状态 做按键中断,控制运行模式
表3-1 P3口的作用
AT89C52单片机的P1在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,P2口在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。所以P1和P2口留为外部数据存储器和程序存储器的扩展用,以备内部存储器和程序存储器不够用的情况时使用。
3.3译码驱动电路设计
译码电路的功能是为了解决单片机I/O端口不足,驱动电压不够的问题。设计的开始阶段由于没有注意到此问题,LED矩阵灯的点亮都存在问题。此次对LED矩阵灯采用MAX7219芯片来驱动。
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。MAX7219的外部引脚分配如图3-5所示及内部结构如图3-6所示。
图3-5 MAX7219的外部引脚分配图 3-6 MAX7219的内部引脚分配 各引脚的功能为: DIN:串行数据输入端
DOUT:串行数据输出端,用于级连扩展 LOAD:装载数据输入 CLK:串行时钟输入
DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流 SEG A~SEG G DP:7段驱动和小数点驱动
ISET:通过一个10k电阻和Vcc相连,设置段电流
15