简易低频信号发生器设计.docx
《简易低频信号发生器设计.docx》由会员分享,可在线阅读,更多相关《简易低频信号发生器设计.docx(16页珍藏版)》请在冰点文库上搜索。
简易低频信号发生器设计
绪论
单片机全称为单片微型计算机(SingleChipMicrocomputer),又称微控制器(MicrocontrollerUint)或嵌入式控制器(EmbeddedController)。
它是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,通常片内都含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。
单片机是随着超大规模集成电路技术的发展而诞生的。
随着技术的发展,单片机片内集成的功能越来越强大,并朝着SoC(片上系统)方向发展。
单片机有着体积小、功耗低、功能强、性能价格比高、易于推广应用等显著优点,所以广泛应用于电子仪表、家用电器、节能装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。
可以发现,单片机的应用与开发,在时代发展中所占的重要位置。
所以,我们以一简易的低频信号设计为例,了解单片机的基本原理。
编者
2008年6月19日
一.要求与设计方案
1.要求:
输出0.1----50HZ的正弦波,三角波和方波信号,其中正弦波和三角波信号可通过按键选择输出,输出信号的频率可以从0.1----50HZ范围内调整.
2由于输出信号的频率较低,因此考虑使用单片机作为控制器,用中断查表法完成波形数据的输出,再用D/A转换输出规定的波形信号.方波信号直接由单片机的端口输出.结合功能要求情况,决定使用AT89C2051单片机作为控制器,用DAC0832作为D/A转换器功能按键使用单片机的三个端口。
结构图如下
简易低频信号系统结构框图
二.硬件电路设计
1.原理图
2.控制部分
控制芯片选择ATMEL公司的AT89C2051单片机,芯片为20脚双列直插封装,工作电压为2.7---6V,具有13个I/O口,完全能满足我们的设计要求,控制系统按最小化工作模式设计,P3.0---P3.2口接3个按键,其中T1为频率增加键,T2为频率减小键,T3为正弦波与三角波选择按键.P1口输出波形数据,其中P1.0和P1.1口须外接上拉电阻。
3.AT89C2051的主要分析
(1).AT89C2051的主要特点:
2K字节闪速可编程可擦除只读存储器(FLASHEEPROM)和128bytes的随机存取数据存储器(RAM),可重复擦写10000次,数据保存时间10年,工作电压范围:
2.7~6V,工作频率:
0~24MHz,15根可编程I/O引线,2个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行口,一个精密模拟比较器,两级程序加密,输出口可直接驱动LED显示,低功耗的闲置和调电保护工作方式,以及片内振荡器和时钟电路。
由于AT89C2051单片机功能强劲,且体积小(芯片只有20个引脚),所以它在许多嵌入式和便携式测控系统中得到广泛应用,如机电式或电子式电度表,智能煤气表,测速仪等智能仪器。
(2).AT89C2051的结构框图
AT89C2051是一带有2K字节闪速可编程可擦除只读存储体(EEPROM)的低电压,高性能8位CMOS微型计算机。
如图所示。
它采用ATMEL的高密非易失存储技术制造并和工业标准MCS—51指令集和引脚结构兼容。
通过在单块芯片上组合通用的CPL1和闪速存储器,ATMELAT89C2051是一强劲的微型计算机,它对许多嵌入式控制应用提供一高度灵活和成本低的解决办法。
(3).引脚说明
AT89C2051是一个有20个引脚的芯片,引脚如图所示,与8051内部结构进行对比可发现,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚,因而芯片尺寸有所减少。
AT89C2051芯片的20个引脚功能为:
Vcc:
电源电压。
GND:
地。
P1口:
P1口是一8位双向I/O口。
口引脚P1.2~P1.7提供内部上拉电阻。
P1.0和P1.1要求外部上拉电阻。
P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。
P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。
当P1口引脚写入“1”时,其可用作输入端。
当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流(IIL)。
P1口还在闪速编程和程序校验期间接收代码数据。
P3口:
P3口的P3.0~P3.5、P3.7是带有内部上拉电阻的七个双向I/0引脚。
P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。
P3口缓冲器可吸收20mA电流。
当P3口引脚写入“1”时,它们被内部上拉电阻拉高并可用作输入端。
用作输入时,被外部拉低的P3口引脚将用上拉电阻而流出电流(IIL).P3口还用于实现AT89C2051的各种功能,如下表10-1所示。
P3口还接收一些用于闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
RST一旦变成高电平,所有的I/O引脚就复位到“1”。
当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。
每一个机器周期需12个振荡器或时钟周期。
XTAL1:
作为振荡器反相放大器的输入和内部时钟发生器的输入。
XTAL2:
作为振荡器反相放大器的输出。
P3口的功能
P3口引脚
功能
P3.0
RXD(串行输入端口)
P3.1
TXD(串行输出端口)
P3.2
INT0(外中断0)
P3.3
INT1(外中断1)
P3.4
TO(定时器0外部输入)
P3.5
T1(定时器1外部输入)
4.数/模转换部分
DAC0832是CMOS工艺制造的8位数/模(D/A)转换器,属于8位电流输出型D/A转换器,转换时间为1ms,片内带输入数字锁存器,其引脚排列和内部组成原理图如下所示,DAC0832与单片机接成数据直接写入方式,当单片机把一个数据直接写入DAC寄存器时,DAC0832的输出模拟电压信号随之对应变化。
利用D/A转换器可以产生各种波形,如方波,三角波,锯齿波等以及它们组合产生的复合波形和不规则波形。
这些复合波形利用标准的测试设备是很难产生的。
5.DAC0832的主要分析
(1)D/A转换器DAC0832
DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。
如图所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。
运算放大器输出的模拟量V0为:
由上式可见,输出的模拟量与输入的数字量(
)成正比,这就实现了从数字量到模拟量的转换。
一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。
输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。
是DAC0832的逻辑框图和引脚排列
(2)引脚功能
D0~D7:
数字信号输入端。
ILE:
输入寄存器允许,高电平有效。
CS:
片选信号,低电平有效。
WR1:
写信号1,低电平有效。
XFER:
传送控制信号,低电平有效。
WR2:
写信号2,低电平有效。
IOUT1、IOUT2:
DAC电流输出端。
Rfb:
是集成在片内的外接运放的反馈电阻。
Vref:
基准电压(-10~10V)。
Vcc:
是源电压(+5~+15V)。
AGND:
模拟地NGND:
数字地,可与AGND接在一起使用。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
实验线路如上图所示。
A1、A2、A0:
地址输入端。
ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。
START:
启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。
EOC:
转换结束输出信号(转换接受标志),高电平有效。
OE:
输入允许信号,高电平有效。
CLOCK(CP):
时钟信号输入端,外接时钟频率一般为640kHz。
Vcc:
+5V单电源供电。
、
Vref(+),Vref(-):
基准电压的正极、负极。
一般Vref(+)接+5V电源,Vref(-)接地。
D7~D0:
数字信号输出端。
由A2、A1、A0三地址输入端选通8路模拟信号中的任何一路进行A/D转换。
(3).DAC0832工作方式
DAC0832有双缓冲,单缓冲和直通3种方式
双缓冲工作方式:
进行两级缓冲
单缓冲工作方式:
只进行一级缓冲
直通工作方式:
不进行缓冲,适用于比较简单的场合
三.软件电路设计
1.初始化子程序
初始化子程序的主要工作是设置定时器的工作模式、初值预置、开中断和打开定时器等。
在这里,定时器T1工作16定时模式,单片机按定时时间重复地把波形数据送到DAC0823的寄存器。
初始化子程序流程图如图所示。
初始化子程序流程图
2.键扫描子程序
键扫描子程序和任务是检查3个按键是否有键按下,若有键按下,则执行相应的功能。
在这里,3个按键分别用于频率增加、频率减小和正弦波与三角波的选择功能。
键扫描子程序流程图如图所示。
3.波形数据产生子程序
波形数据产生子程序是定时器T1的中断程序。
当定时器计数溢出时,发生一次中断。
当发生中断时,单片机将按次序将波形数据表中波形数据一一送入DAC0832,DAC0832再根据输入的数据大小输出对应的电压。
波形数据产生子程序如图所示。
波形数据产生子程序流程图:
4.主程序
主程序的任务是进行是电初始化,并在程序运行中不断查询按键情况,执行相应的功能。
四.调试及性能分析
硬件电路的调试较简单,只要元器件安装无误,一般能一次成功。
软件的调试主要是各子程序的调试。
对于中频率的增减按键同于计数器为16位定时器,最大值为65535所以在加减时用255作为加减数。
这样频率的调整变化较快些,但在接近最高频率时变化太快。
如果加减时用1作为加减数,那么在频率的高端变化平稳,而在频率的低端由变化太慢。
调试时可根据应用特点选择加减数的大小。
简易低频信号源输出频率指标实际测试如下:
●正弦波(三角波)输出频率为0.01~83Hz,幅值为1.0~1.5V。
●方波输出频率为1.3~10.6kHz,幅值为5V。
简易低频信号源输出的频率不是很高,在设计时每周期波形用了256个采样点合成,波形不是很光滑。
如果增加采样点,则输出的频率会更低。
在设计中应根据应用特点选择合理的采样点数。
用单片机产生低频率信号的最大优点是可以输出复杂的不规则波形,这是一般的通用信号源无法做到的。
五.控制源程序清单
;正弦波发生器,P3.0口按键减小输出频率,P3.1口按键增加输出频率
;P1口输出正弦波,使用定时器T0,16位定时模式
;R6,R7作为10MS延时寄存器,P3.7输出方波
SINPDATA30H;正弦波查表指针
;COSPDATA31H;余弦波查表指针
THODDATA32H;定时器初值存放(高8位)
TLODDATA33H;定时器初值存放(低8位)
ORG0000H
LJMPSTART
ORG000BH
LJMPINTTO
ORG0060H
START:
MOVSP,#70H
MOVSINP,#00H
;MOVCOSP,#40H
MOVTMOD,#11H
MOVTHOD,#OFFH;初值,决定波形频率
MOVTLOD,#00H
MOVTH0,THOD
MOVTL0,TLOD
MOVDPTR,#LIST
SETBET0
SETBEA
SETBTR0
MAIN:
JNBP3.0,INCKEY
JNBP3.1,DECKEY
ORLPCON,#01H
LJMPMAIN
;按键功能,输出频率减小
INCKEY:
LCALLDL10MS
JBP3.0,MAIN
MOVA,TLOD
CJNEA,#0FFH,INC1
LJMPMAIN
INC1:
INCTLOD
LJMPMAIN
;按键功能,输出频率增大
DECKEY:
LCALLDL10MS
JBP3.1,MAIN
MOVA,TLOD
CJNEA,#00H,DEC1
LJMPMAIN
DEC1:
DECTLOD
LJMPMAIN
定时器T0中断程序
INTTO:
PUSHACC
CPLP3.7;方波输出,作辅助功能用
MOVTH0,THOD
MOVTL0,TLOD
MOVA,SINP
MOVCA,@A+DPTR
MOVP1,A;正弦波从P1口输出
;MOVA,COSP
;MOVCA,@A+DPTR
;MOVP2,A;余弦波从P2口输出
INCSINP
;INCCOSP
POPACC
RET1
10MS延时程序
DL512:
MOVR7,#0FFH
LOOP:
DJNZR7,LOOP
RET
DL10MS:
MOVR6,#14H
LOOP1:
LCALLDL512
DJNZR6,LOOP1
RET
;正弦函数表(共256个点,每点1.40625)
LIST:
DB80H,83H,85H,88H,8AH,8DH,8FH,92H
DB94H,97H,99H,9BH,9EH,0A0H,0A3H,0A5H
DB0A7H,0AAH,0ACH,0AEH,0B1H,0B3H,0B5H,0B7H
DB0B9H,0BBH,0BDH,0BFH,0C1H,0C3H,0C5H,0C7H
DB0C9H,0CBH,0CCH,0CEH,0D0H,0D1H,0D3H,0D4H
DB0D6H,0D7H,0D8H,0DAH,0DBH,0DCH,0DDH,0DEH
DB0DFH,0E0H,0E1H,0E2H,0E3H,0E3H,0E4H,0E4H
DB0E5H,0E5H,0E6H,0E6H,0E7H,0E7H,0E7H,0E7H
DB0E7H,0E7H,0E7H,0E7H,0E6H,0E6H,0E5H,0E5H
DB0E4H,0E4H,0E3H,0E3H,0E2H,0E1H,0E0H,0DFH
DB0DEH,0DDH,0DCH,0DBH,0DAH,0D8H,0D7H,0D6H
DB0D4H,0D3H,0D1H,0D0H,0CEH,0CCH,0CBH,0C9H
DB0C7H,0C5H,0C3H,0C1H,0BFH,0BDH,0BBH,0B9H
DB0B7H,0B5H,0B3H,0B1H,0AEH,0ACH,0AAH,0A7H
DB0A5H,0A3H,0A0H,9EH,9EH,99H,97H,94H
DB92H,8FH,8DH,8AH,88H,85H,83H,80H
DB7DH,7BH,78H,76H,73H,71H,6EH,6CH
DB69H,67H,65H,62H,60H,5DH,5BH,59H
DB56H,54H,52H,4FH,4DH,4BH,49H,47H
DB45H,43H,41H,3FH,3DH,3BH,39H,37H
DB35H,34H,32H,30H,2FH,2DH,2CH,2AH
DB29H,28H,26H,25H,24H,23H,22H,21H
DB20H,1FH,1EH,1DH,1DH,1CH,1CH,1BH
DB1BH,1AH,1AH,1AH,19H,19H,19H,19H
DB19H,19H,19H,19H,1AH,1AH,1AH,1BH
DB1BH,1CH,1CH,1DH,1DH,1EH,1FH,20H
DB21H,22H,23H,24H,25H,26H,28H,29H
DB2AH,2CH,2DH,2FH,30H,32H,34H,35H
DB37H,39H,3BH,3DH,3FH,41H,43H,45H
DB47H,49H,4BH,4DH,4FH,52H,54H,56H
DB59H,5BH,5DH,60H,62H,65H,67H,69H
DB6CH,6EH,71H,73H,76H,78H,7BH,7DH
;三角波函数表
LIST1:
DB80H,81H,82H,83H,84H,85H,86H,87H
DB88H,89H,8AH,8BH,8CH,8DH,8EH,8FH
DB90H,91H,92H,93H,94H,95H,96H,97H
DB98H,99H,9AH,9BH,9CH,9DH,9EH,9FH
DB0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H
DB0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFH
DB0B0H,0B2H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H
DB0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFH
DB0BFH,0BEH,0BDH,0BCH,0BBH,0BAH,0B9H,0B8H
DB0B7H,0B6H,0B5H,0B4H,0B3H,0B2H,0B1H,0B0H
DB0AFH,0AEH,0ADH,0ACH,0ABH,0AAH,0A9H,0A8H
DB0A7H,0A6H,0A5H,0A4H,0A3H,0A2H,0A1H,0A0H
DB9FH,9EH,9DH,9CH,9BH,9AH,99H,98H
DB97H,96H,95H,94H,93H,92H,91H,90H
DB8FH,8EH,8DH,8CH,8BH,8AH,89H,88H
DB87H,86H,85H,84H,83H,82H,81H,80H
DB7FH,7EH,7DH,7CH,7BH,7AH,79H,78H
DB77H,76H,75H,74H,73H,72H,71H,70H
DB6FH,6EH,6DH,6CH,6BH,6AH,69H,68H
DB66H,66H,65H,64H,63H,62H,61H,60H
DB5FH,5EH,5DH,5CH,5BH,5AH,59H,58H
DB55H,55H,55H,54H,53H,52H,51H,50H
DB4FH,4EH,4DH,4CH,4BH,4AH,49H,48H
DB44H,44H,45H,44H,43H,42H,41H,40H
DB40H,41H,42H,43H,44H,45H,46H,47H
DB48H,49H,4AH,4BH,4CH,4DH,4EH,4FH
DB50H,51H,52H,53H,55H,55H,56H,57H
DB58H,59H,5AH,5BH,5CH,5DH,5EH,5FH
DB60H,61H,62H,63H,66H,65H,66H,67H
DB68H,69H,6AH,6BH,6CH,6DH,6EH,6FH
DB70H,71H,72H,73H,77H,75H,76H,77H
DB78H,79H,7AH,7BH,7CH,7DH,7EH,7FH
END
六.心得体会