基于单片机控制的低频信号发生器设计毕业设计(论文)word格式_第1页
基于单片机控制的低频信号发生器设计毕业设计(论文)word格式_第2页
基于单片机控制的低频信号发生器设计毕业设计(论文)word格式_第3页
基于单片机控制的低频信号发生器设计毕业设计(论文)word格式_第4页
基于单片机控制的低频信号发生器设计毕业设计(论文)word格式_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1绪论11信号发生器概述目前,市场上的信号发生器多种多样,一般按频带分为以下几种超高频频率范围1MHZ以上,可达几十兆赫兹。高频几百KHZ到几MHZ。低频频率范围为几十HZ到几百KHZ。超低频频率范围为零点几赫兹到几百赫兹。超高频信号发生器,产生波形一般用LC振荡电路。高频、低频和超低频信号发生器,大多使用文氏桥振荡电路,即RC振荡电路,通过改变电容和电阻值,改变频率。用以上原理设计的信号发生器,其输出波形一般只有两种,即正弦波和脉冲波,其零点不可调,而且价格也比较贵,一般在几百元左右。在实际应用中,超低频波和高频波一般是不用的,一般用中频,即几十HZ到几十KHZ。用单片机89S52,加上一片DAC0808,就可以做成一个简单的信号发生器,其频率受单片机运行的程序的控制。我们可以把产生各种波形的程序,写在ROM中,装入本机,按用户的选择,运行不同的程序,产生不同的波形。再在DAC0808输出端加上一些电压变换电路,就完成了一个频率、幅值均可调的多功能信号发生器的设计。这样的机器体积小,价格便宜,耗电少,频率适中,便于携带。12本论文主要研究的内容本设计采用89S52及其外围扩展系统,软件方面主要是应用C语言设计程序。系统以89S52单片机为核心,配置相应的外设及接口电路,用C语言开发,组成一个多功能信号发生系统。该系统的软件可运行于WINDOWSXP环境下,硬件电路设计具有典型性。同时,本系统中任何一部分电路模块均可移植于实用开发系统的设计中,电路设计具有实用性。本设计将完成以下几个方面的工作(1)选芯片,尽量满足一般工业控制要求、以增强其实用性。(2)原理图设计在保证正确的前提下,尽量采用典型的电路设计。(3)印制板设计既要精巧,又要便于摆放及测试。(4)固化于单片机芯片中的软件采用模块设计,层次清楚,具有上电复位及初始化功能,具有很好的软件开发框架。(5)掌握单片机仿真软件PROTEUS67的使用。为此,论文包括以下内容绪论。主要介绍单片机发展概况和信号发生器的概述,为以后几章的介绍奠定基础。系统总体方案设计。本章主要考虑系统性能、功能和器件选择。包括两个主要内容系统分析和系统总体方案设计。其中系统分析包括问题定义、可行性研究和需求分析。问题定义中对设计的课题进行定义,详述设计环境。可行性分析中分别从经济可行性、元器件具备程度和对可能遇到的问题的可解决性几个方面论证设计是否可行。需求分析对系统功能要求、性能要求和运行环境要求说明。系统总体方案设计包括算法设计、系统总体框图设计以及系统中使用的主要芯片。系统的硬件设计。本章完成系统的硬件总体设计,详细说明了设计思路。系统软件设计实现。本章是系统的具体实现,对系统按功能模块进行介绍。系统测试报告。分别对系统的功能测试、调试过程和系统的使用方法进行介绍。总结与展望未来。2系统设计方案21系统分析211问题定义基于单片机的信号发生系统是一个实际应用系统,可为相关实验及实际应用提供支持。本论文包括硬件系统的详细设计及C语言在基本控制中的应用。此系统具有的功能如下硬件部分(1)8位七段数码动态扫描显示;(2)24的8位矩阵键盘;(3)时钟电路与复位电路;(4)具有8位精度的D/A转换功能;(5)波形产生功能;软件部分(1)系统复位初始化;(2)键盘扫描与处理;(3)按键服务程序;(4)定时器0中断服务程序;(5)正弦波发生程序;(6)三角波发生程序;(7)方波发生程序;(8)锯齿波发生程序。22系统需求分析221系统功能要求系统具有D/A转换功能,信号幅度放大功能,8位七段数码显示功能,上电自动复位功能,24键盘输入接口。222系统性能要求(1)系统的D/A转换功能具有8位精度;(2)动态扫描七段数码显示器;(3)89S52单片机时钟信号为12MHZ;(4)系统上电自动复位;(5)系统具有8位行列扫描键盘。23总体方案设计231算法设计本设计涉及的算法较少,将在第四章软件设计中介绍。232系统总体结构框图设计图21主系统结构框图3硬件设计31总体硬件设计1程序存贮器89S52内部自带8K的ROM,512B的RAM,所以不需要对其扩展存储器。2键盘接口系统采用矩阵键盘,用I/O线组成行、列结构,按键设置在行列的交点上,24的行列结构可构成8个键的键盘,采用行列扫描法。3数码管驱动本设计实现了89S52的I/O口对24键盘和8位数码管显示的控制。为增加对数码管显示器的驱动能力及稳定性,在它与89S52之间设置了提高驱动能力的74LS373。4D/A转换本设计D/A转换部分采用DAC0808芯片,由于它不带锁存器,故在使用时必须加74LS373进行数据锁存。5信号变换部分对信号的变换部分采用四运放集成芯片LM324,它采用14脚双列直插塑料封装,它的内部包含四组形式完全相同的运算放大器。6可靠性方面在使用应用系统时,可能会受到多种干扰的侵袭,直接影响到系统的可靠性,因此,本系统适当加入去耦电容,以减少干扰,确保精度。32系统模块设计321显示器接口设计本机显示采用软件译码动态显示,系统显示电路如图31所示。采用软件译码动态显示的理由如下1)如果用静态显示,单片机的接口资源肯定不够用,那么还要进行接口的扩展,增加了系统的复杂度;2)如果要制成印刷线路板,得占相当大一块面积;3)另外,采用动态显示,可以明显的降低功耗,因为每一时刻只有一个LED发光,其功耗为静态显示的18。一个LED最大电流为120MA,如用静态显示,8个LED就耗电流960MA综上分析,采用动态显示才是最经济的方案。在显示的时候,只要把显示的字码输送到P2口,再经过74LS373进行数据锁存,P3口作为位选控制信号。由于采用的是共阴极数码管,当需要显示哪一位的时候,只要在相应的位选控制信号输出低电平就行。例如,要在第一个数码管显示P,那么在P2口就要输出73H字段码,同时P3口输出FEH位选码。图31系统显示电路322复位与时钟电路设计3221复位电路设计单片机的复位是靠外电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,通常是RST引脚保持10MS以上的高电平。复位电路连接如图32所示。此电路仅用一个电容及一个电阻。系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。经过一段时间,电容充电,使RESET端呈低电位,复位结束2。89S5225VC1R1图32复位电路3222时钟电路设计8XX51系列单片机的时钟信号通常用两种电路形式得到内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡方式如图33所示。图中电容C1、C2起稳定振荡频率、快速起振的作用。电容值一般为530PF。内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。外部振荡方式是把已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持一致。外部振荡方式电路如图34所示。对HMOS的单片机(8031,8031AH等),外部时钟信号由XTAL2引入;对于CHMOS的单片机(8XCXX),外部时钟信号由XTAL1引入。图33内部振荡图34外部振荡323键盘接口设计35系统键盘实现工作原理如下1检测键盘上是否有键按下将行线送入低电平,列线送入高电平。读入P1口的状态来判别。其具体过程如下P1口输出0FH,即所有行线置成高电平,所有列线置成低电平,然后将P1口状态读入与0FH比较。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。2识别键盘中哪一个键按下确认有键按下后,保存行扫描时有键按下时的状态X。P1口输出F0H,进行列扫描,保存列扫描状态Y,取出键值ZX|Y例如第一行第一列有键按下,那么行扫描读入的状态为00001110,列扫描读入的状态为11100000,最后键值Z11101110EEH,然后转去执行相应的服务程序。324D/A转换设计一、D/A转换器概述D/A转换器的性能指标31分辨率输出模拟电压应能区分02N1共2N个输入数字量。表示方法(1)用输入二进制数的位数表示;如8位。(2用输出模拟电压的最小值与最大值的比值表示。指最小输出电压和最大输出电压之比。DAC0808的分辨率为1/256。2精度DAC实际输出电压与理想的输出电压的偏差。DAC0808的最大满刻度偏差为1LSB。3线性度DAC实际传输特性曲线与理想的传输特性曲线的偏差。DAC0808的最大误差为019。4温度灵敏度在输入不变的情况下,输出模拟电压随温度变化产生的变化量。一般用满刻度输出条件下温度每升高1,输出电压变化的百分数作为温度系数。5转换速度用完成一次转换所需的时间建立时间TSET来衡量。建立时间输入信号从开始变化到输出电压进入与稳态值相差1/2LSB范围以内的时间。输入信号由全0变为全1所需时间最长。当外接运放时,转换时间还应加上运放的上升(下降)时间。(31)ROSTRSVTMAXMAX式中为转换时间,为建立时间,输出最大电压值,为运放输出转AXSTMAXOVRS换速率。二、D/A转换器的分类D/A转换器的品种繁多、性能各异。按输入数字量的位数分8位、10位、12位和16位等;按输入的数码分二进制方式和BCD码方式;按传送数字量的方式分并行方式和串行方式;按输出形式分电流输出型和电压输出型,电压输出型又有单极性和双极性;按与单片机的接口分带输入锁存的和不带输入锁存的。三、D/A转换器的原理以倒T形电阻网络D/A转换器为例,介绍D/A转换器的原理。倒T形电阻网络D/A转换器结构如图36所示。DDDDLSBMSBSSSS00112233RAVOIF1682R2RV2RRI4R4IREFI8II2R2RIRIII1622图36倒T形电阻网络D/A转换器图中S0S3为模拟开关,由输入数码DI控制,当DI1时,SI接运算放大器反相输入端(虚地),电流II流入求和电路;当DI0时,SI将电阻2R接地。所以,无论SI处于何种位置,与SI相连的2R电阻均接“地”(地或虚地)。流过各开关支路(从右到左)的电流分别为I/2、I/4、I/8、I/16。总电流(32)304132314022IIIREFREFDVDDVI输出电压(33)304IIREFFFOVIV将输入数字量扩展到N位,则有102NIIREFFFODVV可简写为(34)NOBKV其中,NREFFNV2102IID四、DAC0808简介DAC0808是八位电流输出型D/A转换器件,由4脚输出转换电流,其简化电路图及引脚结构如图37所示。VREF为参考电源,VEE负电压供电;D0是高数据位(MSB),D7才是地数据位(LSB)。DAC0808的电源极性VCC5V,VEE15V,VREF15V。D0D7是数据输入端,I0是电流输出端,COMP是接电容进行补偿。在单片机应用系统中通常需要的是电压信号,电流信号与电压信号之间的转换可由运算放大器实现。DAC0808不带锁存器,所以在使用时必须加一个74LS373进行数据锁存。NCD4D5D6D7D0D1D2D3VCVEIOGNDCOMP1234567891016151413121VREFVREF图37DAC0808简化电路框图和管脚排列根据DAC0808的特性设计出本系统的D/A转换电路如图38所示。图38系统D/A实现工作原理本系统由VREF提供参考电压,相应参考电流为IVREF/R1。电容C4提供补偿,OUT输出电流,经过LM324运算放大器转换成电压。所以输出电压5KVREF121RF(35)IIIIFODV270870184软件设计41软件总体设计应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。一个优秀的应用系统的应具有下列特点1根据软件功能要求,将系统软件分成若干个独立的部分。设计出软件的总体结构,使其结构清晰、流程合理。2要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试、链接,又便于移植、修改。3建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。4为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。5要合理分配系统资源,包括ROM、RAM、定时数器、中断资源等。6注意在程序的有关位置处写上功能注释,提高程序的可读性。7加强软件抗干扰设计,它是提高系统应用可靠性的有利措施。本系统的软件包括以下几个程序模块1初始化程序;2显示程序;3键盘扫描程序与处理程序;4定时器0服务程序;5正弦波发生程序及其服务程序;6三角波发生程序;7方波发生程序;8锯齿波发生程序。42软件功能设计421系统初始化程序设计复位程序完成如下工作1显示2秒的PPPHELLO初始界面;2初始频率设置为983HZ;3将频率值转换成定时器的初值;4置定时器0工作于方式1,即16位定时器方式,送入定时器0定时初值,启动定时器0工作;5显示初始频率和产生波形的类型;6转键盘扫描程序。系统的初始化流程如图41所示。图41初始化流程图422键盘扫描及处理程序设计这部分程序包括如下几部分1键盘扫描程序JUDGE;2先对P1置数,行扫描;3判断是否有键按下;4延时10MS,软件去干扰;5确认按键按下XP1,保存行扫描时有键按下时状态;6列扫描;7保存列扫描时有键按下时状态;8取出键值;9执行相应键值程序。下面分别介绍其功能及设计思想。1键盘扫描程序单片机系统中,键盘扫描是CPU工作的一个主要内容之一。CPU忙于各项工作任务时,如何兼顾键盘扫描。既保证不失时机的响应键盘操作,又不过多占用CPU时间。因此,要根据应用系统中的CPU的忙、闲情况,选择好键盘的工作方式。在单片机应用系统设计中,为了节省硬件,通常采用非编码键盘,在这种键盘结构中,单片机对它的控制有三种方式程序控制扫描方式;定时扫描工作方式;中断工作方式6。1程序控制扫描方式这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,响应键盘的输入请求。2定时扫描方式这种方式就是每隔一定的时间对键盘扫描一次。通常是利用单片机内部定时器产生10MS的定时中断,CPU响应定时器溢出中断请求,对键盘进行扫描,以响应键盘输入请求。3中断工作方式为进一步提高CPU效率,可以采用中断扫描工作方式。即在键盘有健按下时,才执行键盘扫描,执行该键功能程序。本系统采用程序控制扫描工作方式。在该设计中的键盘的行列线连接于89S52的P1口上。键盘扫描程序自复位后就开始工作,时刻监视键盘,有无键按下。在监视键盘过程中,允许定时器T0中断,即同时动态显示数据和输出波形。一旦有键按下,先延时10MS,去除键的抖动,然后关中断,不允许定时器T0发生中断。其框图如图42所示图42键盘扫描对应键盘如图43所示图43键盘实现键盘采用矩阵式键盘(如图43所示),由软件产生相应编码,再根据相应编码调用相应的子程序。编码产生原理P1口低四位表示行,高四位表示列。键盘所在的行和所在的列用0表示,其它的行和列用1表示。如第一行第一列GW编码值为1110111020XEE,第二行第三列ZKBJ编码值为1011110120XBD。表41键盘处理程序键值对应处理程序0X7DKEY1键选择发波类型(1为正弦波,2为三角波,3为方波)0XEEKEY2个位频率调整(GW)0XDEKEY3十位频率调整(SW)0XBEKEY4百位频率调整(BW)0X7EKEY5千位频率调整(QW)0XEDKEY6万位频率调整(WW)0XDDKEY7占空比增大调整(ZKBZ)0XBDKEY8占空比减小调整(ZKBJ)键盘扫描源程序如下VOIDJUDGEVOIDUNSIGNEDCHARX,Y,ZP10XFFP10X0F/先对P1置数行扫描IFP10X0F/判断是否有键按下DELAY10MS/延时,软件去干扰IFP10X0F/确认按键按下XP1XP1/保存行扫描时有键按下时状态P10XF0/列扫描YP1/保存列扫描时有键按下时状态ZX|Y/取出键值SWITCHZ/判断键值(那一个键按下)CASE0X7DKEY1BREAKCASE0XEEKEY2BREAK/对键值赋值CASE0XDEKEY3BREAKCASE0XBEKEY4BREAKCASE0X7EKEY5BREAKCASE0XEDKEY6BREAKCASE0XDDKEY7BREAKCASE0XBDKEY8BREAK423中断服务程序设计采用定时器T0定时中断,根据不同的CHOICE值,产生不同的波形。其中方波的占空比可以通过K变量来控制。定时器的初值可以这样计算F100000WW1000QW100BW10SWGWT1000000/FTHT/256/定时器高八位值TLT256/定时器低八位值VOIDTIME0_INTVOIDINTERRUPT1/中断服务程序TR00IFWAVE_CHOICE1P0TO_SINB/正弦波BELSEIFWAVE_CHOICE2/三角波IFCMAININTN,I0,J,K;FLOATY0,A31415926,B0,C25000,D0;FORN0;NDEFINEUCHARUNSIGNEDCHARUCHARCODENUMBER_TAB100X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F/09数字共阴极UCHARCODEINIT_TAB80X73,0X73,0X73,0X76,0X79,0X38,0X38,0X3F/PPPHELLO共阴极UCHARCODETO_SIN2560X80,0X83,0X86,0X89,0X8D,0X90,0X93,0X96,0X99,0X9C,0X9F,0XA2,0XA5,0XA8,0XAB,0XAE,0XB1,0XB4,0XB7,0XBA,0XBC,0XBF,0XC2,0XC5,0XC7,0XCA,0XCC,0XCF,0XD1,0XD4,0XD6,0XD8,0XDA,0XDD,0XDF,0XE1,0XE3,0XE5,0XE7,0XE9,0XEA,0XEC,0XEE,0XEF,0XF1,0XF2,0XF4,0XF5,0XF6,0XF7,0XF8,0XF9,0XFA,0XFB,0XFC,0XFD,0XFD,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFD,0XFD,0XFC,0XFB,0XFA,0XF9,0XF8,0XF7,0XF6,0XF5,0XF4,0XF2,0XF1,0XEF,0XEE,0XEC,0XEA,0XE9,0XE7,0XE5,0XE3,0XE1,0XDE,0XDD,0XDA,0XD8,0XD6,0XD4,0XD1,0XCF,0XCC,0XCA,0XC7,0XC5,0XC2,0XBF,0XBC,0XBA,0XB7,0XB4,0XB1,0XAE,0XAB,0XA8,0XA5,0XA2,0X9F,0X9C,0X99,0X96,0X93,0X90,0X8D,0X89,0X86,0X83,0X80,0X80,0X7C,0X79,0X76,0X72,0X6F,0X6C,0X69,0X66,0X63,0X60,0X5D,0X5A,0X57,0X55,0X51,0X4E,0X4C,0X48,0X45,0X43,0X40,0X3D,0X3A,0X38,0X35,0X33,0X30,0X2E,0X2B,0X29,0X27,0X25,0X22,0X20,0X1E,0X1C,0X1A,0X18,0X16,0X15,0X13,0X11,0X10,0X0E,0X0D,0X0B,0X0A,0X09,0X08,0X07,0X06,0X05,0X04,0X03,0X02,0X02,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X02,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0D,0X0E,0X10,0X11,0X13,0X15,0X16,0X18,0X1A,0X1C,0X1E,0X20,0X22,0X25,0X27,0X29,0X2B,0X2E,0X30,0X33,0X35,0X38,0X3A,0X3D,0X40,0X43,0X45,0X48,0X4C,0X4E,0X51,0X55,0X57,0X5A,0X5D,0X60,0X63,0X66,0X69,0X6C,0X6F,0X72,0X76,0X79,0X7C,0X80/正弦波数据UCHARB0,C0,D0,E0,I,K,TL,THINTWW0,QW0,BW9,SW8,GW3,ZKGW0,ZKSW5/WW为万位数字,QW为千位数字,BW为百位数字,/SW为十位数字,GW为个位数字,ZKGW为占空比个位数字,ZKSW为占空比十位数字INTT,F,M,WAVE_CHOICE1,ZK50/T为时间变量,F为频率变量,CHOICE为波形类型选择变量,ZK为占空比变量,默认占空比为50VOIDDELAY10MS/延时10MS程序UNSIGNEDCHARI,JFORI10I0IFORJ120J0JVOIDCHUSHIHUAVOID/初始化显示PPPHELLOP30XFEP2INIT_TAB0FORI0I1ZKZK1ELSEZK0/计算显示数字/VOIDJISUANVOIDTR00/关闭定时器F100000WW1000QW100BW10SWGWT1000000/FTHT/256TLT256WWF/10000FF10000QWF/1000FF1000BWF/100FF100SWF/10GWF10ZKGWZK10

温馨提示

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

评论

0/150

提交评论