ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:282.25KB ,
资源ID:4616296      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4616296.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于8051的多功能信号发生器.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于8051的多功能信号发生器.docx

1、基于8051的多功能信号发生器目 录第一章 摘要 4第二章 引言 4第三章 基本原理 53.1设计任务 53.2设计原理 5第四章 硬件原理 64.1 8051单片机的内部结构 64.2 DAC0832芯片介绍 7第五章 软件设计 95.1正弦波 95.2方波 105.3 三角波 105.4 锯齿波 105.5 调频 10第六章 系统调试 11第七章 结语 14参考文献资料 15附录 程序整体设计 16 第一章 摘要本系统是基于8051单片机的多功能信号发生器。采用8051单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、按键和6位数码管等。通过按键控制可产生方波、三角波、正弦

2、波、锯齿波等,也可通过按键改变频率,同时用数码管指示其对应的键值。其设计简单、性能优好,具有一定实用性。 各种各样的信号是通信领域的重要组成部分,其中正弦波、三角波和方波等是较为常见的信号。在科学研究及教学实验中常常需要这几种信号的发生装置。为了实验、研究方便,研制一种灵活适用、功能齐全、使用方便的信号源是十分必要的。文中简要介绍了DAC0832数模转换器的结构原理和使用方法和8051的基础理论。文中着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路和软件编程。信号频率幅度也按要求可调。关键词 :8051 DAC0832 信号发生器 可调频第二章 前言波形发生器也称函数发生器,作为

3、实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形。信号发生器作为一种常见的应用电子仪器设备,传统的可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路经之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意。本文是做基于单片机的信号发生器的设计,将采用编程的方

4、法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率进行改变输出,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到按键的命令时,程序会根据按键的指示调用相应的服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。本设计中需要lab2000试验箱的键盘按键和示波器的硬件配合,通过按键设定所需要的波形和频率,并通过示波器观察波形的频率、幅值电压、波形。第三章 基本原理3.1 设计任务(1) 以单片机为核心的函数信号发生器,可产生方波、三角波、正弦波、锯齿波等波形,通过键盘选择波形和调整信号频率。(2) 设计键盘输入电路,

5、对应选择波形和改变信号频率、波形的输出电路;编制相应的程序。波形发生器的设计所需器件:1.lab2000试验箱(包含单片机8051系统、DAC0832一片、运算放大器)2PC机一台3.示波器一台3.2 设计原理 本文要求将单片机的数字信号输出转化为模拟信号,数字信号可以通过D/A转换器转换成模拟信号,因此可通过单片机产生数字信号再转换成模拟信号的方法来获得所需要的波形。8051单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将8051再配置键盘及其接口、显示器及其

6、接口、数模转换及波形输出及其接口、示波器及其输出等四部分,即可构成所需波形发生器。8051是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并通过lab2000键盘进行各种波形的转换和信号频率的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波行。第四章 硬件原理信号发生器硬件原理框图如图4-1所示。 输出 图4-1 信号发生器原理框图4.1 8051单片机的内部结构典型的8051单片机芯片集成了以下几个基本组成部分。1 一个8位的CPU2 128B或256B单元内数据存储器(RAM)3 4KB或8KB片内程序存储器(ROM或EPROM)4 4

7、个8位并行I/O接口P0P3。5 两个定时/计数器。6 5个中断源的中断管理控制系统。7 一个全双工串行I/O口UART(通用异步接收、发送器) 8 一个片内振荡器和时钟产生电路。图4-2 单片机最小系统4.2 DAC0832芯片介绍:DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。在本文设计电路中DAC0832采用单缓冲接口方式, DAC0832为一个8位D/A转换器,单电源供电,在+5+15V范围内均可正常工作。基准电压的范围为10V,电流建立时间为1s,CMOS工艺,低功耗20mW。和接地,故DAC0832工作于直通

8、方式。8位输入寄存器受和端的信号控制,而内部结构框图如下图所示。图4-3 DAC0832 内部结构DAC0832的外部引脚及功能介绍图如下:图4-4 DAC0832引脚图DAC0832内部结构资料:芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。DI0DI7:数据输入线,TLL电平。 ILE:数据锁存允许控制信号输入线,高电平有效。 CS

