ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于AT89C52单片机的函数发生器的实验总结

2020-06-30 20:08:10  阅读:271  来源: 互联网

标签:输出 P0 波形 方波 失真 发生器 单片机 AT89C52


基于AT89C52单片机的函数发生器的实验总结

1.组成概述与框图

主控部分使用STC89C52单片机进行控制。
人机交互部分使用一个纽扣按键和一个拨码开关。
数据处理部分使用由DAC0832组成的数模转换电路。
信号预处理部分使用有LM358组成的运放电路。
在这里插入图片描述

2.软件设计流程

在这里插入图片描述

3.波形产生方案:

(1)查表法输出波形
根据波形波表产生器产生8位位宽,128个采样点的数据,存放在单片机的数据存储器中,在中断程序中直接输出相应地址的数据到DAC模块产生波形。
(2)算法输出波形
方波:循环输出0xff和0x00的数据端口
三角波:先设置一个变量,从0-255依次输出,再从255-0依次输出,以此反复。
(3)采取方案:正弦波采用查表法输出,而三角波和方波使用算法输出,可有效节约数据存储器的内存。

4.调试总结

(1)现象:程序在Protues软件上仿真时一切正常,但在实际电路上运行,产生的正弦波,三角波,方波都出现了严重失真的现象(如图)。
在这里插入图片描述
(2)分析与解决方法:最开始以为是运放电路部分的反馈电阻太大导致的失真,
经过调试发现,方波失真是因为软件的延时时间太长导致的周期时间太长引起的失真,把延时时间调小便解决了问题。正弦波失真和三角波失真是因为硬件电路引起的,按照理论值,当P0口输出0x00是DA输出电压为0V,P0口输出0xff是DA输出电压为5V,但实际电路P0口输出0xFF是电压只有2.5V左右,于是便猜想,把软件8位的输入改为7位的输入,即P0口最大输出0x7F,三角波和正弦波的最大值为127。经过实验确实解决了上述失真的问题。

5.Protues仿真原理图:

在这里插入图片描述

6.Altium原理图:

在这里插入图片描述

7.实际电路板:

在这里插入图片描述

8.实验现象

在这里插入图片描述

9.资料链接

链接:[https://pan.baidu.com/s/1MhP0C2c198hZSvxzl1vBpA]
提取码:3zx3

标签:输出,P0,波形,方波,失真,发生器,单片机,AT89C52
来源: https://blog.csdn.net/weixin_45907936/article/details/107013546

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有