基于51单片机的信号发生器
基于51单片机的函数信号发生器

实验名称:基于8255的LED显示函数信号发生器设计一、课题内容和要求基本要求:1.用存储器或算法得到信源。
2.用DA转换器输出一函数信号(正弦、方波、三角、锯齿等,频率1000Hz)3.用数码管或LCD上将输出参数显示4.用功能键切换各信号的输出。
发挥部分:1.通过键盘,可修改输出信号的频率。
每按一次键,频率值进给或后退100Hz,频率范围100Hz~1500Hz2.按键时,蜂鸣器发出提示音,表示按键有效3.数码管或LCD显示的内容可以用频率值和周期值切换表示,周期值精确到0.01ms 动态显示格式:自定二、总体设计利用AT89S52单片机采用查表或算法产生三角波、正弦波和方波三种波形,再通过D/A 转换器DAC0832将数字信号转换成模拟信号,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示各自的频率或者周期值。
三、单元设计1.键盘扫描部分矩阵键盘电路硬件图:实验中采用8255的PA口和PC口的低四位进行键盘扫描,行由8255的PA0~PA3端口控制,列由8255的PC0~PC3端口控制,其中PA口工作在输出方式,PB口工作在输入方式。
当PA0~PA3中一个口输出低电平时,对应的行线上的电平就为0,这是当有键按下时对应的列线上就变为低电平,这时PC口上对应位就可以检测到低电平从而判断是哪个键按下。
键盘扫描流程图:第二行判断键盘扫描程序如下:SCAN:MOV DPTR,#1FFCH;PA口地址MOV A,#00HMOVX @DPTR,A; PA0~PA3输出低电平 INC DPTR;DPTR指向PC口MOVX A,@DPTR;读PC口的值ANL A,#0FH;屏蔽无用位CJNE A,#0FH,DETAIL;判断是否有低电平ACALL DELAY1;延时ACALL DELAY1AJMP SCAN;无键按下则继续扫描DETAIL:ACALL DELAY1;消抖动ACALL DELAY1MOV DPTR,#1FFCH;再判断是否有键按下MOV A,#00HMOVX @DPTR,AINC DPTRINC DPTRMOVX A,@DPTRANL A,#0FHCJNE A,#0FH,CONTINUE;有键按下则做进一步的判断 AJMP SCAN;无键按下继续扫描CONTINUE:CLR EA;有键按下驱动蜂鸣器SETB P1.7ACALL DELAY2CLR P1.7SETB EAMOV R4,#02H;扫描行数送入R4中MOV A,#0FEHLINE:MOV DPTR,#1FFCHMOV R2,A;行号送R2MOVX @DPTR,A;置PA0为低电平INC DPTRMOVX A,@DPTRANL A,#0FHCJNE A,#0FH,FIND;判断第一行是否有键按下MOV A,R2RL ADJNZ R4,LINESJMP SCAN;无键按下继续扫描FIND:MOV R3,A列号存入R3中MOV A,R2CJNE A,#0FEH,LINE2;判断是否是第一行有键按下LINE1:MOV A,R3;第一行有键按下CJNE A,#0EH,L1R2;判断是哪个按键按下L1R1:MOV R0,#01H;有波形键按下键按下MOV R1,#01H;波形标志1MOV R7,#00HCLR TR1CLR TR0SETB TR0SJMP SCANL1R2:CJNE A,#0DH,L1R3MOV R0,#01H;有波形键按下键按下MOV R1,#02H;方波标志MOV R7,#00HCLR TR0CLR TR1SETB TR1SJMP SCANL1R3:MOV R0,#01H;有波形键按下键按下MOV R1,#03H;三角波标志MOV R7,#00HCLR TR1CLR TR0SETB TR0AJMP SCANLINE2:MOV A,R3;第二行有键按下CJNE A,#0EH,L2R2L2R1:CJNE R0,#01H,NONE1;有波形时才能进行频率增减操作CJNE R6,#00H,START1;没有减到最小频率值时继续减否则减频操作失败 AJMP NONE1START1:DEC R6;减频MOV A,R6MOV DPTR,#TABLE3MOVC A,@A+DPTRMOV TH0,A;重置计数初值NONE1:AJMP DISPLAYL2R2:CJNE A,#0DH,L2R3CJNE R0,#01H,NONE2;有波形时才能进行频率增减操作CJNE R6,#0EH,START2;没有增到最大频率值时继续增否则增频操作失败 AJMP NONE2START2:INC R6;增频MOV A,R6MOV DPTR,#TABLE3MOVC A,@A+DPTRMOV TH0,A;重置计数初值NONE2:AJMP DISPLAYL2R3:CJNE A,#0BH,L2R4;显示波形周期值MOV F,#01HAJMP DISPLAYL2R4:MOV F,#00H;显示波形频率值AJMP DISPLAY2.显示部分显示部分硬件图:开发板上设置了6位8段数码管,采用动态扫描方式连接,各位数码管的A~DP互联后经拨码开关S1后由P0口控制,数码管的COM分别经拨码开关S2后由P10~P15控制。
基于51单片机信号发生器

