基于单片机的程控幅值函数发生器本科学位论文_第1页
基于单片机的程控幅值函数发生器本科学位论文_第2页
基于单片机的程控幅值函数发生器本科学位论文_第3页
基于单片机的程控幅值函数发生器本科学位论文_第4页
基于单片机的程控幅值函数发生器本科学位论文_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

摘要众所周知,数字技术和计算机技术已渗透到了工业、农业、商业、教育、医疗、军事、娱乐等每一个领域及生活中的每一个角落,其应用之深之广令人咂舌!尽管PC机的应用已经相当普遍,但是,在工业领域,在日益追求小而精,轻而薄的自动化控制器、自动化仪表、家电产品等方面,PC机仍有所不适宜。在这种情况下,单片机以它优越的控制性能、轻巧的体积、高可靠性和高性价比在智能化仪表系统、工业领域等日益显出其强大的生命力,使传统的电子技术产生了一场巨变,成为计算机发展上的一个新的里程碑。智能仪器的出现,极大的扩充了传统仪器的应用范围,智能仪器凭借其体积小、功能强、功耗低等优势、迅速的在家用电器、科研单位和工业企业中得到了广泛的应用。该函数发生器采用AT89C52单片机作为控制核心,外围采用模拟/数字转换电路(DAC0832)、运放电路(ua741)、按键和LED显示电路等,电路采用AT89C52单片机和两片DAC0832数模转换器组成程控幅值函数发生器。其函数发生器价格低、性能好、操作方便、体积小等优点。由于采用了ua741运算放大器,使其电路更加具有较高的稳定性、性能比高。此电路清晰,出现故障容易查找错误,操作简单、方便。通过按键可以控制产生正弦波、方波、锯齿波、三角波等,同时用LED显示对应波形的频率,其频率、复制可调、波形准确且平滑。本系统设计简单,性能优良,具有一定的实用性。本设计主要以AT89C52作为控制核心,硬件电路简单,软件功能完善,控制系统可靠,性价比较高等优点,具有一定的使用价值和参考价值。关键字:函数发生器AT89C52DAC0832幅度控制ABSTRACTAsweallknow,digitaltechnologyandcomputertechnologyhaspenetratedintotheindustry,agriculture,commerce,education,medical,military,entertainment,andeveryareaoflifeineverycornerofitsapplicationiswide,deep,raspberry.DespitethePC-applicationhasbeenfairlycommon,butintheindustryfield,inpursuitofasmallbutgrowing,lightandthin,automationcontrollers,automationinstruments,homeappliancesandsoon,PCisstilltheappropriatemachine.Inthiscase,theMCUcontrolwithitssuperiorperformance,compactsize,highreliabilityandcost-effectiveinIntelligentSystems,andotherindustriesincreasinglyshowinggreatvitalitytothetraditionalelectronictechnologyhadachanges,thedevelopmentofacomputer,anewmilestone.Theemergenceofsmartdevices,greatlyexpandedtheapplicationoftraditionalinstruments,intelligentinstruments,withitssmallsize,powerfulfunctions,lowpowerconsumptionadvantages,rapidinhouseholdappliances,researchinstitutesandindustrialenterpriseshavebeenwidelyused.ThefunctiongeneratorusingAT89C52microcontrollerasthecontrol,externalanalog/digitalconversioncircuit(DAC0832),op-ampcircuit(ua741),buttonsandLEDdisplaycircuit,thecircuitusingAT89C52microcontrollerandtwocomposedofprogrammableanalogconverterDAC0832amplitudefunctiongenerator.Thefunctiongeneratorlowprice,goodperformance,easyoperation,smallsize,andsoon.Thankstoua741operationalamplifiercircuitstomorehavehigherstability,performanceishigh.Thecircuitclear,easytofindfailureerror,simpleandconvenient.Producedcanbecontrolledbybuttonssinewave,squarewave,sawtooth,trianglewave,whilethecorrespondingwaveformwithLEDdisplayfrequency,thefrequency,copyadjustable,accurateandsmoothwaveform.Thesystemissimpleandexcellentperformance,hassomerelevance.ThedesignmainlyAT89C52asthecontrol,simplehardwarecircuit,software,functional,andreliablecontrolsystem,highcostperformanceadvantages,hassomevalueandreferencevalue.Keywords:functiongeneratorAT89C52DAC0832Amplitudecontrol目录摘要------------------------------------------------------------------------------------------------ABSTRACT--------------------------------------------------------------------------------------绪论------------------------------------------------------------------------------------------课题研究的发展与应用------------------------------------------------------------函数发生器的背景及发展概况--------------------------------------------国内外动态---------------------------------------------------------------------------1.2.1波形发生器的发展概况-----------------------------------------------------1.2.2函数发生器的应用-----------------------------------------------------------本文的主要工作和要求------------------------------------------------------------原始数据-----------------------------------------------技术要求-----------------------------------------------工作要求-----------------------------------------------程控幅值函数发生器的设计方案------------------------------------------------------总体设计方案-----------------------------------------------------------------------系统机构总框架-------------------------------------------------------------电路的工作原理--------------------------------------------------------------------3.硬件设计-----------------------------------------------------------------------------------3.1AT89C52的工作原理--------------------------------------------------------------3.1.1概述---------------------------------------------------------------------------3.1.2主要功能特性---------------------------------------------------------------3.1.3内部结构框图---------------------------------------------------------------3.1.4各引脚排列---------------3.2D/A转换器的选择-----------------------------------------------------------------3.2.1DAC0832芯片--------------------------------------------------------------3.2.2DAC0832主要特征参数--------------------------------------------------3.2.3DAC0832的结构与工作方式--------------------------------------------3.2.4DAC0832与AT89C52的接口设计-----------------------3.3显示与键盘控制器7289A的芯片介绍-----------------------------------------3.3.17289A芯片介绍------------------------------------------------------------3.3.27289A与AT89C52接口电路--------------------------------------------3.4功率放大器的设计-----------------------------------------------------------------3.5硬件原理图--------------------------------------------------------------------------3.6本章小结-----------------------------------------------------------------------------4.软件设计----------------------------------------------------------------------------------4.1主程序设计--------------------------------------------------------------------------4.1.1主程序流程图---------------------------------------------------------------4.2初始化程序--------------------------------------------------------------------------4.3外部中断流程图--------------------------------------------------------------------4.4延时程序-----------------------------------------------------------------------------4.5源程序--------------------------------------------------------------------------------4.6本章小结-----------------------------------------------------------------------------5.调试分析-----------------------------------------------------------------------------------5.1KELL51软件简介-----------------------------------------------------------------5.1.1系统概述---------------------------------------------------------------------5.1.2KeilC51单片机软件开发系统的整体结构---------------------------5.2调试步骤-------------------------------------------------------------------------------5.2.1逻辑的调试------------------------------------------------------------------5.2.2模拟电路板的调试---------------------------------------------------------5.3调试中的问题及解决方法--------------------------------------------------------5.4本章小结-----------------------------------------------------------------------------6.结论与展望-------------------------------------------------------------------------------6.1结论-----------------------------------------------------------------------------------6.2展望-----------------------------------------------------------------------------------致谢----------------------------------------------------------------------------------------------参考文献----------------------------------------------------------------------------------------外文翻译----------------------------------------------------------------------------------------1绪论1.1函数发生器的发展与应用1.1.1函数发生器的背景函数发生器是一种在科研和生产中经常用到的基本波形产生器,波形发生器[1]即通常所说的信号发生器,是一种常用的信号源,广泛应用于通信[2],雷达[3][4],测控[5],电子对抗[6][7]以及现代化仪器仪表[8]等领域,是一种为电子测量工作提供符合严格技术要求的电信号设备,和示波器、电压表、频率计等仪器一样是最普通、最基本也是应用最广泛的电子仪器之一,几乎所有电参量的测量都要用到波形发生器。随着现代电子技术的飞速发展,现代电子测量工作对波形发生器的性能提出了更高的要求,不仅要求能产生正弦波、方波等标准波形,还能根据需要产生任意波形,且操作方便,输出波形质量好,输出频率范围宽,输出频率稳定度、准确度及分辨率高,频率转换速度快且频率转换时输出波形相位连续等。可见,为适应现代电子技术的不断发展和市场需求,研究制作高性能的任意波形发生器(ArbitraryWaveformGenerator,简称AWG)十分有必要,而且意义重大。1.2国内外动态1.2.1波形发生器的发展概况波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、振动激励、通讯和仪器仪表领域。在70年代前,信号发生器主要有两类:正弦波和脉冲波,而函数发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的凋节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。在70年代后,微处理器的出现,可以利用处理器、A/D和D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。90年代木,出现几种真正高性能、高价格的函数发生器心⋯、但是HP公司推出了型号为HP770S的信号模拟装置系统,它由HP8770A任意波形数字化和HPl776A波形发生软件组成。HP8770A实际上也只能产生8中波形,而且价格昂贵。不久以后,Analogic公司推出了型号为Data.2020的多波形合成器,Lecroy公司生产的型号为9100的任意波形发生器等。到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz的DDS芯片[38][39],同时也推动了函数波形发生器的发展,2003年,Agilent的产品33220A能够产生17种波形,最高频率可达到20M,2005年的产品N6030A能够产生高达500MHz的频率,采样的频率可达1.25GHz。由上面的产品可以看出,函数波形发生器发展很快近几年来,国际上波形发生器技术发展主要体现在以下几个方面:1.过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变得更加方便和容易。波形发生器通常允许用一系列的点、直线和固定的函数段把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂的波形可以由几个比较简单的公式复合成V:f(t)形式的波形方程的数学表达式产生。从而促进了函数波形发生器向任意波形发生器的发展,各种计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视化编程语言(如VisualBasic,VisualC等等)编写任意波形发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。2.与VXI资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算机的插卡以及新近开发的VXI模块。由于VXI总线的逐渐成熟和对测量仪器的高要求,在很多领域需要使用VXI系统测量产生复杂的波形,VXI的系统资源提供了明显的优越性,但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得波形发生器VXI模块仅限于航空、军事及国防等大型领域。在民用方面,VXI模块远远不如台式仪器更为方便瞄圳。3.随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类似产品减少了一半。1.3本文的主要工作内容1.3.1原始数据1.正弦波的频率范围:下限频率为0.1Hz,上限频率暂时不确定,但应尽量提高,并在实验报告中分析影响上限频率的因素和已完成的最大值。2.输出正弦波中不能含有尖峰干扰。3.输出正弦波峰峰值最大为5V、最小幅度自定,幅度调节0.5V。4.频率输入为数字量,在10Hz范围内分辨率为0.1Hz;10~100Hz内为1Hz;100~1000Hz内为10Hz。5.扩展输出波形种类,如三角波、方波等,频率范围自定。1.3.2技术要求1.波形失真度:±3%2.八位数码管显示1.3.3工作要求1.组建基于单片机的程控幅值函数发生器的总体结构框图;2.根据设计测量范围和准确度要求,通过理论分析和计算选择电路参数;3.根据操作功能要求,确定键盘控制功能;4.按设计要求确定显示位数、指示类型和单位;5.采用C语言编写应用程序并调试通过;6.对系统进行测试和结果分析;7.撰写论文。2程控幅值函数发生器的设计方案2.1总体方案设计2.1.1方案选择本设计主要用单片机AT89C52实现程控幅值函数发生器,而在此有两种方案可供选择:直接利用单片机编程产生三角波、方波、锯齿波、正弦波、其优点是简化了用于产生波形的硬件和软件,特别适用于交流感应电动机和无刷直流电动机的速度控制及变频电源的SPWM控制,但其编程复杂、波形失真较大并且不能达到要求输出的高频率信号。利用单片机控制波形信号产生芯片,通过单片机、键盘、LCD显示实现波形的数字控制。其硬件电路稍有些复杂,但控制简单、波形效果好、频率到款为了满足设计要求,取得较好的效果,用方案二比较理想。2.1.2本设计的主导思想是软硬件结合,力求性能可靠,电路简单,选择通用件,程序运行可靠逻辑合理。基本要求时产生出符合要求的函数波形,一个函数波形是符合格主要有三个指标来衡量:波形、幅值、频率。即产生符合要求的函数波形也就是产生出波形、幅值、频率符合目标要求的波形。根据题意,可采用单片机程序产生以上四种波形(正弦波、方波,锯齿波、三角波),并通过一片D/A转换器输出。另外,采用一片D/A转换器来控制前一片D/A转换器的参考电压,从而可以改变输出波形幅值。见图2.1.1(a)所示。通过外接键盘来设定外接波形的类型、幅值和频率,并在扩展的七段LED显示器上显示响应的波形的类型、幅值和频率。键盘键盘显示单片机D/A转换器D/A转换器运算放大器运算放大器滤波电路图2.1.1(a)系统结构总框架2.2电路的总体硬件要设计合适的电路,应遵循下列原则[12]:(1)尽可能选择标准化、模块化的典型电路,提高设计的成功率和结构的灵活性。(2)系统的扩展与外围设备的水平应充分满足应用系统的功能要求。(3)硬件结构应结合应用软件方案一并考虑,硬件结果和软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件来实现,以简化硬件结构。但必须注意的是,由软件实现的硬件功能,其响应时间要比直接用硬件来的长,而且占用CPU时间。所以选用软件时,要考虑到这些因素[12]。(4)可靠性及抗干扰性设计是硬件系统设计不可缺少的部分,它包括芯片、器件选择、去耦滤波等等。(5)系统的扩展及各功能模块的设计在满足系统功能要求的基础上,应当留有余地,以备将来修改、扩展之需。(6)在考虑硬件总体结构的同时要注意通用性的问题。根据以上原则,进行硬件设计。系统采用较为普及的AT89C52单片机作为系统的核心。它不但容易实现设计指标,而且还有较好的性价比。程序存储器——AT89C52内部自带8K的ROM,512B的RAM,所以不需要对其扩展存储器。键盘——矩阵式键盘适用于按键数量较多的场合,系统采用了7289A键盘控制器驱动8位数码管连接16个键盘矩阵。数码管——本设计实现了89C52的I/O口通过了7289A对2*8键盘和8位数码管显示的控制。D/A转换——本设计D/A转换部分采用DAC0832芯片。信号转换部分——对信号的变化部分采用四运放芯片ua741。复位电路设计——单片机的复位是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。复位电路连接如图2.2(a)所示。此电路仅用一个电容及一个电阻。系统上电时,在RC电路充电过程中,由于电容量端电压不能跳变,故使复位端电平呈高电位,系统复位。经过一段时间,电容充电,使复位端呈低电位,复位结束。图2.2(a)复位电路连接图可靠性方面——在使用应用系统时可能会受到多种干扰的侵袭,直接影响到系统的可靠性,因此,本系统适当加入去耦电容,加入低通滤波器以减少干扰,确保精度。3硬件设计3.1AT89C52的工作原理3.1.1概述单片机控制系统的核心器件是单片机芯片,它提供的功能和资源对整个应用系统所需要的支持电路、接口硬件设计以及软件程序设计起着关键作用。就本系统而言,可供选择的单片机较多,但从满足系统要求、性价比、简化硬件电路设计等方面考虑,选择ATMEL公司生产的AT89C52即可。AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求3.1.2主要功能特性·兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM·32个双向I/O口·256x8bit内部RAM·3个16位可编程定时/计数器中断·2个串行中断·时钟频率0-24MHz·共6个中断源·可编程UART串行通道·3级加密位·2个外部中断源·低功耗空闲和掉电模式·2个读写中断口线·软件设置睡眠和唤醒功能3.1.3AT

