基于51单片机的简易函数信号发生器的设计与分析_郭辉
- 格式:pdf
- 大小:2.25 MB
- 文档页数:3
专业方向课程设计报告设计课题:信号发生器的设计设计时间:2012年06月6日信号发生器的设计摘要:本文以STC89C51单片机为核心设计了一个低频函数信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。
波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
介绍了波形的生成原理、硬件电路和软件部分的设计原理。
关键词:低频信号发生器; 单片机;D/A转换1设计要求设计一个能产生方波、三角波、梯形波、锯齿波并且频率、幅度可调的信号发生器。
发挥部分:作品还能产生正弦波。
2系统概述2.1.1波形产生方案采用AT89C51单片机和DAC0832数模转换器生成波形,加上一个低通滤波器,生成的波形比较纯净。
它的特点是可产生任意波形,频率容易调节,频率能达到设计的500HZ 以上。
2.1.2改变幅度方案:方案一:可以将送给DA的数字量乘以一个系数,这样就可以改变DA输出电流的幅度,从而改变输出电压;但是这样做有很严重的问题,单片机在做乘法运算时需要很长的时间,这样的话输出波形的频率就会很低;并且该方案的输出电压做不到连续可调,当DA的输入数字量比较小时,输出的波形失真就会比较严重。
方案二:将输出电压通过一个运算放大器的放大。
这样还有个优点是幅度连续可调。
经比较,方案二既可满足课程设计的基本要求,并且电路也挺简单。
2.2工作原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。
89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如图2.2所示。
课程设计任务书指导教师:2012 年12 月17 日3目录目录 (2)1.系统设计 (5)1.1设计要求 (5)1.2方案设计与论证 (5)1.2.1 信号发生电路方案论证 (5)1.2.3 显示方案论证 (6)1.2.4键盘方案论证 (6)1.3总体系统设计 (6)1.4硬件实现及单元电路设计 (6)1.4.1单片机最小系统的设计 (7)1.4.2 波形产生模块设计 (7)1.4.3 显示模块的设计 (8)1.4.4 键盘显示模块的设计 (8)1.5 软件设计流程 (9)2.输出波形的种类与频率的测试 (10)2.1、测量仪器及测试说明 (10)2.2测试过程 (10)2.3、测试结果 (11)3.设计心得及体会 (11)参考文献 (11)41.系统设计经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
1.1、设计要求1)、利用单片机采用软件设计方法产生三种波形2)、三种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其平率1.2方案设计与论证1.2.1 信号发生电路方案论证方案一:通过单片机控制D/A,输出三种波形。
此方案输出的波形不够稳定,抗干扰能力弱,不易调节。
但此方案电路简单、成本低。
方案二:使用传统的锁相频率合成方法。
通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。
此方案,电路复杂,干扰因素多,不易实现。
方案三:利用MAX038芯片组成的电路输出波形。
MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。
但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
/****************简易信号发生器****************************程序功能:输出正弦波、锯齿波、方波、三角波涉及芯片:TLC5615**********************************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit din=P3^0;sbit scl=P3^1;sbit cs1=P3^2;sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;//sbit w2= P1^0;uchar code sine_tab[256]={//输出电压从0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab, 0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4, 0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,//输出电压从最大值到0(正弦波1/4部分)0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba, 0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d, 0x89,0x86,0x83,0x80,//输出电压从0到最小值(正弦波1/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55, 0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b, 0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e, 0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,//输出电压从最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20, 0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45, 0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72, 0x76,0x79,0x7c,0x80};uchar bdata date; //位寻址sbit date7=date^7;sbit date6=date^6;sbit date5=date^5;sbit date4=date^4;sbit date3=date^3;sbit date2=date^2;sbit date1=date^1;sbit date0=date^0;void delay(uint t){while(t--);}void write_sip5615(uchar k) {date=k;din=date7;scl=0;scl=1;din=date6;scl=0;scl=1;din=date5;scl=0;scl=1;din=date4;scl=0;scl=1;din=date3;scl=0;scl=1;din=date2;scl=0;scl=1;din=date1;scl=0;scl=1;din=date0;scl=0;}void write_5615(uint k){k<<=2;cs1=0;write_sip5615(k>>8);//送高八位write_sip5615(k);//送低八位cs1=1;}void main(){uint k1=0,k2=0,k3=0,k4=0,i=0,j=0,x=0,z,p;while(1){/* w2=0;delay(500);w2=1;delay(500); */if(key1==0)//按键1检测{k1=1;k2=0,k3=0,k4=0;while(!key1);}if(key2==0) //按键2检测{k2=1;k3=0,k1=0,k4=0;while(!key2);}if(key3==0)//按键3检测{k3=1;k1=0,k2=0,k4=0;while(!key1);}if(key4==0)//按键4检测{k4=1;k1=0,k2=0,k3=0;while(!key2);}if(k1==1)//正弦波write_5615(sine_tab[i]);i++;delay(100);if(i==256)i=0;}if(k2==1)//锯齿波{write_5615(j);j++;delay(100);if(j==250)j=0;}if(k3==1)//方波(次处用单片机的I/O效果更好){write_5615(10);delay(10000);write_5615(200);delay(10000);}if(k4==1)//三角波{for(z=0;z<301;z++){delay(50);write_5615(z);if(z==300){for(p=300;p>0;p--){if(p==0)break;write_5615(p);delay(50);}}}}}}。
基于单片机的函数信号发生器设计设计基于单片机的函数信号发生器是一种能够产生各种波形信号的电子设备。
它利用单片机控制并产生不同频率、幅度和相位的信号,可以应用于实验室教学、科研实验、电子设备测试等领域。
本文将详细介绍基于单片机的函数信号发生器的设计原理、硬件实现、软件设计和功能实现等方面。
设计原理函数信号发生器的基本原理是使用振荡电路产生基准信号,再通过放大和滤波电路得到所需频率和幅度的信号。
传统的信号发生器采用模拟电路实现,如RC振荡器和多谐振荡器等。
而基于单片机的信号发生器则利用单片机高度集成的特点,通过软件控制实现信号的产生。
硬件实现振荡电路可以采用单片机内部的定时器/计数器模块来实现。
通过合理设置定时器的工作模式、时钟频率和计数值,可以产生所需的频率信号。
放大和滤波电路用于将振荡电路产生的小幅度信号放大到所需的幅度,并进行滤波处理,消除杂散和谐波。
AD转换电路用于将模拟信号转换为数字信号,以供单片机进行处理和输出。
可以采用单片机内部的ADC模块或外部的ADC芯片来实现。
软件设计单片机的驱动程序用于初始化相关外设,如定时器、IO口和ADC等,并提供相应的读写函数接口。
信号发生器的控制程序通过设置定时器的工作模式和时序控制,生成不同频率和波形的信号。
通过ADC转换获得外部设置的幅度参数,并通过PWM输出产生所需的幅度信号。
功能实现波形选择功能通过软件控制输出不同类型的波形信号,如正弦波、方波、三角波、锯齿波等。
频率调节功能通过改变定时器的工作模式和时钟频率,实现信号频率的调节。
可以设置不同的频率范围和分辨率,满足不同应用的需求。
幅度调节功能通过ADC转换获取外部设置的幅度参数,并通过PWM输出产生所需的幅度信号。
可以设置不同的幅度范围和分辨率,实现信号幅度的调节。
相位调节功能通过改变定时器的时序控制,实现信号相位的调节。
可以设置不同的相位范围和分辨率,满足不同实验或测试的需求。
总结基于单片机的函数信号发生器是一种功能强大、灵活性高的电子设备。
基于51单片机的函数发生器以STC89C51单片机为核心设计了一个低频函数信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。
波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
介绍了波形的生成原理、硬件电路和软件部分的设计原理。
本系统可以产生最高频率798.6HZ的波形。
该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。
关键词:低频信号发生器;单片机;D /A转换;一.设计任务设计一个由单片机控制的信号发生器。
运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。
信号发生器所产生的波形的频率、幅度均可调节。
二.系统概述2.1总体方案:采用AT89C51单片机和DAC0832数模转换器生成波形,加上一个低通滤波器,生成的波形比较纯净。
它的特点是可产生任意波形,频率容易调节,频率能达到设计的500HZ以上。
性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。
将输出电压通过一个运算放大器的放大来改变幅度。
这样还有个优点是幅度连续可调。
2.2工作原理:数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。
89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如下图所示。
系统框图89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。
当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。
创新性实验研究报告实验项目名称_简易函数信号发生器四、实验内容1、运用keil软件对程序进行编写,运行程序,并进行程序修改。
2、运用protues软件进行硬件电路仿真设计。
3、将程序下载到仿真单片机中,并观测输出波形。
4、对程序进行修改,再次运行仿真软件,直到输出理想的波形。
5、仿照仿真软件进行硬件电路的焊接。
6、将程序下载到单片机,并用示波器测试输出波形。
7、对程序进行修改,直到输出满意的波形为止。
3、实验步骤1、首先打开keil软件.2、运用keil软件对程序进行编写,程序见附件。
3、打开protues软件.4、运用protues软件对硬件电路进行设计。
9C51单片机是该信号发生器的核心,具有2个定时器,32个并行I/O口,1个串行I/O口,5个中断源。
由于本设计功能简单,数据处理容易,数据存储空间也足够,因为我们采用了片选法选择芯片,进行芯片的选择和地址的译码。
在单片机最小最小系统中,单片机从P1口接收来自键盘的信号,并通过P0口输出控制信号,通过DA转换芯片最终由示波器显示输出波形。
单片机引脚分配如下:�XTAL1,XTAL2:外接晶振,产生时钟信号。
�RST:复位电路;�P2口:8位数字信号输出输出,外接DAC0832;�P3.6口和P3.7口:DAC0832的时钟信号;单片机模块单片机输出的是数字信号,因为要得到模拟信号的波形就必须对其进行数模转换。
我们采用了DAC0832数模转换器,该芯片具由8位输入锁存器、8位DAC寄存器、8位D/A转换器及转换控制电路四部分构成。
由于其输出为电流输出,因为外加运算放大器LM324使之转换为电压输出。
最后通过示波器显示输出的波形。
数模转换模块运放模块整体硬件电路图五、实验结果与分析1、实验现象、数据记录仿真波形2、对实验现象、数据及观察结果的分析与讨论:经过观察调试,再观察,再调试,最终输出的波形较为理想。
此次试验经过一系列的调试,最终输出的波形为正弦波、方波、三角波。
基于单片机的函数信号发生器设计引言:函数信号发生器是一种能够产生各种不同波形的仪器,广泛应用于电子实验、仪器仪表测试等领域。
传统的函数信号发生器通常由模拟电路实现,但使用单片机来设计函数信号发生器具有灵活性高、可编程性强的优点。
本文将介绍一种基于单片机的函数信号发生器的设计。
一、设计原理单片机函数信号发生器的设计基于数字信号处理技术,通过使用单片机的计时器和IO口来产生各种不同形状和频率的波形。
其主要步骤如下:1.选择适当的单片机选择一款拥有足够IO口和计时器功能的单片机作为控制核心。
可以使用常见的单片机如ATmega16、STM32等。
2.设计时钟电路通过外部晶振或者内部时钟源,提供稳定的时钟信号。
3.波形生成算法选择合适的波形生成算法,根据算法设计相应的程序来生成正弦、方波、三角波等不同波形。
4.输出接口设计设计输出接口,可以使用模拟输出电路将数字信号转化为模拟信号输出到外部设备,也可以使用DAC芯片来实现模拟输出。
二、硬件设计1.单片机选型在选择单片机时,需要考虑到所需的IO口数量、计时器数量和存储器容量等因素。
对于初学者来说,可以选择ATmega16单片机,它拥有足够的IO口和计时器资源。
2.时钟电路设计为了使单片机能够稳定工作,需要提供合适的时钟信号。
可以使用外部晶振电路或者内部时钟源。
同时,还需要添加滤波电路来排除干扰。
3.输入电路设计如果需要通过键盘或者旋钮来调节频率和幅度等参数,可以设计相应的输入电路。
可以使用AD转换器来将模拟信号转化为数字信号输入到单片机。
4.输出电路设计为了将数字信号转化为模拟信号输出到外部设备,可以使用RC电路或者声音音箱等输出装置。
三、软件设计1.程序框架设计设计程序框架,包括初始化配置、波形生成循环、参数调整等部分。
2.波形生成算法编写根据所选的波形生成算法,编写相应的程序代码。
可以使用数学函数来生成正弦波、三角波等形状,也可以采用查表法。
3.输入参数处理根据设计要求,编写处理输入参数的程序代码,实现参数调整、频率设置等功能。
基于51单片机的DDS函数信号发生器的设计
本文介绍基于51单片机的DDS函数信号发生器的设计。
系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,通过程序设计方法产生锯齿波、正弦波、三角波、矩形波四种波形,通过按键来控制四种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及频率值。
总体系统设计
该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。
将设计任务分解为按键电路、液晶显示电路等模块。
下图为系统的总体框图
总体方框图
硬件实现及单元电路设计
振荡电路
单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,。
基于51单片机的函数信号发生器
一、任务
设计并制作一台基于51单片机的函数信号发生器,使之能产生正弦波、方波和三角波信号,且不能使用专用集成函数发生器芯片。
二、要求
系统框图:
1.基本要求
1)信号发生器能产生正弦波、方波和三角波三种周期性波形;
2)输出信号频率在100Hz~1kHz范围内可调;
3)输出信号波形无明显失真;
2.发挥部分
1)将输出信号频率范围扩展为10Hz~10kHz,输出信号频率可分段调节:在10Hz~
10kHz范围内步进间隔为100Hz;
2)在1k 负载条件下,输出正弦波信号的电压峰-峰值V opp在0~5V范围内即可;
3)可实时显示输出信号的类型、幅度、频率和频率步进值;
4)其他。
三、说明
设计报告正文应包括系统总体框图、核心电路原理图、主要流程图和主要的测试结果。
完整的电路原理图、重要的源程序和完整的测试结果可用附件给出。
四、评分标准
注:请大家于五一收假的晚上之前把你们所需要的元件清单拿过来,我们好统一购买元器件。
基于单片机函数信号发生器的设计摘要:本文设计的函数发生器采用STC89C51 单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和LED显示灯电路等。
电路采用AT89S51单片机和一片DAC0832数模转换器组成数字式低频信号发生器。
通过按键控制可产生方波、锯齿波、三角波、正弦波等,同时用LED 显示灯指示对应的波形。
所产生的波形幅度在一定范围内可调,波形准确并且平滑。
本文设计的函数信号发生器,它具有价格低、性能高和在低频范围内稳定性好、操作方便、体积小、耗电少等特点。
由于采用了LM324运算放大器,使其电路更加具有较高的稳定性能,性能比高。
此电路清晰,出现故障容易查找错误,操作简单、方便。
关键词:单片机;信号发生器;运放器Signal generator established on The MCU function designAbstract:Function generator of this design uses STC89C51 microcontroller as the control core, the external D/A conversion circuit (DAC0832), op amp circuit (LM324), keyboard and LED display circuit etc.. The circuit uses AT89S51 microcontroller and a DAC0832 DAC digital low frequency signal generator. Through the button control can produce Fang Bo, sawtooth wave, triangle wave, sine wave, with LED display the corresponding waveform. The wave amplitude generated can be adjusted in a certain range, accurate and smooth waveform.Function signal generator is designed in this paper, it has the characteristics of low price, high performance and low frequency range, good stability, convenient operation, small size, less power consumption etc.. Due to the adoption of the LM324 operational amplifier, the circuit stability has more high, high performance. This circuit is clear, the fault is easy to find the error, simple operation, convenient.Keywords: Single chip microcomputer;Signal generator;Operational amplifier目录第一章绪论 (1)1.1单片机概述 (1)1.2课题研究的社会实用意义及应用领域 (1)1.3 研究内容 (1)第二章单元电路的设计 (2)2.1系统设计 (2)2.1.1系统方案的比较 (2)2.1.2芯片选择模块 (2)2.2单片机模块及电源模块的设计 (3)2.2.1单片机模块 (3)2.3D/A转换模块 (3)2.4显示模块的设计 (5)第三章硬件电路的设计 (6)3.1系统框图 (6)3.2资源分配 (6)3.3最小单片机系统设计 (6)3.3.1STC89C51的引脚图 (7)3.3.2管脚说明 (8)3.3.3STC89C51的晶振及其连接方法 (10)3.3.4STC89C51的复位 (11)3.3.5芯片擦除 (11)3.4各部分电路原理 (12)3.4.1DAC0832芯片原理 (12)3.4.2LM324工作原理 (14)第四章软件设计 (15)4.1主程序流程图 (15)4.2方波程序流程图 (16)4.3三角波程序流程图 (17)4.4锯齿波程序流程图 (17)4.5 正弦波程序流程图 (18)第五章系统测试及结论 (19)5.1产生各种波形电压输出范围及频率如下: (19)5.2示波器测试的波形 (19)5.3设计与实验中应注意的问题及解决问题的措施 (20)5.3.1安装与调试 (20)5.3.2遇到的问题与解决 (20)第六章结论与心得 (22)参考文献 (23)附录1 硬件电路元件装配图 (24)附录2 模拟组装和PC板连接线图 (25)附录3 波形发生器程序 (25)第一章绪论1.1单片机概述伴随着信息技术及集成电路技术的大规模快速发展,所谓单片机就是指“CPU即中央处理器、RAM即随机存取存储器、ROM只读存储器、(I/O)即输入输出接口、定时器/计数器,串行通信接口”,和其余一些关于计算机外部电路即外围等都可以聚集在相同的一块芯片上,从而组成了单片微型计算机”[1]。
基于51单片机的简易函数信号发生器的设计与分析郭 辉(阜阳师范学院信息工程学院,安徽阜阳,236037)摘要:函数信号发生器设计与分析是单片机实践中的一重要实验。
本文采用Proteus 对函数信号发生器的原理图进行设计,并通过Keil 软件编程验证该设计的可行性,通过调节按键,该简易函数信号发生器可以正确输出正弦波、锯齿波、梯形波、矩形波,并可以通过按键对相应波形的频率进行调节,最终通过Proteus 制作出该电路的PCB 原理图。
本设计对单片机项目设计与实现具有一定的指导意义。
关键词:信号发生器;AT89C51;Proteus ;Keil ;PCB 中图分类号:TP368.1 文献标识码:BDesign and analysis of a simple function signal generator based on 51single chip microcomputerGuo Hui(College of Information Engineering,Fuyang Teachers' College,Fuyang Anhui,236037)Abstract :This paper uses the principle of figure Proteus function signal generator is designed,and the feasibility of the design is verified by Keil software programming,by adjusting the key,the simple function signal generator can output sine wave,Ju Chibo,trapezoidal wave,rectangular wave,and can be adjusted through the key corresponding to the frequency of the waveform, eventually produced by Proteus PCB principle diagram of the circuit.Keywords :signal generator;AT89C51;Proteus;Keil;PCB 0 引言Proteus 软件为英国Labcenter electronics 公司开发的EDA 工具软件。
该软件不仅具有其它EDA 工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具之一是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8086、MSP430、 Cortex、8051、AVR、ARM 和DSP 等系列处理器,在编译方面,该软件也支持IAR、Keil 和MATLAB 等多种编译器。
因此采用Proteus 作为本设计的平台即能实现相应设计的要求,又能节约设计时间与设计成本。
本文所设计的函数信号发生器作为一种常用的信号源,在生产实践、电子设计、教学试验中被广泛使用。
在Proteus软件上图1 函数信号发生器原理图DOI:10.16520/ki.1000-8519.2016.23.001进行先绘制、后仿真、最后生成PCB,符合电子电路设计的一般步骤,避免了因思考不充分造成的工程成本的不必要浪费。
1 Proteus原理图绘制1.1 总体结构。
本文以AT89C51为核心控制芯片,使用DAC0832进行模数转换,LM324为电压放大器,通过两个按键来分别控制系统输出波形的种类及输出波形的频率。
1.2 控制器芯片AT89C51。
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS、8位微处理器。
本设计采用的51芯片为40引脚的双列直插DIP封装型。
通过32个可编程I/O口对外围电路进行控制。
1.3 模数转换芯片DAC0832。
DAC0832为8位D/A转换器,转换时间为1us,工作电压+5V~+15V,如图1为DAC0832芯片操作的时序图。
从图1中可以看出,当为低电平后,数据总线上的数图2 正弦波输出波形图3 方波输出波形图4 锯齿波输出波形图5 梯形波输出波形据才开始保持有效,然后将置低电平,在置低后与稳定输出。
1.4 运算放大器LM324。
LM324内部包括有两个独立的,高增益,运算放大器,适合于电源电压范围很宽的单电源使用。
对于LM324来说其内部含有四组运算放大器,本设计只使用其中一组。
1.5 电路原理图的绘制。
整理设计思路在Proteus 中的实现步骤如下:(1)从库中选出所需器件如AT89C51、LM324、DAC0832、晶振XTAL、按键、电阻、电容。
(2)对元器件进行布局,由于P0端口驱动能力有限,因此加一排阻来提高P0端口的输出能力。
(3)连接相应线路。
经过绘制可得简易函数信号发生器原理图如图1所示。
其中电路中的器件U2为主控芯片AT89C51、U1为DAC0832、U3为LM324、U4为示波器。
按键Key1与单片机的P3.2口相接、Key2与单片机P3.3口相接。
Key1用以调节波形输出类型,Key2用来调节波形输出频率。
DAC0832具有双缓冲、单缓冲、直通三种工作模式,本次试验采用直通模式,即把ILE、、、、都设置为有效,使DAC0832内部的输入寄存器和DAC 寄存器都处于开放状态,无需控制信号。
DAC0832的输出随时跟随输入数字的变化而变化,这样只要P0端口的八位数字量变化,就直接进行DA 转换。
由图1可以看出由于接,即5V 电压,说明该D/A 的参考电压为5V,其模拟信号输出一定在(单位)内变化(D 为数字输入量,k 为一比值,与电路内部有关)。
由于DAC0832输出的是电流信号,图2中的运算放大器LM324是实现电流转换电压功能。
2 软件设计及调试输出2.1 软件思路。
本系统程序主要有三部分构成:主程序、外部中断1模块、外部中断2模块。
系统运行,主程序初始化,对外部中断1与外部中断2输出变量进行判断,根据变量判定函数信号输出波形及频率。
由硬件电路图1可知按键Key1连接单片机P3.2口,按键Key2连接单片机P3.3口。
对寄存器TCON 设置IT0=1、IT1=1,通过检测按键Key1、按键Key2是否按下,当按键Key1按下进入外部中断0对信号波形进行改变,当按键Key2按下则进入外部中断1通过延迟时间对波形的频率进行改变。
2.2 正弦波输出。
正弦波通过查表输出波形如图2所示,一个周期正弦波采样点为256个,通过按键Key2可以通过调节正弦波点之间的延迟来调节正弦波的频率。
2.3 方波输出。
方波的输出相对来说比较简单,相当于对P0输出引脚等间隔输出0x00和0xFF。
通过按键Key2调节高低电平的持续时间来调节信号的输出频率.方波输出波形如图3所示。
2.4 锯齿波输出。
对8位DAC0832来讲,锯齿波可以通过给DAC0832输入端子依次输入从0到255按比例增长的整数,到达255后置0再从0开始到255按比例进行增长,循环往复。
本设计输出锯齿波如图4所示。
通过按键Key2同样可以改变波形输出频率。
2.5 梯形波输出。
梯形波的输出可以通过对DAC0832输入依次从0增长到255,保持一段时间再由255衰减到0,循环往复,梯形波的输出波形如图5所示。
2.6 4PCB 生成。
Proteus 既能实现电路仿真,又能生成PCB,从而进一步打印制板。
对于本设计,由于Proteus 中无元器件button 的封装,在制作PCB 前需要完善按键button 的封装信息。
经查按键技术文档,四角按键的规格为:引脚直径0.7mm,引脚间距3.4mm,尺寸大小(长与宽)6.5~7.9mm。
为按键button 添加封装,通过“工具”菜单栏下的“导出网络表到ARES”选项将本设计原理图导入到ARES 中,并分别选择Board Edge 层绘制矩形边界,选择Keepout 层绘制电气边界。
选择元器件封装并对元器件进行布局。
通过“工具”菜单栏的“设计规则管理器”选项,进行电器规则设置。
本设计为双层PCB 板。
选择在底层布线,当底层线出现交叉时通过过孔切换到顶层走线。
如图6所示为布线完成后的PCB 板。
由于Proteus 提供3D 预览效果,可以输出3D 图形如图7所示。
图6 布线完成后的PCB板图7 PCB 板的3D 输出图形3 结语从本设计不难看出,Proteus 不但具有强大的仿真功能,同时具有强大的制图功能。
本设计对采用AT89C51单片机的简易函数信号发生器的原理图进行设计,通过keil 软件与Proteus 软件进行联调,验证了设计的可行性,最后又使用Proteus 软件对该电路的PCB 进行制作,从软件方面、硬件方面均证明了该设计的可行性。
对于单片机方面的教学与实验有一定的指导意义。
参考文献[1]李娜.周成虎.函数信号发生器的设计与实现[J].吉林师范大学学报:自然科学版.2013(3):130-132.[2]乔建华.孙少飞.邢彩荣.芦丹.基于proteus 的波形发生器设计[J].太原科技大学学报.2014(2):81-85.[3]贺敬凯.刘德新.管明祥.单片机系统设计、仿真与应用[M].西安:西安电子科技大学出版社.2011:169-171.[4]张明金.基于AT89S51函数信号发生器的设计[J].机电技术.2013(3):66-68.[5]常萌.石芳.基于Altium Designer 的数码管显示电路的PCB 板设计[J].煤炭技术.2011(9):54-56.作者简介郭辉,出生年月:1987.05,性别:男,民族:汉,籍贯:安徽阜阳,当前职务:教师,当前职称:助教,学历:硕士研究生,研究方向:智能控制与智能算法。