基于51单片机的多功能信号发生器设计一、设计目的和意义随着电子技术的发展,信号发生器经常要用在各种科学技术领域和工程实践中。
选择适当的嵌入式处理器、DA转换芯片,放大器,设计出一种基于单片机的多功能信号发生器的设计,能够实现键盘控制下输出正弦波、方波、三角波等波形。
二、设计原理利用51单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。
通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分。
三、详细设计步骤1.总体框架图1 系统总体框架2.单片机最小系统设计51单片机是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图2所示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:(1) 有可供用户使用的大量I/O口线。
(2) 内部存储器容量有限。
(3) 应用系统开发具有特殊性。
图2 51单片机最小系统3.波形产生模块由单片机采用编程方法产生三种波形、通过DA 转换模块DAC0832在进过滤波放大之后输出。
图3锯齿波产生流程图锯齿波产生首先将DAC0832口地址置为4000H ,然后将00H 送入寄存器A 中,DAC0832输出A 的内容,当A 中的内容等于F0H 返回开始,当A 中的内容不为0FH 时,A 的内容累加,从而输出波形。
图4 三角波产生流程图三角波产生首先将DAC0832口地址置为4000H,通过A中数值的加1递增,当A中的内容为0FFH时,A中的内容减1递减,从而循环产生三角波。
图5 正弦波产生流程图正弦波的设计通过查表得图6方波产生流程图首先将DAC0832口地址置为4000H,通过A中内容为0时,输出对应模拟量,然后延时,当A中的内容为0FF时,同样输出对应模拟量,再延时,从而得到方波。
51单片机信号发生器

基于51单片机的波形发生器的设计摘要这个系统是基于AT89C51单片机的波形信号发生器。
使用AT89C51单片机作为控制核心,该系统由数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键电路和8位数码管等组成。
通过按键可控制方波、三角波、正弦波的产生,并且用数码管指示其对应的频率。
这个设计方法简单、性能良好,这个系统可在多种需要低频信号的场所使用,它具有良好的实用性。
关键词:8951单片机;数字模拟转换电路;运放电路;8位数码管一、设计题目分析。
1、题目分析:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。
图1:系统流程示意图2、题目要求:(1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。
(2) 用键盘控制上述三种波形(同周期)的生成。
(3) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。
(4) 系统具有显示输出波形的类型、重复频率和幅度的功能。
二、波形发生器系统设计方案1、设计思路:以AT89C51单片机作为系统的控制核心,其中P0口接DAC0832作为信号输入同时进行数模转换,P1口用来接键盘,P2口接LED显示器,由程序来控制P0口产生的波形,再由按键和按键次数控制波形的种类、频率的大小,并且能够通过按键来控制波形频率值和幅度值。
由运算放大器DAC0832来实现输出电流到电压的转换,即实现数字信号到模拟信号的转换。
另外在LED上显示实时的频率值,产生的波形在示波器显示。
2、设计框图及系统介绍:图2:框图设计3、选择合适的设计方案:方案一:采用模拟分立元件或单片函数发生器就可以产生正弦波、方波、三角波,方法简单。
通过调整外部元件也可以实现输出频率的改变,但采用模拟元器件造成元件分散性太大,从而产生的频率稳定性较差、抗干扰能力低、灵活性较差、而且精度低,不能实现任意波形转换和波形运算输出等方面自主控制功能。
基于51单片机函数信号发生器设计

课程设计任务书指导教师: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是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。
但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
(完整word版)51单片机函数信号发生器.doc

基于 51 单片机的函数信号发生器设计报告队员 1姓名:杨颉学号: 2专业:电子信息科学与技术队员 2姓名:王鼎鸿学号: 2专业:电子信息科学与技术基于 51 单片机的函数信号发生器摘要本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A 转换器 DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生10Hz—10kHz的波形。
通过键盘来控制四种波形的类型选择、拨码开关控制频率的变化,并通过液晶屏1602 显示其各自的类型以及数值,系统大致包括信号发生部分、数/ 模转换部分以及液晶显示部分三部分,其中尤其对数 / 模转换部分和波形产生和变化部分进行详细论述。
关键词:单片机 AT89S52、DAC0832、液晶 1602目录1.系统设计1.1 设计要求1.2 方案设计与论证 1.2 方案设计与论证1.2.1信号发生电路方案论证1.2.2单片机的选择论证1.2.3显示方案论证1.2.4键盘方案论证1.3总体系统设计1.4 硬件实现及单元电路设计1.4.1单片机最小系统的设计1.4.2波形产生模块设计1.4.3显示模块的设计1.4.4键盘模块的设计1.5 软件设计流程1.6 源程序2.输出波形的种类与频率的测试2.1 测试仪器及测试说明2.2 测试结果3、附录3.1参考文献3.2附图1、系统设计经过考虑,我们确定方案如下:利用AT89C52单片机采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A 转换器 DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
1.1 、设计要求1> 、利用单片机采用软件设计方法产生四种波形2)、四种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其频率1.2 方案设计与论证1.2.1信号发生电路方案论证方案一:通过单片机控制D/A,输出四种波形。
基于51单片机的简易信号发生器

