51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)

本文主要是介绍51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

51单片机可调幅度频率信号发生器( proteus仿真+程序+原理图+报告+讲解视频)

  • 讲解视频
  • 1.主要功能:
  • 2.仿真
  • 3. 程序代码
  • 4. 原理图
  • 4. 设计报告
  • 5. 设计资料内容清单&&下载链接
      • ***[资料下载链接](https://docs.qq.com/doc/DS1daV1BKRXZMeE9u)***

51单片机可调幅度频率信号发生器( proteus仿真+程序+原理图+报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0055

讲解视频

基于51单片机的可调幅度频率波形信号发生器

1.主要功能:

基于51单片机的三角波信号发生器

1、幅值在0-5V可以通过按键调整,频率在0-50Hz,可以通过按键调整

2、通过LCD1602显示幅值和频率

3、使用示波器查看波形

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
以下为本设计资料展示图:

2.仿真

开始仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

经以上调试,确认程序没有问题时,加载到Proteus软件中进行仿真,所得仿真结果如下。

刚开始运行程序,没有按键操作时,仿真结果如图25所示。

img

图25 仿真初始化结果

(2)通过按键调整振幅频率选择时,四个按键操作的仿真结果如下。

img

图26 频率调低到1HZ

img

图27 频率加到50HZ,振幅不变

img

图27 振幅减到2.5V,频率不变

以上仿真结果均符合设计要求。

3. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

img

main函数

#include<reg51.h>
#include"absacc.h"
#include"intrins.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
#define out XBYTE[0xfeff]
/*XBYTE 的作用,可以用来定义绝对地址,是P0口和P2口的,其中P2口对应的是高位,P0口对应的是地位
如 XBYTE[0x1234] = 0x56;
则等价于
mov dptr,#1234h
mov @dptr,#56h
P0口和P2口共同作用,可以作为外部存储器的地址线
P2接地址总线的高8位(A15~A8),P0接地址总线的低8位(A7~A0)同时接数据总线,对片外地址由P2P0构成
,当dac0832的cs'接p2^7时低电平有效,所
以P2最大为01111111=0x7f(最大为P2^6~P2^0=1),P0最大为11111111=0xff,
所以为XBYTE[0x7fff],若cs'接p2^6则为XBYTE[0xbfff],若cs'接p2^6则为XBYTE[0xbfff]。
*/
sbit k1=P3^0;//按钮
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^7;uint freq=25,set=0;	//频率
uchar amp=255;//振幅
uchar time=0,sec=0;//计时
uchar hang1[]="fre:025Hz";
uchar hang2[]="Amp:5.0V ";//振幅void main()
{uint i;	//设置定时器TMOD|=0X02;//选择为定时器0模式,工作方式2,8位自动重装载,仅用TR0打开启动。TH0=156;//给定时器赋初值TL0=156;		ET0=1;//打开定时器0中断允许TR0=0;//打开定时器EA=1;//打开总中断init_1602();//初始化LCDwrite_string(1,0,hang1);write_string(2,0,hang2);while(1){if(!k1)//频率加{if(freq<50)freq++;set=50/freq;//50HZ-1HZif(set>0)set--;hang1[4]=freq/100+0x30;hang1[5]=freq%100/10+0x30;hang1[6]=freq%10+0x30;write_string(1,0,hang1);while(!k1);}if(!k2)//频率减{if(freq>1)freq--;set=50/freq;//50HZ-1HZif(set>0)set--;hang1[4]=freq/100+0x30;hang1[5]=freq%100/10+0x30;hang1[6]=freq%10+0x30;write_string(1,0,hang1);while(!k2);}if(!k3)//振幅加{amp+=3;i=amp*10/51;hang2[4]=i/10+0x30;hang2[6]=i%10+0x30;write_string(2,0,hang2);while(!k3);}if(!k4)//振幅减{amp-=3;i=amp*10/51;hang2[4]=i/10+0x30;hang2[6]=i%10+0x30;write_string(2,0,hang2);while(!k4);}}
}
void Timer0() interrupt 1//定时器中断
{uint i;
/*if(time<51)// 方波输出{i=amp;	 out=i;}else{i=0;out=i;}
*/if(time<51)//三角波输出{i=time*amp/50;	 out=i;}else{i=(99-time)*amp/50;out=i;}if(sec<set)//延时控制	set是变量 set越小,周期越小,频率越大sec+=1;else{sec=0;if(time<99)time++;elsetime=0;}	
}

4. 原理图

原理图使用AD绘制,可供实物参考。

img

Proteus仿真和实物作品的区别:

1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。

2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。

电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。

3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。

4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。

4. 设计报告

9547字设计报告,内容包括摘要,硬件设计、软件设计、软硬件框图、调试、结论等

img

5. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码

3、开题报告

3、原理图

5、功能要求

6、元器件清单

7、设计报告

8、软硬件流程框图

9、讲解视频

Altium Designer 软件资料

KEIL软件资料

Proteus软件资料

单片机学习资料

答辩技巧

设计报告常用描述

鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

img

资料下载链接

这篇关于51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/179645

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何