9、:片选信号输入线,低电平有效。 WR1:为输入寄存器的写选通信号。 XFER:数据传送控制信号输入线,低电平有效。 WR2:为DAC寄存器写选通输入线。 Iout1:电流输出线。当输入全为1时Iout1最大。 Iout2: 电流输出线。其值与Iout1之和为一常数。 Rfb:反馈信号输入线,芯片内部有反馈电阻. Vcc:电源输入线 (+5v+15v) Vref:基准电压输入线 (-10v+10v) AGND:模拟地,摸拟信号和基准电源的参考地. DGND:数字地,两种地线在基准电源处共地比较好第五章 软件设计如下为系统整体设计流程图:图5-1 系统整体设计流程图本文将信号发生器分为几个模块,分

10、别设计,最后再整合在一起。一共可分为五大模块:正弦波模块、方波模块、三角波模块、锯齿波模块、调频模块。5.1正弦波由于单片机处理的都是数字信号,而正弦波是连续的信号,所以首先想到的是用D/A转换来实现模拟信号。D/A转换是将二进制数转换成对应的电压量,即结果还是单个的数值,但是当程序运行时,由于时间很短,所以在示波器上看到的就是连续的信号,实际上是很多个点组成的。但是这种转换的结果是呈线性增加的,而正弦波是呈弧形变化,所以只用DA转换是不能实现正弦波的。经过我们小组讨论后,我决定用查表的方法来实现正弦波形,即把每个弧度对应的正弦值算出来,然后用变址寻址的指令来查表,当然弧度必须尽量小。这样,就

11、能在示波器上看到正弦波。正弦波的模拟信号是D/A转换器的模拟量输出,其计算公式为: (其中A=VREF) (2.1) (其中N=1256) (2.2)那么对应着存放在计算机里的这一点的数据为: (2.3) 这样一个周期被分离成256个点,对应的正弦波形的256个数据存放在以TAB为起始地址的存储器中5.2方波方波的实现很简单,因为我们平时实验的波形就是方波,可以用定时器T0或T1通过任意的端口来实现。但是这样做有一个问题就是:在后面的发挥部分中只能调频不能调幅。所以,最好开始的时候设置一个初值(例如0FFH)然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据(例如00H),然后再输

12、出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个矩形波。5.3三角波显然,三角波的实现和正弦波有关系。三角波形本身就是呈线性增加,因此不用查表,直接用DA转换的结果就能实现。其设计的关键在于怎样控制幅值,不能太大,因为太大会对后面调节幅值产生影响。5.4锯齿波 首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。,这个操作跟锯三角波的实现是相似的。5.5调频调频可以在中断程序中实现。频率的倒数就是周期,即一个波形在示波器上所需的扫描时间。因

13、此,我只要调节各个波形的延迟时间,就能实现频率的调节。第六章 系统调试将DAC0832输出的信号连接到示波器进行观察,以下为各个输出波形:图6-1 正弦信号1(T=7168Us,h=140Hz)图6-2 三角波信号1(T=8ms,h=125Hz)图6-3 方波信号1(T=2ms,h=500Hz)图6-4 锯齿波信号1(T=4ms,h=250Hz)图6-5 正弦信号2(T=11264us,h=90Hz)图6-6 三角波信号2(T=3500us,h=286Hz)图6-7 锯齿波信号2(T=2Ms,H=500Hz) 经实验可知,本任意信号发生器可通过改变键值来实现波形和频率的转换,正弦信号,三角信号

14、,方波信号和锯齿波信号波形清晰明确,完成了所要求的任务。但由于程序的原因,波形的各个周期并不连续,经分析是程序调用的时差问题导致的,目前这个问题还有待解决。第七章 结语为期一周的单片机课设,感慨颇多,受益匪浅。刚开始接到课题是一种兴奋,因为新的考验即将开始。刚开始感觉本次课题难度不大,此时有一种莫名的庆幸和失落,庆幸自己的课题并不是毫无头绪,失落的是感觉太轻松了,会没有成就感。当自己第一天开始做时,没有太大的感觉。因为自己还没有真正体会到该课题的深度与难度。第一天把几本的四种波形产生方式了解了,颇有点点成就感。但是第二天着手攻克键盘扫描时,自己一片茫然。好多原理没有搞清楚,造成进度很慢,同时也

