基于单片机的多功能函数发生器的设计_第1页
基于单片机的多功能函数发生器的设计_第2页
基于单片机的多功能函数发生器的设计_第3页
基于单片机的多功能函数发生器的设计_第4页
基于单片机的多功能函数发生器的设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、智能仪表综合课程设计成 绩 评 定 表学生姓名班级学号专 业课程设计题目基于单片机的多功能函数发生器的设计评语组长签字:成绩日期 2015年 1月 9日课程设计任务书学 院专 业学生姓名班级学号课程设计题目基于单片机的多功能函数发生器的设计实践教学要求与任务:通过本课程设计使学生进一步巩固智能仪表综合设计的基本概念、理论、分析方法和实现方法;增强学生软件编程实现能力和解决实际问题的能力。1、熟悉所确定的题目从问题需求,数据结构,程序结构,难点及关键技术等方面进行分析,形成系统的设计方案;2、根据方案设计硬件电路; 3、软件编程并调试;4、完成文档整理,按照软件工程的要求完成设计论文;5、通过答

2、辩的形式对程序的功能进行评价与验收。工作计划与进度安排:第12周-第13周:布置设计任务,查资料,完成总体设计框架,完善设计内容,系统调试,验收答辩。指导教师: 年 月 日专业负责人: 年 月 日学院教学副院长:年 月 日摘 要本文介绍一种用AT89C51单片机构成的波形发生器,波形的周期可用程序改变,信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出正弦波、方波、三角波、及其他波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。具有线路简单、结构紧凑、性能优越等特点。文章给出

3、了源代码,通过仿真测试,其性能指标达到了设计要求。 关键词:单片机;DAC;信号发生器目录1 智能仪器仪表的简介11.1智能仪器仪表简介11.2智能仪器仪表的作用12 系统设计简介22.1 函数发生器的简介22.2 设计要求22.3 设计方案论证22.4 硬件设计电路33 系统硬件设计43.1 主控电路选择43.2 显示电路53.3数模转换电路53.4时钟及复位电路63.5系统总体电路图64 设计语言及软件介绍74.1 汇编语言介绍74.2 wave6000软件介绍75系统软件设计105.1程序流程图.10 5.1.1主程序.10 5.1.2输出显示子程序115.2控制源程序.115.3调试及

4、仿真.185.4结论.19参考文献201 智能仪器仪表的简介1.1智能仪器仪表简介仪器仪表(英文:instrumentation)仪器仪表是用以检出、测量、观察、计算各种物理量、物质成分、物性参数等的器具或设备。真空检漏仪、压力表、测长仪、显微镜、乘法器等均属于仪器仪表。广义来说,仪器仪表也可具有自动控制、报警、信号传递和数据处理等功能,例如用于工业生产过程自动控制中的气动调节仪表,和电动调节仪表,以及集散型仪表控制系统也皆属于仪器仪表。1.2智能仪器仪表的作用随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信

5、息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段: 传统的分立式温度传感器 模拟集成温度传感器 智能集成温度传感器。 在当今信息化时代展过程中,各种信息的感知、采集、转换、传输和处理的功能器件已经成为各个应用领域中不可缺

6、少的重要技术工具。传感器是信息采集系统的首要部件,是实现现代化测量和自动控制的主要环节,是现代信息产业的源头,又是信息社会赖以存在和发展的物质与技术基础。可见理解和撑握传感器的知识与技术有着其极重要的意义。传感器知识面广,如果在实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节的局面。任随书本上把单片机技术介绍得多么重要、多么实用多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会感到对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。 2 系统设计简介2.1函数发生器的简介函数发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的

7、通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。2.2 设计要求本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来

8、自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。2.3 设计方案论证方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。 方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件

9、电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。 鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。 图1 函数发生器原理结构框图2.4 硬件设计电路数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计

10、算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,硬件原理方框图如图所示:图2 函数发生器硬件原理框图3.系统硬件设计3.1主控制器选择AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值

11、开始加计数,最高位产生溢出时向CPU请求中断。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形。 如图3所示,AT89C51从P0口接收来自键盘的信号,并通过P1口输出一些控制信号,并在数码管上显示出来。图

12、3 AT89C51引脚图3.2显示电路 显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。图4显示电路3.3数模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可

13、调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。 图5数模转换电路3.4时钟及复位电路 8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图3.5所示。 电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形。图6时钟及复位电路3.5系统总体电路图图7系统总体设计图4 设计语言及软件介绍4.1 汇编语言介绍汇编大多是

