波形发生器毕业论.doc_第1页
波形发生器毕业论.doc_第2页
波形发生器毕业论.doc_第3页
波形发生器毕业论.doc_第4页
波形发生器毕业论.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要本课题主要是设计一台波形发生器。它可产生正弦波、三角波和方波,波形的幅值和频率在一定范围内可调,幅值和频率的具体数值可通过数码管显示,方便使用。本课题采用AT89C51单片机为中心控制单元进行设计,整个系统由单片机控制模块、键盘输入模块、数码显示模块、D/A转换模块和幅值频率调整模块组成。其中D/A转换模块任务是将数字量转换为模拟量,产生相应波形,此次设计采用常用的DAC0832芯片来完成,幅值频率调整模块通过调节连接在ADC0809通道上的电位器来实现,数码显示模块使用了ZLG7289芯片来完成幅值和频率同时显示的任务。关键词:单片机;波形发生器;幅值频率可调。ABSTRACTThis paper is mainly to design a Waveform Generator. It can produce sine, square and triangle wave.The waves amplitude and frequency is adjustable within a certain scope.It is easy to use that the specific numerical of the frequency and amplitude can be showed on zhe nixietube.In the design,AT89C51 is the central control unit,and the entire system includes the MCU control module, a key module, digital display module, D/A converter module,the amplitude and frequency adjustment module. The D/A converter module is used to convert digital to analog,then generate the waveform.The amplitude frequency adjustment module is realized by adjusting the potentiometer connected to the ADC0809.digital display module used ZLG7289 chip to show the amplitude and frequency at the same time. Key words: SCM; waveform generator; amplitude and frequency adjustable.目 录第一章 概述11.1 波形发生器的设计意义11.2 波形发生器的发展和使用价值1第二章 主体结构设计32.1 波形发生器方案的确定32.2 各模块的工作原理42.2.1 键盘输入模块42.2.2 数码显示模块52.2.3 D/A转换模块62.3.4 幅值频率调整模块6第三章 硬件设计83.1 D/A电路设计83.1.1 D/A转换器的选择83.1.2 DAC0832芯片介绍83.1.3 DAC的应用103.1.4 DAC与单片机的连接123.1.5 LM324芯片介绍133.2 A/D电路设计143.2.1 A/D芯片的选择143.2.2 ADC0809引脚及功能143.3.2 ADC0809结构及转换原理153.3.3 ADC0809与单片机的接口163.3 AT89C51单片机的介绍183.3.1 AT89C51芯片介绍183.3.2 AT89C51引脚功能介绍193.3.3 AT89C51最小系统电路设计213.4 键盘显示电路的设计213.4.1 LED驱动芯片的选择213.4.2 ZLG7289芯片介绍223.4.3 ZLG7289引脚图功能说明233.4.4 ZLG7289芯片SPI串行接口243.4.5 ZLG7289与单片机的接口电路26第四章 软件设计274.1程序总体概述274.2各程序模块说明294.2.1 初始化模块294.2.2 A/D采样模块304.2.3 计算并显示频率和幅值模块314.2.4 波形产生模块35第五章 结论38参考文献39致谢40附录1 主程序41附录2 整机电路图494949第一章 概述1.1 波形发生器的设计意义随着科学技术的飞速发展和自动化程度的不断提高,我国仪器仪表行业也将发生新的变化并获得新的发展。当前,来自很多行业的用户都需要应付速率越来越高的新型电路。在设计和测试这些电路的过程当中用户通常需要向被测设备输入一个或者多个信号,用以模拟或者替代来自某个尚未安装的原件的信号或者某些在测试过程中很难通过原件或传感器生成的信号。因此,信号发生器在这里就显得必不可少,波形发生器就是其中应用最普遍的一种。而单片机作为一个发展比较成熟的电子产品,已经应用在各个行业,它的体积小,成本低,可靠性好,易扩展,很容易构成各种规模的应用系统,控制功能强1。所以运用单片机来设计一台波形发生器,结构简单,使用方便,可充分满足用户的需要。1.2 波形发生器的发展和使用价值中国使用单片机的历史只有短短的30年,在初始的短短五年时间里发展极为迅速。单片机应用技术飞速发展,我们上因特网输入一个“单片机”的搜索,将会看到上万个介绍单片机的网站,这还不包括国外的。纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC 卡、电子宠物等,这些都离不开单片机。以前没有单片机时,这些东西也能产做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了。所以,它的魔力不仅是在现在,在将来将会有更多的人来接受它、使用它。据统计,我国的单片机年容量已达3 亿片,且每年以大约20%的速度增长,但相对于世界市场我国的占有率还不到1%。特别是沿海地区的玩具厂等生产品多数用到单片机,并不断地辐射向内地。所以,学习单片机在我国是有着广阔前景的。综观单片机几十年的发展历程,单片机的今后发展方向将向着多功能、高性能、高速度、低电压、低功耗、地价格、外围电路内装化以及片内存储器容量增加和Flash存储器化方向发展。但其位数不一定会继续增加,尽管现在已经有了32位单片机,但使用的并不多。可以预言,今后的单片机将是功能更强、集成度和可靠性更高而功耗更低,以及使用更方便。此外,专用化也是单片机的一个发展方向,针对单一用途的专用单片机的专用单片机将会越来越多。信号源作为一种基本的电子设备,无论是在教学、科研还是部队技术保障中,都有着广泛的使用。波形发生器就是其中最普遍的一种。但随着电子技术的发展,对波形发生器的要求也越来越高,如要求频率稳定性高、转换速度快,具有调幅、调频等功能。对于我们,即将步入社会,从事于各种工作的大学生,需要做的首先是了解其原理及内部结构,而后才能够更好地使用并有所创新。而且波形发生器是教学中必不可少的教学设备,因此对于我们来说自己动手设计一个波形发生器,了解其原理及内部结构是很必要的。因此,这种情况下,基于单片机设计一台波形发生器是可行的,成本低廉、结构简单、使用方便,可用于教学、实验。第二章 主体结构设计2.1 波形发生器方案的确定本设计主要是基于单片机设计一台波形发生器。它可产生正弦波、三角波和方波,波形的幅值和频率可调,幅值和频率的具体数值可通过数码管显示,方便使用。本课题以C51单片机为中心控制单元进行设计,整个系统由单片机控制模块、键盘输入模块、数码显示模块、D/A转换模块、幅值频率调整模块5部分组成。设计框图如图2.1所示。 键盘输入模块幅值频率调整模块数码显示模块D/A转换模块单片机模块图2.1 系统设计框图通过按键可任意选择所需的波形(正弦波、三角波、方波),所选波形种类可通过LED小灯清楚看到,调节幅值和频率对应的电位器可得到想要的幅值和频率,选好后,系统送相应的信息给单片机,经单片机处理送至D/A转换模块,经DAC0832转换可得到所需的波形,同时单片机送相应信息至数码显示模块,经7289处理可显示出幅值和频率对应的数值。选择波形的按键与单片机的中断接口相连,通过中断方法来控制波形的选择。考虑到功耗及整机的精度和价格等问题,系统中采用了常用的AT89C51单片机作为中心控制单元,并有按键复位功能。波形的输出通过D/A转换器实现,采用了DAC0832来完成,它的分辨率为8位。频率和幅值的调节可通过电位器改变输入电压来实现,需要有模拟量输入,ADC0809有8路模拟输入,8位数字量输出,可满足。显示模块采用ZLG7289芯片,该芯片是串行通讯,可节省I/O口,6个数码管可将幅值和频率同时显示。2.2 各模块的工作原理整个系统由单片机控制模块、键盘输入模块、数码显示模块、D/A转换模块、幅值频率调整模块5部分组成。2.2.1 键盘输入模块键盘输入模块可控制波形种类的选择,电路非常简单(如图2.2),一个按键直接接在单片机的INT1中断接口上,通过中断来控制波形的选择2。图2.2 按钮与单片机的接口根据硬件设计,系统用按钮切换波形,可考虑采用查询或中断方式进行,这两种方式比较起来后者效率更高。若采用查询方式检测按钮,则系统需要花费大量的时间去定期检测P3.3口管脚点位,这样就增加了软件开销,降低了效率,因而采用中断方式编程比较理想。其编程思想是安排一个存储单元存放按钮次数,初值设为0,对应于某种波形,每中断一次数据加1,以对应另一种波形。因此中断程序的任务仅仅是通过改变按钮次数来存放单元的数据而已,波形切换在主程序中进行。具体的按钮次数和对应波形如下:表2.1 按钮次数对应的波形按钮次数波形1次正弦波2次三角波3次方波2.2.2 数码显示模块这个模块主要作用是将波形幅值和频率在数码管上显示。用于驱动数码显示的芯片是ZLG7289,它与单片机的接口电路如图2.3所示。图2.3 ZLG7289与单片机接口电路ZLG7289的片选端与单片机的P1.0相连接,当P1.0口输入一个低电平时,它被选中,芯片开始工作。CLK为同步时钟输入端,向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效,因此与CLK连接的P1.1在发送数据和读取数据时置为1,在发送和读取数据结束时置为0。DIO端为串行数据输入输出端,当芯片接受指令时,此引脚为输入端;当读取键盘数据时,此引脚在读指令最后一个时钟的下降沿变为输出端。KEY为按键有效输出端,平时为高电平,当检测到有效按键时,此引脚变为低电平。本次设计中ZLG7289驱动了6个数码管,前2个用于显示波形的幅值,0.0至5.0,后4位用于显示波形的频率。ZLG7289采用串行方式与微处理器通讯,串行数据从DATA引脚送入芯片,并由CLK端同步。当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入ZLG7289的缓冲寄存器。上电后,所有的显示均为空。所有显示位的显示属性均为“显示”及“不闪烁”。当有键按下时,KEY引脚输出低电平,此时如果接收到“读键盘”指令,ZLG7289将输出所按下键的代码。如果在没有按键的情况下收到“读键盘”指令ZLG7289将输出0FFH(255)。注意:如果有2个键同时按下,ZLG7289将只能给出其中一个键的代码,因此ZLG7289不适于应用在需要2个或2个以上键同时按下的场合。2.2.3 D/A转换模块D/A转换模块主要用于将从C51送来的数字量转换为模拟电压,产生波形。这里我选用了DAC0832芯片,该芯片具有两个输入数据寄存器,是8位的DAC,能直接与MCS-51单片机相连接。DAC0832与单片机的接口电路在第三章第一节中会详细介绍。DAC0832的WR1和Xfer都接地,CS与单片机的P2.6相连,所以地址为8000H,当P2.6给低电平时,0832开始工作,单片机将预先设定好的数字量通过P0口传给DAC0832。DAC0832经内部转换,将数字量转变为电流信号,并以差分方式送给运算放大器LM324,后者将其变为电压信号输出。2.3.4 幅值频率调整模块幅值和频率的调整是通过电位器来调节的,电位器与ADC0809相连,将模拟电压转化为数字量,运用在程序中,以达到调整的目的。工作原理图如下:图2.4 幅值频率调整模块的工作原理框图为了方便叙述,调节频率的电位器定为电位器1,调节幅值的电位器定为电位器2,电位器1接在ADC0809的IN0通道上,电位器2接在ADC0809的IN1通道上。当程序执行MOV DPTR,#7000H时,产生一个启动信号给START引脚送入脉冲,开始对通道IN0中的数据进行转换。电位器1连接在IN0通道,所以它的模拟量电压送入ADC0809开始转换。转换结束时,会发出一个结束信号,置EOC脚为高电平,EOC引脚与单片机的INT0中断接口相连,用于中断。当读允许信号到,OE端有高电平,则可以读出转换数字量。利用MOVX A,#DPTR把该通道转换结果读到A累加器中。该数字量作为2次D/A转换之间的延时基值去延时,这样输出波形的频率就和模拟电压联系起来,只要调整电位器1的旋钮就可以改变输入电压模拟量,就可以改变波形的频率。幅值的调节是通过电位器2调节DAC0832的Vref端的输入电压基值来改变的。调节电位器2可使的模拟量电压在0V至5V之间变换,此时,DAC0832输入端的数字量00H到FFH转换后所对应的模拟量就会在0V到5V之间变化,这样就达到了调节幅值的目的。通过调节电位器2,波形的幅值就会在0V到5V之间变化,用户可选择需要的幅值。同时,调节电位器2得到的模拟电压会送到ADC0809的IN1通道。当程序执行MOV DPTR,#7020H时,IN1通道的模拟量就送入ADC0809开始转换,通过转换得到的数字量送入单片机用于显示。第三章 硬件设计整个硬件设计可分为:D/A电路设计、A/D电路设计、单片机电路设计及键盘显示电路的设计。本章将详细讲解这些电路的构成。3.1 D/A电路设计D/A电路是把单片机送来的数字量转换为模拟电压,用来生成波形的电路。3.1.1 D/A转换器的选择由于D/A转换器与微机接口时,微机是靠指令输出数字量供数模转换器(DAC)转换之用,而指令送出的数据在数据总线上的时间是短暂的,所以DAC和微机间,需有数据寄存器来保持微型计算机输出的数据,供DAC转换用。目前生产的DAC芯片可分为两类,一类内部设置有数据寄存器,不需外加电路就可直接与微机接口。另一类内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,不能直接与微机接口,须通过并行接口与微机接口。DAC0832芯片内部有输入寄存器和DAC寄存器,所以它不需要外加其他电路便可以与微机的数据总线直接相连。3.1.2 DAC0832芯片介绍(1)DAC0832的特性美国国家半导体公司的DAC0832芯片是具有两个输入数据寄存器的8位DAC,它能直接与MCS-51单片机相连接,其主要特性如下: 分辨率8位; 电流输出,稳定时间为1us; 可双缓冲、单缓冲或直接数字输入; 只需在满量程下调整其线性度; 单一电源供电(+5+15V); 低功耗,20mW3。(2)DAC0832的引脚及逻辑结构DAC0832的引脚如图3.1所示。图3.1 DAC0832引脚图各引脚功能如下:DI0DI7为8位数字信号输入端,与CPU数据总线相连,用于输入CPU送来的待转换数字量,DI7为最高位。CS:片选端,当CS为低电平时,本芯片被选中工作。ILE:数据锁存允许控制端,高电平有效。WR1:第一级输入寄存器写选通控制,低电平有效,当CS=0、ILE=1、WR1=0时,数据信号被锁存到第一级8位输入寄存器中。XFER:数据传送控制,低电平有效。WR2:DAC寄存器写选通控制端,低电平有效,当XFER=0、WR1=0时,输入寄存器状态传入8位DAC寄存器中。Iout1:D/A转换器电流输出1端,输入数字量全“1”时,Iout1最大,输入数字量全“0”时,Iout1最小。Iout2:电流输出2端,Iout2+Iout1=常熟。Rfb:外部反馈信号输入端,内部已有反馈电阻,根据需要也可外接反馈电阻。Vref:参考电压(也称基准电压)输入端,电压范围(-10+10)V之间。DGND:数字信号接地端。AGND:模拟信号接地端,最好与参考电压共地。DAC0832的逻辑结构如图3.2所示:图3.2 DAC0832原理框图DAC0832内部由三部分电路组成,如图3.2所示。“8位输入寄存器”用于存放CPU送来的数字量,使输入数字量得到缓冲和锁存,由LE1加以控制。“8位DAC寄存器”用于存放待转换数字量,由LE2控制,T型电阻网络能输出和数字量成正比的模拟电流。因此,DAC0832通常需要外接运算放大器才能得到模拟输出电压。3.1.3 DAC的应用按照输入数字量位数,DAC常可分为8位、10位和12位三种。MCS-51与它的接口常和DAC的应用有关,因此这里线讨论DAC的应用问题,然后介绍它与单片机的接口。DAC用途很广,现以DAC0832为例介绍它在如下三方面的应用4。(1)DAC用做单极性电压输出在需要单极性模拟电压环境下,我们采用图3.5所示接线。由于DAC0832是8位的D/A转换器,故可得输出电压对输入数字量的关系为Vout=-(B*Vref)/255式中,B为输入的数字量,范围是0255;Vref/255为一常数。很显然,Vout和B成正比的关系。当输入数字量B为0时,Vout也为0,输入数字量为255时,Vout为最大值,输出电压为单极性。(2)DAC用作双极性电压输出在需要用到双极性电压的场合下,可以采用图3.3所示接线。图3.3 双极性DAC的接法图中,DAC0832的数字量由CPU送来,OA1和OA2均为运算放大器,Vout通过2R电阻反馈到运算放大器OA2输入端,其他如图所示。G电为虚拟地,故由基尔霍夫定律列出方程组,并解得:Vout=(B-128)*Vref/128由上式可知,在选用+Vref时,若输入数字量最高位b7为“1”,则输出模拟电压Vout为正;若输入数字量最高位为“0”,输出模拟电压Vout为负。选用-Vref时,Vout输出值正好和选用+Vref时极性相反。(3)DAC用作程控放大器DAC还可以用作程控放大器,其电压放大倍数可由CPU通过程序设定。图3.4为用作电压放大器的DAC接线。由图可见,需要放大的电压Vin和反馈输入端Rfb相接,运算放大器输出Vout还作为DAC的基准电压Vref,数字量由CPU送来,其余如图所示。DAC0832内部Iout一边和T型电阻网络相连,另一边又通过反馈电阻Rfb和Vin相通。由图可得出,当选R=Rfb时,Vout=-(256/B)*Vin式中256/B看做放大倍数。但数字量B不得为“0”,否则放大倍数为无限大,放大器因此而处于饱和状态。图3.4 DAC0832用作程控放大器3.1.4 DAC与单片机的连接MCS-51与DAC0832接口时,可以有三种连接方式:直通方式、单缓冲方式和双缓冲方式。本设计中采用的单缓冲方式5。图3.5 单缓冲方式下的DAC0832单缓冲方式是指DAC0832内部的两个数据缓冲器有一个处于直通方式,另一个处于受MCS-51控制的锁存方式。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下,就可采用单缓冲方式。单缓冲方式的接口电路如图3.5所示.由图可见,WR2和XFER接地,故DAC0832的“8位DAC寄存器”(见图3.2)工作于直通方式。8位输入寄存器受CS和WR1端信号控制,而且CS由P2.6端信号控制。因此,单片机执行以下两条指令时,就可以使DAC0832工作。 MOV DPTR,#8000HMOVX DPTR,A3.1.5 LM324芯片介绍LM324是四运放集成电路,它采用14脚双列直插塑料封装。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放大器可用图3.6所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo 的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo 的信号与该输入端的相位相同。LM324 的引脚排列见图3.7。 图3.6 运算放大器符号 图3.7LM324引脚图由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。本设计中,DAC0832转换得到的模拟量,经过LM324后输出。电路图如图3.8所示,经DAC0832转换得到的电流信号以差分方式送给运算放大器LM324,LM324将此信号变为电压信号输出,就可得到波形6。图3.8 DAC0832与LM324的接口电路3.2 A/D电路设计3.2.1 A/D芯片的选择本次设计中,频率和幅值的调节都是通过电位器改变输入电压来实现的,所以需要有两个模拟量输入。所以就要用到A/D转换芯片。各型号的ADC芯片都具有如下的信号线:数据输出线D7D0(8位ADC),启动A/D转换信号SC与转换结束信号EOC。首先单片机启动A/D转换;转换结束后,ADC送出EOC信号通知单片机;单片机用输入指令从ADC的数据输出线D7D0读取转换数据。ADC与单片机的接口就是要正确处理上述三种信号与单片机的连接问题。ADC的数据输出端的连接要视其内部是锁存器还是三态输出锁存器。若是后者,则可直接与单片机的数据总线相连;若是前者,则应将其数据输出端通过三态缓冲器与数据总线相连。ADC0809芯片有8路模拟信号输入端,片内由三台输出锁存器,可直接与单片机数据总线相连,满足要求,所以采用ADC0809芯片来实现A/D转换。下面将对ADC0809芯片机器接口电路作详细的介绍。3.2.2 ADC0809引脚及功能ADC0809是一种主次逼近式8路模拟输入、8位数字量输出的A/D转换器。其引脚如图3.9所示7。由引脚图可见,ADC0809共有28引脚,采用双列直插式封装。其主要引脚功能如下: IN0IN7是8路模拟信号输入端。 D0D7是8位数字量输出端。 A、B、C与ALE控制8路模拟通道的切换,A、B、C分别与三根地址线或数据线相连,三者编码对应8个通道地址口。C、B、A=000111分别对应IN0IN7通道地址。强调说明一点:ADC0809虽然有8路模拟通道可以同时输入8路模拟信号,但每个瞬间只能转换一路,各路之间的切换由软件变换通道地址实现。 OE、START、CLK为控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。 Vr(+)和Vr(-)为参考电压输入端。图3.9 ADC0809引脚图3.3.2 ADC0809结构及转换原理ADC0809的结构框图如图3.10所示。0809是采用主次逼近的方法完成A/D转换的。由单一的+5V电源供电;片内带有锁存功能的8路选1的模拟开关,由C、B、A的编码来决定所选的通道。0809完成一次转换需100us左右。输出具有TTL三态锁存缓冲器,可直接连到MCS-51的数据总线上。通过适当的外接电路,0809可对05V的模拟信号进行转换。ADC0809工作过程如下:首先用指令选择ADC0809的一个模拟输入通道,当执行MOVX DPTR,A时,产生一个启动信号给START引脚送入脉冲,开始对选中通道转换。当转换结束后发出结束信号,置EOC脚为高电平,该信号可作为中断申请信号;当读允许信号到,OE端有高电平,则可以读出转换的数字量。利用MOVX A,DPTR把该通道转换结果读到A累加器中。图3.10 ADC0809结构图3.3.3 ADC0809与单片机的接口在讨论MCS051与0809的接口设计之前,先来讨论单片机如何控制ADC的问题8。用单片机控制ADC时,多数采用查询和中断控制两种方法。查询法是在单片机把启动命令送到ADC之后,执行别的程序,同时对ADC的状态进行查询,以检查ADC变换是否已经结束,如查询到变换已结束,则读入转换完毕的数据。中断控制法是在启动信号送到ADC之后,单片机执行别的程序。当ADC变换结束并向单片机发出中断请求信号时,单片机相应此中断请求,进入中断服务子程序,读入转换数据,并进行必要的数据处理,然后返回到原程序。这种方法单片机无需进行转换时间的管理,CPU效率高,所以特别适合于变换时间较长的ADC。如果对转换速度要求高,采用上述两种ADC控制方式往往不能满足要求,可采用DMA(直接存储器存取)的方法,这时可在ADC与单片机之间插入一个DMA接口(例如Intel公司的8237DMA控制器)。传输已开始,AD转换的数据就可以从输出寄存器经过DMA中的数据寄存器直接传输到主存储器,因而不必受程序的限制。在ADC0809与单片机的接口电路中,中断方式与软件延时方式的不同之处在于:中断方式是将ADC0809的EOC脚经过与非门接在AT89C51的INT0脚,而软件延时方式不需要经过,直接接在INT0脚,只需查询P3.2脚是否为高电平,当为高电平时,表示转换结束。本设计中,在AD转换时,不需要执行其他的程序,所以可用软件延时的方式连接电路。软件延时方式:ADC0809与单片机的接口如图3.11所示。图3.11 ADC0809与单片机的接口电路由于ADC0809片内无时钟,可利用AT89C51提供的地址锁存允许信号ALE经过74LS74芯片四分频后获得,ALE脚的频率是AT89C51单片机时钟频率的1、6(但要注意的是,每当访问外部数据存储器时,将少一个ALE脉冲)。单片机的时钟频率采用的是12MHz,则ALE脚的输出频率为2MHz,再经过74LS74四分频后为500kHz,恰好符合ADC0809对时钟频率的要求。由于ADC0809具有输出三态锁存器,其8位地址译码引脚A、B、C分别与P0.0、P0.1和P0.2相连,以选通IN0IN7中的一个通道。将P2.7(地址总线A15)作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和转换启动,由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时,启动并进行转换。在读取转换结果时,用低电平的读信号和P2.7脚经一级或非门后,产生正脉冲作为OE信号,用以打开三态输出锁存器。由以上分析可知:在软件编写时,应令P2.7=A15=0;P0.0、P0.1、P0.2给出被选择的模拟通道的地址;执行一条输出指令,启动A/D转换;执行一条输入指令,读取转换结果。3.3 AT89C51单片机的介绍3.3.1 AT89C51芯片介绍CPU为本设计的核心部分,它是进行数据运算和处理的核心。考虑到功耗及整机的精度和价格等问题我采用MCS-51系列的单片机, MCS-51系列单片机还有集成度高,系统结构简单,系统扩展方便,可靠性高,处理功能强、速度高等特点。本设计中采用的是AT89C51芯片。AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。功能特性概述9:AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32各I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所以部件工作知道下一个硬件复位。3.3.2 AT89C51引脚功能介绍 Vcc:电源电压 GND:地 P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,检验时,需要外接上拉电阻。 P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash编程和程序校验期间,P1接收低8位地址。 P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其他控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示: 表3.1 P3口第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)P3口还接收一些用于Flash闪速存储器编程和畅销校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址所存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。 EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址位0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端位高电平(接Vcc端),CPU则执行内部程序存储器中的指令。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端10。3.3.3 AT89C51最小系统电路设计最小应用系统,是指能维持单片机运行的最简单配置的系统,这种系统成本低廉、结构简单,常用来构成简单的控制系统。单片机应该是一个最小应用系统,但由于应用系统中有一些功能器件无法集成到芯片内部,如晶振、复位电路等,需要在片外加接相应的电路。对于片内无程序存储器的单片机,还应该配置片外程序存储器。AT89C51是片内有程序存储器的单片机,构成最小应用系统时只要将单片机接上外部的晶振电路和复位电路即可11,如图3.12所示。图3.12 AT89C51最小系统这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量I/O线。3.4 键盘显示电路的设计3.4.1 LED驱动芯片的选择现在随着芯片集成技术的发展,使得许多仪器越来越微型化,功能也更强大,对人机交互的要求也越来越高。其中应用非常广泛的一种方法就是LED的对外显示。本设计中我选用了ZLG7289芯片来完成LED显示幅值和频率的任务。它功能强大,编程简单,控显可靠,可广泛用于工业控制器等方面的数码显示驱动,比较成熟的应用即为与单片机的结合。ZLG7289是广州周立功单片机发展有限公司自行设计的,具有SPI串行接口功能的可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能12。ZLG7289内部含有显示译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。利用片选信号,多片ZLG7289还可以并接在一起使用,能够方便地实现多于8位的显示或多于64只按键的应用。ZLG7289可广泛地应用于仪器仪表,工业控制器,条形显示器,控制面板等领域。在实际使用的过程中,单片机的串行发送/接收口常常被占用掉,去实现其他的数据交换,ZLG7289采用SPI串行总线与微控制器接口,仅占用少数几根I/O口线,可为其他芯片提供方便。3.4.2 ZLG7289芯片介绍ZLG7289芯片的引脚图如图3.13图3.13 ZLG7289引脚图ZLG7289的主要特性 很宽的工作电压范围:+2.76V; 直接驱动8位共阴式数码管(1英寸以下)或64只独立的LED; 能够管理多达64只按键,自动消除抖动; 段电流可达15mA以上,字电流可达100mA; 利用功率电路可以方便地驱动1英寸以上的大型数码管; 具有左移、右移、闪烁、消隐、段点亮等强大功能; 要显示的数据提供有两种不同的译码方式(也可以选择不译码); 不接数码管而仅使用键盘功能时,工作电流可降至3mA; 与微控制器之间采用SPI串行总线接口,操作方便,占用I/O资源少; 工作温度范围:-40+85; 封装:SOP-28,DIP-28。3.4.3 ZLG7289引脚图功能说明表3.2 ZLG7289引脚功能引脚序号引脚名称功能描述1RTCC接电源2Vcc电源,+2.76V3NC悬空4GND接地5NC悬空6CSSPI总线片选信号,低电平有效7CLKSPI总线时钟输入信号,上升沿有效8DIOSPI总线数据信号,双向9INT键盘中断请求信号,低电平(下降沿)有效10SG/KR0数码管g段/键盘行信号011SF/KR1数码管f段/键盘行信号112SE/KR2数码管e段/键盘行信号213SD/KR3数码管d段/键盘行信号314SC/KR4数码管c段/键盘行信号415SB/KR5数码管b段/键盘行信号516SA/KR6数码管a段/键盘行信号617DP/KR7数码管dp段/键盘行信号718DIG0/KC0数码管字选信号0/键盘列信号019DIG1/KC1数码管字选信号1/键盘列信号120DIG2/KC2数码管字选信号2/键盘列信号221DIG3/KC3数码管字选信号3/键盘列信号322DIG4/KC4数码管字选信号4/键盘列信号423DIG5/KC5数码管字选信号5/键盘列信号524DIG6/KC6数码管字选信号6/键盘列信号625DIG7/KC7数码管字选信号7/键盘列信号726OSC2晶振输出信号27OSC1晶振输入信号28RST复位信号,低电平有效3.4.4 ZLG7289芯片SPI串行接口1) SPI串行接口信号表3.3 ZLG7289的SPI串行接口信号信号名称引脚序号描述CS6SPI总线片选输入信号,低电平有效CLK7SPI总线时钟输入信号,上升沿有效DIO8SPI总线数据信号,双向ZLG7289与微控制器的接口采用3线制SPI串行总线,由CS、CLK和DIO这3根信号线组成。CS和CLK是输入信号,由微控制器提供。DIO信号是双向的,必须接到微控制器上具有双向功能的I/O 。SPI 信号线的具体意义请参见表3.3。操作SPI总线的时序图请参见图3.14、图3.15 和图3.16。其中图3.16 是读按键值的时序图,只有当INT 引脚出现下跳沿时才允许去读取按键值,否则将得不到有意义的数据。2) SPI总线时序图图3.14 纯指令时序图图3.15 带数据指令时序图(命令字在前,输入数据在后)图3.16 读键盘指令时序图(命令字在前,键值在后)3) 时序图中各项延迟时间表中各项参数的测试条件为:Vcc=5.0V,Fosc=16MHz。表3.4 时序图中的各项延迟时间符号名称最小值典型值单位T1片选信号CS的建立时间2550msT2CLK信号高电平的宽度58msT3CLK信号低电平的宽度58msT4命令字与输入数据之间的时间间隔1525msT5命令字与输出数据(按键值)之间的时间间隔1525msT6输出数据(按键值)建立时间58msT7读取输出数据(按键值)时CLK信号高电平的宽度58msT8DIO从输出切换到输入的时间-5ms3.4.5 ZLG7289与单片机的接口电路ZLG7289和单片机通过P1口的4个端口相连接13。如下图:图3.17 ZLG7289与单片机接口电路图中,CS与P1.0相连,当P1.0送入低电平时,ZLG7289芯片被选中,开始工作。CLK为时钟引脚,与单片机的P1.1引脚相连,上升沿有效,平时P1.1置位“0”,当需要传数据的时候,把P1.1置“1”。DIO口为双向数据传输口,因为使用串行通信,节省了I/O的使用。KEY为键盘中断请求信号,平时为“1”,当有键按下时,为“0”。第四章 软件设计4.1程序总体概述根据硬件设计,系统用按钮切换波形,可考虑采用查询或中断方式进行,这两种方式比较起来后者效率更高。若采用查询方式检测按钮,则系统需要花费时间去定期检测P3.3口管脚电位,这样就增加了软件开销,减低了效率,因而采用中断方式编程比较理想。其编程思想是安排一个存储单元存放按钮的次数,初值设为0,每中断一次,数据加1,02分别代表正弦波,三角波和方波。因此中断程序的任务仅仅是通过改变按钮次数来存放单元的数据而已,波形切换在主程序中进行。波形的频率是通过改变两次输出数据之间的时间间隔来实现的。具体做法是首先对模拟量采样,得到相应的A/D值,用这个值作为延时基数来延时,这样输出波形的频率就和模拟电压联系起来,只要调整电位器旋钮改变输入电压模拟量,就可以改变波形的频率。波形的幅值调整是通过调节DAC0832的Vref(参考电压)来实现的14。具体做法是在DAC0832的Vref端连接一个电位器,通过改变电位器来改变Vref的输入值,Vref的值改变,DAC0832输出的电压值也会变换。程序的最后部分是显示部分,它可显示波形的幅值和频率。具体方法是,从ADC0809的IN0通道取得与频率有关的数字量,从IN1通道取得与幅值有关的数字量,经过计算,把数据送给ZLG7289,在数码管上显示。这样输出波形的频率就和模拟电压联系起来,只要调整电位器旋钮改变输入电压模拟量,就可以改变波形的频率。波形的幅值调整是通过调节DAC0832的Vref(参考电压)来实现的。具体做法是在DAC0832的Vref端连接一个电位器,通过改变电位器来改变Vref的输入值,Vref的值改变,DAC0832输出的电压值也会变换。这样输出波形的频率就和模拟电压联系起来,只要调整电位器旋钮改变输入电压模拟量,就可以改变波形的频率。波形的幅值调整是通过调节DAC0832的Vref(参考电压)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论