首页 > 文章中心 > 正文

毕业单片机设计

毕业单片机设计

单片机是实现各种控制策略和算法的载体。由台湾凌阳公司生产的SPCE系列单片机,因其功耗低,超小型,低成本,功能完整,非常适用于便携式仪表和就地式显示控制仪表,在国内越来越受到用户的重视和广泛的应用。SPCE061A单片机功能强大,其片内含有八路十位A/D转换器和两路D/A转换器,该波形发生器运用单片机技术,通过巧妙的软件设计和简易的硬件电路,产生数字式的正弦波、方波、斜波等幅值可调的信号。信号频率,可通过键盘输入,并显示。与现有各类型波形发生器比较而言,产生的数字信号干扰小,输出稳定,可靠性高,特别是操作简单方便,人机界面友好,成本低,非常适合于物理实验室教学与实验使用。

SPCE061A单片机概述

SPCE061A是继u\''''nSP系列产品SPCE500A等之后凌阳科技推出的又一个16位结构的微控制器。目前有两种封装形式:84引脚的PLCC84封装和80引脚的LQFP80贴片封装。主要性能如下:

16位m’nSP微处理器;

工作电压:VDD为2.4~3.6V(cpu),VDDH为2.4~5.5V(I/O);

CPU时钟:32768Hz~49.152MHz;

内置2K字SRAM、内置32KFLASH;

可编程音频处理;

32位通用可编程输入/输出端口;

32768Hz实时时钟,锁相环PLL振荡器提供系统时钟信号;

2个16位可编程定时器/计数器(可自动预置初始计数值);

2个10位DAC(数-模转换)输出通道;

7通道10位电压模-数转换器(ADC)和单通道语音模-数转换器;

声音模-数转换器输入通道内置麦克风放大器自动增益控制(AGC)功能;

系统处于备用状态下(时钟处于停止状态)耗电小于2mA@3.6V;

具备触键唤醒的功能;

14个中断源:定时器A/B,2个外部时钟源输入,时基,键唤醒等;

使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;

具备异步、同步串行设备接口;

具有低电压复位(LVR)功能和低电压监测(LVD)功能;

内置在线仿真电路接口ICE(In-CircuitEmulator);

具有保密能力;

具有WatchDog功能(由具体型号决定)

一、方案设计与论证

方案一:

本方案直接采用凌阳SPCE061A作为波形发生器。波形的具体产生是通过两路DAC来产生,凌阳SPCE061A在这方面的设计为我们提供了极大的方便,用它实现的好处在于,电路极其简单,另外在DAC的编程方面又提供及其便利的编程环境。电路的设计包括三大部分,第一是键盘控制电路的设计,这里采用4*4键盘,由IOA的低八位进行控制,把键盘上的行和列分别接在IOA0~IOA3和IOA4~IOA7上,采用外部中断二来中断所显示波形,以便进入下一波形的编辑和输出,在波形输出的同时利用外部中断一来实现同步的频率调节。第二是显示电路的设计,这里为了在波形输出依然有显示,由于单片机的局限性这里采用通常的动态LED显示行不通,因为波形输出时要求CPU不停地为其服务而没有空闲来为LED进行不停更新,解决方案是采用带数据缓存器和驱动的LCD来提供显示,这样只占用八个I/O口即可完成设计要求,也可放弃适时显示功能采用LED显示,这里将提供两种显示方案。第三是滤波和电压转换电路的设计,滤波采用低通滤波器,滤除DAC转换过程中形成的高频小锯齿波。另外由于凌阳SPCE061A单片机DAC输出为电流输出,为满足达到5V的电压输出,外接OP07运算放大器进行放大,加1千欧姆电阻进行电流信号到电压信号的转换。本设计的特点是全面采用数字电路方案,因而工作稳定可靠。利用单片机控制管理,使频率设置和占空比调整等操作可用键盘输入,十分方便。

方案二:

本设计方案采用功能很强的大规模数字频率合成器MC145151和多波形宽频率范围信号发生器MAX038等新器件产生波形和频率,控制与管理电路部分使用SPCE061A单片机以及键盘显示电路。MAX038是一个精密高频波形产生器。它能产生频率高达20MHz的正弦波、三角波、方波等脉冲信号,其压控振荡器的频率分粗调和细调两层控制。在本电路中,用于粗调的控制电压(电流)由一个12位的DAC产生,使输出频率近似等于N倍基准频率。而细调电压则由数字锁相电路MC145151和环路滤波器MAX427产生,由锁相反馈环将频率fo=Nfr锁定。这种方案的优点是频率合成器工作更可靠,锁定更迅速。另外MAX038还包括占空比调整电路、波形同步电路、相位检测电路、波形切换开关和电压基准源等电路,所需外部元件少,使用很方便。控制和管理电路由SPCE061A单片机及电路组成。其主要用于对键盘输入的波形和频率选择等数据进行译码,计算出相应的控制参数,控制频率合成器输出正确的信号,并将其频率和波形参数用LED显示出来。对于小型通用信号产生器而言,这是一个比较理想的设计方案。

方案比较:

第一种方案设计电路简单,能够满足电子大赛设计的要求,这里考虑到短时间内设计既要成型,采用第一种方案。第二种方案的设计比较完善,由于用到专门的波形发生芯片,产生的波形比较完美,但电路复杂,适合于作波形发生器的产品设计方案。

二、系统硬件电路设计

2.1电路方框图及说明

图1整体框图

2.2各部分电路设计

2.2.1滤波、放大及其电流到电压的转换电路

电路本系统采用二阶压控电压源低通滤波器,如图2所示。它由两节RC滤波器和同向放大电路组成。其中同相放大实际上就是所谓的压控电压源,它的电压增益就是低通滤波器的通带电压增益,即:A0=Avf=1+Rf/R1

图2滤波电路

传递函数由图电路可知,运放同相端输入电压为:

(1)而Vp(s)与Va(s)的关系为:Vp(s)=Va(s)/(1+sRC)(2)对于节点A,由节点电流法可得Vi(s)/R-Va(s)/R-[Va(s)-V0(s)]sC-Va(s)/R-Vp(s)/R=0(3)将式(1)、(2)和(3)连立求解,可得电路的传递函数为A(s)=V0(s)/Vi(s)=Avf/[1+(3-Avf)sRC+sRC*sRC](4)式(4)为二阶低通滤波器传递函数的表达式。其中1/RC为特征频率,而1/(3-Avf)为等效品质因数。截止频率为1/RC。通过设置R、C可调节带通到我们需要的范围。另外调节Rf可调节幅度到我们需要的范围。

2.2.2键盘控制电路电路

在单片机中所需按键较少,多采用独立式键盘。此种键盘结构简单,每只按键接单片机的一条I/O线,通过查询即可示别出每只按键的状态来。但由于本系统按键较多,在这里采用矩阵式排列键盘,如图3所示,这样可以合理应用硬件资源,把16只按键排列成4*4矩阵形式,用一个8位I/O口控制,如图所示。把键盘上的行和列分别接在IOA0~IOA3和IOA4~IOA7

图3

按键控制电路上。先置IOA0~IOA3为带数据缓存器的高电平输出,置IOA4~IOA7为带下拉电阻的输管脚,此时若有键按下,取IOA4~IOA7的数据将得到一个值,把此值保存下来,再置IOA4~IOA7为带数据反相器的高电平输出,置IOA0~IOA3为带下拉电阻的输入管脚,此时若键仍没弹起,取IOA0~IOA3的数据将得到另一个值,把这两个值组合就可得知是哪个键按下了,再通过查表得到键值。

2.2.3显示电路电路

为了给广大单片机爱好者提供方便,在显示电路的设计方面提供两种方案,第一种是采用四个LCD进行适时显示,这是比较理想的方案,但由于LCD成本较高,这里还提供另一种方案,用六个LED进行显示,这种方案的缺点是不能适时显示,但也能满足一般设计要求。第一种方案采用四个LCD进行动态显示,轮流显示波形和频率,直接用SPCE061A驱动液晶显示器,要占用较多的I/O口,这里采用ICM7211M来驱动,这样不仅节省I/O口而且减化了编程。用数字代表各种波形,显示波形的粗调频率。用IOA9—IOA10口作为位选控制,IOA8口作为ICM7211M的片选信号,IOA11—IOA14作为数据线。数据线和位选线直接接凌阳SPCE061A单片机的I/O口即可,

图4LCD显示电路

第二种方案采用六个共阴极数码管LED进行动态显示波形和频率,直接用SPCE061A直接驱动LED,两位提供波形显示,四位提供频率显示。用IOB8—IOB13口作为位选控制,IOA8—IOA14口传输要显示的数据,数据线和位选线直接接凌阳SPCE061A单片机的I/O口即可,因为I/O口输出电流很小不会对LED造成损坏,它的电压值却足以驱动LED,这不像别的单片机还要外接驱动电路和电阻,采用凌阳SPCE061A单片机大大减化了设计过程和硬件电路。硬件电路如图5所示。

图5LED显示电路

2.2.4语音播报电路的设计电路

凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟可达到49M,具备运算速度高的优势等等,这为语音的播放、录放、合成及辨识提供了条件。另外SPCE061A单片机具有32k闪存,事先把所需要的语音信号录制好,整个语音信号经凌阳SACM_S480压缩算法压缩只占有13.2K存储空间,对凌阳SPCE061A单片机的存储系统来说绰绰有余。凌阳SPCE061A单片机自带双通道DAC音频输出,DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出,DAC输出为电流型输出,经LM396音频放大,即可驱动喇叭放音,放大电路如图6(只列出了DAC1,DAC2类似)。在DAC1、DAC2后面接一个简单的音频放大电路和喇叭就能实现语音播报功能,这为单片机的音频设计提供了极大方便,音频的具体功能主要通过程序来实现。

图6音频放大电路

三、软件设计

3.1主程序流程图

由于使用凌阳SPCE061A使电路变得异常简单,整个波形发生器的主体任务落到了程序编写上。整个系统的软件设计方案如图7,采用外部中断二来中断所显示波形,以便进入下一波形的编辑和输出,在波形输出的同时利用外部中断一来实现同步的频率调节。波形的具体产生是通过两路DAC来产生,之所以采用这种方式,是因为凌阳SPCE061A在这方面的设计为我们提供了极大的方便,在DAC的编程方面又提供了及其便利的编程环境。用函数来产生波形是大多数设计者喜之不舍得设计方案,但在具体设计方面,因为函数在单片机的运算过程中占据了太多的时钟周期,这就给我们追求高频波形一个瓶颈,要怎样解决这个问题呢?这里我采用查表来实现,根据理论凌阳SPCE061A单片机可达到一百兆的要求,这就能充分满足题目设计要求了,然而,由于函数产生波形极其方便,凌阳SPCE061A单片机有提供了大量函数库,在设计过程中我在低频部分依然采用函数设计。另外,波形频率随CPU的频率而变法,凌阳SPCE061A单片机的32768的实时时钟经过PLL倍频电路产生系统时钟频率(Fosc),Fosc再经过分频得到CPU时钟频率(CPUCLK)可通过对P_SystemClock(写)($7013H)单元编程来控制,这就为我们设计提供了丰富的CPU时钟选择。默认的Fosc、CPUCLK分别为24.576MHz和Fosc/8。我们可以通过对P_SystemClock单元编程完成对系统时钟和CPU时钟频率的定义,改变设置将可提供多种频率选择。在本设计中,波形编辑的第一部就是进行CPU频率选择,选择最高频和最低频作为粗调,在用键盘和中断进行微调,以便达到所需的频率及其幅值。下面将对各部分编程作详细说明。

图7整体流程图

3.2分块程序流程

按键控制部份

在键扫描的过程中,先置IOA0~IOA3为带数据缓存器的高电平输出,置IOA4~IOA7为带下拉电阻的输入管脚,此时若有键按下,取IOA4~IOA7的数据将得到一个值,把此值保存下来,再置IOA4~IOA7为带数据反相器的高电平输出,置IOA0~IOA3为带下拉电阻的输入管脚,此时若键仍没弹起,取IOA0~IOA3的数据将得到另一个值,把这两个值组合就可得知是哪个键按下了,再通过查表得到键值,跳转至相应程序段,执行输出相应波形或者编辑波形,从而达到控制波形的目的。整体按键过程如图8所示。

图8按键控制流程图

正弦波形的形成

在设计之初,我一直都在尝试使用函数来计算输出波形,使用这种方法,在示波器上得到了很好的波形,但是在CPU时钟频率没调至最高的情况下,所得到的频率只是多少毫赫兹到几十赫兹之间,基本上没有实用价值。要达到更高的频率,就得另辟蹊径了。分析一下为什么频率上不去,主要原因在于,使用单片机进行正弦函数的运算时占去了不少时间,如果去掉这一计算过程波形的频率应该大有提高,另外就是CPU时钟频率没有调至最高,以及DAC转换过

图9正弦波形查表形成流程图

程需要时间。为了达到更高的频率,首先就要免去单片机的计算负担,我使用的解决方法是人为计算出要输出的点,然后建一个表通过查表来进行输出,这样主要工作任务就落到了建表的过程中。这样做的好处在于,查表所耗费的时钟周期相同,这样输出的点与点之间的距离就相等了,输出的波形行将更趋于完美,当然更让我们感到的高兴的是它输出波形的频率将近达到了100K赫兹,能够满足我们设计的扩展要求了。为了实现频率的调整,我在一个正弦波周期里建了两百个点,如果我们隔一个取点的话,且在CPU时钟频率不改变的情形下,正弦波频率将相对于前面的频率提高将近一倍。这样我们就得到了解决频率调整的方法,首先进行CPU时钟频率选择,再调整一个正弦函数一个周期输出的点数,幅度的调节是通过初始幅度设置再通过外部放大电路来调节,设计程序流程图如图所示。另外,由于函数产生波形及其方便,凌阳SPCE061A单片机又提供了大量函数库,在设计过程中我在低频部分依然采用函数设计,因为这更有利于数字幅度和频率的调节。设计程序流程图如图9和10所示。

图10正弦函数计算形成波形流程图

三角波、锯齿波的形成

三角波、锯齿波形成的原理同正弦波形成的原理大致相同,在这里将不做作详细介绍,其流程图如图11所示。

图11三角波查表形成流程图

方波的形成和实现

方波是我们最常用的一种波形,并且常常作为一种标准信号应用在各个领域,凌阳SPCE061A提供了一种很好的方波发生机制,就是APWM调制,通过写入P_TimerA_Ctrl($700BH)单元的第6~9位,可选择设置APWM输出波形的脉宽占空比;同理,写入P_TimerB_Ctrl($700DH)单元的第6~9位,便可选择设置BPWM输出波形的脉宽占空比。我们可以将IOB8设置成同相输出端口,通过设置P_TimerA_Ctrl(写)($700BH)的第0~5位来选择TimerA的时钟源(时钟源A、B)。设置该单元的第6~9位(如图12所示),TimerA将输出不同频率的脉宽调制信号,即对脉宽占空比输出APWM进行控制。这里为了得到最标准的波形采用这种方式来实现标准方波。如图12所示就是我们进行APWM调制的原理图。

图12APWMO信号时序图

在某些应用领域由于各种干扰和响应的存在,实际电路往往存在各种信号缺陷和瞬变信号,为了满足各种需要我们还设计了有频率突变的方波,如图11所示。具体设计方案是采用不停的输出和停止输出某一幅度的值,在一个序列周期我们总共提供八位可变数值,因为在数据传输过程中一般是八位为一帧进行传输。通过键盘的编辑可以达到我们的需求。

图13有频率突变的方波

显示和播报

时间和路程的显示采用动态显示,显示子程序流程图如图14,语音播报采用凌阳SACM_S480语音播报,流程图如图15。

图14显示子程序流程图

图15语音播报流程图

其它

在按键控制的第6到第12个按键,都是用来改变和编辑波形参数的,这就为整个系统能输出各种波形提供了可能性,以及增加了它的实用性。另外还用外部中断一来进行同步调试,我们可在中断里写入各种参数,就可达到我们所要求的波形及其实现参数变化的目的。

四、系统测试及整机指标

五、总结

(1)能产生正弦波、方波、三角波、锯齿波几种周期性波形,并且可通过调节变形成其它相关波形。

(2)用键盘输入编辑可生成正弦波由基波及其谐波线性组合的波形,以及各次谐波单独的波形。

(3)输出波形的频率范围为100mHz~100kHz;可以通过键盘输入粗调频率,通过外部中断一可同步调节频率,具有在低频部分调节步进小,在高频部分大的特点。

(4)输出波形幅度范围为0~5V(峰-峰值),可通过可变电阻任意调整调整。

(5)具有显示输出波形的类型、及其粗调频率和幅度的功能。

(6)具备语音提示波形和粗调频率的功能。整个系统其性能指标均达到了要求,还增添了其它特色。通过此次设计,让我感到了凌阳SPCE061A十六位单片机的方便性和灵活性,通过对凌阳SPCE061A单片机的使用,可以使编程技能快速提高,并且认识到很多新的算法和设计思想。