14、指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。随着现代软件系统越来越庞大复杂,大量经过了封装的高级语言如C/C+、Pascal/Object Pascal也应运而生。这些新的语言使得程序员在开发过程中能够更简单,更有效率,使软件开发人员

15、得以应付快速的软件开发的要求。而汇编语言由于其复杂性使得其适用领域逐步减小。但这并不意味着汇编已无用武之地。由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。4.2 wave6000软件介绍wave6000,这个软件是南京伟福公司的单片机开发软件,一般就是用在C51单片机。不需要购买仿真器,使用软件模拟器就可以了,使用很方便的。 也支持KEILC,但最好不要在WAVE内使用C,如果想用C编写,还是用KEIL C方便。WAVE6000编译软件,采用中文界

16、面。用户源程序大小不受限制,有丰富的窗口显示方式,能够多方位、动态地展示程序的执行过程。其项目管理功能强大,可使单片机程序化大为小,化繁为简,便于管理。另外,其书签、断点管理功能以及外设管理功能等为51单片机的仿真带来极大的便利。n1.数据存储器n8051单片机数据存储器用于暂存程序执行过程中产生的数据和运算结果等。n8051单片机数据存储器也可以分为片内数据存储器和片外数据存储器。当片内数据存储器不够用时,可扩展片外数据存储器。一般情况下,片外数据存储器的容量不超过64KB。与内、外部的程序存储器不同,内部和外部数据存储器空间存在重叠(内部RAM的地址范围为00H07FH, 外部RAM的地址

17、范围为0000H0FFFFH,如图3-1所示),通过不同指令来区别。当访问内部RAM时,用MOV类指令;当访问外部RAM时,则用MOVX类指令,所以地址重叠不会造成操作混乱。n8051单片机的内部数据存储器空间共计128字节,占用00H7FH地址范围。特殊功能寄存器区也是128字节,占用80H0FFH这段空间。n片内数据存储器分成三大部分:工作寄存器区、可位寻址区、通用RAM区。n2.特殊功能寄存器n特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。n在8051单片机中设置了21个特殊功能寄存器,它们不连续地

18、分布在地址为80H-FFH的128个字节的存储空间中。n在这21个SFR中,凡是字节地址能被8整除(即16进制的地址码尾数为0或8)的11个单元均具有位寻址能力,有效的位地址共有82个。表3-3是特殊功能寄存器分布一览表。n82个有效位地址可用位地址、位符号、单元地址.位序和寄存器名.位序四种方法来表示,但一般是用位符号或寄存器名.位序来表示的。n1.51单片机指令系统n(1)指令、指令系统的概念n指令是使计算机内部执行的一种操作,提供给用户编程使用的一种命令。由构成计算机的电子器件特性所决定,计算机只能识别二进制代码。以二进制代码来描述指令功能的语言,称之为机器语言。由于机器语言不便被人们识

19、别、记忆、理解和使用,因此给每条机器语言指令赋予助记符号来表示,这就形成了汇编语言。也就是说,汇编语言是便于人们识别、记忆、理解和使用的一种指令形式,它和机器语言指令一一对应,也是由计算机的硬件特性所决定的。n指令的描述形式有两种:机器语言形式和汇编语言形式。现在描述计算机指令系统及实际应用中主要采用汇编语言形式。采用机器语言编写的程序称之为目标程序。采用汇编语言编写的程序称之为源程序。计算机能够直接识别并执行的只有机器语言。汇编语言程序不能被计算机直接识别并执行,必须经过一个中间环节把它翻译成机器语言程序,这个中间过程叫做汇编。汇编有两种方式:机器汇编和手工汇编。机器汇编是用专门的汇编程序,

20、在计算机上进行翻译;手工汇编是编程员把汇编语言指令逐条翻译成机器语言指令。现在主要使用机器汇编,但有时也用到手工汇编。5 系统软件设计5.1程序流程图本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。 系统程序主要包括主程序,输出显示子程序等程序模块。 5.1.1主程序主程序的流程图如图4.1所示,在程序开始运行之后,首先是对各模块进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合

21、,如符合,则显示其频率,不符则返回,重新判断。图8 主程序流程图5.1.2输出显示子程序如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换 器将数据转换成模拟信号,形成所需波形信号。图9输出显示程序流程图5.2 控制源程序#include <reg52.h>#include <absacc.h>#define uchar unsigned char#define DA0832 XBYTE0xffffuchar code tab13=0x3

