欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    波形发生器设计 (2).doc

    • 资源ID:830215       资源大小:1.14MB        全文页数:14页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    波形发生器设计 (2).doc

    1、 目录1题目设计要求.22 系统的组成及工作原理.2 2.1 系统组成.2 2.2 工作原理.23 器件的功能和作用.3 3.1 MCS-51单片机的内部结构.33.1.1 内部结构概述.33.1.2 CPU结构.33.1.3 存储器和特殊功能寄存器.43.2 P0-P3口结构.43.3 时钟电路和复位电路.53.3.1时钟电路.53.3.2单片机的复位状态.53.4 DAC0832的引脚及功能.64系统硬件设计.95系统软件设计及仿真调试与结果.105.1 主流程图.105.2 锯齿波仿真图.105.3 三角波仿真图.115.4 方波仿真图.12 5.5延迟程序.136 总结.14参考文献.

    2、141、题目设计要求 波形发生器设计 要求:利用51单片机,DS0832,按键,设计三角波、锯齿波和方波发生器。可按键输 出三种波形。完成以下设计环节: 1)使用Altium Desinger开发工具,设计电路原理图。 2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。 3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。 2、系统的组成及工作原理 2.1系统组成DAC0832当今世界在以电子信是8位分辨率的D/A转换集成芯片,与微处理器完全兼容,这个系列的芯片 以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。这类D/A

    3、转换器由8位输入锁存器,8位DAC寄存器,8位DA转换电路及转换控制电路构成。 图2.1系统组成图 2.2工作原理 D/A转换器产生各种波形的原理:波形的产生是通过AT89S52单片机执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。利用D/A转换器输出的模拟量与输入数字量成正比关系这一特点,将D/A转换器作为微机输出接口,CPU通过程序向D/A转换器输出随时间呈现不同变化规律的数字量,则D/A转换器就可输出各种各样的模拟量,如方波、三角波、锯齿波、正弦波等.3器件的功能和作用 3.1 MCS-51单片机的内部结构 3.1.1 内

    4、部结构概述典型的MCS-51单片机芯片集成了以下几个基本组成部分。1 一个8位的CPU2 128B或256B单元内数据存储器(RAM)3 4KB或8KB片内程序存储器(ROM或EPROM)4 4个8位并行I/O接口P0P3。5 两个定时/计数器。6 5个中断源的中断管理控制系统。7 一个全双工串行I/O口UART(通用异步接收、发送器) 8 一个片内振荡器和时钟产生电路。图3.1单片机引脚3.1.2 CPU结构CPU 是单片机的核心部件。它由运算器和控制器等部件组成。1.运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心。它可以对半字节(4)、单字节等数据进行操作。例如,能完成加、减、

    5、乘、除、加1、减1、BCD码十进制调整、比较等算术运算,完成与、或、异或、求反、循环等逻操作,操作结果的状态信息送至状态寄存器。运算器还包含有一个布尔处理器,用以处理位操作。它以进位标志位C为累加器,可执行置位、复位、取反、位判断转移,可在进位标志位与其他可位寻址的位之间进行位数据传诵等操作,还可以完成进位标志位与其他可位寻址的位之间进行逻辑与、或操作。2.程序计数器PCPC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。3.指令寄存器 指令寄存器用于存放指令代码。CPU执行指令时,由程序存储器中读取的指令代

    6、码送如指令寄存器,经指令译码器译码后由定时有控制电路发出相应的控制信号,完成指令功能。3.1.3 存储器和特殊功能寄存器1.存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。2.特殊功能寄存器特殊功能寄存器(SFR)的地址范围为80HFFH。在MCS51中,除程序计数器PC和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR块中。其中5个是双字节寄存器,它们共占用了26个字节。各特殊功能寄存器的符号和地址见附表2。其中带号的可位寻址。特殊

    7、功能寄存器反映了8051的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是P0P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS51共有P0P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、标志寄存器PSW、数据指针DPTR等的功能前已提及。3.2 P0-P3口结构P0口功能:P0口具有两种功能:第一,P0口可

    8、以作为通用I/O接口使用,P0.7P0.0用于传送CPU的输入/输出数据。输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。第二,P0.7P0.0在CPU访问片外存储器时用于传送片外存储器de低8位地址,然后传送CPU对片外存储器的读写P1口 功能:P1口的功能和P0口de第一功能相同,仅用于传递I/O输入/输出数据。 P2口的功能:2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。 P3口功能:P3口有两个功能:第一功能与其余三个端口的第一功能相同;第二功能作控制用,每

    9、个引脚都不同。 P3.0RXD串行数据接收口 P3.1TXD串行数据发送口 P3.2INT0外中断0输入 P3.3INT1外中断1输入 P3.4T0计数器0计数输入 P3.5T1计数器1计数输入 P3.6WR外部RAM写选通信号 P3.7RD外部RAM读选通信号 3.3 时钟电路和复位电路单片机的时钟信号用来提供单片机内各种微操作的时间基准;复位操作则使单片机的片内电路初始化,使单片机从一种确定的状态开始运行。3.3.1时钟电路单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。图3.2时钟部分电路图在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振荡器,构成了内部振荡方式。由于

    10、单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自积振荡,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ、或24MHZ。单片机的时序单位振荡周期:晶振的振荡周期,又称时钟周期,为最小的时序单位。状态周期:振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期。因此一个状态周期包含2个振荡周期。机器周期:1个机器周期由6个状态周期12个振荡周期组成,是计算机执行一种基本操作的时间单位。指令周期:执行一条指令所需的时间。一个指令周期由1-4个机器周期组成,依据指令不同而不同.3.3.2单片机的复位状态当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上

    11、的高电平时,根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。图3.3 复位电路单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM

    12、区中的内容,21个特殊功能寄存器复位后的状态为确定值统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。3.4 DAC0832的引脚及功能 3.4.1DAC0832的引脚及功能:DAC0832是8分辨率的D/A转换集

    13、成芯片。与微处理器兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及控制转换电路构成。 图3.4DAC0832引脚3.4.2应用特性DAC0832是微处理器兼容型D/A转换器,可以充分利用微处理器的控制能力实现对D/A转换的控制。这种芯片有许多控制引脚,可以和微处理器控制线相连,接受微处理器的控制,如ILE、/CS、/WR1、/WR2、/XFER端。有两级锁存控制功能,能够实现多通道D/A的同步转换输出。DAC0832内部无参考电压源;须外接参考电压源。DAC0832为电流输入型D

    14、/A转换器,要获得模拟电压输出时,需要外加转换电路。DAC0832的引脚图及逻辑结构如下图: 图3.5 DAC0832结构框图及引脚排列3.4.3各引脚功能说明: D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错); ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入线(选通数据锁存器),低电平有效; WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存; XFER:数据传输控制信号输入线,低电平有效

    15、,负脉冲(脉宽应大于500ns)有效; WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、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:模拟信

    16、号地 DGND:数字信号地3.4.4 DAC0832三种数据输入方式: (1)双缓冲方式:即数据经过双重缓冲后再送入DA转换电路,执行两次写操作才能完成一次DA转换。这种方式可在DA转换的同时,进行下一个数据的输入,可提高转换速率。更为重要的是,这种方式特别适用于要求同时输出多个模拟量的场合。此时,要用多片DAC0832组成模拟输出系统,每片对应一个模拟量。 (2)单缓冲方式:不需要多个模拟量同时输出时,可采用此种方式。此时两个寄存器之一处于直通状态,输入数据只经过一级缓冲送入DA转换电路。这种方式只需执行一次写操作,即可完成DA转换。 (3)直通方式:此时两个寄存器均处于直通状态,因此要将、

    17、和端都接数字地,ILE接高电平,使LE1、LE2均为高电平,致使两个锁存寄存器同时处于放行直通状态,数据直接送入DA转换电路进行DA转换。这种方式可用于一些不采用微机的控制系统中或其他不须0832缓冲数据的情况。4系统硬件设计 波形的产生是通过AT89S52单片机执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。 AT89S52单片机的最小系统有三种联接方式。一种是两级缓冲器型,即输入数据经过两级缓冲器型,即输入数据经过两级缓冲器后,送D/A转换电路。第二种是单级缓冲器型,输入数据经输入寄存器直接送入DAC寄存器,然后送D/A转换

    18、电路。第三种是两个缓冲器直通,输入数据直接送D/A转换电路进行转换。本电路仿真的总图如下: 图4.1系统电路图5系统软件设计及仿真调试 5.1流程图 开始 初始化开关状态判定调用波形发生子程序 输出 结束 图5.1流程图 5.2 锯齿波程序模块 锯齿波是经过锯齿波函数进行SawtoothOut(unsigned char fre)来进行转换成数据量,再输出道D/A转换电路输出到示波器进行显示的波形11。 锯齿波是和三角波比较相似,他是由两个三角波叠加而成,所以,我们可以把锯齿波,看成是两个三角波。在处理锯齿波的时候,也是当三角波来处理,锯齿波是由函数来产生,我们只需要知道,最高点,和最低点以及

    19、占空比和频率,那么波形就能够实现。锯齿波的详细程序如下。1.锯齿波函数的定义void SawtoothOut(unsigned char fre) /定义锯齿波函数SawtoothIncrement = fre; / 锯齿波的参数增加值等于频率值FlagSawtooth = 1; / 锯齿波默认初始值为1Count = 255;/ 锯齿波函数的初始值为2552.锯齿波函数的实现if(FlagSawtooth = 1)/ 判断是否是锯齿波,如果是才能继续 CountNumber+;/ 增加次数计数器if(CountNumber = 2)/就可以输出波CountNumber = 0;/ 再次置0C

    20、ount = Count-SawtoothIncrement;/找到下一个点 if(Count = 256)/ 判断是否为256如果为256 了那么自动Count = 0;/变为0(256为最高点。0为最低点)DATAOUTPUT= TableTriangleCount;/输出波图5.3三角波图5.4方波程序模块方波是经过锯齿波函数进行void SqureOut(unsigned int fre,unsigned int duty)来进行转换成数据量,再输出道D/A转换电路输出到示波器进行显示的波形14。方波主要是通过指定节点来进行波形的显示,每个节点是已经确定的值,方波和正玄波工作原理相似,

    21、节点都是在初始化的过程中定义的,方波的初始化如下:static unsigned char code TableTriangle256= 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158, 160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190, 192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222, 224,226,228,230,232,234,236,238,240,

    22、242,244,246,248,250,252,254, 255,254,252,250,248,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,128,126,124,122

    23、,120,118,116,114,112,110,108,106,104,102,100, 98, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64, 62, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,

    24、 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98,100,102,104,106,108,110,112,114,116,118,120,122,124,126 ;节点初始化完毕。1.方波函数的定义void SqureOut(unsigned int fre,unsigned int duty)/方波有两个变量 /频率和占空比TimerCount = 12550;/ 初始计数器值为1

    25、2550TH0=(65536-TimerCount)/256; /最高点的初始值TL0=(65536-TimerCount)%256;/ 最低点的初始值Count = 0;/ SqureCount = 20000/fre;/方波节点的得到,通过一个数学表达式得到SqureHigh = SqureCount*duty/100;/占空比也影响方波的显示 FlagSqure = 1; 方波的标记重新置12.方波函数的实现if(FlagSqure = 1)/ 判断是三角波flag是否等于1,如果是才能继续Count+;/ 节点计数器开始计数if(Count SqureCount)/如果节点计数器的值大

    26、于SqureCount /那么需要置0这样才能产生最低点Count = 0;/ 置0DATAOUTPUT = 0xff;/显示在方波最低段的时候的一段波形if(Count SqureHigh)/判断节点是否大于SqureHigh如果大于 /可以输出在最高点的一段波形DATAOUTPUT = 0x00;/ 输出波形图5.4方波图5.5延迟程序延迟函数的定义延迟函数是单片机领域非常常用的函数,函数的定义基本也是一样的,详细代码如下,这里只给出定义,因为它的实现情况,需要结合其他模块,在按键程序模块里出现过15。void Scan10MsDelay(void) /10毫秒延时 unsigned in

    27、t x,y;for(x = 10; x 0 ; x-)for(y = 110 ; y 0 ; y-);在按键和和按键相关的操作是都需要延迟,延迟可以判断按键是否持续,也可以消除抖动,避免误差。6总结在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。参考文献1李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社.20062张毅刚.单片机原理与应用设计M.北京:电子工业出版社.20113牛昱光.单片机原理及接口M.北京:北京电子工业出版社.200814


    注意事项

    本文(波形发生器设计 (2).doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922