历史上的今天
返回首页

历史上的今天

今天是:2025年04月05日(星期六)

2018年04月05日 | 单片机AT89C52和D/A转换器DAC0832芯片为核心的信号发生器设计

2018-04-05 来源:eefocus

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

    利用单片机通过程序设计方法产生低频信号,其频率底线较低,具有线路简单、结构紧凑、体积小、价格低廉、频率稳定度高、抗干扰能力强、用途广泛等优点,且如需要产生新的波形时,只需对程序进行修改即可。文中利用单片机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所示。

a.JPG

      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所示。b.JPG

      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所示。c.JPG

    
    主函数是完成硬件初始化、数据初始化、函数调用等功能,等待中断到来。计算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所示。

d.JPG

    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所示。e.JPG

    3 实验测试分析

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

f.JPG

      4 结束语

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


推荐阅读

史海拾趣

ACCUTEK公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

Hi-Tron Semiconductor Corp公司的发展小趣事

ACCUTEK公司深知人才是企业发展的核心力量。因此,公司始终注重人才培养和团队建设。公司建立了完善的人才培养和激励机制,鼓励员工不断学习和创新。同时,公司还注重营造良好的工作氛围和团队文化,让员工能够在轻松愉快的环境中工作。这些举措不仅提升了员工的归属感和忠诚度,也为公司的持续发展提供了有力的人才保障。

这些故事基于电子行业的一般发展规律和可能的企业发展路径构建,并不代表ACCUTEK公司的真实历史。如需了解该公司的真实发展情况,建议查阅相关资料或访问其官方网站。

Galaxy ( Bel )公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

CMD公司的发展小趣事

CMD公司在数据存储领域不断创新,推出了一系列高性能的产品。其微开放系统、高性能工作站等产品为LAN和PC提供了先进的数据存储技术。同时,CMD还致力于发展、生产、销售高性能ASIC和板级产品,其IDE/UltraATA芯片在全球范围内得到了广泛应用。

B.B. Battery公司的发展小趣事

在国内市场取得一定成绩后,B.B. Battery公司开始积极拓展国际市场。他们参加国际电池展会,与全球知名企业建立合作关系,将产品打入国际市场。同时,公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的品牌形象。这些努力使得B.B. Battery公司的品牌在全球范围内都享有较高的知名度和美誉度。

Cantec Electronic Co Ltd公司的发展小趣事

为了进一步提升自身的竞争力,Cantec Electronic Co Ltd积极寻求与国际知名企业的合作。经过多次洽谈,公司成功与一家国际电子巨头签订了战略合作协议。通过技术共享和市场互通,公司的产品线得到了极大的丰富,同时也打开了国际市场的大门。这一合作不仅提升了公司的品牌知名度,也为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

出售液晶屏

LQ035Q7DB02/3.5\"液晶屏,带触摸.有资料 KHS038AAEAA-G83-06全新现货. LM32019T带高压.有资料.                        知春电子城,2C020柜台 010-62620599、13269197072…

查看全部问答>

MAX743双输出集成稳压器

MAX743双输出集成稳压器…

查看全部问答>

vs2005一用wstring就link出错?

代码如下 void test(){     wstring wstr=L\"\"; } 复制代码 注释掉这个函数,全部正确(0错误0警告),取消注释,链接错误 正在编译... wince demo.cpp 正在链接... wince demo.obj : error LNK2019: 无法解析的外部符号 \"public: ...…

查看全部问答>

dhcp client 移植问题,大家指教。

现在在做一个东西,但是手头的montavista系统带的文件系统下没有dhcp client。所以想要把一个pc机上的源码编译后用到我们的系统上。 请问这个东西要怎么做?是否有哪位高人做过这个东西,可以指点一下啊。 已经编译了dhcp client,不知还要改哪 ...…

查看全部问答>

请问wince环境下如何通过gprs远程无线与exchange服务器同步?

windowsmobile下手机上有个内置的activesync客户端一直在运行的,wince下不知道有没有这个东西,如果有,使用方式和wm下是一样的吗?谢谢…

查看全部问答>

利用CCSV5.1自带的430ware的强大资源库学习MSP430

本人为在校大学生,以前一直用的是51.八月初的时候被老师拉过来参加“TI杯”模拟电子专题邀请赛,这才接触到了MSP430。学校发了三块开发板,一块launchpad、一块MSP430FR5739、一块是MSP430F5529。这些板子用着感觉都挺好的,只可惜赛后都被收回去 ...…

查看全部问答>

压力传感器和荷重传感器

各位高手,小弟想请教一个问题,因为碰到很多客户使用荷重传感器,想了解下荷重传感器和压力传感器的区别,谁能详细的介绍下?!谢谢…

查看全部问答>

想收一张STM32F429Discovery(已就购入,请勿跟帖)

希望坛友可以好心出一片给我,其实我想直接去x宝买。或者rs买,但是价格有点小贵,如果能有130-150左右包邮就好了。…

查看全部问答>