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

    基于51单片机TLV5616信号发生器.doc

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

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

    基于51单片机TLV5616信号发生器.doc

    1、单片机原理与接口技术目录1设计目的及要求41-1设计目的41-2设计要求42方案设计42-1总体方案设计42-1.1系统原理分析42-2硬件电路设计52-2.1主要芯片介绍52-3软件设计92-3.1软件程序流程图如下:92-3.2发送数据子程序:102-3.3波形产生过程113功能拓展114调试及实验结果125实验中遇到的问题125-1错误125-2不足136心得体会137参考文献13基于单片机的DA信号发生器课程设计报告1 设计目的及要求1-1 设计目的(1)掌握各个接口芯片(如5616等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。(2)以单片机为基础,设计并开发

    2、能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的函数发生器。(3)利用所学单片机的理论知识进行软硬件整体设计,锻炼我们理论联系实际、提高我们的综合应用能力。(4)通过运用相关芯片实现信号发生器的功能,从而达到熟练掌握各种器件的目的,同时,锻炼动手能力及编程调试能力,更深地理解课上所学的单片机的知识,增加电子电路知识,提升作为一个电子信息工程专业学生的专业素养1-2 设计要求(1)用单片机加之DA芯片等器件,实现能产生方波,锯齿波,正弦波且频率可变的信号发生器(2)熟悉各个器件的性能和使用方法,特别是89c51和5616转换芯片,掌握他们之间的连接和数据传输方法,能够熟

    3、练使用它们及编写程序(3)完成单片机和DA的选型,了解不同波形的产生原理和设计方案,画出硬件电路图,并编程完成软件部分,最后调试观察产生不同类型的波形信号(4)课程设计论文内容要正确,概念要清楚;完成任务书所规定的内容;附有电路原理图及程序流程图,以及程序清单;文字要通顺,书写要工整,设计图纸必须符合规范。2 方案设计2-1 总体方案设计通过要求分析,以下几点是解题的关键:用单片机加之DA芯片,实现能产生方波,锯齿波,正弦波信号发生器掌握89c51和5616转换芯片之间的连接和数据传输方法,熟练使用它们及编写程序2-1.1 系统原理分析数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生

    4、数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如下图所示。图1 系统框图 2-2 硬件电路设计通过89C51单片机与TLV5616连接实现数模转换的功能。图2 总电路图2-2.1 主要芯片介绍1单片机AT89C51介绍AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFla

    5、sh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示:AT89C5

    6、1管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 图3 AT89C51引脚图P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P

    7、1口作为第八位地址接收。 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门电流

    8、。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在

    9、执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作

    10、电路的输入。 XTAL2:来自反向振荡器的输出。我们进行实验时,需要对应好仿真芯片和89c51的引脚关系,进行合理的分配,需要注意的是,P1口无法驱动数码管显示,所以我们调整了管脚连接,让P0口进行数码管显示,P1口用于和DA芯片的数据传输。2TLV5616介绍:1) 制作该信号发生器的核心是DA转换芯片,它将数字量的变化转换成了模拟量的变化,从而实现能够在示波器上进行显示,TLV5616是一个12位电压输出数模转换器(DAC),相对来说分辨率较高带有灵活的4线串行接口,可以无缝连接TMS320、SPI、QSPI和Microwire串行口。数字电源和模拟电源分别供电,电压范围2.75.5V。输

    11、出缓冲是2倍增益rail-to-rail输出放大器,输出放大器是AB类以提高稳定性和减少建立时间。rail-to-rail输出和关电方式非常适宜单电源、电池供电应用。通过控制字可以优化建立时间和功耗比。图4 5616芯片引脚图图中,VDD和AGND为电源端和接地端,DIN,OUT 为数据输入端和输出端,REFIN应给予2.7-5.5v的参考电压,此电压根据所需波形的复制而定。2) 5616的十六位数据值包括两部分:控制字(D15-D12)新的DAC值(D11-D0)注:X可为1可为0.SPD:速度控制字。为1时,高速模式,为0时,低速模式。PWR:功率控制字。为1时,掉电模式,为0时,正常模式

    12、。图5 时序图D15D14D13D12D11-D0XSPD速度控制字PWR功率控制字X新DAC值表1 5616十六位数据格式3)硬件连接如图5,是5616与51单片机的连接模式,5616接口方式为SPI模式,可与单片机兼容。图6 5616与单片机连接图2-3 软件设计2-3.1 软件程序流程图如下:需要明确的是,该设计最核心的部分是信号发生部分,要想完成此设计,最先应该设计的是怎样产生各种波形,只有产生了波形,才会有后续进行精确地调试,产生完波形后,需要完成单片机与5616之间的数据通信,编写程序,可以先编写该程序进行数据传送的调试。图7 程序流程图2-3.2 发送数据子程序:DA5616是S

    13、PI总线的传送形式,在单片机与其传送过程中,初始化后,单片机逐位将数据送入,此过程受到DA芯片的选通以及时钟时序的控制。2-3.3 波形产生过程1)方波产生过程方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波。由此可以调节两个电压维持的时间,产生占空比不同的方波,相比于模拟电驴,这样的方式输出的方波占空比更加精确,且电压更加稳定。2)齿波产生过程锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设

    14、置为初值,再重复执行刚刚的操作,如此循环下去。这样产生的锯齿波可以通过调节循环中的延时时间调节频率,再通过加法的最大值来控制输出的最高电压。图8 DA数据发送3)三角波产生过程三角波的输出的基础是锯齿波,将锯齿波的产生当作是三角波的前半部分,然后再相反的举行减法,逐渐减为零,如此循环,即可产生三角波。类似的,通过改变延时时间可以改变输出的频率,通过改变最大值,可以改变输出的电压。输出的波形连续性好,且波形很光滑。4)正弦波产生过程正弦波的实现实际上是一个查表过程,所查的每一个值都对应着一个电压,并且对应着的电压汇成图形即为正弦波,然后重复这样一个过程即可产生连续的正弦波.产生的正弦波,波形光滑

    15、且频率可调。3 功能拓展1) 尝试用C语言,以及汇编语言两种语言来编辑程序,设计思路大致相同,并且能够正常运行,且输出良好波形。2) 加入按键控制,通过控制按键,即可控制波形发生器发出的波形,以及波形的频率,由于时间原因,只设计了三个频率档位。相比较来说,通过按键控制可以更加方便的控制输出波形,以及频率。设置的程序思路是:通过单片机扫描按键,扫描到按下的按键K1,就切换波形发生的子程序;扫描到按下的按键K2,就赋予波形子程序中的延时函数所选择的数值。4 调试及实验结果输出波形图如下:图9 方波图10 三角波图11 正弦波最终,我们将程序导入仿真芯片,经过调试后,我们得到了四种波形,并能利用按键

    16、进行频率和波形的切换并显示,很好地完成了设计任务。得到的波形中,方波与锯齿波以及三角波的波形通过延时子程序调试后,输出比较理想的波形。正弦波由于打入一周期的时间过长,速度太慢,出现了波形看起来像是一个点沿正弦曲线运动的现象,而该5616的快速模式又不能正常工作,所以只能先保持这样的波形,而且产生的波形的频率有所限制,无法产生较高频率的波形,再有,为了打入一个数据的速度更快,没有完全发挥12位DA的优势,只是用了它的低8位惊醒数据编码。5 实验中遇到的问题5-1 错误1) 最初用DA调试波形时,怎样改变电路都无法使DA输出波形。后将DA的工作模式设置为慢速模式,才使芯片输出正常波形。2) 调试正

    17、弦波时,正弦波的频率太小,周期太长,及时将延时缩短,甚至消除都无法使示波器显示正常的连续的波形。后将程序中调用的数组中的由256减少到96后,波形方能正常显示。3)按键引入扫描程序时,无法使按键正常工作。最后查出原因是编程时,调用子程序的问题。4)在用数码管显示频率时,数码管部分亮部分暗,经过检测电路,发现实验台上P1口不能驱动数码管,后改为用P0口才可正常驱动。5-2 不足1)由于对于速度的要求,没有用定时器定时输出,产生波形频率值不准确2)没有发挥12位DA较高分辨率的优势,只用了它的低八位3)由于写入速度的限制,产生的波形频率的范围不广,无法产生较高频率的波形4)产生的正弦波由于写入周期

    18、较长,无法同时显示较多的波形6 心得体会通过这次课程设计,令我们对单片机有了更好的掌握,锻炼了我们的编程能力,在课程设计中,我们遇到的最大的挑战,就是对程序的调试,我们收获最大的地方也在于此,我们需要逐条运行每一小段调试程序,逐段逐句进行编程调试,我们尝试用汇编和C语言两种语言进行编程,将课上的学习的知识进行了运用。7 参考文献单片机原理与应用设计 ,张毅刚, 电子工业出版社, 2011年。单片微机原理及其接口技术,胡汉才,清华大学出版社,2003年。单片机原理与应用,孙亟芳,北京航空航天大学出版社,2004年。单片机程序设计基础,周航慈,北京航空航天大学出版社,2001年。8 附录程序#in

    19、clude /*端口定义*/sbit DIN=P10;sbit SCLK=P11;sbit CS=P12;sbit FS=P13;sbit s1=P32;sbit s2=P33;sbit tge=P14;sbit tshi=P15;sbit tbai=P31;sbit tqian=P34;#define uchar unsigned char#define uint unsigned intuchar k,t,x,w;uint b,c,d,m;uchar s1num,s2num,a,ys;uchar qian,bai,shi,ge;uchar code table=0x3f,0x06,0x5b

    20、,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code TAB=0x80,0x86,0x8d,0x99,0x9f,0xa5,0xb1,0xb7,0xbc,0xc7,0xcc,0xd1,0xda,0xdf,0xe3,0xea,0xee,0xf1,0xf6,0xf8,0xfa,0xfd,0xff,0xff,0xff,0xff,0xff,0xfd,0xfb,0xf9,0xf5,0xf2,0xef,0xe9,0xe5,0xe1,0xd8,0xd4,0xcf,0xc5,0xbf,0xba,0xae,0xa8,0xa2,0x96,0x90,0x89,0x80,0x79

    21、,0x72,0x66,0x60,0x5a,0x4e,0x48,0x43,0x38,0x33,0x2e,0x25,0x20,0x1c,0x15,0x11,0x0e,0x09,0x07,0x05,0x02,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x06,0x0a,0x0d,0x10,0x16,0x1a,0x1e,0x27,0x2b,0x30,0x3a,0x40,0x45,0x51,0x57,0x5d,0x69,0x6f,0x80;Delay(unsigned int n) unsigned int i; for(i=0;i0;j-)for(r=110;r0;r-);

    22、/* 数据传送函数*/Translate_Data(unsigned int DATA) unsigned int i; DATA=DATA|0x0000; /设置为快速模式 【慢速模式】 DATA=DATA&0xB000; DATA=DATA&0xDFFF; /打开电源开关 【关电源】DATA=DATA|0x2000; CS=0;FS=1;SCLK=0;/cs=1 fs=1 sclk=0 CS=0;FS=1;SCLK=0;/cs=0 fs=1 sclk=0 for(i=0;i16;i+)/采样一个数据 CS=0;FS=0;SCLK=1;/cs=0 fs=0 sclk=1 Delay(1);/

    23、延时后采集数据 CS=0;FS=0;SCLK=0;/cs=0 fs=0 sclk=0 时钟低电平时开始采样 Delay(1); if(DATA&0x8000)DIN=1; else DIN=0; /DIN=DATA&0x80; DATA=DATA1; CS=1;FS=1;SCLK=1; Delay(3); void display(uchar qian,uchar bai,uchar shi,uchar ge) P0=tableqian; tqian=0;Delay(1);tqian=1;P0=tablebai; tbai=0;Delay(1);tbai=1;P0=tableshi; tshi

    24、=0; Delay(1);tshi=1;P0=tablege; tge=0;Delay(1);tge=1;void ljr0() b=0000; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void ljr1() b=0001; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void ljr2() b=0002; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void ljr3() b=0003; c=b%1000; d

    25、=c%100; display(b/1000,c/100,d/10,d%10); void ljr4() b=0004; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void ljr5() b=0005; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void ljr6() b=0006; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void ljr7() b=0007; c=b%1000; d=c%100; disp

    26、lay(b/1000,c/100,d/10,d%10); void ljr10() b=0010; c=b%1000; d=c%100; display(b/1000,c/100,d/10,d%10); void keyscanf() if(s1=0) Delay(5); if(s1=0) while(!s1); s1num+; if(s1num=3) s1num=0; while(!s1); Delay(5); while(!s1);/松手检测 if(s2=0) Delay(5); if(s2=0) while(!s2); s2num+; if(s2num=3) s2num=0; if(s2

    27、num=0) x=1,w=10; if(s2num=1) x=10,w=15; if(s2num=2) x=30,w=20; while(!s1); Delay(5); while(!s1);/松手检测 /* 主函数*/void main() while(1) if(s1num=0) for(m=0;m10000;m+) /写方波 delay2(x*30); if(s2num=0) ljr0(); if(s2num=1) ljr1(); if(s2num=2) ljr2(); keyscanf(); if(s1num=!0)break; Translate_Data(0x0FF); delay

    28、2(x*30); if(s2num=0) ljr0(); if(s2num=1) ljr1(); if(s2num=2) ljr2(); keyscanf();if(s1num=!0)break; Translate_Data(0x000); if(s2num=0) ljr0(); if(s2num=1) ljr1(); if(s2num=2) ljr2(); keyscanf(); if(s1num=!0)break; if(s1num=1) for(m=0;m0;k=k-w) Translate_Data(k); if(s2num=0) ljr3(); if(s2num=1) ljr4(); if(s2num=2) ljr5(); keyscanf(); if(s1num=!1) break; break; if(s1num=2) for(m=0;m10000;m+) /正弦波 for(t=0;t96;t+) k=TABt; Translate_Data(k); delay2(x/10); if(s2num=0) ljr6(); if(s2num=1) ljr7(); if(s2num=2) ljr10(); keyscanf(); if(s1num=!2) break; break; 文档来源网络,版权归原作者。如有侵权,请告知,我看到会立刻处理。


    注意事项

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




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

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

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

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