15、感觉到了一种压迫感。自己静下心研究了的一天的键盘扫描程序,第三天把键盘扫描程序验证后这一天又匆匆的过去了。而接下来的两天开始调理整体程序,此时才真正发现自己学艺不精,事倍功半,进度缓慢,各个模块的工呢过都能够实现,但组合到一起却总是出问题,经过仔细的分析,才发现是时序的问题。这最后两天也是心情最压抑的两天,但是也感到过得很充实。在老师的指导帮助下和同学共同讨论最后攻克程序的时候自己高兴地无法言表。通过这次课程设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了本学期单片机的学习成果,进一步加深了我对单片机知识的了解和认识以及动手的能力。虽然在这次设计中对于所学知识

16、的运用和衔接还不够熟练,作品完成的还不是很出色。但是我将在以后的工作和学习中继续努力、不断完善。这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的进一步学习打下了良好的基础。希望今后能有更多的实践机会,从中不断提升自己。参考文献1 张淑清 单片机原理及应用技术 国防工业出版社 2010.82梅丽凤,王艳秋,汪毓铎,张军 单片机原理及接口技术 清华大学出版社 2006.83 谢宜仁,谢炜,谢东辰 单片机实用技术问答 人民邮电出版社 2003.24 何立民 单片机应用技术选编 北京航空航天大学出版社 1997.105 潘永雄 新编单片机原理与应用实验 西安电子科技大学出版社 2005.9

17、6 夏继强,沈德金 单片机实验与实践教程 北京航空航天大学出版 1999.12附录 程序整体设计OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN equ 08001h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲NUM equ 30hCS0832 equ 0a000h ljmp StartLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 71h, 71h, 71h, 71h, 71h, 71h, 71h, 71hDelay: ; 延时子程序 mov r7,

18、#0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 mov a, r0 mov dptr, #OUTSEG movx dptr, a mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay

19、mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop retTestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 输出线置为0 mov dptr, #IN movx a, dptr ; 读入键状态 cpl a anl a, #0fh ; 高四位不用 retKeyTable: ; 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 0

20、5h, 08h db 00h, 01h, 04h, 07hGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #6 anl a, #0fh mov NUM,aKLoop: mov a, r1 ; 找出键所在列 cpl a movx dptr, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz Goon1 ; 该列有键入 djnz r2, KLoop mov r2, #0ffh ; 没有键按下, 返回 0ffh

21、sjmp ExitGoon1: mov r1, a ; 键值 = 列 X 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4 mov a, r1 ; r1中为读入的行值 mov r1, #4LoopC: rrc a ; 移位找出所在行 jc Exit inc r2 ; r2 = r2+ 行值 djnz r1, LoopCExit: mov a, r2 ; 取出键码 mov dptr, #KeyTable movc a, a+dptr mov r2, aWaitRelease: mov dptr, #OUTBIT ; 等键释放 cl

22、r a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov a, r2 retStart: mov sp, #40h mov LEDBuf+0, #0ffh ; 显示 8.8.8.8. mov LEDBuf+1, #0ffh mov LEDBuf+2, #0ffh mov LEDBuf+3, #0ffh mov LEDBuf+4, #0 mov LEDBuf+5, #0Mloop: call DisplayLED ; LED显示 MOV A,NUM CALL SAOMIAO ;输出波形; call Displ

23、ayLEDTEST: call DisplayLED call TestKey ; 有键入? jz MLOOP ; 无键入, 继续显示 call GetKey ; 读入键码 anl a, #0fh ; 显示键码 mov NUM,a ;将键值存入30h mov dptr, #LEDMap movc a, a+dptr mov LEDBuf+5, aSAOMIAO: call DisplayLED MOV A,NUM CJNE A,#00H,SJBO1 ;跳到三角波1;/* 正弦波1 T=7168Us,h=140Hz*/ZXBO1: call DisplayLED MOV A,#01H MOV P