/****************简易信号发生器****************************程序功能:输出正弦波、锯齿波、方波、三角波涉及芯片: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);}}}}}}。
基于51单片机的信号发生器

哈尔滨工业大学(威海)课程设计报告
图 3-3 DAC0832 与单片机的接口电路
图 3-4 键盘和单片机的连接电路图
3.6 显示电路
(1)运算放大电路 运算放大器型号为 UA741,它是一种高增益运算放大器,用于军事、工业和商
7
哈尔滨工业大学(威海)课程设计报告
业应用。这类单片硅整集成电路器件提供输出短路保护和闭锁自由运作。 运算放大器与 DAC0832 接口电路如图 3-5 所示。
信号发生器是一种经常使用的设备,若按照传统的设计方法,由纯粹的物理 器件构成,存在许多弊端,如:体积较大、重量较沉、移动不方便、信号失真较 大、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等要求。研 究设计出一种具有频率稳定、准确,波形质量好,便携性好等特点的波形发生器 来满足工业领域对信号源的要求,具有较好的市场前景。
(1)电流稳定时间 1us; (2)可单缓冲、双缓冲或直接数字输入; (3)单一电源供电(+5V~+15V); (4)低功耗,200mW。 DAC0832 结构: (1)D0~D7:8 位数据输入线,TTL 电平,有效时间应大于 90ns(否则锁 存器的数据会出错);
5
哈尔滨工业大学(威海)课程设计报告
CS
VCC
WR1 ILE(BY1/BY2)
GND
WR2
DI3
XFER
DI2
DI4
DI1
DI5
DI0
DI6
VREF
DI7
RFB
IOUT2
GND
IOUT1
20 19 18 17 16 15 14 13 12 11
U3
A
DAC0832
B OP1P
基于51单片机的信号发生器-完整电路、程序.

摘要
本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。本文介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。
2.1.2改变幅度方案:
将输出电压通过一个运算放大器的放大挺简单。
2.2工作原理
数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如下图所示。
主程序流程图
3.2.2中断服务程序:
本程序中两个外部中断分别起到了控制波形和频率的作用。在程序中还加入了消抖部分。
4.软件仿真
4.1系统仿真波形:
5设计总结
基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。通过单片机控制一个模数转换器DAC0832产生所需要的电流,然后使用运算放大器LM324可以将其电流输出线性地转换成电压输出,再将电压经过运算放大器的放大,可以得到足够幅度的信号。通过程序的控制,可以产生一系列有规律的波形。这样一个信号发生装置在控制领域有相当广泛的应用范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该模块采用了一般的键盘接口,键盘输出信号。具体为: P3.0、P3.1 波形选择,其中当 P3.0=0,P3.1=0 输出正弦波,当 P3.0=0,P3.1=1 输出锯齿波,当 P3.0=1,P3.1=0 输出方波;当 P3.0=1,P3.1=1 输出三角波。P3.2、 P3.3、P3.4 进行频率调节,P3.2=0,P3.3=0,P3.4=0 时,信号频率为 10Hz,P3.2=1, P3.3=0,P3.4=0 时,信号频率为 20Hz,P3.2=0,P3.3=1,P3.4=0 时,信号频率 为 30Hz,P3.2=1,P3.3=1,P3.4=0 时,信号频率为 40Hz,P3.2=0,P3.3=0,P3.4=1 时,信号频率为 50Hz,P3.2=1,P3.3=0,P3.4=1 时,信号频率为 60Hz,P3.2=0, P3.3=1,P3.4=1 时,信号频率为 70Hz,P3.2=1,P3.3=1,P3.4=1 时,信号频率 为 80Hz。 键盘与单片机的连接如图 3-4 所示。
本次设计的低频信号发生器,以AT89C51 单片机为核心,通过拨码开关输 入控制类型和频率的的选择,采用8位D/A 转换芯片DAC0832输出相应的波形, 同时以数码管实时显示信号相关信息。我们采用C 语言进行编程,可实现方波, 三角波,锯齿波和正弦波四种波形的产生,且波形的频率可调。
经测试该设计方案不仅在理论和实践上都能满足设计要求,而且具有很强的 可行性,线路优化,结构紧凑,性能优越。
(4)三角波:使用查表法。将三角波的一个周期(360 度)分为 256 个点, 相邻点等差,生成数组。反复输出该数组数据到 DAC0832,就可以在系统输出端 得到想要的三角波。
该波形发生器以AT89C51单片机作为整个系统的控制核心,应用其强大的接 口功能,构成整个波形发生控制的硬件系统。通过C 语言对单片机编程即可产 生相应的正弦波,方波,三角波,锯齿波等波形信号。将所写程序装入单片机的 程序存储器中,在程序运行中,当接收到来自外界的命令,需要输出某种波形时 调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大 器处理后,从信号发生器的输出端口输出。并且可以通过数码管显示模块实现可 视化,通过拨码开关进行各种功能的转换和信号频率的控制。该波形发生器系统 的原理图如图2-1所示。
本设计选择了按键复位如图 3-2, 在系统运行时,按一下开关,就在 RST 断 出现一段高电平,使图 3-2 时钟电路图器件复位。此时 ALE、PSEN、P0、P1、 P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。
图 3-2 单片机复位电路
本设计所用 D/A 转换电路采用通用的 DAC0832 模数转换芯片,它是一种 8 分辨率的 D/A 转换集成芯片。D/A 转换器由 8 位输入锁存器、8 位 DAC 寄存器、 8 位 D/A 转换电路及转换控制电路构成。其主要特性有:
图 3-5 运算放大器与 DAC0832 接口电路图
(2)示波器显示 利用示波器输出获得的信号的波形如图 3-6:
8
哈尔滨工业大学(威海)课程设计报告 9
哈尔滨工业大学(威海)课程设计报告
图 3-6 四种信号波形不同频率对比仿真结果
10
哈尔滨工业大学(威海)课程设计报告
(2)ILE:数据锁存允许控制信号输入线,高电平有效; (3)CS:片选信号输入线(选通数据锁存器),低电平有效; (4)WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于 500ns)有效。 由 ILE、CS、WR1 的逻辑组合产生 LE1,当 LE1 为高电平时,数据锁存器状态 随输入数据线变换,LE1 的负跳变时将输入数据锁存; (5)XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于 500ns)有效; (6)WR2:DAC 寄存器选通输入线,负脉冲(脉宽应大于 500ns)有效。 由 WR1、XFER 的逻辑组合产生 LE2,当 LE2 为高电平时,DAC 寄存器的输出 随寄存器的输入而变化,LE2 的负跳变时将数据锁存器的内容打入 DAC 寄存器 并开始 D/A 转换。 (7)IOUT1:电流输出端 1,其值随 DAC 寄存器的内容线性变化; (8)IOUT2:电流输出端 2,其值与 IOUT1 值之和为一常数; (9)Rfb:反馈信号输入线,改变 Rfb 端外接电阻值可调整转换满量程精度; (10)Vcc:电源输入端,Vcc 的范围为+5V~+15V; (11)VREF:基准电压输入线,VREF 的范围为-10V~+10V; (12)AGND:模拟信号地 (13)DGND:数字信号地 DAC0832 的工作原理为:DAC0832 是常用的 8 位电流输出型并行低速数模 转换芯片,当需要转换为电压输出时,可外接运算放大器。集成电路内有两级输 入寄存器使得芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路 的需要(如要求多路 D/A 异步输入、同步转换等)。 使用 DAC0832 应该注意 DAC0832 通常需外接运算放大器,进行电流/电压 转换,才能得到模拟输出电压。 其与单片机的接口电路如图 3-3 所示。
信号发生器是一种经常使用的设备,若按照传统的设计方法,由纯粹的物理 器件构成,存在许多弊端,如:体积较大、重量较沉、移动不方便、信号失真较 大、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等要求。研 究设计出一种具有频率稳定、准确,波形质量好,便携性好等特点的波形发生器 来满足工业领域对信号源的要求,具有较好的市场前景。
2
哈尔滨工业大学(威海)课程设计报告
(2)锯齿波:使用查表法。将三角波的一个周期(360 度)分为 128 个点, 相邻点等差,生成数组。反复输出前 128 个数据到 DAC0832,就可以在系统输出 端得到想要的锯齿波。
(3)方波:使用查表法。将方波的一个周期(360 度)分为 256 个点,相 邻点等差,生成数组,反复输出该数组数据到 DAC0832,就可以在系统输出端得 到想要的方波。
2. 整体方案设计
课设需要各个波形的基本输出,正弦波、锯齿波、方波、三角波,这些波形 的实现的具体步骤:
(1)正弦波:使用查表法。通过手动的方法计算出输出各点的电压值,然 后在编写程序时以数组的方式给出。当需要时,只要按照顺序进行输出即可。这 种方法比在软件中计算速度快且曲线的形状修改灵活。在本设计中将一个周期 (360 度)分为 256 个点,则每两个点之间的间隔为 1.4 度,然后计算出每个点 电压对应的数字量,形成数组。只要反复输出这组数据到 DAC0832,就可以在系 统输出端得到想要的正弦波。
(1)电流稳定时间 1us; (2)可单缓冲、双缓冲或直接数字输入; (3)单一电源供电(+5V~+15V); (4)低功耗,200mW。 DAC0832 结构: (1)D0~D7:8 位数据输入线,TTL 电平,有效时间应大于 90ns(否则锁 存器的数据会出错);
5
哈尔滨工业大学(威海)课程设计报告
6
哈尔滨工业大学(威海)课程设计报告
图 3-3 DAC0832 与单片机的接口电路
图 3-4 键盘和单片机的连接电路图
3.6 显示电路
(1)运算放大电路 运算放大器型号为 UA741,它是一种高增益运算放大器,用于军事、工业和商
7
哈尔滨工业大学(威海)课程设计报告
业应用。这类单片硅整集成电路器件提供输出短路保护和闭锁自由运作。 运算放大器与 DAC0832 接口电路如图 3-5 所示。
单片机时钟电路如图 3-1 所示
图 2-2 系统的整体方案设计图
C1
10pF
C2
10pF
X1
CRYSTAL
U1
19 XTAL1
18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
1. 设计任务
结合实际情况,基于 AT89C51 单片机设计一个波形发生器系统。该系统、锯齿波、三角波; (2)通过按键实现四种波形的切换; (3)通过按键进行频率选择; 主要硬件设备:AT89C51 单片机、DAC0832 数模转换芯片、UA741 运算放 大器、示波器、PC 机一台
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
key1 key2 key3 key4 key5
U2
1 2 3 4 5 6 7 8 9 10
3
哈尔滨工业大学(威海)课程设计报告
时钟脉冲。晶振通常选用 6MHZ、12MHZ、24MHZ。 本设计中时钟电路,我们选择了 12MHZ 的晶振分别接引脚 XTAL1 和
XTAL2,电容 C1,C2 均选择为 10pF,对振荡器的频率有稳定作用,当频率较 大时,正弦波、方波、三角波及锯齿波中每一点的延时时间为几微妙,故延时时 间还要加上指令时间才能获得较大的频率波形。
(3)按键电路的功能是通过拨码开关的不同状态实现四中信号波形的切换及 信号频率的改变。
系统的整体设计方案设计图如图 2-2 所示。 系统的整体电路连接图如图 2-3 所示。
3 系统硬件电路设计
3.1 时钟电路
单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在 引脚 XTAL1 和 XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内 部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动
图 2-1 基于单片机的波形发生器系统原理图
本系统硬件主要 D/A 转换电路、键盘接口电路、显示电路等几部分组成。 各模块的主要功能如下: