基于MC68HC08单片机ADDA转换系统的设计.docx
《基于MC68HC08单片机ADDA转换系统的设计.docx》由会员分享,可在线阅读,更多相关《基于MC68HC08单片机ADDA转换系统的设计.docx(51页珍藏版)》请在冰点文库上搜索。
基于MC68HC08单片机ADDA转换系统的设计
MC68HC08单片机A/D与D/A转换系统的设计
摘要
伴随着工业的快速发展,基于单片机的转换器在工业控制、仪器仪表、家电产品的应用与日俱增。
但是,但是大多数单片机还存在价格偏高、引脚利用率较低的问题。
于此,我们提出一种性价比高,在实际应用中具有价格竞争力的基于Motorola单片机的A/D、D/A转换技术。
文中详尽地介绍了转换系统的设计方案和硬软件模块组成,并运用Protel99SE绘画出电路原理图,本电路主要由D/A转换器MAX550A,单片机MC68HC08组成,因为所采用单片机内含有A/D转换模块,所以此次设计中不需采用A/D转换器。
设计中采用可调电阻来调节电压作为模拟信号的输入量,通过单片机内部模数转换模块来完成模数转换,并将结果显示出来。
通过MAX550A完成数模转换,并利用发光二极管的亮暗程度显示其结果。
关键词:
A/D转换器,D/A转换器,单片机,MAX550A
AdesignoftheMC68HC08microcontrollerA/DandD/Aconversionsystem
Abstract
Accompaniedbytherapidindustrialdevelopment,microcontroller-basedconverterintheincreasingapplicationofindustrialcontrol,instrumentation,homeappliances.However,suchsingle-chiphighprices,lowerpinutilization.Here,weproposeacost-effective,competitivelypricedMotorolamicrocontrollerA/D,D/Aconversiontechnologyinpracticalapplications.Detailedtextconversionsystemdesignandhardwareandsoftwaremodulecomposition,anduseoftheProtel99SEdrawingoutthecircuitschematic,thiscircuitbytheD/AconversiondeviceMAX550AmicrocontrollerMC68HC08composition,byusingthemicrocontrollercontainsA/D,conversionmodule,sothisdesigndonotneedA/Dconverter.Thedesignoftheadjustableresistortoregulatethevoltageasananalogsignalinputthroughthemicrocontroller'sinternalanalogtodigitalconversionmoduletocompletetheanalog-digitalconversion,andtheresultsaredisplayed.MAX550Acompletionofthedigitaltoanalogconversion,Andusedegreeoflightanddarkofthelight-emittingdiodedisplaytheresults
Keywords:
A/Dconverter,D/Aconverter,microcontroller,MAX550A
1.1研究背景1
1.2A/D、D/A技术发展历程1
1.3A/D、D/A转换器的主流工艺技术2
1.3.1双极工艺2
1.3.2CMOS工艺2
1.3.3BiCMOS工艺2
2.1数字滤波3
2.2D/A转换3
2.2.1T型权电阻网络D/A转换器4
2.3D/A转换器的指标5
3.1Motorola单片机的介绍7
3.1.1引脚功能说明:
7
3.2晶体振荡及外接电路设计9
3.3单片机A/D转换10
3.4D/A转换器13
3.4.1MAX550A介绍13
3.4.2MAX550A引脚说明14
3.4.3工作原理及操作方式15
3.4.4系统整体效果图17
4.1A/D子程序设计19
4.1.1A/D转换程序22
4.2D/A转换程序设计22
4.2.1D/A转换程序24
4.2.2D/A转换程序框图26
4.3Motorola程序编译环境26
第一章绪论
1.1研究背景
在机械、动力或电子工程等领域内,对一个动态运行的系统进行测试,就是对它产生的电、磁、光以及力学量力、振动、位移、加速度等进行测试。
这些动态变化的量就是我们所需要测量的信号。
这些信号实际上是一个随时间变化而变化的函数,它包含了大量的信息,通过这些信息我们就可以更加便捷地辨别这个系统,分析这个系统,以便可以很好地控制这个系统。
但是问题的关键在于如何去提取我们想要得到的信息,还有就是如何去处理信息,而单片机是收集和处理信息最好的工具。
然而单片机处理的是数字量。
这就需要对信号采样,将模拟量转换为数字量就是A/D转换,然后对单片机转换后的数字量进行提取和处理。
有时还需要对数字量进行转换输出,从而达到控制一个系统的目的,这就是D/A转换。
图1-1给出了这种系统的结构。
采样/保持
多道开关
放大器
传
感器
A/D转换
接收源
信
号
源
多道开关
单片机
D/A转换
接收源
图1-1A/D、D/A转换系统的结构
1.2A/D、D/A技术发展历程
自20世纪初以来,电子器件经历了从电子管、晶体管、到集成电路的发展历程,电子计算机也随之由电子管型发展到晶体管型,再从晶体管型发展到集成电路型。
进入五十年代中期以后,才逐渐转向晶体管型。
六十年代中期开始,A/D和D/A的转换器的主要单元电路逐渐构成,如基准电压源、逻辑控制电路、电压比较器、运算放大器、模拟电子开关和电阻网络等已陆续实现集成化。
因此,人们逐渐放弃了传统而复杂的制作工艺,开始应用一些具有某一种特定功能的集成模块电路,并且适当地添加一些元器件,使制作出来的产品更加理想化,这种结构形式既优化了产品性能又简化了组装结构。
二十世纪初期诞生了第一个单片式高位集成化转换器,这标志着A/D、D/A转换器进入工业生产的新阶段。
与组件型和混合型的转换器相类比,单片集成转换器更加具有生产成本低和容易获得良好的温度特性的优点。
因此,伴随着工艺生产的要求,单片式集成化转换器很快就成为了A/D和D/A转换器的主流产品[1]。
1.3A/D、D/A转换器的主流工艺技术
由于A/D、D/A转换器应用范围比较广泛,对它的性能要求也各不相同。
基本上半导体技术都可以用于制造A/D、D/A转换器。
1.3.1双极工艺
双极工艺是最早得到开发并应用于制作A/D、D/A转换的半导体技术,。
早期的转换器大都是选用双极工艺技术来制作的,如最早由PaulBrokaw所设计的单片A/D转换器AD571。
1.3.2CMOS工艺
CMOS工艺技术又叫作互补式金属氧化物半导体技术,CMOS是受电压控制的一种放大器件。
这种技术出现于20世纪60年代中期,其已经遵循摩尔定律发展了几十年,至今仍被广泛应用。
一方面CMOS工艺正在朝300mm圆片、45nm、32nm线宽的方向快速发展,当其作为商业用途时的尺寸还不到0.1µm;一方面,伴随着工艺的不断进步,CMOS技术已从单独的数字电路的应用发展到在混合、模拟信号和射频电路领域内的应用。
1.3.3BiCMOS工艺
BiCMOS是继CMOS后的新一代高性能VLSI(超大规模集成电路)工艺,BiCMOS是CMOS和双极器件同时集成在同一块芯片上的技术,其基本思想是以CMOS器件为主要单元电路。
因此BiCMOS电路既具有CMOS电路高集成度、低功耗的优点,又获得了双极电路高速、强电流驱动能力的优势。
通过对双极工艺和CMOS工艺各自优点的适当搭配,可以得到单独采用上述两种工艺技术所无法达到的效果。
第二章A/D、D/A转换技术
2.1数字滤波
在模数转换的过程中需要对所收集的信号进行处理,由于或多或少的会混入随机干扰,这会使信号中混入无用信号,这时就得采用滤波器对被测信号进行筛选,去除无用的干扰信号。
数字滤波器的工作方式与模拟滤波器的工作方式大不相同,模拟滤波器主要是依赖于电容器、电阻器、晶体管等元件组成的网络来实现对信号的滤波功能,而数字滤波器是利用数字运算器件对输入的信号进行处理和运算,从而实现对信号的滤波。
数字滤波器具有比模拟滤波器更高的精度,与模拟滤波器相比较数字滤波器具有更高的信噪比。
这是因为数字滤波器主要是以数字器件执行运算,所以避免了受到模拟电路中噪声(如电阻热噪声)的影响。
因此,它具有更高的精度、可靠性和稳定性,因此被广泛用于克服随机干扰而带来的误差。
下面介绍一些常用的数字滤波方法。
(1)算术平均值滤波
设有N次采样值X1、X2、…、XN,算术平均值滤波法就是要找到一个Y值,使Y与每个采样值之差的平方和最小。
算术平均值滤波法的优点之处就是算法简单,缺点就是滤波过程中需要较多的的采样结果才可能得到比较理想的结果。
(2)中值滤波法
把连续三次采样的结果进行排序,得得X1≤X2≤X3,取这三个采样值的中间值X2为有效信号。
由此,中值滤波便能有效地去除偶然性干扰信号,如果干扰信号存在的时间比较长,那么中值滤波法将失去滤波效果。
(3)中值平均滤波法
设有N个采样值,排序后去掉一个最大值和一个最小值,在剩下的采样值中取平均值即为滤波结果。
中值平均滤波是中值滤波和算术平均滤波的综合,既能排除偶然性干扰信号,又能平滑滤波,但程序较为复杂,运算量大[2]。
2.2D/A转换
数字量是由连续的数字构成的,每一位数字都对应了一个特定的权。
要把一个数字量成功地转换成模拟量,就必须把每一位上的代码按照权来转换成对应的模拟量,再把各模拟量相加,这样总的模拟量便对应于给定数据。
在集成电路中,常用T型网络实现数字量往模拟电流的转换,再用运算放大器来完成模拟电流到模拟电压的转换。
所以,要把一个数字量转换成一个模拟量,实际上需要两个不同的环节:
即先把数字量转换成模拟电流,这由D/A转换起来完成;再将模拟电流转换成模拟电压,这由运算放大器来完成。
有的D/A转换器只有前一个环节,有的D/A转换器却两个环节都有[3]。
根据电阻网络的结构可以分为权电阻网络D/A转换器、T型电阻网络D/A转换器、倒T型电阻网络D/A转换器、权电流D/A转换器等形式。
2.2.1T型权电阻网络D/A转换器
从图2-1中可见,在D/A转换时,如果采用独立的权电阻,那么,对于一个8位的D/A转换器,需要R、2R、4R、…、128R等8个阻值互不相同的电阻,而这些电阻的误差要求又比较高,这样,工艺实现起来就比较难。
所以,n个并联输入支路的方案不实用。
图2-1独立权电阻D/A转换器
图2-2采用T型电阻网络的D/A转换器
从图2-2中可看到,一个支路中,如果开关倒向左边,那么,支路中的电阻就接到地,如果开关倒向右边,那么,电阻就接虚地。
所以不管开关倒向哪边,都可以认为是接地,但只有开关倒向右边时,才能给运算放大器供电。
T型电阻网络中,节点A的左边为两个2R的电阻并联,它们的等效电阻为R,以此类推,最后,在D点的等效于一个数值为R的电阻连在参考电压VREF上。
这样,就容易算出,C点、B点和A点的电位
让开关K3、K2、K1、K0各对应于1位二进制数,当二进制数为1111B时,流入运算放大器的电流为:
(2-1)
相应的输出电压:
(2-2)
2.3D/A转换器的指标
(1)分辨率
D/A转换器的分辨率是指DAC电路所能分辨的最小输出电压与满量程输出电压之比。
最小输出电压是指输入数字量只有最低有效位为1时的输出电压,最大输出电压是指输入数字量各位全为1时的输出电压。
DAC的分辨率可用下式表示:
分辨率=1/(2n-1)
式中,n表示数字量的二进制位数。
DAC产生误差的主要原因有:
基准电压VREF的波动,运放的零点漂移,电组网络中电阻阻值偏差等原因。
(2)转换误差
转换误差常用满量程FSR的百分数来表示。
有时转换误差用最低有效位LSB的倍数来表示。
DAC的转换误差主要有失调误差和满值误差。
DAC的分辨率和转换误差共同决定了DAC的精度。
要使DAC的精度高,不仅要选择位数高的DAC,还要选用稳定度高的参考电压源VREF和低漂移的运算放大器与其配合。
(3)建立时间
建立时间是指输入数字量变化后,输出模拟量稳定到相应数值范围所经历的时间,是描述DAC转换速度快慢的一个重要参数。
其他指标还有线性度、转换精度、温度系数、漂移等。
第三章系统硬件的设计
单片微型计算机简称单片机,是典型的嵌入式微机控制器。
单片机具有集成度高、功能强、易于掌握、应用灵活、可靠性高、价格低廉等优点,在工业控制、机电一体化、通信终端、智能仪表、家用电器等诸多领域中都有广泛的应用。
已成为传统机电设备升级为智能化机电设备的重要手段。
3.1Motorola单片机的介绍
MC68HC08系列单片机是Motorola公司最新推出的新型8位单片机,它采用了0.35µm工艺,速度更快,总线速度可达到8MHZ,具有功能强及价格低等优点,特别是带有闪速(Flash)存储器,具有更高的性能价格比。
MC68HC08是在MC68HC05的基础上发展而来的,具有16位多功能定时模块,并行口具有拉高、开路、键中断、大电流驱动等功能,具有UART、SPI、A/D等特殊I/O部件。
MC68HC08单片机虽然性能比MC68HC08单片机高得多,但价格却不会比MC68HC08高,是MC69HC08公司今后主要发展的8位单片机。
从M68HC05系列到M68HC08系列,M68HC08系列单片机的升级与优化是多方面的,最重要的、革命性的优化在以下3个方面:
(1)应用了锁相环技术,使得外部时钟频率降到32kHz,而内部时钟高达32MHz。
这一改进大大降低了应用系统的噪声,提高了应用系统的抗电磁干扰能力。
(2)应用了Flash技术,使得应用程序实现了在线编程的功能,可谓是过去的一次性可编程型和掩膜型产品的革命。
(3)与MC68HC05向上兼容,增加了78条指令,并且大大优化了M68HC08CPU指令集,特别是将M68HC05固定的8位堆栈指针优化为16位浮动堆栈指针,使得C语言这类的高级语言的应用成为可能[4]。
鉴于MC68HC08单片机的诸多优点,该转换系统的设计就以这个单片机为基础进行开发。
3.1.1引脚功能说明:
MC68HC08单片机虽然看上去只有四十只管脚,但是,因为几乎所有的管脚都是复用的,所以从功能上来讲,可以说的引脚不止四十只。
主要可分为电源,晶振,ABCDE五组端口,中断,复位等等。
其引脚如图3-1所示:
图3-1MC68HC08芯片引脚图
(1)VDD和VSS:
电源供给端.MC68HC08使用的是单一电源供电,一般在VDD和VSS之间接入旁路电容。
(2)OSC1、OSC2:
振荡器引脚。
(3)
:
低有效复位输入或输出。
当任意一个内部中断源有效时,该管脚输出低电平,有内部上拉电阻。
(4)
:
外部中断输入脚,有内部上拉电阻。
(5)VDDA和VSSA:
时钟发生模块模拟部分的电源供给端,与数字电源相似。
这两个引脚也应有去耦电路。
(6)CGMXFC:
时钟发生模块外部滤波电容连接脚。
(7)VDDAD和VSSAD:
A/D转换器电源供给端,两管脚间也应去耦。
(8)VREFH和VREFL:
A/D转换器的高和低参考电压输入端。
它连之与VDDADVSSAD相同的电位上。
(9)PTA7/KBD7—PTA0/KBD0:
8位通用双向I/O口。
每一位都可编程为键盘输入脚。
作输入时,可选择有上拉电阻。
(10)PTB7/AD7—PTB0/AD0:
8位通用双向I/O口,可用作A/D输入。
(11)PTC6—PTC0:
7位通用双向I/O口。
作输入时,可选择有上拉电阻。
(12)PTD7/T2CH1—PTD0/
:
8位特殊功能、双向I/O口。
PTD0—PTD3可用作SPI脚,PTD4—PTD7可分别用于定时器模块T1M1、T1M2。
在做输入时,可选择有上拉电阻。
(13)PTE1/RXD、PTE0/TXD:
2位通用双向I/O口。
它们可用作SCI引脚。
在使用过程中,任何一个没有用到的引脚和I/O口都应当连接到适当的逻辑电平,VDD或VSS上[11]。
现介绍几组比较重要的管脚。
首先介绍ABCDE五组数据端口,每组端口都有两个寄存器,一个是方向寄存器,用来说明这个端口数据传输的方向,也就是说明端口是用
作输入端口还是输出端口。
五个端口的方向寄存器分别是DDRA、DDRB、DDRC、DDRD、DDRE,都是八位的寄存器,分别是对应管脚的数据传输方向。
另外一个是数据寄存器,也是八位的。
分别是PTA,PTB,PTC,PTD,PTE。
端口用作输出端口时,可以向寄存器内写入数据。
端口用作输入端口时,可以将寄存器内的数据读出。
当寄存器中的某一位为1时,端口管脚为高电平,当为0时,端口管脚为低电平。
比如,想让B端口的第2位(作输出)为低电平,则写作PTB2=0。
除此之外,还有一些比较常用的管脚,如中断信号管脚,它平常为高电平,当收到低电平信号时就会产生一个外部中断;晶振OSC2、OSC1和COMXFC,外接单片机的振荡电路;复位信号管脚
。
3.2晶体振荡及外接电路设计
晶振电路由内部反相器和一个外接晶体组成。
OSC1是一个输入引脚,OSC2是一个输出引脚。
外接晶振频率的范围是30kHz~100kHz,典型值为32.768kHz,串联电阻RS,取值范围是330kΩ~470kΩ,典型取值330kΩ,反馈电阻RB,取值范围是10MΩ~22MΩ,典型取值10MΩ。
两电容取值在6pF~40pF范围内选择,两者取值应略有差异,以利于晶振电路起振。
在该设计中,外界晶振、串联电阻和反馈电阻都取的典型值,两电容分别取33pF和36pF。
除OSC1和OSC2两个引脚外,还有以下三个引脚:
(1)PLL外部滤波电容器引脚CGMXFC,该引脚连接一个外接滤波网络,为芯片内部的锁相环电路提供误差电平。
(2)PLL电路电源引脚VDDA,该引脚应该和VDD引脚连接到同一电源,并连接约0.1uF的滤波电容,同时尽量靠近芯片。
(3)PLL电路电源地引脚VSSA,该引脚连接到系统地线,引线尽量宽而短。
需要格外说明的是,由于时钟电路会对其他电路造成干扰,所以在电路板布线时,将时钟电路的外接器件都用地线围了起来,而且晶体应采用卧式安装,将外壳焊接到了地线上。
在元件布局时,滤波网络应该尽量靠近了单片机,用最短的连线连接[5]。
晶体振荡及外接电路的原理图如图3-2所示。
图3-2晶振电路图
3.3单片机A/D转换
在MC68HC08中含有一个8位的12路ADC转换器。
它含有ADC状态寄存器ADSCR、ADC数据寄存器ADR以及时钟寄存器ADICLK。
A/D转换器的12路输入引脚分别为PTB7~PTB0和PTD3~PTD0。
可以选择其中的任何一个引脚作为A/D的电压输入,A/D通过近似连续的计算器值来确定转换结果,其精度为8位。
当转换结束时,将结果放入ADC寄存器ADR中,并且设置对应标志或产生中断。
PTB7~PTB0和PTD3~PTD0可作为普通的I/O引脚或ADC的输入。
通过设定ADC状态寄存器ADSCR来选择哪一路作为ADC输入,一旦设置为ADC输入,其作为普通I/O口的功能失效,这时,其他未设为ADC输入的引脚保持其正常的I/O功能。
ADC转换为线性转换。
高于VSS时,其结果为$FF;低于VDD时其结果为$00。
每次转换要16个ADC内部时钟。
ADC从写ADSCR信号的第一个ADC内部时钟的上升沿开始转换。
在ADC内部时钟为1MHz时,其完成一次转换需要耗时16µs。
当连续转换时,ADC对所选通道进行连续转换,并且每次都对ADC的数据寄存器ADR进行更新,而不管读出与否。
转换通过对ADSCR的ADC0位清零来终止。
每次转换完后COCO位置1,可以通过写ADC状态控制寄存器或读ADC数据寄存器来清零。
当AIEN置1时,允许ADC转换结果中断,且若COCO位为0,则会发生中断。
但是允许中断时,COCO位并不是作为转换结束标志。
在低功耗等待模式下,ADC正常工作,ADC中断可以将CPU从等待模式中唤醒。
倘若不希望ADC中断将其唤醒,可以在执行WAIT指令前,把ADC状态控制寄存器的CH4~CH0设为1来关闭ADC。
在低功耗停止模式下,ADC停止工作,放弃当前的转换。
程序一旦退出停止模式,ADC转换继续进行。
在退出停止模式之后,继续转换之前会有一个转换时间来稳定转换电路。
ADC状态控制寄存器(ADSCR)
ADSCR的结构如表3-1所示。
地址:
$003C
表3-1ADSCR结构
读
COCO
AIEN
ADC0
ADCH4
ADCH3
ADCH2
ADCH1
ADCH0
写
复位值
0
0
0
0
1
1
1
1
ADSCR中各位的意义如下:
COCO:
转换结束位。
当AIEN为0时,COCO位只读,每次转换完毕,COCO置1。
可以通过写ADC状态控制寄存器或读ADC数据寄存器来清0。
复位时该位会清0。
1=转换结束;
0=转换未结束;
0=中断允许;
AIEN:
ADC中断允许位。
若该位为1,ADC转换结束后中断发生。
当写ADC状态控制寄存器时ADSCR或读ADC数据寄存器ADR时信号清0。
1=ADC中断允许;
0=ADC中断禁止。
ADC0:
ADC连续转换位。
1=连续ADC转换,每次更新;
0=单次ADC转换,复位时清0。
ADCH4~ADCH0:
ADC通道选择位。
ADCH4~ADCH0用于选择ADC通道。
特别要注意的是,当引脚同时为模拟输入和数字数字输入时,切换会产生开关噪声。
当ADCH4~ADCH0所有位设为1时,关闭ADC,这样可减少单片机的消耗。
复位时都是1[7]。
ADC数据寄存器(ADR)
8位转换结果,每次转换后更新。
其结构如表3-2
地址:
$003D
表3-2ADC数据寄存器
7
6
5
4
3
2
1
0
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
ADC时钟寄存器(ADICLK)
用于选择ADC时钟。
其结构如表3-3
地址:
$003E
表3-3ADC时钟
读写
ADIV2
ADIV1
ADIV0
复位
0
0
0
0
0
0
0
0
ADIV2~ADIV0用于选择ADC内部时钟的分频率