图3.1.3(a)内部结构框图图3.1.3(b)实物图3.1.4A概述:AT89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。图3.1.4(a)为PDIP封装的AT89C52引脚排列图。图3.1.4(a)AT89C52引脚排列图1)I/O口线P0口:是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。Flash编程和程序校验期间,P1接收低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。见表3.1.1(a)。P3口还接收一些用于Flash表3.1.1(a)P3口的第二功能端口位第二功能注释P3.0RXD串行输入口P3.1TXD串行输出口P3.2/INT0外部中断0P3.3/INT1外部中断1P3.4T0计数器0计数输入P3.5T1计数器1计数输入P3.6/WR外部数据RAM写入选通信号P3.7/RD外部数据RAM读出选通信号2)控制信号线RST/VPD

复位输入。接通电源后,在该引脚十佳大于两个机器周期(24个振荡周期)的高电平,就可是单片机完成内部的复位工作。第二功能是Vpd,及备用电源输入端。当主电源Vcc发生故障,降低到低电平规定值时,Vpd将为RAM提供备用电源,以保证存储在RAM中的信号不丢失。ALE/PROG

当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN

程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。~EA/VPP外部访问允许。~EA=1时程序先片内后片外自动连续运行。~EA=0时,程序直接从片外开始执行。3)电源线Vcc——电源电压输入引脚。GND——电源地。4)外部晶振引线XTAL1——振荡器反相放大器的及内部时钟发生器的输入端。XTAL2——振荡器反相放大器的输出端。当使用外部振荡电路时,引脚XTAL1接收外振荡器信号,XTAL2悬空。5)特殊功能寄存器

