课程设计(论文)基于单片机的函数发生器设计.doc
《课程设计(论文)基于单片机的函数发生器设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的函数发生器设计.doc(27页珍藏版)》请在三一办公上搜索。
1、摘 要函数发生器是一种多波形的信号源。它可以产生正弦波、方波、三角波、锯齿波,甚至任意波形。有的函数发生器还具有调制的功能,可以进行调幅、调频、调相、脉宽调制和VCO控制。本设计中主要利用微控制器、D/A转换器、运算放大器、数码管驱动等器件产生直流、方波、三角波、锯齿波、正弦波、脉冲等函数波形,并实现频率、幅度可调节。微控制器控制整个系统的运行,负责向D/A转化器输出数字型号、键盘操作的读取以及向数码管驱动写入命令;两个D/A转换器,其中一个控制输出信号的幅度,另一个将为控制器写入的波形数据转换成相应的模拟信号;运算放大器用在两个D/A转换器之间和第二个D/A转化器与输出之间,起到将电流信号转
2、换为电压信号以及改变电压范围的作用。关键词:函数发生器; 单片机; D/A转换目 录1 设计任务与要求1 1.1设计的原始要求1 1.2设计的具体要求12 总体方案1 2.1元器件的选择1 2.2系统总体框图设计23硬件方案2 3.1硬件模块设计23.1.1微控制器模块23.1.2 D/A转换模块33.1.3显示模块53.1.4键盘模块6 3.2 硬件系统设计64软件方案7 4.1 软件总体结构7 4.2 波形产生程序8 4.3键盘扫描程序104.3.1 主键盘扫描程序104.3.2 调幅程序104.3.3调频程序105 测试13 5.1 软件测试13 5.2 硬件测试14结论15参考文献16
3、附录161 设计任务与要求1.1设计的原始要求通过本课程设计实现一个函数发生器。通过设置可产生:方波、三角波、锯齿波、正弦波;能够显示频率,改变频率。1.2设计的具体要求A、产生波形:直流、方波、三角波、锯齿波、正弦波、脉冲。B、可以更改频率,频率范围1999Hz,分辨率1Hz。C、可以更改幅度,幅度范围09.9V,分辨率0.1V。D、显示:五位数码管、八个发光二极管显示;三个数码管显示频率,两个数码管显示幅度;六个发光二极管显示当前的波形;两个发光二极管指示当前的调节项(频率或幅度)。E、键盘:五个按键,一个用于更改波形,一个用于更改调节项,剩下的三个用于调节频率或幅度的数值。2 总体方案2
4、.1元器件的选择该函数发生器主要由四部分构成:控制部分、D/A转换部分、显示部分、键盘部分。(1) 控制部分以单片机为控制核心,本设计中选用由宏晶生产的STC89C52。其内部含有8K字节的Flash,512字节的片上SRAM,4组8位的准双向I/O口,两个16为定时器/计数器。可工作在3V或5V,工作频率040MHz。STC89C51系列单片机具有体积小,功耗低,抗静电,抗干扰,价格低廉等特点。(2) D/A转换部分使用两片DAC0832实现数字信号到模拟信号的转换。DAC0832是8分辨率的D/A转换集成芯片,此D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电
5、路构成。这种DA芯片价格低廉、接口简单、转换控制容易,在单片机应用系统中应用广泛。运算放大器选择LM324, 它是价格便宜的带有真差动输入的四运算放大器。(3) 显示部分使用MAX7219驱动数码管和LED的驱动。MAX7219由Maxim制造,它是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。(4)键盘部分由于用到的建的个数较少,故采用若干个按键组
6、成独立式键盘,独立式键盘扫描方便,效率较高。2.2 系统框图设计系统有微控制器STC89C52、DAC0832、MAX7219、键盘等部分共同组成,其系统框图如下:3 硬件方案3.1硬件模块设计3.1.1微控制器模块(1)晶振电路由于STC89C51系列单片机内部有时钟电路,所以本设计中使用24MHz的无源晶振和两个30pF的电容组成晶振电路。(2)复位电路实现上点复位和手动复位。3.1.2 D/A转换模块(1)DAC0832的引脚特性 DAC0832是20引脚的双列直插式芯片。各引脚的特性如下: CS片选信号,和允许锁存信号ILE组合来决定是否起作用。 ILE允许锁存信号。 WR1写信号1,
7、作为第一级锁存信号,将输入资料锁存到输入寄存器(此时, 必须和、ILE同时有效)。 WR2写信号2,将锁存在输入寄存器中的资料送到DAC寄存器中进行锁存(此时,传输控制信号必须有效)。 XFER传输控制信号,用来控制 。 DI7DI08位数据输入端。 IOUT1模拟电流输出端1。当DAC寄存器中全为1时,输出电流最大,当DAC寄存器中全为0时,输出电流为0。 IOUT2模拟电流输出端2。IOUT1+IOUT2=常数。 RFB反馈电阻引出端。DAC0832内部已经有反馈电阻,所以,RFB端可以直接接到外部运算放大器的输出端。相当于将反馈电阻接在运算放大器的输入端和输出端之间。 VREF参考电压输
8、入端。可接电压范围为10V。外部标准电压通过VREF与T型电阻网络相连。 VCC芯片供电电压端。范围为+5V+15V,最佳工作状态是+15V。 AGND模拟地,即模拟电路接地端。 DGND数字地,即数字电路接地端。(2)DAC0832的工作方式A、单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。 B、双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。 C、直通方式。直通方
9、式是资料不经两级锁存器锁存,即 CS,XFER ,WR1 ,WR2 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换本设计中采用单缓冲方式,将WR2、XFER接地,CS、WR1接片选MCU的相关管脚以接收片选信号。DAC0832的输出是电流信号,运算放大器U6的作用是将DAC0832(1)输出的电流信号转换为电压信号Vout1=-Vref1*(DAC0832(1)的输入数字量/256),此输出即为DAC0832(2)的参考电压。系统的信号输出是运算放大器U7的输出Vout=-Vref2*(2*D
10、AC0832(2)的输入数字量-255)= Vref1*(DAC0832(1)的输入数字量/256)* (2*DAC0832(2)的输入数字量-255)3.1.3显示模块显示模块中用一片MAX7219驱动五位数码管和八个LED。MAX7219的管脚特性DIN串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。 DIG 0DIG7八个数据驱动线路置显示器共阴极为低电平。关闭时此管脚输出高电平。 GND地线。LOAD载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。 CS 片选端。该端为低电平时串行数据被载入移位寄存器。连续数据的后16位在CS端的上升沿时被锁定。 CLK时钟序列
11、输入端。最大速率为 10MHz。在时钟的上升沿,数据移入内部移位寄存器。下降沿时,数据从DOUT端输出。 SEG ASEG E、DP7 段和小数点驱动,为显示器提供电流。当一个段驱动关闭时,此端呈低电平。 SET通过一个电阻连接到VDD 来提高段电流。 V+正极电压输入,+5V。 DOUT串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有 效。当使用多个MAX7219时用此端方便扩展。为了方便作图在此处以一位数码管代替8个LED。在实际的电路焊接过程中要在MAX7219的VCC和GND之间加一个104去耦电路以提高MAX7219的抗干扰性能。3.1.4键盘模块由于本设计中的按键
12、较少,故采用独立式键盘。3.2硬件系统设计系统各部分的连接如下图所示,由于STC89C51系列的单片机的P0端口内部没有上拉电阻,为提高其输出信号的强度必须要在P0端口接排阻。4 软件方案4.1 软件总体结构系统通过控制MCU向DAC写数据改变输出波形,通过设置时钟中断来达到定时的目的。正常工作时,系统不断地执行扫描键盘的程序,当中断到来时,进入终端服务程序改变DAC中寄存器的值,达到改变系统输出电平的目的。另外,直流信号的输出电平不变,故当输出是直流信号时无需打开时钟中断。正常程序流程图中断服务程序流程图4.2 波形产生程序当用于产生波形的数据需要临时计算且计算量比较大(比如含有乘除运算)时
13、,MCU将要花较长的时间进行这些计算。在输出低频信号时不会有太大影响,而当输出信号的频率较高时MCU内部的中断间隔就比较短,会出现MCU在两个中断之间无法完成相应的计算,这将导致频率的失真。故本系统中采用查表的方法对DAC0832写数据,避免较多的乘除运算。Sin_code=128,120,112,104,96,88,81,74,66,59,53,46,40,35,29,24,20,16,12,9,6,4,2,1,0,0;正弦函数的数据表。表示输出0+Vref的25个点。JC_code=255,250,244,239,234,229,223,218,213,207,202,197,191,18
14、6,181,176,170,165,160,154,149,144,139,133,128;锯齿和三角波的数据表,表示-Vref0V的25个点。锯齿波每周期输出-Vref+Vref之间的50个点,三角波和正弦波每周期输出-Vref+Vref之间的100个点;方波每周期输出两次:-Vref和+Vref;脉冲函数输出+Vref后立即再输出0V。锯齿波、三角波、正弦波输出中所要用到的其他点可以通过将表中的数据经过简单的变换得到。设置一个标志变量count来记录当前输出数据是本周期中的第几个。其初值为99。另外本设计中使用的晶振频率为24MHz,以6T模式运行(六个时钟周期有一个机器周期),故机器周期
15、F为4MHz。16位定时器的计数初值:X=65536-N(N为计数值,N=4000000/65536=61Hz。为了让函数发生器的范围表示较低的频率,当方波的频率小于40Hz,三角波的频率小于2Hz,脉冲信号的频率小于80Hz时每周期产生100次中断,其中大多数中断不向DAC0832写数据。产生三角波和正弦波的流程图三角波流程图正弦波流程图4.3键盘扫描程序键盘扫描程序中主要有三个部分:主键盘扫描程序、调幅程序、调频程序。4.3.1 主键盘扫描程序4.3.2 调幅程序更具键盘输入向DAC0832(1)写数据,所写数据为:输入值*255/Vref1。4.3.3调频程序更改定时器计数初值部分代码:
16、switch(MODE)case 0: Fun_jieyue();break;case 1: Delay_M=50;break;case 2: Delay_M=2;break; case 5: Delay_M=100;break; default:Delay_M=1;break; count=99;timetemp=65536-(int)(40000*Delay_M/Freq+0.5);Time_TH=timetemp/256;Time_TL=timetemp%256;5 测试5.1软件测试测试软件简介:设计中利用Proteus进行软件方面的测试,Proteus软件是英国Labcenter e
17、lectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年增加还了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Ke
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 论文 基于 单片机 函数 发生器 设计
链接地址:https://www.31ppt.com/p-4193405.html