正弦信号发生器的设计

news/2024/5/19 1:56:20/文章来源:https://blog.csdn.net/newlw/article/details/127065513

目 录
1 引言 1
2 总体结构设计 2
2.1 单片机概述 2
2.1.1 单片机的发展 2
2.1.2 单片机的用途 3
2.2 系统设计的功能 3
2.3 波形发生和输出频率的方法 4
2.3.1 波形发生的方法 4
2.3.2 输出频率的方法 4
3 系统硬件设计 5
3.1 硬件电路芯片的选择 5
3.1.1 CPU芯片 AT89C51 5
3.1.2 D/A转换器芯片DAC0832 8
3.1.3 显示器的选择 9
3.1.4 运算放大器HA17741 10
3.2 电路接口的设计 11
3.2.1 LED数码管显示电路 11
3.2.2 D/A转换正弦信号输出电路 12
3.2.3 时钟电路及复位电路 13
3.2.4 键盘频率和振幅输入电路 15
3.2.5 电源电路的设计 15
4 系统软件程序的设计 17
4.1 主程序功能模块 17
4.2 显示子程序模块 17
4.3 D/A转换子程序模块 18
4.4 键盘控制频率输入子程序模块 19
4.5 数据计算处理子程序模块 20
5 系统调试 22
5.1 PROTEUS与KEIL uVision2介绍 22
5.2 软硬件的调试 23
5.2.1 软件调试 23
5.2.2 硬件调试 23
6 结论 25
6.1 实验结果 25
6.2 讨论分析 25
谢辞 27
参考文献 28
附录 29
电路图 29
源程序 30
外文资料翻译 41

2.2系统设计的功能
基本设计要求:
(1)正弦波输出频率范围:1kHz~10MHz;
(2)具有频率设置功能,频率步进:100Hz;
(3)输出信号频率稳定度:优于10-4;
(4)输出电压幅度:在负载电阻上的电压峰-峰值Vopp≥1V;
(5)失真度:用示波器观察时无明显失真。
较高设计要求:
能够使得输出地信号在50欧姆的负载电阻上的电压峰峰值稳定在6V±1V.

本设计是以AT89C51作为中央处理芯片,通过DAC0832芯片来获得正弦波信号,用按键和显示器来设置和读取频率和振幅。在KEIL环境下进行汇编编程,并在Proteus 中进行仿真。此设计的主要功能:
1.使用51单片机与D/A转换芯片DAC0832实现数字式正弦波形发生器。
2.采用51单片机在一定的时间内输出一系列的离散数字样点信号,然后通过D/A转换器转换成平滑的正弦波信号。
3.使其具有良好的人机接口,并用LED显示。
本次数字式正弦信号发生器的设计分为软件部分和硬件部分,按功能来划分硬件部分又可分为:数码管频率和振幅显示电路、D/A转换正弦信号输出电路、时钟复位电路、键盘频率和振幅输入电路;软件部分可分为:显示子程序、D/A转换子程序以及数据计算处理子程序、键盘频率输入子程序。
4 系统软件程序的设计
软件设计是本次设计的一个重要组成部分。在单片机应用系统中,最常用的程序设计方法是模块程序设计。本次设计的软件部分可分为:主程序模块、键盘控制频率输入子程序模块、显示子程序模块、D/A转换子程序模块以及数据计算处理子程序模块等。
4.1 主程序功能模块
主程序主要对数字式正弦信号发生器进行初始化设置,显示初始的正弦波频率及输出初始的正弦波电压信号,开放中断准备响应频率的变化等。
4.2 显示子程序模块
由于硬件电路的设计,显示是以动态显示的方法,硬件连接比较简单,主要是软件编程控制LED显示。
输出显示的程序如下

DISP:  CLR P2.2MOV P1,LED_BIT_4LCALL DELAYSETB P2.2CLR P2.1MOV P1,LED_BIT_3LCALL DELAYSETB P2.1CLR P2.0MOV P1,LED_BIT_1LCALL DELAYSETB P2.0RET   