22、f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39;uchar code num 93=0,0,1,0,3,0,0,2,9,0,2,8,0,2,7,0,2,6,0,2,5,0,2,4,0,2,3,0,2,2,0,2,1,0,2,0,0,1,9,0,1,8,0,1,7,0,1,6,0,1,5,0,1,4,0,1,3,0,1,2,0,1,1,0,1,0,0,0,9,0,0,8,0,0,7,0,0,6,0,0,5,0,0,4,0,0,3,0,0,2,0,0,1;uchar code tosin256=0x7F,0x82,0x85

23、,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD,0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7,0xD9,0xDB,0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE

24、,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,0xE0,0xDD,0xDB,0xD9,0xD7,0xD5,0xD2,0xD0,0xCD,0xCB,0xC8,0xC6,0xC3,0xC1,0xBE,0xBB,0xB8,0xB6,0xB3,0xB0,0xAD,0xAA,0xA7,0xA4,0xA1,0x9E,0x9B,0x98,0x95,0x92

25、,0x8F,0x8B,0x88,0x85,0x82,0x7F,0x7C,0x79,0x76,0x73,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x54,0x51,0x4E,0x4B,0x48,0x46,0x43,0x40,0x3D,0x3B,0x38,0x36,0x33,0x31,0x2E,0x2C,0x29,0x27,0x25,0x23,0x21,0x1E,0x1C,0x1A,0x19,0x17,0x15,0x13,0x12,0x10,0x0F,0x0D,0x0C,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03

26、,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23,0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B,0x4E,0x51,0x54

27、,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C;uchar fun=1,b=0,c=0,d=0,e=0,tl,th,flag=0;sbit P3_0=P30;sbit P3_1=P31;sbit P3_2=P32;sbit P2_7=P27;uchar de1,de2;uchar A=3;void key1(void);void key2(void);void key3(void);void delay(uchar k);void main(void)TMOD=0X01;th=0xff;tl=0x1e;TH0=

28、th;TL0=tl;ET0=1;EA=1;EX1=1;PX1=1;IT1=1;TR0=1;while(1) P3_0=0; P3_1=1; P3_2=0;if(numflag*3!=0)P1=tabnumflag*3;delay(0.01);elseP1=0;P3_0=1; P3_1=0; P3_2=0;P1=tabnumflag*3+1;delay(0.01);P1=0;P3_0=0; P3_1=0; P3_2=0;P1=tabnumflag*3+2;delay(0.01);P1=0;P3_0=1; P3_1=1; P3_2=0;P1=tabfun+9;delay(0.01);P1=0; v

29、oid delay(uchar k) /延时程序for(de1=0;de1<10;de1+) for(de2=0;de2<k;de2+);void key1(void) /键选择发波类型,1为正弦波,2为三角波,3为方波fun+;if(fun=4)fun=0x01; void key2(void) /键加大频率tl+=0x00;if(tl>0x1e)tl=0x01;if(flag>0)flag-;elseflag=30;void key3(void) /键减小频率if(th>0x00)th-=0x1;if(flag<30)flag+;else flag=0;

30、void time0_int(void) interrupt 1 /中断服务程序 TR0=0; if(fun=1) DA0832=tosinb/4*A; /正弦波 delay(flag) ; b+; else if(fun=2) /三角波 if(c<128) DA0832=c*2/4*A; delay(flag); else DA0832=(255-c)*2/4*A; delay(flag); c+; else if(fun=3) / 方波 d+; if(d<=128) DA0832=0x00; delay(flag); else DA0832=0xff/4*A; delay(fl

31、ag); TH0=th;TL0=tl;TR0=1;void int1 (void) interrupt 2 /int1中断服务程序 if(P2!=0xff) delay(flag);if(P2=0xff) return; if(P2=0xef) key1(); if(P2=0xdf) key2(); if(P2=0xbf) key3();HEX输出文件。5.3 调试及仿真经软件调试-仿真器proteus调试通过,并烧录芯片,得到所要求的设计结果。如图5.4试验成功。(1)正弦波仿真图: 图10函数发生器仿真图(2)方波仿真图:图11函数发生器仿真图(3)三角波仿真图:图12函数发生器仿真图5.4结 论课程设计是培养

温馨提示

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

评论

0/150

提交评论