单片机课程设计-数字式波形发生器.docx_第1页
单片机课程设计-数字式波形发生器.docx_第2页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

安徽工程大学本科课程设计说明书专 业: 计算机科学与技术题 目: 数字式波形发生器学 生 姓 名: 指 导 教 师: 2011年 6 月 前 言随着电子技术的飞速发展,单片机在生活中的应用越来越广泛。各种基于单片机的一起设备应运而生。单片机构成的仪器具有可靠性高,性价比高,便于操作等优点。单片机的种种优点往往是有接口能力和处理外界信息的能力表现出来的。 波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。本次开发时在8086的平台上,利用at89c51和dac0832芯片利用系统内置的8255扩展接口连接电路实现的。可产生方波、三角波,也可以根据内部程序设定的参考值调节波形的频率、幅值,利用开关控制相应的操作,具有线路简单、结构紧凑等优点。目录前言.1目录课程设计任务书第一章 系统总体设计思路1.1波形形成原理1.2设计思路1.3设计操作第二章 接口技术及相关芯片介绍2.1 at89c51介绍2.2 at89c51定时器介绍2.3 adc0832介绍2.4 8255实验模块介绍第三章 实验电路图第四章 详细设计4.1 主控模块.4.2 调频模块.4.3 调幅模块.4.4 显示方波.4.5 显示三角波.4.6 计算模块.小结参考文献附录1:实验电路图附录2:源程序课程设计任务书 课程设计题目:数字式波形发生器 原始资料应用计算机技术,通过巧妙的软件设计和简易的硬件电路,实现数字式的波形发生器。具有显示输出波形类型、及其粗调频率和幅度的功能。基本要求:、设计实验电路(要求利用实验仪的硬件资源)、分析实验原理、列出实验接线表、采用汇编语言编写实验程序、通过实验验证功能的实现、编写课程设计说明书原理:1. 方波形成原理方波就是在一个波形输出周期内输出一个高电平和一个低电平,通常是每半个周期输出一个高电平,另半个周期输出低电平。输出的高低电平的宽度由定时器b确定,定时器的初值由波形频率确定,即定时的时间是波形周期的一半。先输出高电平并启动定时器,定时到则输出低电平并再次启动定时器,定时到则输出高电平并在启动定时器。2、三角波形成原理可以用数学上分割的思想,将斜线分割成很多小段,每一小段用直线代替,这样三角波的上升沿和下降沿由很多个小阶梯构成,由于阶梯很多则阶梯就很小,看上去三角波的上升沿和下降沿可以近似为直线,那么这样的波形便可以近似为三角波。按照这种原理,三角波的形成就可以转换成与方波类似的原理解决,即用定时输出,每个阶梯进行定时并输出对应的电平。这里和方波不同的地方在每次定时完后不是在高低电平两者切换,而是输出的电平是按一定的步进值进行递增和递减。指导老师(签字) 完成日期 年 月 日接受任务书学生签字第一章 系统总体设计思路1.1波形形成原理1、方波形成原理方波就是在一个波形输出周期内输出一个高电平和一个低电平,通常是每半个周期输出一个高电平,另半个周期输出低电平。如下图所示。输出的高低电平的宽度由定时器b确定,定时器的初值由波形频率确定,即定时的时间是波形周期的一半。先输出高电平并启动定时器,定时到则输出低电平并再次启动定时器,定时到则输出高电平并在启动定时器。2、三角波形成原理可以用数学上分割的思想,将斜线分割成很多小段,每一小段用直线代替,这样三角波的上升沿和下降沿由很多个小阶梯构成,由于阶梯很多则阶梯就很小,看上去三角波的上升沿和下降沿可以近似为直线,那么这样的波形便可以近似为三角波。 看到的波形图 放大后的波形图按照这种原理,三角波的形成就可以转换成与方波类似的原理解决,即用定时输出,每个阶梯进行定时并输出对应的电平。这里和方波不同的地方在每次定时完后不是在高低电平两者切换,而是输出的电平是按一定的步进值进行递增和递减。1.2设计思路由以上的波形形成原理可知系统需要定时器对输出的信息进行定时转换(如高低电平的转换,输出电平的逐渐变换)。需要模数转换器实现不同电压到相应的输出信号的转换。同时题目要求要能够进行基本的调节频率和幅度的功能,所以这还需要有修改相关的幅度,频率等参数的功能。结合以前所做的实验以及对相关芯片的理解和认识,本次实验采用at89c51与dac0832,将各个控制开关接到8255,通过读取各口字的状态实现对系统的控制,包括显示波形的形状,频率,幅度等。8255控制接口 d/a数模转换输出波形设置参数主控模块at89c511.3操作设计 1.机器通电后程序全速运行后,系统处于初始状态,此时无任何信号输出,示波器显示为初始状态。 2.用户按下不同的键,选择不同的操作。p1.0控制调频,p1.1控制调幅,p1.2控制输出方波,p1.3控制输出三角波。p1.4p1.7用来控制选择字。 第二章 接口技术及相关芯片介绍 本章主要是对at89c51,89c51定时器介绍,dac0832的介绍。 2.1at89c51介绍 89c51引脚图at89c51是一种带4k字节flash存储器(fperomflash programmable and erasable read only memory)的低电压、高性能cmos 8位微处理器,俗称单片机。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。vcc:供电电压。 gnd:接地。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 p0口: p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:在flash编程和校验时,p1口作为第八位地址接收。 p2口:当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口也可作为at89c51的一些特殊功能口。口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。2.2 at89c51定时器介绍89c51单片机内有两个16位的定时器/计数器。即定时器0(t0),定时器1(t1)。 at89c51定时器结构tmod控制字及其意义:模式说明:定时器模式2 把tl0 配置成一个可以自动恢复初值(初始常数自动重新装入)的8 位计数器,th0 作为常数缓冲器,如图6-29 所示。th0 由软件预置值;当tl0 产生溢出时,一方面使溢出标志tf0 置1,同时把th0 中的8 位数据重新装入tl0 中。 t0(或t1)结构8位计数结构方式2 常用于定时控制。例如希望每隔250us 产生一个定时控制脉冲,则可以采用12mhz 的振荡器,把th0 预置为6,并使c/t=0 就能实现。方式2 还用作串行口波特率发生器。定时器方式时间常数计算设方式2 工作时,定时时间为200us,时钟振荡频率为12 mhz,计算:1 个机器周期为:12 1/f= 12 (1/12mhz) 10 6=1us设时间常数为x,则(28x)1us = 200usx = 28200= 56化成十六进制数为:x = 38h根据8 位定时器/计数器特性,高8 位f0h 送至th0;低5 位0ch 送tl0可用下列指令实现:mov tl0,#038h ;低5 位送tl0 寄存器mov th0,#038h ;高8 位送th0 寄存器但要注意到方式二的最大定时为(28-0)=256 us2.3 dac0832的引脚及功能 dac0832的引脚图dac0832是8分辨率的d/a转换集成芯片。与微处理器完全兼容。这个da芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。d/a转换器由8位输入锁存器、8位dac寄存器、8位d/a转换电路及转换控制电路构成。dac0832的主要特性参数如下:分辨率为8位;电流稳定时间1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度;单一电源供电(+5v+15v);低功耗,200mw。3 dac0832结构: d0d7: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:数字信号地4 dac0832的工作方式:根据对dac0832的数据锁存器和dac寄存器的不同的控制方式,dac0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式2.4 8255实验模块介绍8255a是为intel公司的微处理器配套的通用可编程并行i/o接口芯片。8255a有2个8位并行端口、2个4位并行端口,每个端口均能通过控制寄存器编程确定为全部输入、全部输出或其它指定功能。8255a实验模块的片选信号已经连接,端口地址分别为:pa口 0ff28h; pb口 0ff29h;pc口 0ff2ah; 控制口 0ff2bh。第三章 硬件电路图按照实验程序实验接线如下:1. k1k7分别接p1.0p1.7.2. 0832片选信号cs5接地址ff80h3. aout,gnd分别接示波器。第四章 详细设计4.1主控模块 由上一部分分析,本系统主要有5个模块。分别是主控程序,调频模块,调幅模块,显示方波,显示三角波。主控模块:开始初始化程序调用显示三角波子模块调用显示方波子模块设置幅度设置频率p1.1=0?p1.0=0?p1.3=0?p1.2=0? 为了使用户在运行程序直接选择显示方波或三角波而不是先进行参数设置时能看到波形,初始波形的幅度,频率参数。 因为程序较长,要进行长跳转。org00hljmpstartorg0030hstart :movsp,#53h clreaclrtr0mov65h,#04fh ;幅度初值movr7,#06h;循环时间初值movr5,#01h;循环次数初值movr0,#0ffhmain:jbp1.0,tiaopin;p1.0口为1,转去执行调频子程序jbp1.1,tiaofu;p1.1口为1,转去执行调幅子程序jbp1.2,jfangbo;p1.2口为1,转去执行显示方波jbp1.3,jsanjiao;p1.3口为1,转去执行显示三角波sjmpmain;不断的查询命令空jfangbo: ljmpfangbo;jsanjiao:ljmpsanjiao;4.2调频模块 本程序是让用户通过修改控制字来选择相应频率的参数。;查询用户所选择的开关,计算出其所代表的数值,根据数值去查表,得出当前的频率。a,(60h)=0(a)+,a*2,(60)=a如上依次查询p1.5p1.7p1.4=1?返回p1.0=1?是否;调频tiaopin:mova,#0hmov60h,#0hjnbp1.4,next11;p1.4口为0则直接跳到下一位mov60h,#01hnext11:mova,60hrlamov60h,a jnbp1.5,next12;p1.5adda,#1hmov60h,anext12:mova,60hrlamov60h,a jnbp1.6,next13;p1.6adda,#01hmov60h,anext13:mova,60hrlamov60h,ajnbp1.7,next14;p1.7adda,#01hmov60h,a ;60h存放的是频率的指针next14:movdptr,#pinlv ;mova,60hmovca,a+dptr;读取表中第60h)位的频率值movr7,a;r7中存放定时的时间movdptr,#countmova,60hmovca,a+dptrmovr5,a ;r5中存放循环次数movdptr,#sancountmova,60hmovca,a+dptrmovr2,a;r2中存放三角形的定时时间 jbp1.0,tiaopin;查询调频操作结束ljmpmain4.3调幅模块本程序是让用户通过修改控制字来选择相应频率的参数。a,(60h)=0(a)+,a*2,(62=a如上依次查询p1.5p1.7p1.4=1?返回p1.0=1?是否;调幅tiaofu:mova,#0hmov62h,#0hjnbp1.4,next21;p1.4口为0则直接跳到下一位mov62h,#01hnext21:mova,62hrlamov62h,a jnbp1.5,next22;p1.5adda,#1hmov62h,anext22:mova,62hrlamov62h,a jnbp1.6,next23;p1.6adda,#01hmov62h,anext23:mova,62hrlamov62h,ajnbp1.7,next24;p1.7adda,#01hmov62h,a next24:movdptr,#fudumova,62hmovca,a+dptr;r6中存放当前幅度值movr6,a mov65h,a;62h存放的是幅度的指针 jbp1.1,tiaofuljmpmain4.4显示方波 本模块实现方波的显示,根据方波的显示原理和已设定的频率、幅度,利用8951的定时功能,预订的时间到时候,跳到相反的电平输出。每半一个周期输出结束后要检查当前平p1.2是否是高电平(即是否要继续显示方波)。如果为低电平则说明用户关闭了显示方波的功能返回,否则继续显示。 本处时钟频率采用的为12mh,定时器的延时采用的是模式2方式,但是根据计算模式2的最大的延时时间为(28-0)*震荡周期*12=256us,对于显示方波来说这个延时是不够的所以在单个延时的外部添加了延时次数(即为表count)中数据,通过循环程序的方式实现延时时间的增长。初始化,设置电压根据频率延时半周期查询p1.0p1.4有为0?电压值取反 返回fangbo:movr0,#00fhmovdptr,#0ff80hqian1:mova,65hmovxdptr,amova,r5 ;movr4,ashow11:clrtf0movtmod,#02h;0000 0110 定时器,10模式movth0,r7;设定定时初值movtl0,r7setbtr0;启动定时器lop11: jbctf0,jianyi11;查询定时器溢出标示 sjmplop11jianyi11: decr4;程序循环查询 mova,r4jnz show11;显示前半周期jnbp1.2,wan1;判断是否继续显示方波movr0,#0ffhmova,#0hmovdptr,#0ff80hmovxdptr,amovr1,#00fhmova,r5movr4,ashow12:clrtr0movtmod,#02h;0000 0110 定时器,10模式movth0,r7;设定定时初值movtl0,r7setbtr0;开定时中断lop12: jbctf0,jianyi12;查询定时器溢出标示 sjmplop12jianyi12: decr4;程序循环查询 mova,r4jnz show12;显示后半周期djnzr1,hou1jnbp1.2,wan1;判断是否继续显示方波sjmpfangbowan1:ret4.5显示三角波本模块实现三角波的显示,一些相似的地方,但又较方波复杂。根据已设定的频率,将每半个周期分成一定的份数,利用at89c51的定时功能,在每一小份内,预订的时间到时候,输出电平增加一个步长,同时要检查当前值是否小于幅值,小于则继续进行加运算输出。当检测到当前值大于等于幅值后先查询p1.3是否为高电平(即是否继续显示三角波)。如果为低电平则返回,否则继续显示。在波形的后半周期则是每一个显示延时后减去一个步长,判断其与0的大小,大于则继续显示,小于等于则查询p1.3初始r3=0,(dptr)=r3延时输出 返回(r3)+(r3)0?p1.3=1?;三角波的显示sanjiao:movdptr,#0ff80hmovr3,#0lop21:mova,r3 movxdptr,ashow21:movtmod,#02h;0000 0110 定时器,10模式movth0,r2movtl0,r2setbtr0lop23: jbctf0,jia21 sjmplop23jia21:incr3mova,r3cjnea,65h,lop21jnbp1.3,wan2lop22:mova,r3movxdptr,ashow22:movtmod,#02h;0000 0110 定时器,10模式movth0,r2movtl0,r2setbtr0lop24: jbctf0,jia22sjmplop24jia22:decr3mova,r3cjnea,#0h,lop22jnbp1.3,wan2sjmpsanjiao wan2:ret 4.6计算模块实验中所设的幅度范围为1fhffh,频率范围为10hz到2500hz。频率计算公式为: t=1/f t=count*(yanshi)yanshi=(256-x)*机器周期*12;表中数据;*fudu: db 01h,01fh,02fh,03fh,04fh,05fh,06fh,07fh db 08fh,09fh,0afh,0bfh,0cfh,0dfh,0efh,0ffhpinlv: db 06h,06h,6h,06h,06h,06h,06h,06h db 06h,06h,06h,0ceh,0ceh,0ceh,0ceh,0ceh;count: db 0ffh,0c8h,084h,50h,34h,28h,20h,1ah ;db14h,0fh,08h,0dh,0ah,07h,05h,04h ;500us*cishucount: db0c8h,064h,42h,28h,1ah,14h,10h,0dh db 0ah,08h,04h,0dh,0ah,07h,05h,04h sancount:db 01h,01fh,02fh,03fh,04fh,05fh,06fh,07fh db 08fh,09fh,0afh,0bfh,0cfh,0dfh,0efh,0ffh课程小结经过一个将近星期的努力,终于完成本次的课程设计,并且实现了程序设计。经过本次课程设计我发现要设计一个成功的电路,必须要有耐心,要有坚持的毅力。更重要的是要有信心,要相信自己一定能做出来。在整个电路的设计过程中,我觉得花费时间最多的是整个程序及电路思路的设计问题。如在多种方案的选择中,需要仔细比较分析其原理以及可行的原因。刚开始时我设想用键盘输入频率或幅度,通过内部计算出延时来显示。但是分析后发现这个实现起来对我来说比较困难。后来就想到了用开关来作控制字的方式,并结合所作的实验,虽然结果不是很理想,但还是做出来了。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。通过这次课程设计,我进一步加深了对数模转换和定时器的理解,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,使我的动手能力得到了很大的提高。而且对汇编指令的应用也有更加深刻的了解,使我学得了许多知识,使我获益匪浅。这次课程设计,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。参考文献(1) 单片微型计算机及接口技术谢永宁(2) 微型计算机及接口技术安徽工程大学(3) 单片机原理及接口技术李朝青附录1. 实验电路图附录2.源程序org00hljmpstartorg0030hstart :movsp,#53h clreaclrtr0mov65h,#04fh movr7,#06hmovr5,#01hmovr0,#0ffhmain:jbp1.0,tiaopinjbp1.1,tiaofujbp1.2,jfangbojbp1.3,jsanjiaosjmpmainjfangbo: ljmpfangbojsanjiao:ljmpsanjiao ;调频;* tiaopin:mova,#0hmov60h,#0hjnbp1.4,next11mov60h,#01hnext11:mova,60hrlamov60h,a jnbp1.5,next12adda,#1hmov60h,anext12:mova,60hrlamov60h,a jnbp1.6,next13adda,#01hmov60h,anext13:mova,60hrlamov60h,ajnbp1.7,next14;p1.7adda,#01hmov60h,a next14:movdptr,#pinlvmova,60hmovca,a+dptrmovr7,amovdptr,#countmova,60hmovca,a+dptrmovr5,amovdptr,#sancountmova,60hmovca,a+dptrmovr2,a jbp1.0,tiaopin ljmpmain;调幅;* tiaofu:mova,#0hmov62h,#0hjnbp1.4,next21 mov62h,#01hnext21:mova,62hrlamov62h,a jnbp1.5,next22adda,#1hmov62h,anext22:mova,62hrlamov62h,a jnbp1.6,next23adda,#01hmov62h,anext23:mova,62hrlamov62h,ajnbp1.7,next24adda,#01hmov62h,a next24:movdptr,#fudumova,62hmovca,a+dptr movr6,amov65h,a jbp1.1,tiaofuljmpmain;显示方波;*fangbo:movr0,#00fhmovdptr,#0ff80hqian1:mova,65hmovxdptr,amova,r5 ;movr4,ashow11:clrtr0clrtf

温馨提示

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

评论

0/150

提交评论