杨凌职业技术学院机电工程分院 刘 红 熊 刚
波形发生器是一种信号源,在电力电子、自动化控制等方面有着非常广泛的应用,现代社会许许多多的仪器仪表的性能都取决于波形发生器。本文介绍一种基于单片机和DA转换芯片设计的简易波形发生器,通过运行不同的程序来产生各种波形。
图1 硬件电路图
单片机采用美国ATMEL公司生产的一种低电压、高性能CMOS 8位控制器AT89C51;片内含8K字节可反复擦除的只读程序存储器(PEROM),为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。DA转换芯片采用DAC0832,其是并行输入、电流输出型的通用8位DA转换芯片,具有与单片机连接简便、控制方便、价格低廉等优点,被广泛应用于微机系统中。DAC0832每次输入数字为8位二进制数,基准电压范围为-10V~+10V;转换时间为lus;数据输入方式有直通、单缓冲、双缓冲;单一电源供电+5V~+15V;输出电流线性度可在满量程下调节;功耗为20mw。与单片机的连接电路如图1所示。
锯齿波编程的设计思路是:先输出二进制最小值00H,然后按+1规律递增,当输出数据达到最大值0FFH时,再回到00H重复这一过程,程序流程图如图2所示。
图2 锯齿波程序流程图
根据流程图编制源程序:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#7FFFH ;指向0832的口地址
LOOP: MOV A ,#00H ;待转换的数据00H送A
LOOP1:MOVX @DPTR,A ;A 中的值送0832转换,输出对应模拟量
LCALL DELAY
INC A
CJNE A,#0FFH,LOOP1
MOV A,#00H
LJMP LOOP
DELAY:略 ;延时子程序,改变其时间参数可以改变波形发生的频率
END
(1)程序的运行结果是:程序运行后,单片机输出的二进制数在00H~0FFH范围内由小到大变化时,输出电压也将在0~5V范围内按照由小到大的规律变化。
(2)如果把产生波形输出的二进制数据以表格的形式预先存放在程序存储器中,再通过查表指令按顺序依次取出送至D/A转换器也可以得到锯齿波,同理通过编程还可以得到正弦波,这里不再说明。
(3)任何一种模拟周期信号,都可以转换成有规律的数字信号或者说有一组数字信号与之相对应。如果将某种波形对应的一个周期的数字信号预先存储在存储器中,将它取出来并通过数模转换电路转换为模拟信号,便能得到所需的波形。
本设计以单片机为控制核心,介绍了A/D转换芯片ADC0809与51单片机的接口电路、数据传送方式和数据传送的编程方法。通过修改程序就可以输出其他波形,具有硬件结构简单、波形输出稳定、扩展性强等特点,有较高的应用价值。
引文
①孙勤江,沈彬.基于单片机的信号发生器设计[J].石油和化工设备,2014,(01):11-23.
②谢增忠.基于单片机的波形发生器的硬件设计[J].数字化用户,2013,(03):32-41.
③陈高峰,熊刚,胡启迪.单片机原理及应用[M].北京:北京大学出版社,2012.