4.3 D/A转换子程序模块
D/A转换是本次设计的重点之一,它由两片DAC0832控制,第一片的输出做第二片的基准电压,但它不同于硬件电路的烦琐,它的软件程序是十分简单的,只要几条输出指令,就可以进行D/A转换控制。

第一片D/A的转换程序如下:
MOV A,F_VAL_4        ;装填幅值MOV B,#33H            ;转化为在D/A中对应的数据MUL ABCLR  P2.4              ;选通D/A输入寄存器MOV  P0,A             ;输出数据SETB  P2.4             ;锁存数据
第二片的D/A转换的程序如下:
MOV  DPTR,#CTAB     ;指向数据缓冲区MOV  A,SIN_NT        ;查表相对偏移量MOVC  A,@A+DPTR    ;转换数据送入ACLR  P2.5              ;选通D/A输入寄存器MOV  P0,A             ;输出数据SETB  P2.5             ;锁存数据CLR  P2.6              ;选通D/A寄存器INC SIN_NT               ;修正查表指针

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_203641.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis中的复杂映射

上一章中实现的MyBatis对象映射较为简单,对象中的属性和数据库中的表字段是一一对应的(无论数量和名称都完全一样),如果对象中的属性名和表中的字段名不一致怎么办?又或者Java对象中存在复杂类型属性(即类似…

百分点数据科学产教融合计划继续扩大招募

从全球发展来看,数字经济已经成为重组全球要素资源、重塑全球经济结构、改变全球竞争格局的关键力量,是全球共同的发展战略。作为新经济中的数据科学,伴随社会各领域对数字人才需求的与日俱增,也成为了这一波科技革命中的人才竞争…

中国新出海故事:人、疫情与纽带

【潮汐商业评论/原创】 《枪炮、病菌与钢铁》中对人类社会发展的洞察与新千禧年发生了奇妙的呼应,战争、疫情成为了这十年的历史注脚,但时代的车轮总是滚滚向前的,新的世界版图里,全球化、数字化的浪潮构成了新世界跳动的脉搏&am…

第2章 ROS 通信机制 4 —— 常用命令

文章目录1 应用场景2 rosnode 功能包 plumbing_pub_sub编译执行3 rostopic 功能包 plumbing_pub_sub编译执行4 rosservice (服务通信) 功能包 plumbing_server_client编译执行5 rosmsg (话题通信) 功能包 plumbing_pub_sub编译执行6 rossrv (服务通信) 功能包 plumbing_server_…

常见网络知识面试题总结

🍓个人主页:个人主页 🍒系列专栏:C/C基础与进阶 💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习 目录 1、OSI七层模型与TCPIP四层模型是什么? 2…

核爆!字节跳动算法大佬手写1000页数据算法笔记:Github已标星79k

数据结构是什么 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 算法是什么 算法是对解题方案…

PC 端网页特效

一、元素偏移量 offset 系列 (一)offset 概述 1、offset 翻译过来就是偏移量,我们使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。 (1)获得元素距离带有定位父元素的位置; (2)获得元素自身的大小(宽度高度); (3)注意:返回的数值都不带单位…

使用polkadot.js在substrate frontier上安装ERC20token合约

使用polkadot.js在substrate frontier上安装ERC20token合约参考资料Substrate Frontier Node Template github.com/substrate-developer-hub/frontier-node-template frontier-node-template/examples/contract-erc20/truffle/contracts/MyToken.json安装ERC20 token合约 sourc…

SwiftUI AR教程之应用程序中使用 RealityKit 生成 3D 文本(教程含完整源码)

项目文件 基本设置 我们将从 Xcode 上的“增强现实应用程序”模板开始: 我使用 SwiftUI 作为界面,使用 Swift 作为语言,使用 RealityKit 作为内容技术: 您现在应该拥有基本的增强现实应用程序模板代码。 使用 RealityKit 生成 3D 文本网格 我们将向我们的项目添加一个函…

快速入门SSMS的使用

快速入门SSMS的使用1.Install SSMS2.Demo2.1 Export DDL2.2 XXXXX3.XXXX4.Waken1.Install SSMS 官方地址 SSMS Website: https://learn.microsoft.com/zh-tw/docs/. 也可以直接下载 Download Website: https://aka.ms/ssmsfullsetup.双击安装 要有电脑的管理员权限 快速启动…

springboot基于JAVA游戏周边商城设计与实现毕业设计源码261622

Springboot游戏周边商城的开发 摘 要 现今人们的生活方式逐渐丰富,电脑和网络已经融入了人们生活中的滴滴点点,无时不刻的影响着我们的日常生活,网络游戏已经进入到了大多数人的生活之中。在游戏的世界中人们会得到很多游戏商品,然…

死锁检测组件原理及代码实现

一、引言 所谓死锁,是指多个线程或进程各自持有某些资源,同时又等待着别的线程或进程释放它们现在所保持的资源,否则就不能向前推进。如下图:线程各自占有一把锁,还需要申请别的线程当前持有的锁,形成锁资…

Cisco简单配置(十四)—第一跳冗余协议—HSRP

为什么使用第一跳冗余 默认网关限制 如果路由器或路由器接口(作为默认网关)发生故障,配置该默认网关的主机将与外部网络隔离。在交换网络中,每个客户端仅收到一个默认网关。即使存在第二个路由可以从本地网段传输数据包&#xf…

微信小程序 java高校新生报到宿舍安排管理系统python php

将小程序权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本程序涉到的功能主要有:个人中心、宿舍管理、学生管理、宿舍安排管理、缴费信息管理、程序管理等功能 (b)用户进入程序前台可以实现首页、互助沟通、我的等功能 uni-app框架&…

基于java校园志愿者管理系统(java毕业设计)

基于java校园志愿者管理系统 校园志愿者系统是基于java编程语言,mysql数据库,springboot框架,idea开发工具进行开发,本系统主要分为志愿者和管理员两个角色,其中志愿者的主要功能是查看系统公告,活动信息&…

红队工具合集,安全er值得拥有

背景 圈内很多师傅一直在做红队安全工具箱,用于在hvv、渗透等工作中提升工作效率。依照ATT&CK威胁图谱的指导,我们很容易整理出常用的红队工具合集,在这里为大家展示。 工具介绍 信息搜集 信息搜集一直是渗透测试工作开展的重中之重,找到无人关注的老旧应用,先对…

leetcode 617. Merge Two Binary Trees 合并二叉树(简单)

直接用递归调用给定函数,先判断如果root1为空返回root2,如果root2为空返回root1,都存在的情况下建立新节点node,然后对root1和root2的左子节点调用递归并赋给node的左子节点,再对root1和root2的右子节点调用递归并赋给node的右子节点,返回node即可。一、题目大意 给你两棵…

虚拟机安装

ubuntu 虚拟机安装配置,以 18.04 为例 一、安装步骤 > 安装 vmware wmware 下载地址 : download 点击进入下载界面 点击并下载 windows 平台下的安装包 安装时直接一键下一步即可,也可根据自己需求勾选,最后的注册码可以自行…

吃个晚饭的时间,看明白三相交流感应电机驱动原理

💕三相交流感应单机驱动方式 物理开关:(接触器开关、正反向控制,星三角启动) 变频驱动:(软启动、变频器调速、一般无星三角启动) 💕一、物理开关驱动 🤞该电…

一般勒索要钱,医疗勒索“要命”!重保时期别让患者病无所依

最近,美宾夕法尼亚州医疗机构遭受勒索软件攻击,攻击者访问75628个人的健康信息,包含姓名、地址、电子邮件地址、出生日期、医疗诊断等信息。事实上,近年来全球医疗系统遭遇网络攻击的事件时有发生。2022年8月法国一家医院遭到勒索…