毕业设计-基于单片机的函数信号发生器设计.doc_第1页
毕业设计-基于单片机的函数信号发生器设计.doc_第2页
毕业设计-基于单片机的函数信号发生器设计.doc_第3页
毕业设计-基于单片机的函数信号发生器设计.doc_第4页
毕业设计-基于单片机的函数信号发生器设计.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的函数发生器的设计 学生:aaa,电子信息学院 指导老师:aaa,aa大学【摘要】:本文介绍一种用at89c51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。【关键词】:单片机;dac;函数发生器 design of function generator based on mcu student:,school of electronics and information engneering teacher: , universityabstractthis paper introduces a at89c51 single chip waveform generator,can produce square wave,triangle wave,sine wave,sawtooth wave and other wave,waveform cycle can be used to change procedures,and in accordance with the need to select the output unipolar or bipolar output,has simple circuit,compact structure,superior performance characteristics.the article gives the source code,through simulation test,performance indexs have reached the design requirements.【key words】:single chip microcomputer;dac;function generator. 基于单片机的函数发生器的设计第一章 绪论1.1单片机概述单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:cpu、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(microcontroller),由芯片内仅有cpu的专用处理器发展而来。最早的设计理念是通过将大量外围设备和cpu集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。单片机是70年代中期发展起来的一种大规模集成电路芯片,是cpu、ram、rom、i/o接口和中断系统集成于同一硅片的器件。单片机用于控制有利于实现系统控制的最小化和单片化,简化一些专用接口电路,如编程计数器、锁相环(pll)、模拟开关、a/d和d/a变换器、电压比较器等组成的专用控制处理功能的单板式微系统。单片机是所有微处理机中性价比最高的一种,随着种类的不断全面,功能不断完善,其应用领域也迅速扩大。单片机在智能仪表、实时控制、机电一体化、办公机械、家用电器等方面都有相当的应用领域。当前,8位单片机主要用于工业控制,如温度、压力、流量、计量和机械加工的测量和控制场合;高效能的16位单片机(如mcs-96、mk-68200)可用在更复杂的计算机网络。可以说,微机测控技术的应用已渗透到国民经济的各个部门,微机测控技术的应用是产品提高档次和推陈出新的有效途径。1.2函数发生器的分类函数发生器应用广泛,种类繁多,性能各异,分类也不尽一致。函数发生器亦称信号发生器,主要作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。函数发生器作为一种常见的应用电子仪器设备,传统的一般可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的rc要很大。大电阻,大电容在制作上有困难,参数的精度亦难以保证。体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。利用单片机采用程序设计方法来产生低频信号,其频率底线很低。具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。只要对电路稍加修改,调整程序,即可完成功能升级。1.3 研究内容本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。 第二章 方案的设计与选择2.1 方案的比较方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用d/a转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(vco)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。2.2 设计原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89c51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器cpu、随机存取存储器ram、只读存储器rom、i/o接口电路、定时器/计数器以及串行通讯接口等,只要将89c51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图2.1所示。 输出89c51单片机滤波放大d/a转换器接口电路图2.1 信号发生器原理框图89c51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。2.3 设计思想(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。(2)将一个周期的信号分离成256个点(按x轴等分),每两点之间的时间间隔为t,用单片机的定时器产生,其表示式为:t=t/256。如果单片机的晶振为12mhz,采用定时器方式0,则定时器的初值为: x=213t/tmec (2.1) 定时时间常数为: tl =(8192t)/mod256 (2.2)th=(8192t)/256 (2.3)mod32表示除32取余数(3)正弦波的模拟信号是d/a转换器的模拟量输出,其计算公式为: y=(a/2sint)+a/2 (其中a=vref) (2.4) t=nt (n=1256) (2.5)那么对应着存放在计算机里的这一点的数据为: (2.6) (4)一个周期被分离成256个点,对应的四种波形的256个数据存放在以tab1-tab4为起始地址的存储器中。2.4 设计功能(1)本方案利用8155扩展8个独立式按键,6个led显示器。其中“s0”号键代表方波输出,“s1”号键代表正弦波输出,“s2”号键代表三角波输出,“s3” 号键代表锯齿波输出。(2)“s4”号键为10hz的频率信号,“s5”号键为100hz的频率信号,“s6”号键为500hz的频率信号,“s7”号键为1khz的频率信号,6个led显示器输出信号的频率值,选用共阳极led。(3)利用两片dac0832实现幅度可调的信号源,(其中一片用来调节幅度,另外一片用来实现信号源的输出)。(4)频率范围:101000hz。(5)输出波形幅度为05v。第三章 主要器件介绍3.1 at89c51简介at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。at89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.1 主要特性与mcs-51 兼容 4k字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3.1.2 管脚说明vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。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口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。/psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。3.2 8255简介8255是intel公司生产的可编程并行i/o接口芯片,有3个8位并行i/o口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口a、b、c口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与cpu连接部分、与外设连接部 分、控制部分。3.3 dac0832简介dac0832是8分辨率的d/a转换集成芯片。与微处理器完全兼容。这个da芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。d/a转换器由8位输入锁存器、8位dac寄存器、8位d/a转换电路及转换控制电路构成。3.3.1 特性介绍* 分辨率为8位;* 电流稳定时间1us;* 可单缓冲、双缓冲或直接数字输入;* 只需在满量程下调整其线性度;* 单一电源供电(+5v+15v);* 低功耗,200mw。3.3.2 管脚介绍* 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:数字信号地3.4 数码管显示原理我们最常用的是七段式和八段式led数码,八段比七段多了一个小数点,其他的基本相同。所谓的八段是指数码管里有八个小led发光二极管,通过控制不同的led的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个led的阴极连在一起。让其接地,这样给任何一个led得另一端高电平,它便能点亮。二共阳极就是将八个led的阳极连在一起。其原理图如下。 引脚图 共阴极 共阳极 其中引脚图的两个com端连在一起,是公共端,而共阴数码管要将其接地,共阳极将其接正5v电源。一个八段数码管成为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的八段,对应一个字节的八位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f:共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。如下图第四章 硬件设计4.1 硬件原理框图硬件原理方框图如图3.1所示。 图4.1 硬件原理框图4.2 主控电路at89c51单处机内部设置两个16位可编程的定时器/计数器t0和t1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当t0或t1被允许计数后,从初值开始加计数,最高位产生溢出时向cpu请求中断。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器cpu正在处理某件事的时候外界发生了紧急事件,要求cpu暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器计数器溢出时产生的中断请求,即是在at89c51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,at89c51等待,直到定时器计时结束,产生中断请求,at89c51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形6。如图4.2所示,at89c51从p0口接收来自键盘的信号,并通过p2口输出一些控制信号,将其输入到8155的信号控制端,用于控制其信号的输入、输出。如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号通过8155的pb口输出,并在数码管上显示出来。 图4.2 主控电路图4.3 数/模转换电路at89c51单片机控制两片dac0832的原理图输出基准电压at89c51单片机dac0832dac0832因为at89c51单片机自身便有一个64k的程序存储器,所以不用扩展外加程序存储器。由单片机编程即可由单片机输出所需要信号的数字量,再由d/a转换器将数字量转化为模拟电流输出,通过运放转化为模拟电压输出。d/a数模转换器的最大输出电压是由其输入的基准电压来控制的,所以只要能控制d/a的基准电压便可以控制输出幅度,实现幅度可调。所以设计用两片dac0832来输出信号,第一片d/a用来输出信号,第二片d/a用来控制第一片d/a的基准点压。其中用p0口作为两片d/a的数据总线,p2口的p2.0和p2.1口用来控制两片d/a的选通。该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器。dac0832。dac0832主要由8位输入寄存器、8位dac寄存器、8位d/a转换器以及输入控制电路四部分组成。但实际上,dac0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。dac0832是电流型输出,在应用时外接运放使之成为电压型输出。由图4.3可知,dac0832的片选地址为7fffh,当p25有效时,若p0口向其送的数据为00h, 则u1 的输出电压为0v;若p0口向其送的数据为0ffh时, 则u1的输出电压为-5v. 故当u1 输出电压为0v时,由公式 得:vout = - 5v.当输出电压为- 5v时,可得:vout = +5v,所以输出波形的电压变化范围为- 5v+ 5v. 故可推得,当p0所送数据为80h时,vout为0v4。 图4.3 数模转换电路4.4 按键接口电路由于本设计要求控制波形的幅度和频率,所需按键较多,所以设计选用p1口来扩展44键盘。本设计中要求用数码管显示输出信号的幅度和频率等信息,而这些信息在信号输出的时候是不需要时刻改变的,所以设计中选用静态数码管显示,由单片机的串行通信口输出显示数据。这样可以节省单片机的端口来做其它的用途,给予了装置可优化性。图4.4为键盘接口电路的原理图,图中键盘和8155的pa口相连,at89c51的p0口和8155的d0口相连,at89c51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。其中“s0”号键代表方波输出,“s1”号键代表正弦波输出,“s2”号键代表三角波输出。 “s3”号键代表锯齿波输出,“s4”号键为10hz的频率信号,“s5”号键为100hz的频率信号,“s6”号键为500hz的频率信号,“s7”号键为1khz的频率信号3。 图4.4 按键接口4.5 时钟电路时钟电路可以简单定义如下:1.就是产生象时钟一样准确的振荡电路。2.任何工作都按时间顺序,用于产生这个时间的电路就是时钟电路,时钟电路一般由晶体振荡器、晶震控制芯片和电容组成。 图4.5 时钟电路8051单片机有两个引脚(xtal1,xtal2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图4.5所示。电容c1、c2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12mhz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形9。4.6 显示电路显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用led数码管显示器。而且led数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。其器件模型如图4.6所示。图4.6 led显示电路第五章 软件设计5.1 设计构思1幅度控制由于d/a数模转换器输出的最大幅度可以用其基准电压来控制,所以控制第二片d/a数模转换器输出给第一片d/a数模转换器的电压值就可控制信号幅度。因此,送入第二片的值是几个固定的值。由于dac0832内部具有锁存器,所以只需向第二片d/a送值一次,直到下一次改变信号幅度。2频率控制单片机内部数据只有0、1之分,所产生的信号也都是离散信号。为了能够让单片机输出所需的数字信号,我们采用对信号采样、量化的方法来实现由单片机产生所需信号。在本设计中,对信号的四分之一周期采样19个幅度值,通过反复查表来输出幅度值,而整个信号是通过正查表和逆向查表来实现的。采样的点越密,信号失真度也就越小。两次采样点的输出时间间隔是由定时、计数器来控制的,因此,通过控制不同的计数初值就可以控制整个信号的频率。计数时间=信号周期/72。计数次数=计数时间/机器周期。对应的,计数初值=65536计数次数。单片机只能产生离散频率的信号,所以所得到的信号频率不是连续的,而是离散的频率点。由于这部分计算位数较多,不适合用单片机编程来计算计数初值,所以本设计中将各频率的计数初值算出,让单片机按控制命令来查表控制频率。正弦波和三角波的频率控制方法都与上述方法相同,而方波的频率控制是半周期计数,经过半周期只需改变输出为最大或最小电平即可。5.2 程序流程图本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。主程序的流程图如图5.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。 图5.1 主程序流程图下面说明主程序流程图的程序实现:1. 开始:org 0000h 程序开始执行,首先觉得跳转到主程序ajm main org 000bh 定时器0中断入口地址,跳转到中断服务程序ljmp tcoorg 0030h2.5255a初始化:mov dptr,#7f00h 指向8155命令字端口地址mov a,#06h 设置a口为输入,b口、c口为输出movx dptr,a 送命令字3.判定信号频率:mov dptr,#7f01h 指向a口地址movx a,dptr 读入a口的开关数据jnb acc.4,k10h 判断是否“4”号键,若是则转输出10hz信号jnb acc.5,k100h 判断是否“5”号键,若是则转输出100hz信号jnb acc.6,k500h 判断是否“6”号键,若是则转输出500hz信号jnb acc.7,k1k 判断是否“7”号键,若是则转输出1khz信号ajmp main 无键按下则返回等待4.根据频率值置新的时间常数,以10hz为例k10h:mov 30h,#00h 显示10hzmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#01hmov 35h,#00hlcall led1 调显示子程序mov tmod,#00hmov tl0,#15hmov th0,#9ehajmp pd5.显示频率值,以10hz为例k10h:mov 30h,#00h 显示10hzmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#01hmov 35h,#00hlcall led1 调显示子程序6.显示子程序:led1: mov r3,#06h 设置6个led显示mov r2,#01h 选通第一位led数据mov r1,#30h 送显示缓冲区首址gn1:mov dptr,#7f03h 指向c口地址mov a,r2 位选通数据送amovx dptr,a 位选通数据送c口rl a 选通下一位mov r2,a 位选通数据送r2中保存 mov a, r1 取键值mov dptr,#tab 送led显示软件译码表首址movc a,a+dptr 查表求出键值显示的段码mov dptr,#7f02h 指向b口地址mov dptr,a 段码送显示lcall loop1 调延时子程序inc r1 指向下一位显示缓冲区地址djnz r3,gn1 循环显示6个ledret7.中断设置开中断:gn: setb tr0 启动定时器setb et0 开定时器0中断setb ea 开总中断8.判定波形:pd:jnb acc.0,ke0 判断是否“0”号键按下,若是则转方波输出jnb acc.1,ke1 判断是否“1”号键按下,若是则转正弦方波输出jnb acc.2,ke2 判断是否“2”号键按下,若是则转三角波输出jnb acc.3,ke3 判断是否“3”号键按下,若是则转锯齿波输出ljmp pd 无键按下则返回等待图5.2为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过d/a转换器将数据转换成模拟信号,形成所需波形信号。图5.2 子程序流程图下面说明子程序流程图的实现:1. 中断服务程序开始:ljmp tco 绝对跳转到中断服务程序2. 判断是否方波及处理方法:tco:cjne r7,#00h,tc1 判断是否是方波,不是则跳转mov dptr,#tab1 送方波数据表首址mov a,r6 发送数据寄存器movc a,a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)输出mov a,r6inc a mov r6,acjne a,#32,ql1mov r6,#00hajmp ql13. 判断是够是正弦波及处理方法:tc1:cjne r7,#01h,tc2 发送正弦波程序mov dptr,#tab2 送正弦波数据表首址mov a,r6movc a, a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)输出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hajmp ql14. 判断是否是三角波及处理方法:tc2:cjne r7,#02h,ql1 发送三角波程序mov dptr,#tab3 送三角波数据表首址mov a,r6movc a,a+dptr mov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)输出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hajmp ql15. 判断是否是锯齿波及处理方法:tc3:cjne r7,#03h,ql1 发送锯齿波程序mov dptr,#tab4 送锯齿波数据表首址mov a,r6movc a, a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)输出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00h5.3 波形图四种波形的仿真波形图如下:在仿真环境下,运行仿真软件,按要求操作键盘会出现如下波形图,各个波形的仿真图右四种不同的频率。 图5.3 方波图如图5.3方波图,横坐标为时间轴每小格表示1.33ms,纵坐标为幅值轴每小格为1.00mv。当“so”键按下事将产生方波,键“s4” “s7”决定方波的频率,“s4”号键为10hz的频率信号,“s5”号键为100hz的频率信号,“s6”号键为500hz的频率信号,“s7”号键为1khz的频率信号。 图5.4 正弦波图如图5.4正弦波图,横坐标为时间轴每小格表示1.33ms纵坐标为幅值轴每小格为1.00mv。当“s1”键按下是将产生正弦波,键“s4” “s7”决定方波的频率,“s4”号键为10hz的频率信号,“s5”号键为100hz的频率信号,“s6”号键为500hz的频率信号,“s7”号键为1khz的频率信号。 图5.5 三角波如图5.5三角波图,横坐标为时间轴每小格表示1.33ms纵坐标为幅值轴每小格为1.00mv。当“s2”键按下是将产生正弦波,键“s4” “s7”决定方波的频率,“s4”号键为10hz的频率信号,“s5”号键为100hz的频率信号,“s6”号键为500hz的频率信号,“s7”号键为1khz的频率信号。 图5.6 锯齿波如图5.6锯齿图,横坐标为时间轴每小格表示1.33ms纵坐标为幅值轴每小格为1.00mv。当“s3”键按下是将产生正弦波,键“s4” “s7”决定方波的频率,“s4”号键为10hz的频率信号,“s5”号键为100hz的频率信号,“s6”号键为500hz的频率信号,“s7”号键为1khz的频率信号。波形分析:在将电路和实物连接的情况下再将程序下载至单片机中进行实电路的测试时,波形与实际要求存在一些误差,这些误差的来源主要是由于电路的具体参数选择不好以及程序的延时所造成的。但基本上是符合设计要求的。致谢课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在好几个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在徐爱钧老师的辛勤指导下,终于游刃而解。同时,在徐爱钧老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!参考文献1 徐爱钧,智能化测量控

温馨提示

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

评论

0/150

提交评论