函数信号发生器+(1)_第1页
函数信号发生器+(1)_第2页
函数信号发生器+(1)_第3页
函数信号发生器+(1)_第4页
函数信号发生器+(1)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、函数信号发生器制作队员: 班级: 摘要:本次作品是一个基于单片机设计的函数信号发生器。函数信号发生器的设计方法有多种,利用单片机设计的函数信号发生器具有编程灵活,功能更以扩充等实际的优点。利用单片机设计的函数信号发生器能够产生正弦波,锯齿波,三角波,方波,并实现对频率和占空比的调节,以及液晶屏显示波形名称和波形频率,波形的切换和频率的调节以及占空比的改变都可以用按键实现。在编程语言上,我们选择自身比较熟悉的C语言,这样在后期波形的调试及与硬件衔接方面更容易发挥出自身优势。经过设计及后期长时间的调试,考虑设计的所有功能均已实现。关键词:单片机,函数发生器,C语言第一章:函数信号发生器的设计设计一

2、个基于单片机的函数信号发生器,该函数信号发生器可以输出四种波形,有正弦波,锯齿波,三角波,方波。在此基础上进一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波形频率。一 课程设计的目的:1、巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决实际课题设计的能力。2、培养针对课题需要,选择和查阅有关手册、图表及文献资料的能力,提高组成系统、编程、调试的动脑动手能力。3、通过对课题设计方案的分析、选择、比较,熟悉运用单片机系统开发、软硬件设计的方法内容及步骤。4、掌握DAC0832,LM324,74LS21的接口电路,及使用方法。5、熟悉掌握函数信号发生器的工作原理。

3、二 课程设计要求:1、 熟悉组成系统中的实验模块原理,画出实验原理图。2、 写出完整的设计任务书:课题的名称、系统的功能、硬件原理图、软件框图、元件清单、程序清单、参考资料。3、输出几种波形,实现对频率和占空比的调节,以1HZ作为步进进行调节。第二章:设计方案一 系统主要功能该函数信号发生器可以输出四种波形,有正弦波,锯齿波,三角波,方波。在此基础上进一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波形频率。二 系统硬件构成及功能函数信号发生器的设计总体框图如图所示,主要有单片机AT89S52,电源,键盘模块,LCD1602显示模块构成。按案件模块:由5个复位开关与74LS21

4、组成的系统通过对单片机传输中断信号来实现波形切换及频率和占空比的调节。显示模块:用LCD1602,分行显示波形类型和波形频率的显示。电源模块:电源模块有220V市变电压经变压,整流,稳压得到+ -5V, + -12V的电压,维持系统正常工作。系统的总体框图如图1所示:键盘显示控制器显示模块键盘模块波形输出模块电源主控器AT89S52图1系统总体框图2.1 AT89S52单片机及其说明(1)AT89S52的引脚图如图2所示图2 AT89S52引脚图(2)管脚说明 低频信号发生器采用AT89S52单片机作为控制核心,其内部组成包括:一个8位的微处理器CPU及片内振荡器和时钟产生电路,但石英晶体和微

5、调电容需要外接;片内数据存储器RAM低128字节,存放读/写数据;高128字节被特殊功能寄存器占用;片内程序存储器4KB ROM;四个8位并行I/O(输入/输出)接口P3 -P0,每个口可以用作输入,也可以用作输出;两个定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口。VCC:供电电压。GND:接地。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允

6、许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出

7、现。EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。AT89S52 单片机外部有32个端口可供用户使用。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在F

8、IASH编程时,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口当

9、用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如下所示:    口管脚 备选功能P3.0 RXD(串

10、行输入通道)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(外部数据存储器读选通)(3)AT89S52的晶振及其连接方法 CPU工作时都必须有一个时钟脉冲。有两种方式可以向AT89S52提供时钟脉冲:一是外部时钟方式,即使用外部电路向AT89S52提供时钟脉冲,见图3(a);二是内部时钟方式,即使用晶振由AT89S52内部电路产生时钟脉冲。一般常用第二种方法,其电路见图3(b)。89S52XTAL2XTAL189S52XT

11、AL2XTAL1悬空外部时钟信号C1C2X(a)外部时钟方式(b)内部时钟方式图3 AT89S52的时钟脉冲X一般为石英晶体,其频率由系统需要和器件决定,在频率稳定度要求不高时也可以使用陶瓷滤波器。一般来说,使用石英晶体时,C1=C2=30pF。使用陶瓷滤波器时,C1=C2=47pF。(4)AT89S52的复位 复位是单片机的初始化操作,其主要的作用是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作失误使系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。除使PC归零外,复位操作还对其他一些专用寄存器有影响,它们的复位

12、状态如表1所示。表1 复位后的内部寄存器状态寄存器复位状态寄存器复位状态 PC0000H TMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0-P30FFHSCON00HIP(xxx00000)SBUF(xxxxxxxx)IE(0xx00000)PCON(0xxx0000)另外,复位操作还对单片机的个别引脚有影响,例如会把ALE和PSEN变成无效状态,即使ALE=0,PSEN=1.RST变成低电平后,退出复位状态,CPU从初始状态开始工作。AT89S52复位操作有3种方式:上电复位、上电按钮复位和系统复位。

