单片机设计 下载本文

(6)由串口完成单片机与上位机的通信,通信速度和数据传输的可靠性要达到显

示要求。 3.2 控制单元设计

控制单元是整个显示系统的核心,该系统中采用51系列单片机为核心器件,用来和上位机通信处理上位机发送的控制指令和显示内容。并且直接输出数据通过译码电路控制LED显示屏的显示内容和显示状态。

在51系列单片机中选定一款合适的机型来作为控制单元的主控芯片。根据题目的要求该芯片必须要具有的就是方便的编程能力,因为在软件设计时方便的程序下载对程序的验证和编写非常有用。还有就是为了提高LED显示屏的扫描速度,单片机的执行速度要尽可能的快。根据这两点要求,选择美国ATMEL公司生产的AT89S51为控制单元的主控芯片。

3. 控制系统设计

控制电路设计中采用的是单片机系统,该系统必须要是工作在一个最小系统(指单片机的可以的最小配置系统)。AT89S51的最小系统包括了外界时钟电路和复位电路,选定一定数量的IO口作为控制口控制外部的各种器件和数据的输出。根据功能选择一定的单片机端口添加外围的器件,具体电路如图3-2所示。

在该系统中,P1各口主要用作LED显示数据的控制输出。由于端口的驱动能力有限所以该端口外接了5K的上拉电阻来提高驱动能力。其中P1.5P1.6P1.7还复用为ISP下载功能口。具体接法为:P1.0,P1.1,P1.4,P1.5分别接四块74LS164的A端,向74LS164送入串行数据经过其转换后并行输出;P1.2和P1.6分别接列和行的74LS164的CLOCK端,产生移位脉冲是串行数据并行输出;P1.3和P1.7接列和行的CLEAR端,在一组数据完成串并转换后清除164芯片中的内容转换新的数据;其中P1.5P1.6P1.7还复用为ISP下载功能口。P2.0接164芯片的使能控制端,当为高电平使允许输出;P2.2和P2.3接锁存器74LS373的OE和LE端控制锁存器的工作状态。

端口30,EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。因为没有扩展外部程序存储器所以将EA置为高电平。

图3-2 控制部分电路图

由于P3口是特殊功能口,在该系统中基本是采用其第二功能。其第二功能和实际运用如表3-1所示:

表3-1 AT89S51P3口第二功能的应用

端口 P3.0 P3.1 P3.2 P3.3 第二功能 RXD(串行输入口) TXD(串行输出口) 外部中断0 外部中断1 实际作用 与上位机通信的数据输入口 与上位机通信的数据输出口 做按键中断,控制显示状态 做按键中断,控制运行模式 AT89S51单片机的P1在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,P2口在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。所以P1和P2口留为外部数据存储器和程序存储器的扩展用,以备内部存储器和程序存储器不够用的情况时使用[。

四、设计原理和电路图如下

LED阵列的显示方式是按显示编码的顺序,一行一行地显示。每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。本文采用低电平逐行扫描,高电平输出显示信号。即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态 ,其它行都处于熄灭状态。

为了方便调试本文把4块8*8组成的16*16的点阵屏的行信号扫描输出管脚和列信号显示输出管脚分别引到显示屏的两边。

显示屏驱动电路主要由主芯片控制电路、电源电路、控制信号放大电路等组成。 1、主芯片控制电路

该部分电路主要由AT89S52和74LS154组成。单片机的P0和P2号控制显示信号的输出,P1号的低4位控制74LS154的译码输入,从而控制扫描信号的输出。 2、电源电路

整个电路的供电由USB电源提供,利用我们的电脑主机USB接口可以输出+5V电压,方便我们在实验室调试。 3、控制信号放大电路

为提供负载能力,在P0和P2口接16个常用9013的NPN三极管放大驱动信号。电路中列方向由p0口和p2口完成扫描,由于p0口没有上拉电阻,因此接一个1k*8的排阻上拉。

行方向则由4—16译码器74LS154完成扫描,它由89C51的P1.0---P1.3控制。同样,驱动部分则是16个9015的三极管完成的。

五、软件设计

系统软件采用C语言编写,按照模块化的设计思路设计。首先分析程序所要实现的功能,程序要实现串口通信,静态显示,动态显示三大功能。其功能结构如图2-4所示。通信程序接收上位机数据,交给主程序处理再通过控制程序选择不同的显示程序进行显示。

主程序的工作流程如图4-1所示:

开 始 中断开始 系统初始N 从显示数组读取数据到显示寄存RI=1? Y N 起始位? Y 调用相应显示程接收显示数据及控制命令 读取显示控制命令选择显示将显示数据移入显示数组将控制命令赋值给控制字符 中 断 返 回

图4-1 主程序流程图

程序开始时首先必须对单片机进行初始化,其中初始化的内容包括:中断优先级的设定,中断初始化,串行通信时通信方式的选择和波特率的设定,各IO口功能的设定等。初始化完成后程序进入待机状态等待中断的发生,该程序中主要用到了两个外部中断源和串行中断。外部中断源由按键的电平变化触发,外部中断主要功能是选择LED点阵显示屏的控制方式是由按键控制还是上位机控制和显示状态是静态显示还是动态显示。串行中断包括发送中断和接收中断都是由软件触发。中断产生后由预先初始化时设定跳转执行中断子程序。中断程序设定了LED点阵显示屏所要显示的内容和显示的方式,最后执行的是各种显示程序。按照设定的方式和内容显示出所需要的内容。 4.2 显示程序的设计 4.2.1 LED显示屏的显示方式

LED点阵屏显示方式主要由静态显示和动态扫描显示两种。

对静态显示来说,每一个发光二极管都需要一套驱动电路,一帧画面输入以后便可一劳永逸地显示,除非我们改变了显示内容,需要重新输出新的点阵数据.这种方式系统原理相对简单一些,但所需的译码驱动装量很多,引线多而繁杂,不便于大屏幕的制造,成本高,其可靠性也较低.

另一种动态扫描显示是把整个LED屏幕分成若干部分,每一幅画面的显示是显示完一部分后,又显示第二部分……直到显示完最后一部分又重新开始显示第一部分,重复循环进行.在重复扫描速度足够快的情况下,我们看到的就是一幅稳定的画面.也就是说采用动态扫描显示需要不断进行画面的刷新.在这种方式下其显示驱动电路可重复利用,引线也大大减少,从而使硬件成本降低,且屏幕上的发光二极管轮流发光,使用时的耗电量大大降低.大屏幕的制造、维护要容易许多,可靠性也增加了.

两种显示方式的比较再结合51单片机IO口数量有限的原因决定采用动态扫描的方式进行显示。

动态扫描分为行扫描和列扫描两种方式区别在于选通端和数据输入端分别是行还是列。在该显示系统中扫描显示的工作原理如图4-2所示,先选通列然后再从行送入对应列的数据,这样从第1列到第16列循环往复,只要切换的速度足够的快利用人眼的延时特性就可以看见一幅稳定的画面。

选通第1列选通LED第1列16×16LED按数据导通相应行从数据中读取第1列对应的行数据选通第2列选通LED第2列16×16LED按数据导通相应行从数据中读取第2列对应的行数据选通第16列选通LED第16列16×16LED按数据导通相应行从数据中读取第16列对应的行数据读取所需要显示的数据至显示寄存器 图4-2 扫描显示程序原理图