基于DAC0832和AT89S52的信号发生器设计

2012-04-23 10:13李庭贵
电子科技 2012年6期
关键词:中断按键单片机

李庭贵

(1.泸州职业技术学院机械系,四川泸州 646005;2.四川省泸州市工程机械智能优化设计重点实验室,四川泸州 646005)

信号发生器是一种常用的信号源,广泛应用于电子电路、自动控制系统和教学实验等领域[1]。信号的产生有模拟电路、专用硬件和软件产生等方法。采用模拟电路搭建函数信号发生器,可同时产生方波、三角波、正弦波,但不能产生任意波形,存在波形质量差、控制难、可调范围小,电路复杂和体积大等缺点,且频率调节不方便。专用硬件方法产生的信号频率分辨率高、稳定性好、在线调整方便,如目前在通讯系统中应用广泛的直接数字频率合成(DDS)技术,例如AD9854是一种典型的信号产生方法,但是价格昂贵[2-3]。

利用单片机通过程序设计方法产生低频信号,其频率底线较低,具有线路简单、结构紧凑、体积小、价格低廉、频率稳定度高、抗干扰能力强、用途广泛等优点,且如需要产生新的波形时,只需对程序进行修改即可[4]。文中利用单片机 AT89S52和 D/A转换器DAC0832转换数字信号为0~5 V模拟电压信号,并在LCD1602显示。

1 系统硬件设计

系统硬件采用模块化设计,以单片机控制器为核心,与D/A转换电路、按键电路、LCD显示电路等组成信号发生器控制系统。字符型液晶显示模块是一种专用于显示字母、数字、符号等点阵式LCD,目前常用的有16×1、16×2、20×2和40×2行等模块。系统选用1602字符型LCD模块,其控制器为日立公司生产的HD44780,可用来显示数字、字符等。按键输入使用独立式按键K1、K2,主要实现数字信号DAC值的加减。系统硬件组成框图如图1所示[5]。

图1 系统硬件组成方框图

1.1 主控芯片电路

在大部分的工控或测控设备中,8位的MCS-51系列单片机能满足大部分的控制要求,加之MCS-51系列单片机的价格优势,使MCS-51系列单片机成为单片机应用主流。AT89S52是MCS-51系列兼容单片机中的代表产品。鉴于此,本系统选用AT89S52单片机作为主控制器。

1.2 D/A转换电路

D/A模块由D/A芯片和放大电路组成,系统D/A芯片选用DAC0832芯片来完成数/模转换过程。数字信号的输入从“D0~D7”端口输入,通过按键K1、K2实现DAC值的加减,其值在0~255之间,并在LCD1602上显示。控制DAC0832工作的控制信号由“WR-CS”端口输入。DAC0832是电流输出型D/A转换芯片,通过集成运放LF393完成电流到电压的转换,由于LF393工作在双电源条件下,因此要给LF393加入±12 V电压。DAC转换的模拟电压值从“D/A输出”口输出。

系统硬件电路原理图如图2所示。

图2 系统硬件电路原理图

2 系统软件设计

系统的软件设计使用C51编程,采用模块化设计方法,主要由主函数、定时器T0中断服务函数、D/A转换函数、计算D/A转换值函数、按键扫描函数、LCD显示函数、LCD显示A/D转换值函数等模块组成。根据D/A转换芯片DAC0832的工作时序,20 ms进行一次D/A转换,可以利用单片机AT89S52的定时器T0定时,20 ms定时到时,产生定时器T0中断,在定时器T0中断服务函数中调用DAC0832采样转换函数进行D/A采样转换,然后调用计算D/A转换值函数把D/A转换值转换成相应的ASCII码,最后通过LCD显示D/A转换值函数把DAC转换的模拟电压值(0~5 V)显示在液晶LCD1602上,并从“D/A输出”端子输出DAC转换的0~5 V模拟电压。系统软件结构框图如图 3 所示[5]。

图3 系统软件结构框图

主函数是完成硬件初始化、数据初始化、函数调用等功能,等待中断到来。计算D/A转换值ASCII码函数实现把D/A转换值dabl转换为相应的ASCII码,以便在LCD上显示。按键扫描函数实现了通过系统程序改变数字量初始值,按键K1实现数字量加1,按键K2实现数字量减1,使数字量在0~255的范围内变化,从而模拟数字信号的输入。LCD显示函数包括LCD初始化函数、写入指令数据到LCD函数、写入显示数据到LCD函数、LCD显示D/A转换值函数、延时函数等模块。软件程序的核心由定时器T0中断服务程序、DAC0832采样转换程序构成。

2.1 定时器T0中断服务函数设计

当定时器T0定时20 ms后,进入定时器T0中断服务函数。首先重装定时器T0初值,设置按键输入口P1口的值为0xdf,调用按键扫描函数。接着调用D/A转换函数进行D/A转换,得到D/A转换值dabl,然后调用计算 D/A转换值函数计算 dabl相应的ASCII码,再调用LCD显示D/A转换值函数把数字量输入值D/A进行转换后的模拟量显示在液晶LCD1602上。最后T0中断函数返回主程序等待下一次D/A转换。定时器T0中断服务函数设计流程图如图4所示。

图4 定时器T0中断服务函数设计流程图

2.2 DAC0832采样转换函数设计

图5 D/A转换函数设计流程图

3 实验测试分析

根据输入单片机的数字信号,用万用表测量从“D/A输出”端子测试输出模拟电压信号,如表1所示。从表1可知,该信号发生器的电压输出误差小、精度高。

表1 电压输出信号测试

4 结束语

系统按照简单化、便捷化原则设计,介绍了系统的总体结构、硬件设计和软件设计。侧重阐述了采用AT89S52单片机与D/A转换器DAC0832对输入数字信号进行处理,最后驱动输出显示装置LCD1602显示D/A转换的0~5 V模拟电压信号。实验调试表明该信号发生器在技术指标上达到了设计要求,具有精度高、抗干扰性强、性能稳定、升级方便等特点,有较高的应用价值。

[1] 陈琼.一种单片机控制超低频任意信号发生器的设计与实现[J].南昌航空工业学院学报:自然科学版,2004,18(3):35-38.

[2] 张根选,吴子怀.基于AT89S52单片机的信号发生器的设计[J].湖南工程学院学报,2010,20(3):18 -20.

[3] 姜平,周根荣,李俊红.基于AD9833的多通道信号发生器设计[J].仪表技术与传感器,2006(12):46-48.

[4] 田蛟,展文豪,张宏伟.基于单片机的信号发生器设计[J].信息技术,2011(5):87 -90.

[5] 李庭贵.单片机应用技术及项目化训练[M].成都:西南交通大学出版社,2009.

猜你喜欢
中断按键单片机
基于有限状态机的按键检测程序设计
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
基于FPGA的中断控制器设计*
按键消抖在单片机和FPGA实验教学中的应用
跟踪导练(二)(5)
千里移防,卫勤保障不中断
一种多方向导光按键结构设计
Microchip推出两个全新PIC单片机系列