13、上电复位电路如图4所示。对于CMOS型单片机因RST引脚的内部有一个拉低电阻,故电阻R可不接。单片机在上电瞬间,RC电路充电,RST引脚端出现正脉冲,只要RST端保持两个机器周期以上的高电平,就能使单片机有效地复位。当晶体振荡频率为12MHz时,RC的典型值为C=10uF,R=8.2K欧姆。简单复位电路中,干扰信号易串入复位端,可能会引起内部某些寄存器错误复位,这时可在RST引脚上接一去耦电容。通常因为系统运行等的需要,常常需要人工按钮复位,复位电路如图2.5所示,其中R2>>R1,只需将一个常开按钮开关并联于上电复位电路,按下开关一定时间就能使RST引脚端为高电平,从而使单片机复

14、位。RST AT89S52RST 89S52+5VCR+5VR1R2C图4 上电复位电路 图5 上电按钮复位电路2.2 资源分配晶振采用12MHZ。P1口的P1.0-P1.4分别与四个按键连接,分别控制波形切换、频率加、频率减,占空比加,占空比减。P2口与DAC0832的D0-D7数据输入端相连。P3口用来控制DAC0832的输入寄存器选择信号CS。2. 3 D/A转换模块部件DAC0832芯片原理管脚功能介绍(如图6所示)图6 DAC0832管脚图DI7DI0:8位的数据输入端,DI7为最高位。ILE:数据锁存允许控制信号输入线,高电平有效。CS:选片信号输入线(选通数据锁存器),低电平有效

15、。WR1:数据锁存器写选选通输入线,负脉冲有效,由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变化,LE1的负跳变时将输入数据锁存。XFER:数据传输控制信号输入线,低电平有效,负脉冲有效。WR2:DAC寄存器选通输入线,负脉冲有效,由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。IOUT1:模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当 DAC寄存器中数据全为0时,输出电流为0。IOUT2:模拟电流输出端2, I

16、OUT2与IOUT1的和为一个常数,即IOUT1IOUT2常数。RFB:反馈电阻引出端,DAC0832内部已经有反馈电阻,所以 RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10-10)V。VREF端与D/A内部T形电阻网络相连。Vcc:芯片供电电压,范围为(+5+15)V。AGND:模拟量地,即模拟电路接地端。DGND:数字量地。2.4 外部控制模块部件 74LS2174LS21为四输入双与门A1,B

17、1,C1,D1为第一个与门的输入,Y1为第一个与门的输出。A2,B2,C2,D2为第一个与门的输入,Y2为第一个与门的输出。在此系统中用来给单片机提供中断信号。2.5 放大部分 LM324LM324引脚图(管脚图) LM324引脚图简介: LM324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V

18、-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。参数描述: 运放类型:低功率 放大器数目:4 带宽:1.2MHz 针脚数:14 工作温度范围:0°C +70°C 封装类型:SOIC 3dB带宽增益乘积:1.2MHz 变化斜率:0.5V/s 器件标号:324 器件标记:LM324AD 增益带宽:1.2MHz 工作温度最低:0°C 工作温度最高:70°C 放大器类型:低功耗 温度范围:商用 电源电压 最大:32

19、V 电源电压 最小:3V 芯片标号:324 表面安装器件:表面安装 输入偏移电压 最大:7mV 运放特点:高增益频率补偿运算 逻辑功能号:324 额定电源电压 :+15V LM324的特点: 1.短路保护输出 2.真差动输入级 3.可单电源工作:3V-32V 4.低偏置电流:最大100nA 5.每封装含四个运算放大器。 6.具有内部补偿的功能。 7.共模范围扩展到负电源 8.行业标准的引脚排列 9.输入端具有静电保护功能2.6 系统总体原理图 见附录3三 系统的软件构成及功能3.1系统主程序设计3.2 中断程序设计3.3正弦波程序设计3.4 三角波程序设计3.5锯齿波程序设计3.6方波程序设计

20、附录1元器件清单元件名称数量备注AT89S51174LS211LM3241电阻310k开关5复位开关排阻14.7K液晶显示屏1LCD1602滑动变阻器110K晶振112MHZ 附录2 程序清单#include<reg51.h>unsigned char i,sqar_num=128; /最大值100,默认值50unsigned char cho=0; /0:悬空 1:正弦波 2:方波 3:三角波 4:锯齿波 unsigned char num=0;unsigned char TIME0_H=0xff,TIME0_L=0xd9; /定时器0的初值设置;全局变量.对应正弦波,锯齿波50

