多功能智能函数发生器的设计毕业设计正文.doc_第1页
多功能智能函数发生器的设计毕业设计正文.doc_第2页
多功能智能函数发生器的设计毕业设计正文.doc_第3页
多功能智能函数发生器的设计毕业设计正文.doc_第4页
多功能智能函数发生器的设计毕业设计正文.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

南昌航空大学士学位论文第一章 绪论1.1选题依据和意义信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器,除了在电子测量中有广泛应用,信号发生器在其它领域中也有应用,例如机械部门的超声波探伤,医疗部门的超声波诊断、频谱治疗仪等。信号发生器也是一种常用的信号源,广泛应用于科学研究、生产实践和教学实践等领域,信号发生器作为电子领域不可缺少的测量工具,也常用于理论实验以及精确度要求不是太高的实验,因此完整的函数信号发生器的设计具有非常重要的实践意义和广阔的应用前景。 信号发生器必然将向更高性能,更高精确度,更高智能化方向发展,就像现在数字化信号发生器的崛起一样。但作为一种仪器,必然要考虑其所用领域,也就是说要因地制宜,综合考虑性价比,用低成本制作的集成芯片信号发生器短期内还不会被完全取代,还会比较广泛的用于理论实验以及精确度要求不是太高的实验,有着广阔的应用前景。本设计的意义在于使日常所学知识得到一个实际应用的机会,它不仅可以让学生了解到一个设计的组成和步骤,学习到一个设计的设计方法和技巧另外,也能通过设计使学生学习到了设计的技巧模块化设计,即把一个设计分成若干个模块,对每个模块进行设计和完善,再对每个模块进行组合和完善,最后形成完整的设计,从而达到学习认知并加以使用的过程。1.2国内外关于该论题的研究现状和发展趋势 信号发生器作为一种常见的应用电子仪器设备,传统的一般可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。 信号发生器一直在发展之中,从70年代的只能产生简单波形而且成本高到现在可以产生各种复杂的波形成本也大大降低,到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过 ghz 的dds 芯片,同时也推动了函数波形发生器的发展,2003 年,agilent的产品 33220a能够产生 17 种波形,最高频率可达到 20m,2005 年的产品n6030a 能够产生高达 500mhz 的频率,采样的频率可达 1.25ghz。由上面的产品可以看出,函数波形发生器发展很快近几年来,国内外波形发生器技术发展的非常迅速!1.3 单片机在低频信号发生器中的应用随之时代的进步,科技的不断进步,电子技术也日新月异,给人们带来了根本性的转变。在现代社会电子领域内,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从工厂进入生活中,微波炉啊、空调、音响等等,处处可见其应用。因此,单片机已成为日常生活必不可缺的一部分,带来了许许多多的好处,让民众的生活更加智能化、舒适化。1.4 研究内容本文是基于单片机的多功能智能函数发生器的设计,采用c程序编程的方法来实现递增斜波、递减斜波、方波、三角波、正弦波、阶梯波的产生。根据设计的要求,对各种波形的频率进行程序的编写,通过数码管显示波形种类和频率,并将所写程序装入单片机的程序存储器中,在程序运行中,当接收到来自外界的按键指令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经数/模转换电路和运算放大器电路处理后,从函数发生器的输出端口输出。第二章 系统设计2.1系统方案比较 方案一:采用单片函数发生器icl8038,icl8038可同时产生正弦波、方波等,而且方法简单易行,用运算放大器改变调制电压,也可以实现数控调整频率,但产生信号的种类有限,只有几种波形,也没有办法通过编程的方法改变频率,没法实现要求的功能。方案二:at89c52芯片中的每一路模拟输出与da0832芯片连接,构成多个da0832同步输出电路,这样的做法好处是精度高,且电压的幅度高,但是,多个da0832相连输出,不易检查错误,而且电路复杂。方案三:采用单片机编程的方法来实现,at89c52芯片与一片da0832相连,且da芯片工作在直通模式,直接处理数据进行数模转换,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换与显示。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高,可调性也高。鉴于方案一的信号产生的种类不够和频率不好控制和方案二的电路复杂,频率覆盖系数不好弄等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。2.2 设计原理复位 独立式按键 89c52单片机 led显示波形种类da0832 波形选择 放大电路基准电压电路(可选) 波形输出 图 2.1 系统设计框架图 由图2.1可知设计的基本原理,信号发生器由电源、单片机最小系统,d/a转换电路、基准电压电路、led显示电路、按键、运放电路等组成。89c52 是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号频率的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形,并通过按键控制波形。2.3 设计思想 (1)52单片机向直通模式下的dac0832送对应的数字量就能得到相应的模拟信号,波形的选择通过p3口的按键中断实现。(2)将一个周期的信号分离成 256 个点(按 x 轴等分),在单片机定时器模式3下用t0计时器,刚好可以送数256个,利用改变定时器的定时时间可以改变产生波形的频率。(3) 方波的模拟产生: 数字量为0x00到第0x80时推入dac0832输出为低电平 数字量为时推入0x81到0xff时推入dac0832输出为高电平(4)三角波模拟信号由d/a转换器的模拟量输出:向dac0832送数据0255后,再送数据2550的连续数据就能够得上一个周期的完整三角波,由于取了两个256个值,所以频率是方波的两倍, (5)正弦波的模拟信号由 d/a 转换器的模拟量输出的计算公式为:mode5_temp=sin(n*3.14159/180)*127+128 ;(n=0360) mode5_temp;正弦的角度表值由于52单片机rom很小,计算的会比较吃力,考虑到这个原因本设计通过建立表格数据,进行查表查询正弦的数值,0到360度,所以正弦的频率和以上波形都不一样。(6)同样,递增和递减是一个道理,相反的过程,递增斜波通过从0x00一直自加到0xff,溢出后再重复自加送给da转换,递减则是从0xff自减到0x00依此重复这个过程形成递减斜波。(7)阶梯波也是自加,通过对20进行模运算,每20个数取同一个值,再传给da芯片进行转换,到了256再溢出重复,形成阶梯波。(8)波形的放大输出:由于da0832芯片产生的是模拟电流信号,需要把电流转换为电压进行输出显示,这时候需要lm324进行电流电压变换,从而输出波形的目的。2.4 设计功能以单片机at89c52为核心器件组成一个多功能智能函数发生器。1、系统能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波。2、系统可以通过选择开关选择相应的波形输出。3、系统具有复位功能。4、系统可用led显示输出波形的种类和频率。这里用按键来实现控制波形的功能,每按下一次按键,对应的输出波形也随之相应改变,要实现快捷变换,稳定,精度高的要求,其中led数码管第一位显示的是波形的种类,用数字代表相应的波形,从1到6分别表示递增斜波、递减斜波、方波、三角波、正弦波、阶梯波。后三位表示波形对应的频率,采用动态显示的方式,逐位选中显示,当间隔时间很短时,呈现出全亮的情况,肉眼看不出来停顿的情况下,就达到了动态显示的效果,这样的好处是电路简单,可以通过程序进行控制位选显示,da输出端接lm324运放实现电流到电压的转换,并进行放大,便于观察波形和日常使用。三、硬件电路设计3.1 硬件原理框图硬件原理方框图如图 3.1 所示基准电路复位 单 片 机运放电路d/a电路时钟按键led显示电路 图3.1 硬件原理图 单片机是系统的核心部分,通过按键控制波形输出,通过da转换电路和放大电路生成相应的波形,复位电路用于系统复位和重启。3.2 at89c52单片机系统at89c52芯片的引脚图如图3.2 图3.2 at89c52引脚图 管脚说明:低频信号发生器采用at89c52单片机作为控制核心,工作电压为5v,其内部组成包括:一个8位的微处理器cpu及片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接;片内数据存储器ram低128字节,存放读/写数据;高128字节被特殊功能寄存器占用;片内程序存储器4kb rom;四个8位并行i/o(输入/输出)接口p0 p3,每个口可以用作作输入,也可以用作输出;两个定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制;五个中断源的中断控制系统:一个全双工uart(通用异步接收发送器)的串行i/o 口。 vcc:供电电压。 gnd:接地。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。冈此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指划间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp: 当/ea保持低电平时,则在此期问外部程序存储器(ooooh-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtall:反向振荡放人器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 po口:po口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写l时,被定义为高阻输入。po能够用于外部程序数据存储器,它可以被定义为数据地址的第八位。在fiash编程时,po口作为原码输入口,当fiash进行校验时,po输出原码,此时po外部必须被拉高。 pl口:p1口是一个内部提供上拉电阻的8位双向i/o口,pl口缓冲器能接收输出4ttl门电流。pl口管脚写入1后,被内部上拉为高,可用作输入,pl口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,pl口作为第八位地址接收。 p2 口:p2 口为一个内部上拉电阻的8位双向i/o 口,p2口缓冲器可以接收、输出4个ttl门电流,当p2口被写“l”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“l”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收、输出4个ttl门电流。当p3口写入“l”后,它们被内部上扎为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故,p3口也可作为at89c52的一些特殊功能口,如下所示: p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /into(外部中断o) p3.3 /inti(外部中断1) p3.4 to(记时器0外部输入) p3.5 t1(记时器l外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器改选通) at89c52的外围晶振电路及复位电路 图3.3 晶振和复位电路如图3.3所示,左上面部分电路是晶振电路,左下部分是复位电路,52单片机要想正常工作的话 ,必须给他外接一个时钟脉冲,xtal1位振荡电路的输入端,xtal2为输出端。通常晶振频率为1.2mhz-12mhz,而片内的时钟产生有两种方式:一是内部时钟方式,而是外部时钟方式。在这采用了内部振荡方式,c1,c2为22pf的电容,晶振是12mhz的,机器周期为1us。要想使单片机复位的话,就需要一个复位电路了,这里选择手动复位电路,在接通电源后,按下按钮单片机上电复位,因为单片机是高电平复位,所以选择了上述复位电路。3.3 led显示模块 图3.4 led显示电路如图3.4所示,在本设计中,采用4位共阳数码管来显示波形的种类和频率。由4个pnp三极管驱动可以获得高亮度的显示。第一位显示的是波形种类,后三位显示的是波形的频率。当产生一个周期的波形需要把256个数组推送到dac0832中,数据量大,所以不能产生很高的频率,用4位的数码管就够,4个数码管的b极接p1.4-p1.7口控制位选进行动态显示,段选端通过上拉电阻接p0口,当p口送入高电平时通过三极管发射极为低电平,没有位选到,送入低电平是,发射极为高电平,此时共阳数码管位选成功,进行显示。3.4 da0832数模转换模块 图3.5 da0832引脚图如图3.5所示,da0832数模转换芯片的引脚图,要想将数字信号转换为模拟信号,就需要进行d/a转换,da0832是分辨率为8位的电流输出型d/a转换器,da0832内部由“8位输入锁存器”、“8位dac寄存器”、“8位d/a转换电路”构成,这个da芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用,da0832寄存器的选择是通过与门、与非门组成的输入控制得,其工作原理框图如下图3.6所示: 图3.6 dac0832原理框图根据对dac0832的数据锁存器和dac寄存器的不同的控制方式,dac0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式 dac0832引脚功能说明: d0d7:数据输入线,tll电平。 ile:数据锁存允许控制信号输入线,高电平有效。 cs:片选信号输入线,低电平有效。 wr1:为输入寄存器的写选通信号。 xfer:数据传送控制信号输入线,低电平有效。 wr2:为dac寄存器写选通输入线。 iout1:电流输出线。当输入全为1时iout1最大。 iout2: 电流输出线。其值与iout1之和为一常数 rfb:反馈信号输入线,芯片内部有反馈电阻。 vcc:电源输入线 (+5v +15v)。 vref:基准电压输入线 (-10v +10v)。 agnd:模拟地。 dgnd:数字地。在本设计中,采用的是直通模式,如图3.7,因为接线比较简单,直接进行送数就可以了,直通模式,wr1和cs,wr2和xfer接地, ile接电源高电平,vref接电源5v,也可以接mc1403生成的基准电压,这样工作更稳定。 图3.7 dac0832直通模式接法 在本设计中当然也可以使用其他方式的接法,单缓冲方式适用于一路模拟信号输出或者几路模拟信号非同步输出的情形下,双缓冲方式适用于在需要同时需要记录模拟信号的场合,一路对应一个dac0832芯片,程序简单,但是电路连接比较麻烦,这两种方式都需要单片机的io口进行控制,选通进行工作,故而没有直通模式简单实用,直通模式下只需要进行传输数据给dac0832就可以了,不需要单片机控制它的选通状态。所以考虑再三选择了直通模式接法。3.5 lm324运放模块 lm324芯片的管教图如图3.8所示: 图3.8 lm324管脚图每一个lm324都包含了四个运放在里面,采用的14脚双列直插封装模式,1,2,3管脚组成一个小运放,1是out输出端,2时反向输入端,3是同向输入端,4和11管脚接电源供电,lm324具有电源电压范围广,静态功耗小,也很便宜,性价比高,所以设计中采用lm324运放进行电流电压转换并且放大。使显示的波形更加美观,在这里采用的是双极性放大电路,电路图如图3.9所示: 图3.9 双极性放大电路 运放u5的作用是把运放u4的单向输出电压转换成双向输出电压,设u4端输出电压参数为uout1,d/a的输出电压uout计算如下: uout=-(r3/r1)uout1+(r3/r2)vcc r2=r3=20k,r1=10k,vref=5v uout=-(2uout1+vcc) uout1=-vref*(数字码/256)计算得d/a输出电压在-5v到5v之间变化。3.6 mc1403低压基准模块 mc1403芯片是低压基准芯片,用作d/a芯片的基准电压,使其工作的更加稳定,实践中发现可以不使用这个芯片,对设计的结果影响不是很大,故而没有采用这个芯片,mc1403芯片管脚如图3.10所示: 图3.10 mc1403mc1403输出电压2.5v,电路连接1管脚接5v电源,3管脚接地,2管脚接个小的电容就可以实现基准电压的输出。 频率、幅度范围:频率范围取决于晶振电路,本设计中晶振是12mhz的,单片机的机器周期是1us,即最小的延时也必须1us以上,一个波形信号的周期是由两个机器周期组成,所以最小周期为2us,此时,产生的频率最大,为0.5mhz,没有下限频率,可以无限小,而幅度取决于d/a电路和运放模块,如运放模块计算结果,d/a输出电压在-5v5v之间。第四章 软件设计4.1 主程序流程图本设计中程序功能调用是通过按键的选择来实现的,在按键按下后,启动定时器和相应的中断服务程序,再直接调用预先设置好的子程序通过d/a电路转换输出相应的电压,从而形成所需的各种波形,按下复位按键后对单片机进行初始化,设计中程序编写是通过keil uv2软件进行编写的,uv2软件是单片机众多开发软件中优秀软件之一,界面简洁,操作简单,仿真功能也强。程序语言使用的是c语言,c语言编写程序结构清晰易懂,移植性也好,比较好进行调试,程序模块大概分为这几个:主程序模块、递增、递减斜波模块、三角波模块、方波模块、正弦波模块、阶梯波模块、延时模块、显示模块等。下面是程序设计中的资源分配情况: p0口:全部接上拉电阻,p0.0-p.07依次分配接四位共阳数码管的a、b、c、d、e、f、g、dp段选端,逐一驱动。 p1口:p1.4-p1.7依次分配接数码管的4个位选端,1、2、3、4,实现位选选通显示功能。 p2口:p2.0-p2.7依次分配接da0832的数据输入端d0-d7,实现数据传输的功能。 p3口:p3.0串行输入口接按键,控制波形输出。 da0832:直通模式,wr1和cs,wr2和xfer接地, ile接电源高电平 数码管:4位共阳数码管由三个pnp三极管驱动显示。开始单片机初始化程序da0832初始化设置 数码管显示输出波形种类频率值否是否有键按下是按键处理程序,更新da0832的控制和显示 返回 图4.1 主程序框图主程序设计框图如图4.1所示,利用的是p3口的按键来控制波形输出,通电后默认输出的波形是正弦波,种类显示是5和频率,当再次按下键时,数字加1显示6和频率,输出阶梯波,再按,数字溢出回到1,输出递增斜波,再次按下,显示2输出递减斜波,依此显示方波,三角波,然后循环,其中递增斜波,递减斜波,三角波,阶梯波频率是一样的,方波的频率是它们一半的值,正弦的自行用测周期方法进行计算频率显示。4.2 中断流程图 本设计的中断是t0定时器内部中断,中断源的i/o设备是按键,在没有按下时,p3.0口默认是高电平,当按下按键时,这时候电平发生变化,产生一个低电平送入p3.0口,单片机检测到中断并进入,调用子程序处理数据,由于主程序是一个while死循环,如果没有按键再次按下,就会一直不断重复处理,实现连续波形的输出。重新给定时器赋值开定时器,显示波形和频率中断进入中断返回 图4.2 中断流程图 中断是指cpu在执行一个程序时,对系统发生的某个事件(程序自身或外界的原因)作出的一种反应:cpu暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。(如有必要,被中断的程序可以在后来某时间恢复,继续执行。)。特点:1) 中断随机的 2) 中断是可恢复的 3) 中断是自动进行处理的本设计利用p3口按键中断控制波形,如图4.2所示是中断流程图,每按一次调用一次中断,并设置一个参数进行计数,开启定时器,并调用对应的波形显示子程序显示波形种类和频率。4.3 递增斜波流程图递增斜波在软件设计中设为模式0,因为da0832处于直通模式下,所以不需要先选中da0832进行工作,首先要先开启定时器,设计中选择的是1ms的定时,选用的t0定时器,设计数器的最大值为m,计数值为n,初值为x,x的计算方法如下: 计数状态: x= m n 定时状态: x= m 定时时间/t 而 t= 12 / 晶振频率选用的是12mhz的晶振,所以计数脉冲周期t=1us,模式3下计数最大值m为256,通过计算的初值x=fc18h,再通过程序的编写,便得到了1ms定时,要选择单片机工作模式定时器为工作模式3即tmod赋值0x11,定时器寄存器th0,tl0构成计数器t0,定时器寄存器th1,tl1构成计数器t1,寄存器之间都是通过内部总线和控制逻辑电路连接起来的,1ms的定时,要将0xfc送th0,0x18送tl0,这样就可以得到1ms的定时。 递增斜波的实现通过赋一个计数初值0,送给0832输出,然后进行自加送出显示,到256再溢出,又从0开始循环,通过da0832进行数模转换形成递增斜波,递增斜波流程图4.3如下:送数给0832输出model_count赋初值0开始model_count+1=model_countmodel_count=ffh?ny 图4.3 递增斜波流程图4.4 递减斜波流程图 递减斜波和递增斜波刚好相反,递增斜波是通过自加的方式,而递减斜波则是通过从ffh一直自减到00h送数,本设计中递减斜波计数选用的是下面mode2_count是递减斜波的程序流程图4.4所示:mode2_count-1=mode2_count送数给0832输出mode2_count=00h?mode2_count赋初值ffh开始ny 图4.4 递减斜波流程图4.5 方波流程图 方波和递增递减类的波形不一样,思路是不一样的,要实现一个方波的输出,要把256个点的一半送一个数,表示高电平,另外128个数字全部再送一个数,在这本设计中高的送ffh,低的赋值00h,这就实现了方波的输出,计数选用的是mode3_count,下面是部分程序,mode3_count初值赋值00h,通过if语句实现所要的功能。方波的流程框图4.5如下:mode3_count赋初值00h开始送数ffh给0832输出mode3_count=80h?mode3_count+1=mode3_countny送数00h给0832输出溢出mode3_count+1=mode3_count 图4.5 方波流程图4.6 三角波流程图三角波和方波,递增、递减斜波的思路差不多,算是递增、递减斜波合在一起的波形,三角波在左半边上升部分和递增斜波一样选用从00h自加到ffh,右半边波形和递减斜波一样,从ffh自减到00h,然后再进行大的循环从而形成了三角波,在这里不能选择溢出自动重复,设计中另外设置了一个参数,run_mode4_fx,代表三角波上升下降的方向,计数使用mode4_count,三角波流程图如图4.6所示:mode4_count赋初值00h开始送数给0832输出mode4_count=ffh?mode4_count+1=mode4_countny送数给0832输出mode4_count-1=mode4_count到0溢出 图4.6 三角波流程图4.7 正弦波流程图 正弦波在本设计中波形的显示采用的是查表法,通过事先建立好的表格数据进行查询送数给da0832显示,也尝试了调用函数法进行计算正弦值,在尝试过后,发现调用函数法对单片机的影响很大,不能及时处理中断指令,故而在最后采用了查表法,把表值赋给mode5_count,正弦波程序流程图如图4.7所示:开始mode5_count360?mode5_count赋值00h查表格值 mode5_count送0832mode5_count+1=mode5_county n图4.7 正弦波流程图4.8 阶梯波流程图 阶梯波等于是一小段一小段方波的集合体,只不过不是向方波那样高低电平交替输出,而是一小段一小段不断的波形,就像阶梯一样,在本设计中上升计数用mode6_count处理,采用=用mode6_count对20进行模运算,对mode6_count%20=0进行判断,每20个数全取一个值送0832,也是一直自加到ffh溢出然后重复送,形成阶梯波,可以改变模的数字达到不同的效果,达到设计需要的阶梯波,如图4.8为阶梯波流程图:开始mode6_count赋值00hmode6_count送0832输出nmode5_countffh?ymode5_count+1=mode5_count mode5_count%20=0?n y y 图4.8 阶梯波流程图4.9 按键消抖和动态显示在使用按钮选择各个波形时还需要有延时子程序,达到按键消抖的作用,要不然会导致无法判断按键情况或者按一次被误判为多次按下的现象,而要动态显示也是需要延时的,本设计中按键消抖模块设置的时10ms的延时,当按下一次键后,10ms后再进行检测一次标志位状态,以达到按键消抖的作用,而动态显示由于要肉眼辨别不出来,设计中取了1ms的延时进行扫描显示,这样就可以达到动态显示的效果。第五章 proteus软件仿真5.1 仿真电路图 在想好设计方案后,就需要proeus软件进行仿真设计,验证自己想法的正确性,由于软件可以加载程序进单片机进行调试,所以仿真是必不可缺的一部分内容,在仿真时要熟悉proteus软件的一些基本操作方法,常用元器件的名称,及连线方法的使用,例如电阻是res,电容是cap,也要善于使用软件的搜索功能,找到自己需要的一些软件,如图5.1是硬件仿真图: 图5.1 硬件仿真图由上图可以知道,下面那部分是4位共阳数码管显示模块,用4个pnp三极管驱动,这样的做法好处是连线简单,选通状态由单片机的io口直接控制,左上角是电源指示灯,用来指示电源是否连接上了,单片机左边分别是晶振电路和复位电路,p0口外接上拉电阻接数码管断选,p2口接da0832的8位数据输入端,d0-d7,然后da0832模拟电流输出端1、2接双极性放大电路,把电流信号转换为电压信号,然后p3.0口外接一个button按键,每按下一次,p3.0口变为低电平,从而相应的改变波形。5.2 波形仿真在完成波形仿真图后,检查无误后,把在uv2中编译好的程序生成的.hex后缀的文件加载进仿真图中的52单片机中,运行仿真调试,调试中,正弦波用了两种方法实现波形,查表和调用函数,调用函数的话反应比较慢,从正弦波变换成别的波形,考虑再三换成查表法产生正弦波。下面是仿真现象:递增斜波仿真如图5.2所示: 图5.2 递增斜波仿真图 递减斜波仿真如图5.3所示: 图5.3 递减斜波仿真图方波仿真如图5.4所示: 图5.4 方波仿真图三角波仿真如图5.5所示: 图5.5 三角波仿真图正弦波仿真如图5.6所示: 图5.6 正弦波仿真图阶梯波仿真如图5.7所示: 图5.7 阶梯波仿真图第六章 protel画原理图和pcb图6.1 protel原理图 在仿真完成后,就要开始为pcb板做好准备工作了,制作pcb版需要的软件是protel,在绘制一个pcb板之前,需要这个电路的原理图,下载了protel 99se 软件安装后,开始做准备工作,有些芯片和元器件是没有相对应的原理图封装的,在这要学会自己制作与实物管脚一致的元件封装,像52单片机和da0832芯片的库文件就需要自己进行制作了,把需要的元器件摆放好后,按照仿真图进行连线,在连线完毕后,要进行电气法则检测,排除掉一些连线错误和网络标号问题。画好的protel原理图如图6.1所示: 图6.1 protel原理图 6.2 pcb图在画好原理图后,生成对应的网络表后,就要准备对应的pcb板的绘制了,因为默认库文件很多原件和芯片的封装都没有,这时候又需要自己进行制作了,绘制元件库文件需要查找相应的元件手册,知道其对应的尺寸,管脚间距和每个管脚对应的位置,做好自己的库文件后需要加载进去,这样就不会报封装错误了,然后要把各个元器件放好位置,一个好的布局才会有好看的pcb板,再进行布线规则的设置,线宽和过孔大小等等,最后进行连线,有些地方可以飞线进行连接,pcb板图如图6.2所示: 图6.2 pcb板图第七章 焊接硬件并调式7.1 焊接硬件 按照pcb板图布局元件,注意芯片的正反位置,反了可能导致一系列后果,轻则出现不了现象,严重的话可能在上电后烧了电路,也要注意电阻的阻值大小是否标准,要用万用表的电阻挡进行测量,阻值正确与否关系到运放的放大倍数和稳定性,放置电容是,要区分电解电容和普通电容,电解电容是有极性的,要注意正反不能接错,由于选择了校外制作pcb样板,这样过孔都是已经覆铜了,也可以选择更细的连线,排板可以紧凑点,焊接前要对线路进行测试,是否导通,有没有短路一类的,准备就绪后,就开始硬件焊接工作了,注意用电烙铁的手法和锡的量,使焊接的板子美观大方,有些地方需要飞线的要自己焊接好,由于led显示模块是放置在万能板上的焊接的,在pcb板上要设置一些杜邦线插,用杜邦线进行连接这样也方便电路的修改,如图7.1是硬件实物图: 图7.1 硬件实物图 图7.1 硬件实物图7.2 调试硬件硬件焊制完毕后,就需要进行硬件的调试了,分为几个部分的调试: led模块:led显示模块是一个很重要的模块,用来显示波形的种类和波形的频率,由于是单独放置出来焊制了,数码管用的是4位共阳数码管,在测试时,把8个段选全部接地,4个位选接电源,看是否会显示0000,经测试数码管功能正常。 lm324运放模块:运放模块负责将da0832输出的模拟电流转换为电压并进行拉高放大,达到正常波形的要求,测试中,通电后,发现输出电压只能检测到直流电压信号几乎溢出,但是交流电压信号很小基本为0,用示波器测波形时也没法出现正常波形,是一个杂波。在对电路排错后,排除了线路问题,这时候可以考虑是否是运放芯片的问题,经过换了一片lm324后,可以检测到交流电压数值,在一个范围内波动,符合设计要求,示波器也可以测到相应的波形信号。表明运放模块正常。 晶振模块:晶振模块是单片机正常工作必须的条件,cpu工作必须要有一个时钟脉冲,检测是否起振很简单,直接用示波器接晶振部分,看是否有时钟信号波形输出,经检测,晶振部分工作正常。 da0832数模转换模块:在单片机正常工作下,上电后在两个模拟输出端单独接一个电阻,测其是否有电压输出就可以检测出da0832是否正常工作了,检测da0832正常。 三极管驱动模块:如果三极管出现问题会导致位选失败,从而使显示出现问题,可以用万用表上的pnp检测端进行检测pnp三极管好坏,检测全部正常三极管。在检测过程中,出现了这些情况,输出没有波形,波形杂乱,输出电压固定了,没有交流电压变化,不符合一个正弦波形的指数,lm324不正常工作,三极管虚焊了,导致显示不正常,在经过逐一发现并改正的情况下,终于得到了正确的波形和显示结果,为了使显示的波形拉高,将第二级放大的负向输入端接了一个电压,将波形往上拉,使显示效果更好,也有更好的实用性,由于是反向放大,采用两个也可以使波形显示的和程序效果一样,不是反向的效果,到这,硬件调试完成。显示结果部分现象如图7.2、7.3所示,分别是正弦波和阶梯波实物显示图: 图7.2 正弦波实物图 图7.3 阶梯波实物图 图7.3 阶梯波实物图 第八章 心得体会通过这次毕业设计,加强了我的动手能力,刚开始的时候是无从下手,因为方案很多种,也不知道确切的可行方案,就会出现徘徊不定的现象,在最开始仿真的时候,经常因为一个想法而去修改方案,因为对原理的不熟悉,导致了无从下手的结果,也有的是理论行的通,但是程序不好下手,通过这次毕设,学会了两方面一起下手,软硬件结合起来做才是最好的,没有软件的硬件是不完美的硬件,所以当结合起来思考时,思路就清晰很多了,知道如何合适的结合软件功能去设计好硬件电路图。我觉得做毕业设计不仅仅是为了完成任务,也是对大学所学功课的一次总的复习和综合运用,有些课本知识学过后过了一段时间后没用会被遗忘掉,由于课本上的知识太多,太杂,没有那么多时间去消化、体会,而且考试内容有限,只是一些很表面的东西,平时课间的学习、实验并不能很好的理解和运用各个元件、芯片的功能,并不能让我们的实践能力加强,等于是空拥有一座知识宝藏,确没有办法将其利用开发起来,毕业设计就是这样的一个锲机,可以帮我们把课本和实践结合起来,制作出需要的东西来,俗话说的好,认知来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。没有实践,很多很多的小细节问题都会被忽略,而往往是细节问题会让我们手足无措,所以需要我们不断的实践。 在做毕设的过程中,是一种折磨也同样是一种享受的过程,有酸有甜,我的题目是软硬件一起的,一人一组,这样的好处是软硬件的设计可以自己慢慢协调的做,但是没有同组的一起交流,中间也发现了自己知识方面的不足,在毕设的制作过程中又重新温习了下c语言和单片机的书,巩固了下知识也认识到了许多自己不知道的地方,以及一些芯片功能的使用方法,同时班上的同学也给予了我帮助,帮我完善了设计方案,所以说毕设也是一个相互帮助的过程,大家磨合得过程,有利于我们之间的交流学习,精神上也得到了收获,也使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是我们的目的。 这次毕业设计终于顺利完成了,期间遇到了许多问题,也烧过元器件,也有些不懂得地方,在老师和同学们的帮助下最后顺利完成了,在这对给过我帮助的同学和各位指导老师再次表示忠心的感谢!参考文献1. 徐玮,沈建良. 单片机快速入门. 北京:北京航空航天大学出版社,20082. 公茂法,黄鹤松,杨学蔚. mcs-51/52单片机原理与实践. 北京:北京航空航天大学出版社,2009.33. 李朝青. 单片机与pc机网络通信技术. 北京航空航天大学出版社,20074. 李军.51系列单片机高级实例开发指南北京航空航天大学出版社,20035.李朝青.单片机原理及接口技术m.第三版.北京航空航天大学出版社,2005.106.王守中.51单片机开发入门与典型实例m.人民邮电出版社,2007.8张倩,邝涛. mcs51系列单片机的三种并行通信方法j. 新乡教育学院学报 , 2004.37. 8-bit microcontroller with 2k bytes flashat89c2052 atmel corporation ,2005 high-performance active-matrix organic led displays. 2007,2842948.bentley, john p. priniple of measurement systems,p longman, london and newyork, 20049. 康华光. 电子技术基础模拟部分m. 第五版.高等教育出版社,2008.110. 蔡伟建. 电路原理m.浙江大学出版社,2006.711.高明卿,柴钰,宋先文,刘开求. 一种单片机可程控多功能波形发生

温馨提示

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

评论

0/150

提交评论