利用单片机通过程序设计方法产生低频信号,其频率底线较低,具有线路简单、结构紧凑、体积小、价格低廉、频率稳定度高、抗干扰能力强、用途广泛等优点,且如需要产生新的波形时,只需对程序进行修改即可。文中利用单片机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所示。
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”端口输入。DAC 0832是电流输出型D/A转换芯片,通过集成运放LF393完成电流到电压的转换,由于LF393工作在双电源条件下,因此要给LF393加入±12 V电压。DAC转换的模拟电压值从“D/A输出”口输出。
系统硬件电路原理图如图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转换值转换成相应的ASCⅡ码,最后通过LCD显示D/A转换值函数把DAC转换的模拟电压值(0~5 V)显示在液晶LCD1602上,并从“D/A输出”端子输出DAC转换的0~5 V模拟电压。系统软件结构框图如图3所示。
主函数是完成硬件初始化、数据初始化、函数调用等功能,等待中断到来。计算D/A转换值ASCII码函数实现把D/A转换值dabl转换为相应的ASCII码,以便在LCD上显示。按键扫描函数实现了通过系统程序改变数字量初始值,按键K1实现数字量加1,按键K2实现数字量减1,使数字量在0~255的范围内变化,从而模拟数字信号的输入。LCD显示函数包括LCD初始化函数、写入指令数据到LCD函数、写入显示数据到LCD函数、LCD显示D/A转换值函数、延时函数等模块。软件程序的核心由定时器T0中断服务程序、DAC0832采样转换程序构成。[page]
当定时器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所示。
2.2 DAC0832采样转换函数设计
根据D/A转换芯片DAC0832的工作时序,片选信号低电平有效。把芯片DAC0832的片选信号置低电平,选中该芯片。把数字量D/A转换值dabl送给P0口,准备送入芯片DAC0832进行D/A转换处理。芯片DAC0832写信号置低电平后再过两个时钟周期至高电平,产生一个上升沿信号,进行数据D/A转换处理。模拟量dabl从Iout1、Iout2引脚输出送到运算放大器LF393进行处理,最后从“D/A输出”端子输出,可用万用表测量到输出电压。数据转换完毕,把芯片DAC0832片选信号置高电平,最后函数返回。D/A转换函数设计流程图如图5所示。
3 实验测试分析
根据输入单片机的数字信号,用万用表测量从“D/A输出”端子测试输出模拟电压信号,如表1所示。从表1可知,该信号发生器的电压输出误差小、精度高。
4 结束语
系统按照简单化、便捷化原则设计,介绍了系统的总体结构、硬件设计和软件设计。侧重阐述了采用AT89S52单片机与D/A转换器DAC08 32对输入数字信号进行处理,最后驱动输出显示装置LCD1602显示D/A转换的0~5 V模拟电压信号。实验调试表明该信号发生器在技术指标上达到了设计要求,具有精度高、抗干扰性强、性能稳定、升级方便等特点,有较高的应用价值。
上一篇:采用AT89C2051设计的无线防盗报警器简介
下一篇:为多嵌入式控制应用系统提供高性价比的AT89S51解析方案
推荐阅读最新更新时间:2024-03-16 13:12
设计资源 培训 开发板 精华推荐
- NXP 2.5亿美元收购Aviva,但车载SerDes领域依然处于战国时期
- 应对 AI 时代的云工作负载,开发者正加速向 Arm 架构迁移
- 沉浸式体验漫威宇宙,英特尔锐炫显卡为《漫威争锋》提供Day 0支持
- 艾迈斯欧司朗与法雷奥携手革新车辆内饰,打造动态舱内环境
- 《嵌入式-STM32开发指南》第二部分 基础篇 - 第7章DMA(HAL库)
- 【“源”察秋毫系列】DC-DC电源效率测试,确保高效能与可靠性的关键步骤
- NVIDIA 推出高性价比的生成式 AI 超级计算机
- Mapbox与Arm合作推出虚拟主机 加速软件定义汽车导航
- 移植tslib和Qt5.6到三星s5pv210开发板
- 智能座舱新赛点在哪? 看这四款重磅新车