21、HZsbit chg= P10; /三角波100Hz.sbit freq_u=P11;sbit freq_d=P12;sbit duty_u=P13;sbit duty_d=P14;sbit cs =P37;bit flag=0;unsigned int FREQ=50;/初始化频率,50HZsbit rs=P35;sbit lcdcs=P30;unsigned char TempBuffer7;unsigned char value1="Frequency:"void write_command(unsigned char);void write_data(unsigne

22、d char );void aa();void bb();void cc();void dd();void ee();void delay(unsigned int ms)unsigned int i,j;for (j=0;j<ms;j+)for (i=0;i<120;i+); unsigned char code a="wave from:"unsigned char code aa1=" sine "unsigned char code bb1=" square"unsigned char code cc1="

23、; sawtho"unsigned char code dd1=" trianl"unsigned char code ee1=" choice"unsigned char code sin_num= 0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,4,4,4,5,5,6,6,7,7,8,8,9,9, 10,10,11,12,12,13,14,15,15,16,17,18,18,19,20,21,22,23,24,25,25,26,27,28,29,30,31,32,34,35,36,37, 38,39,40,41,

24、42,44,45,46,47,49,50,51,52,54,55,56, 57,59,60,61,63,64,66,67,68,70,71,73,74,75,77,78, 80,81,83,84,86,87,89,90,92,93,95,96,98,99,101,102,104,106,107,109,110,112, 113,115,116,118,120,121,123,124,126,128,129,131, 132,134,135, 137, 139,140,142,143,145,146,148, 149,151,153,154,156,157,159,160,162,163,165

25、, 166,168,169,171,172,174,175,177,178,180,181, 182,184,185,187,188,189,191,192,194,195,196,198,199,200,201,203,204,205,206,208,209,210,211,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,230,231,232,233,234, 235,236,237,237,238,239,240,240,241,242,243,243,244,245,245,246, 246,247

26、,247,248,248,249,249,250,250,251,251, 251,252,252,253,253, 253,253,254,254,254,254,254,255,255,255,255, 255,255,255,255,255;/调节部分频率void freq_ud(void) unsigned int temp; if(freq_d=0) FREQ-; else if(freq_u=0) FREQ+; if(cho=2|cho=4) /锯齿波256次中断一周期,特殊处理下。否则他的频率是100(+-)n*2Hz. temp=0xffff-3906/FREQ; /方波,三角

27、波默认为100hz,切换后频率也为50HZ 65336-106/(256*FREQ) TIME0_H=temp/256; TIME0_L=temp%256; else if(cho=1|cho=3)/正弦波 锯齿波默认周期50hz 65536-106/(512*FREQ) temp=0xffff-1953/FREQ; TIME0_H=temp/256; TIME0_L=temp%256; /调节部分方波的占空比void duty_ud(void) /方波也采用512次中断构成一个周期。 if(duty_d=0&&sqar_num>0) sqar_num-; else if

28、(duty_u=0&&sqar_num<255) sqar_num+;/波形发生函数void sint(void) if(!flag) cs=0;P2=sin_numnum+;cs=1;if(num=0)num=255;flag=1; else if(flag) cs=0;P2=sin_numnum-;cs=1; if(num=255)num=0;flag=0; void square(void) if(i+<sqar_num) cs=0;P2=0XFF;cs=1;elsecs=0;P2=0X07;cs=1;void triangle(void) cs=0;P2=n

29、um+;cs=1;void stw(void) if(flag) cs=0;P2=num+;cs=1;if(num=0)num=255;flag=1; else if(flag) cs=0;P2=num-;cs=1; if(num=255)num=1;flag=0; /1602显示开始void write_command(unsigned char command)rs=0;P0=command;lcdcs=1;lcdcs=0;void write_data(unsigned char data0)rs=1;P0=data0;lcdcs=1;lcdcs=0;void init_1602()de

30、lay(15);write_command(0x38);delay(5);write_command(0x0c);delay(5);write_command(0x06);delay(5); /1602显示结束/*频率值转换为字符串*/void temp_to_str() TempBuffer0=FREQ/1000+'0' /千位 TempBuffer1=FREQ%1000/100+'0' /百位 TempBuffer2=FREQ%1000%100/10+'0'/十位 TempBuffer3=FREQ%1000%100%10+'0'

31、;/个位 TempBuffer4='H' TempBuffer5='Z' TempBuffer6='0'/*频率显示*/void show_frequency()unsigned char i; /init_1602();/初始化lcd write_command(0x8a);/液晶显示位置 temp_to_str(); /*for (i=0;i<sizeof(value1)-1;i+)write_data(value1i);delay(5);*/ for (i=0;i<sizeof(TempBuffer)-1;i+)write_da

32、ta(TempBufferi);delay(5); void main() TMOD=0X01; TH0=0xff; TL0=0xd9; IT0=1; /设置中断触发方式,下降沿 EA=1; EX0=1; ET0=1; IP=0X01; /键盘中断级别高 init_1602();/初始化lcd write_command(0x80);/液晶显示位置 delay(5); for (i=0;i<sizeof(value1)-1;i+)write_data(value1i);delay(5); write_command(0x80+0x40);/液晶显示位置 delay(5); for (i=0;i<10;i+)write_data(ai);delay(5);ee(); TR0=1; while(1) show_frequency();/按键中断处理程序。void it0() in

温馨提示

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

评论

0/150

提交评论