24、1,A MOV R7,#0FFH;正弦函数数据表共有256个数 即FFH个 MOV R6,#00H DA01: MOV DPTR,#TAB ;函数表首地址给DPTR MOV A,R6 MOVC A,A+DPTR MOV DPTR, #CS0832 MOVX DPTR,A INC R6 DJNZ R7,DA01 ;数据输完则返回重新检查波形选择是否改变 LCALL TEST;/* 三角波1 T=8ms,h=125Hz* /SJBO1:call DisplayLED CJNE A,#01H,FXBO1 ; 跳到方波1 MOV A,#02H MOV P1,A MOV A,#00H UP0 : MOV

25、 DPTR, #CS0832 MOVX DPTR,A INC A CJNE A,#250,UP0 ;A=250 跳转反之顺序执行DOWN1:DEC A MOVX DPTR,A CJNE A,#00,DOWN1 ;为了对称性 使用相同的跳转语句 LCALL TEST;/*方波1 T=2ms,h=500Hz* /FXBO1: call DisplayLED CJNE A,#02H,JCBO1 ;跳到锯齿1 MOV A,#04H MOV P1,A MOV A,#250 MOV DPTR, #CS0832 MOVX DPTR,A LCALL DELAY1 ;调高1ms延时程序 MOV A,#00H M

26、OVX DPTR,A LCALL DELAY1 ;调低电平延时程序 LCALL TEST;/*锯齿波1 T=4ms,h=250Hz* /JCBO1: call DisplayLED CJNE A,#03H,ZXBO2 MOV A,#08H MOV P1,A MOV A,#00H UP1 : MOV DPTR, #CS0832 MOVX DPTR,A INC A CJNE A,#250,UP1 ;A=250 跳转反之顺序执行 LCALL TEST;/* 正弦波2 T=11264us,h=90Hz*/ZXBO2 : call DisplayLED CJNE A,#04H,SJBO2 MOV A,#

27、01H MOV P1,A MOV R7,#0FFH;正弦函数数据表共有256个数 即FFH个 MOV R6,#00H DA02: MOV DPTR,#TAB ;函数表首地址给DPTR MOV A,R6 MOVC A,A+DPTR MOV DPTR, #CS0832 MOVX DPTR,A INC R6 NOP NOP NOP NOP NOP NOP NOP NOP ;共9个 DJNZ R7,DA02 ;数据输完则返回重新检查波形选择是否改变 LCALL TEST;/*三角波2 T=3500us,h=286Hz* /SJBO2: call DisplayLED CJNE A,#05H,FXBO2

28、 ; 跳到方波2 MOV A,#02H MOV P1,A MOV A,#00H UP02 : MOV DPTR, #CS0832 MOVX DPTR,A INC A CJNE A,#125,UP02 ;A=250 跳转反之顺序执行DOWN12:DEC A MOVX DPTR,A CJNE A,#00,DOWN12 ;为了对称性 使用相同的跳转语句 LCALL TEST;/* *方波2 T=4ms,h=250Hz* /FXBO2: call DisplayLED CJNE A,#09H,JCBO2 ;跳到锯齿波2 MOV A,#04H MOV P1,A MOV A,#250 MOV DPTR,

29、#CS0832 MOVX DPTR,A ACALL DELAY2 ;调高2ms延时程序 MOV A,#00H MOVX DPTR,A ACALL DELAY2 ;调低电平延时程序 LCALL TEST;/*锯齿波2T=10Ms,H=100Hz* /JCBO2: ;call DisplayLED MOV A,#07H MOV P1,A MOV A,#00H UP12 : MOV DPTR, #CS0832 MOVX DPTR,A INC A nop nop nop nop nop nop nop nop nop nop nop nop nop CJNE A,#250,UP12 ;A=250 跳转反之顺序执行 LCALL TEST;/*两个延时子程序* /DELAY1: ;1ms延

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1