在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器,它们复位后的初态如表3.1.1(b)所示。表3.1.1(b)复位后内部存储器的初态特殊功能寄存器初始状态特殊功能寄存器初始状态ACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPL00HTL100HDPH00HSCON00HP0-P30FFHSBUF不定IP***00000BPCON0*******BIE0**00000BTMOD00H并非所有的地址都被定义,从80H—FFH共128个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。6)定时器MCS-51系列中51子系列中有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。定时/计数器2的控制和状态位位于T2CON与T2MOD,寄存器对(RCAO2H、RCAP2L)是定时器2在16位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2也有三种工作方式。通过编程设置其方式寄存器,TMOD可设定定时器工作于某种方式,方式寄存器TMOD格式见表3.1.1(c)。表3.1.1(c)方式寄存器TMODT1T0GATEC/TM1M2GATEC/TM1M2门控开/关计数/定时方式选择门控开关计数/定时方式选择GATE:门控信号。GATE=0,TRx=1时即可启动定时计数器工作,是一种自启动方式;GATE=0,TRx=1,~INTx=1时才可启动定时器/计数器工作。既是~INTx引脚加高电平启动,是一种外启动方式。C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。M1、M0:为工作方式选择位,定时器/计数器的四种工作方式由M1M0设定,设定情况见表3.1.1(d)。表3.1.1(d)定时计数器的四种工作方式M1M0工作方式方式说明00013位定时计数器01116位定时计数器1028位自动重置定时计数器113T0为两个8位定时计数器每一个定时/计数器计数时间到时产生溢出,使控制寄存器TCON中相应的溢出位置位,溢出可通过查询或中断方式处理,控制寄存器表格见表3.1.1(e)。表3.1.1(e)定时/计数器的控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0T1请求有/无T1工作启/停T0请求有/无T0工作启/停INT1请求有/无INT1方式下沿/低电平INT0请求有/无INT0方式下沿/低电平其中:TF1:定时/计数器T1的溢出标志位,当定时/计数器T1计满时,由硬件使它置位,如中断允许则触发T1中断。进入中断处理后有内部硬件电路自动清除。 TR1:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时启动;TR1=0时停止。TF0:定时/计数器T0的溢出标志位,当定时/计数器T0计满时,由硬件使它置位,如中断允许则触发T0中断。进入中断处理后有内部硬件电路自动清除。TR0:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时启动;TR1=0时停止。7)中断AT89C52有个中断源:两个外部中断(~INT0和~INT1),三个定时中断(定时器0、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。如表3.1.1(f)所示,IE.6位是不可用的。他们为AT89系列新产品预留。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后这些标志位都可以由硬件清零。实际上,中断服务程序必须判定是否是TF2或EXF2激活中断,标志位也必须由软件清零。定时器0和定时器1标志位TF0和TF1在计数溢出的那个周期的S5P2被置位。他们的值一直到下一个周期被电路捕捉下来。然而,定时器2的标志位TF2被置位,在同一个周期被电路捕捉下来。表3.1.1(f)中断允许控制寄存器(IE)(LSB)EA——ET2ESET1EX1ET0EX0EA:中断允许总控制位。EA=0,屏蔽所有的中断请求;EA=1,放开中断。ET2:定时器/计数器T2的溢出中断允许位。ES:串行口中断允许位。ET1:定时器/计数器T1的溢出中断允许位。EX1:外部中断INT1的中断允许位。ET0:定时器/计数器T0的溢出中断允许位。EX0:外部中断INT0的中断允许位。3.2D/A转换器的选择3.2.1DAC0832芯片图3.2.1它的内部结构框图DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。图3.2.1是它的内部结构框图。3.2.2DAC0832的主要特性参数分辨率为8位;电流稳定时间1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度;单一电源供电(+5V~+15V);低功耗,200mW。3.2.3DAC0832的结构和工作方式结构D0~D7——8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);ILE——数据锁存允许控制信号输入线,高电平有效;CS——片选信号输入线(选通数据锁存器),低电平有效;WR1——数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;XFER——数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2——DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。IOUT1——电流输出端1,其值随DAC寄存器的内容线性变化;IOUT2——电流输出端2,其值与IOUT1值之和为一常数;Rfb——反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;Vcc——电源输入端,Vcc的范围为+5V~+15V;VREF——基准电压输入线,VREF的范围为-10V~+10V;AGND——模拟信号地DGND——数字信号地工作方式根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。3.2.2DAC0832与AT89C52的接口设计以DAC0832的单极性输出(单缓冲工作方式)为例,图3.2.2(a)是DAC0832在单片机AT89C52的控制下实现模拟量单极性输出的电路。在图中,由地址锁存器74LS373的/CS端和/XFER(1,17)端,在单片机执行一条输出指令时,立即在/XFER、/CS出现一个负脉冲,并把8位数据从P0口输出。脉冲为低电平期间,把8位数据送到DAC0832的“8位输入寄存器”和“8位DAC寄存器”,并达到“8位D/A转换器”开始D/A转换,当脉冲上升沿之后,数据被锁存在“8位输入寄存器”和“8位DAC寄存器”。图3.2.2(a)DAC0832与AT89C52单片机的接口电路一般在此电路使用之前,先要进行调整,包括调整零点和增益。先调零点,后调增益,步骤如下:调整零点:给DAC0832送一个很小的数字量,如D=01H。置Rn=0,调零电位器Rw使Vout与理论值(与01H对应)相差在+LSB/2与-LSB/2之间。这里1LSB=Vref/256,设Vref=5.12V,则1LSB=5.12/256=20Mv,D=01H对应的输出为-20mV。因此应把Vout调整在-20Mv+10mV与-20Mv-10mV之间。调整增益:送入D=FFH调整与Rfb串联的Rn和调零电位器Rw,使Vout与理论值之差小于LSB/2。设Vref=5.12V,则与FFH对应的理论值为-5.1V那么应调整得Vout为-5.1V+10mV与+5.1V-10mV之间。再图3.2.2.(a)中,因为引脚Vref接+5.12V,所以输出Vout<0。如果把引脚Vref接负电源,则Vout便为正。3.3显示与键盘控制器7289A的芯片介绍3.3.1芯片介绍7289A是具有SPI串行接口功能的显示键盘控制芯片,它可同时驱动8位共阴极数码管和64个键的键盘矩阵。1.7289A7289A的引脚说明见表3.3.1(a)图3.3.1(a)键盘控制器7289A的引脚说明引脚名称说明1,2RTCC,Vcc接+5V电源3,5NC空脚(未定义)4GND接地6~CS片选:低电平有效7CLK同步时钟输入端:上升沿有效8DATA(DIO)串行输入、输出端:当CPU写显示值时,引脚为输入端;当CPU读取键值时,引脚为输出端9~KEY按键有效输出端:低电平有效10-16SG-SA段g-a驱动输出17DP小数点驱动输出18-25DIG0-DIG7共阴极数码管的驱动输出26CLK0振荡输出端27RCRC振荡器的输出端28~RST复位端2.控制指令7289A的控制指令分为两类:8位宽度的单字节指令(控制指令)和16位宽度的双字节指令。单字节指令见表3.3.1(b)表3.3.1(b)单字节指令名称代码注释复位指令A4H将所有的显示包括所有设置的字符消隐闪烁等一起清除测试指令BFH是所有的LED全部点亮,并处于闪烁状态,判断LED是否正常工作左移指令A1H显示向左移动一位(包括消隐状态的显示位),但对各位所设置的消隐及闪烁属性不变。左移一次后最右边1位为空(无显示)右移指令A0H与左移类似,但所作移位为自左向右,移动一次后最左边1位为空循环左移A3H与左移指令不同之处在于移动后原最左边1位的内容显示在最右边循环右移A2H与循环左移指令类似,移动方向相反双字节指令写数据且按方式0:高字节操作码为“10000a2a1a0”,其中a2、a1、a0为位地址;低字节格式为“DP***d3d2d1d表3.3.1(c)写数据按方式0译码10000a2a显示位DP***d3-d0LED7段显示1000000000***0H-9H0-91000000110****AHA1000001020****BHB1000001130****CHC1000010040****DHD1000010150****EHE1000011060****FHD100001117写数据且按方式1,高字节操作码为“11001a2a1a0”,其中a2、a1、a0为位地址,具体分配参照图表3.3.1(d)写数据按方式1译码10000a2a显示位DP***d3-d0LED7段显示1100100000***0H-9H0-91100100110****AHA1100101020****BHB1100101130****CHC1100110040****DHD1100110150****EHE1100111060****FHD110011117其他指令(a)闪烁指令。双字节指令,控制各个数码管的闪烁属性。高字节操作码为“88H”,低字节为数据位“d7-d0”分别控制第8个到第1个数码管是否闪烁,0为闪烁,1(b)消隐控制。双字节指令,控制各个数码管的消隐属性。高字节操作码为“98H”,低字节与段闪烁的低字节相同,0为显示,1为消隐。读键盘指令双字节指令。高字节操作码为“15H”,低字节操作码为“d7-d0”。表示7289A3.7289A采用串行方式SPI总线与微处理器通信串行数据从DATA引脚送入芯片,并由CLK端同步,当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入7289A的缓冲寄存器。操作时序如图3.3.1(e)。单字节指令8位指令高位在前16位:高8位指令高位在前,第8位数据高位在前16位:高8位键盘指令高位在前,第8位键盘代码高位在前纯指令:带数据指令:读键盘指令:图3.3.1(e)7289A时序图3.3.27289A与AT89C52的接口电路7289A的典型应用如图3.3.1(c)所示。7289A需要外接晶体振荡电路。其典型振荡频率f=16MHz,取C=15pF.当芯片工作不正常时,先检查振荡电路。复位端~RST可以连接外部复位电路,或直接由MCU控制,在上电或~RST端由低电平变为高电平后,大约要经过18~25ms的时间,7289A才会进入正常工作状态。上电后,所有的显示均为空,所有的显示位的显示属性均为“显示”或“不闪烁”。当有键按下时,~KEY引脚输出低电平,此时如果接收到“读键值”指令,7289A将输出所按下键的代码。键盘代码的定义是如果在没有按键的情况下收到“读键值”指令,7289A将输出0FFH。图3.3.1(c)7289A典型应用电路3.4放大电路本设计的放大电路主要是采用4个ua741来实现的。它是高增益运算放大器,它有输出短路保护和闭锁自由保护的功能。使其电路更加具有较高的稳定性、性能比高。图3.4是它的实物图图3.4ua741的实物图3.5本章小结本章主要介绍了单片机AT89C52的工作原理,包括它的主要功能特性、各引脚功能及管脚电压、内部结构框图;DAC0832的主要特征参数、结构和工作方式、与单片机的接口电路;7289A芯片也进行了简单的介绍,还有它的外部电路,像放大电路,复位电路的设计等。4软件设计4.2系统程序设计4.2.1一个优秀的应用系统应具有以下特点:(1)根据软件功能要求,将系统软件分为若干个独立的部分。设计出软件的总体结构,使其结构清晰,流程合理。(2)要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试链接,又便于移植修改。(3)建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。(4)为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编程软件之前,应绘制出程序流程图。(5)要合理分配资源,包括ROM、RAM、定时计数器,中断资源等。(6)注意在程序的有关位置处写上功能注释,提高程序的可读性。(7)加强软件抗干扰设计,他是提高系统应用可靠性的有力措施。4.2.2初始化程序显示程序键盘扫描程序与处理程序定时器0服务程序三角波、方波、锯齿波、正弦波的发生程序幅值调节程序4.2.主程序的流程图如图4.3.2所示。主程序主要完成系统初始化,由用户输入所要求的波形对应的按键值,幅值的大小也通过按键来控制,由单片机完成输入值对其控制码的转化,并将控制字并行送入AT89C52内,完成相对应波形及其幅值的要求。开始开始初始化I/O,键盘,LED等外围设备执行中断是否有键按下键值在0-9之间键值在a-d之间键值在e-f之间改变并显示频率输出对应波形改变幅值并输出波形D/A转换器放大滤波输出波形图4.3.2主程序流程图4.3初始化程序设定初始值系统的初始化流程图见图4.3。设定初始值显示字符显示字符延时延时显示初始频率显示初始频率转键盘扫描转键盘扫描图4.3初始化流程图4.4键盘扫描及处理程序设计4.4.1选择扫描方式单片机系统中,键盘扫描是CPU工作的一个主要内容之一,在单片机系统设计中,为了节省硬件,通常采用非编码键盘,在这种键盘中,单片机对他的控制有三种方式:程序控制扫描方式;定式扫描工作方式;中断工作方式。程序控制扫描方式——这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,响应键盘的输入请求。定式扫描工作方式——这种方式就是每隔一定的时间对键盘扫描一次。通常是利用单片机内部定时器产生10ms的定时中断,CPU响应定时器溢出中断请求,对键盘进行扫描,以响应键盘输入请求。中断工作请求——为了进一步提高CPU效率,可以采用中断扫描方式,即在键盘有按键按下时,才执行键盘扫描,执行该键功能程序。本系统采用程序控制扫描方式,在该设计中的键盘的行列线连接于89C52的P1口,键盘扫描程序自复位后就开始工作,时刻监视键盘,有无键按下,再见时键盘过程中,允许定时器T0中断,即同时动态显示数据和输出波形,一旦有按键按下,先延时,去除键的抖动,然后关中断,不允许定时器T0发生中断。图4.4.2是7289的键盘扫描。此处的延时程序主要是用于防止键盘带来的抖动。初始化初始化延时判断有无键按下确认按键计算键值执行相对键值状态开始结束图4.4.27289键盘扫描4.4.2显示在本设计中,主要通过按键选择波形,改变幅值,调节频率。首先初始化时在没有按键按下时LED上显示出“HELLO”,示波器上显示的是正弦波。按键按下之后LED上显示出波形的频率。频率主要由按键0-9决定,当输入一个数时,让它在按键上显示,在输入下一个数时,让上一个数左移一位,把下一个数显示到最右边一位,以此类推,最后显示的将是波形的频率。0a-0e主要是选择波形,0a是正弦波,0b是方波,0c是锯齿波,0d是三角波。而0e-0f主要用于调节幅值,0e主要是增加幅值,而0f则是使幅值减小。最终的频率通过LED显示出来。4.5三角波、方波、锯齿波、正弦波的发生程序在下面主要给出四种波形的程序。(1)正弦voidsin_wave(void){ unsignedcharsin_i; floatx; TR0=0; for(sin_i=0;sin_i<number;sin_i++){x=100*sin(sin_i*n_constant*pi/180); wave_data[sin_i]=x+128; } TR0=1;}(2)方波voidfang_wave(void){unsignedcharfang_bo_i;TR0=0;for(fang_bo_i=0;fang_bo_i<(number/2);fang_bo_i++){wave_data[fang_bo_i]=00;}for(fang_bo_i=0;fang_bo_i<(number/2);fang_bo_i++){wave_data[number/2+fang_bo_i]=228;} TR0=1;}(3)锯齿voidhackle(void){ unsignedcharhackle_i; TR0=0; for(hackle_i=0;hackle_i<number;hackle_i++){wave_data[hackle_i]=3.5*hackle_i;} TR0=1;}(4)三角voidtrigonal(void){ unsignedchartrigonal_i,temp; TR0=0; for(trigonal_i=0;trigonal_i<(number/2);trigonal_i++) {wave_data[trigonal_i]=6*trigonal_i;} temp=wave_data[trigonal_i-1]; for(trigonal_i=0;trigonal_i<(number/2);trigonal_i++) {wave_data[trigonal_i+number/2]=temp-6*trigonal_i;} TR0=1;}4.6幅值调节程序(1)增加幅值程序voidswing_add(void){ unsignedcharswing_add_i; TR0=0; for(swing_add_i=0;swing_add_i<number;swing_add_i++) {wave_data[swing_add_i]=wave_data[swing_add_i]*1.05;} TR0=1;}(2)减小幅值程序voidswing_sub(void){ unsignedcharswing_sub_i; TR0=0; for(swing_sub_i=0;swing_sub_i<number;swing_sub_i++) {wave_data[swing_sub_i]=wave_data[swing_sub_i]*0.95;} TR0=1;}4.7硬件调试(1)D/A转换模块在检测这一部分中,我先编写了一个显示正弦波的程序对其检测,结果示波器中有正弦波输出,说明D/A模块正常。(2)显示模块编写了一个显示“HELLO”的显示程序,然后通过仿真直接就显示“HELLO”说明它LED显示一切正常。(3)键盘模块在编写程序的过程中通过查找按键地址的方法检测到各个按键一切正常。(4)电源把电路板上+12V与-12V还有接地连接到稳压电源上,对应+12V与-12V的二极管均亮了,说明电源与二极管均正常工作。4.8本章小结本章主要介绍了系统的软件设计。给出了系统的总流程图,初始化流程图。把软件的初始化、显示、键盘扫描及处理程序、定时器0等模块进行了详细介绍,而且,还附加了一些程序进行说明。5调试分析5.1软件语言及编程环境简介5.1.1软件语言简介计算机普及被喻为人类文化的第三次革命,它以机体的硬件结构,去执行可以随设计要求而改变的软件。这就使得机器有了灵活应用的弹性,只要有合适的软件,它就会严格按照指令处理各种繁琐的任务。1.汇编语言用助记符表示的指令就是计算机的汇编语言。它有以下特点[9][10]:●助记符指令与机器指令一一对应,用汇编语言编写的程序占用存储器空间小,运行速度快,可编写出晟优化程序。●汇编语言是面向计算机的。要求程序设汁人员必须对计算机硬件有相当深入的了解。●汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能直接管理和控制硬件设备。●各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用,因此汇编语言缺乏通用性,程序不易移植。2.C51简介C语言是目前唯一一种可以运行在单片机、PC机、直到巨型机等各种机型的高级语言。C语言有丰富的库函数,运算速度快、编译效率高,有良好的可移植性,而且可以直接控制系统硬件。C语言是一种结构化程序设计语言,用C语言编写软件,开发周期短,代码质量高,可读性强,便于维护和扩充,从而研制出规模更大、性能更完备的系统。目前8051单片机已具有了C语言汇编系统和实时多任务操作系统,用它来开发项目,可以使我们能把主要精力集中在算法和工艺流程上,开发出高质量的稃序代码。C语言功能强大,十分适用于控制系统的开发,它的优点主要有:·对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步的了解;·寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理。·程序有规范的结构,可分为不同的函数,易实现程序结构化。·具有可变的选择与特殊操作组合在一起的能力,改善了程序的可读性。·关键字及运算函数可用近似人的思维过程方式使用。·编程及程序调试时间显著缩短,从而提高效率。·提供库包含许多标准子程序,具有较强的数据处理能力。·已编好的程序可容易地植入新程序,因为它具有方便的模块化编程技术。5.1.2KEIL的编译环境uVision2介绍[11]目前流行的51系列单片机开发软件是德国Keil公司推出的KeilC51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:μVisionIDE集成开发环境、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51、RTX51实时操作系统。应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑

温馨提示

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

评论

0/150

提交评论