首页 > 其他分享 >14【Proteus仿真】基于51单片机的五种信号发生器(梯形波、正弦波、三角波、方波、锯齿波)

14【Proteus仿真】基于51单片机的五种信号发生器(梯形波、正弦波、三角波、方波、锯齿波)

时间:2024-09-26 10:50:34浏览次数:3  
标签:case 14 梯形波 Signal 51 发生器 break TR1 chose

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

该项目旨在基于51单片机,采用Proteus设计一款多波形发生器,能够产生正弦波、方波、三角波、梯形波、锯齿波等不同波形。通过五个开关(K1-K5)的选择,用户可以灵活切换并观察各种波形的输出。项目融合了硬件设计和嵌入式系统开发,具备可扩展性,便于后续优化和升级。

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

1、51单片机最小系统

2、按键模块

3、DAC0832模块

4、信号发生器

三、程序编程

#include "reg51.h" 
#include <data.h>
#define uchar unsigned char   
#define uint unsigned int   
#define key P1   
#define dataout P3   
uchar fre\[5\] ="001Hz";
uint data THHL=65536-3906;
uchar data keyword,n=0;   
uchar data Signal_chose = 0; 
uchar data div = 1; 
void keyscan()   
{    
 keyword=key&0x3f;   
 if(keyword!=0x3f)   
 {   
  while((key&0x3f)!=0x3f);	//等待按键松开   
  switch(keyword)   
  {   
		case 62: {Signal_chose=4;TR1=0;TR1=1; break;}  	//梯形波			
		case 59: {Signal_chose=0;TR1=0;TR1=1; break;}  	//正弦波
		case 55: {Signal_chose=1;TR1=0;TR1=1; break;}		//三角波	
		case 47: {Signal_chose=2;TR1=0;TR1=1; break;}		//方波
		case 31: {Signal_chose=3;TR1=0;TR1=1; break;}		//锯齿波
		default:{break;}   
   }   
 }   
}   
   
void main()   
{   
	init();
	while(1)   
	{   
		keyscan(); 
		switch(Signal_chose)   
			{   
				case 0: {dataout=sin_tab\[n\]; break;}  //正弦波
				case 1: {dataout=thr_tab\[n\]; break;}  //三角波
				case 2: {dataout=squ_tab\[n\]; break;}  //方波
				case 3: {dataout=255-n;break;}		//锯齿波
				case 4: {dataout=squ\_tab\_with\_trapezoidal\_wave\[n\];break;}		 //梯形波
				default:{break;}   
			 }   		
	}   
}   
   
void time_intt1(void) interrupt 3   
{   
	TL1=THHL%256;TH1=THHL/256;   
	n++;
}

四、实现现象

4.1 初始状态

编辑

4.2 梯形波发生器

编辑

4.3 正弦波发生器

编辑

4.3 三角波发生器

编辑

4.4 方波发生器

编辑

4.5 锯齿波发生器

编辑

具体动态效果看B站演示视频:

基于51单片机的信号发生器仿真_哔哩哔哩_bilibili

源程序和仿真文件:

链接:https://pan.baidu.com/s/1RGQKnsRRTzOu6ZhCeMgtgA 
提取码:dfk1 
–来自百度网盘超级会员V4的分享

标签:case,14,梯形波,Signal,51,发生器,break,TR1,chose
From: https://blog.csdn.net/2401_84985327/article/details/142380735

相关文章

  • 24 基于51单片机的公交车报站仿真(LCD12864、DS1302、串口)
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,采用DS1302时钟模块读取时间,通过LCD12864显示实时时间,然后两个按键,一个按下表示到站,一个按下表示没到站。到达站点,蜂鸣器发出声音,屏幕显示到站,通过串口发送信息如果没到站,屏幕显示未......
  • SSM大学生就业平台-计算机毕业设计源码85751
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1技术可行性2.1.2经济可行性2.1.3社会可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5......
  • P3311 [SDOI2014] 数数
    参考题解做法。题目思路数位dp+AC自动机好题。直接往下递归,dfs(u,ver,limit,st)表示目前在数字\(n\)的第\(u\)位进行讨论,\(ver\)表示当前在AC自动机上的节点,\(limit\)是是否步步紧逼\(n\),只要位数不足\(n\)的位数或者有一位小于\(n\)的那一位就不叫步步......
  • 嵌入式学习路线——2没有必要从51单片机起步了
    往期文章:1首先搞清嵌入式是什么、学了有什么用嵌入式适合哪些人学本专业的学生主要是电子类的学生,比如电子信息工程、通信工程、自动化、机械电子工程、仪器仪表等专业的学生,本人就是电子信息工程专业。计算机科学、软件工程之类的也可以学,但是这些偏纯软件方向,可能去BAT......
  • Android 14.0 recovery竖屏界面旋转为横屏
    1.概述在14.0系统rom项目定制化开发中,由于平板固定横屏显示,而如果recovery界面竖屏显示就觉得怪怪的,所以需要recovery页面横屏显示的功能,所以今天就来解决这个问题2.实现功能相关分析Android的Recovery中,利用bootable\recovery下的minui库作为基础,采用的是直接存取framebu......
  • E+H恩得斯豪斯CYK10-A051
    E+H恩德斯豪斯CYK10-A051是一款高性能的PH计数字电极电缆,广泛应用于工业自动化和过程控制领域。以下是关于该产品的详细介绍:主要特性高精度:CYK10-A051电缆具有高精度的测量性能,能够准确传输PH值等电化学参数,确保测量结果的准确性和可靠性。完全防水连接:该电缆具有IP68防护等......
  • Leetcode 1472. 设计浏览器历史记录
    1.题目基本信息1.1.题目描述你有一个只支持单个标签页的浏览器,最开始你浏览的网页是homepage,你可以访问其他的网站url,也可以在浏览历史中后退steps步或前进steps步。请你实现BrowserHistory类:BrowserHistory(stringhomepage),用homepage初始化浏览器类。void......
  • 章14——Hashtable
    键和值为NULL时会抛出空指针异常。KEY重复且无NULL时同样会替换,和HashMap是一样的。按照2倍+1的规律去扩容与HASHMAP对比PROPERTIES,也是MAP接口的实现类,是Hashtable的子类.properties文件通常是用于数据库的配置文件,储存数据库的用户名密码等东西详细可见博客园博客:Java......
  • 大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(正在更新···)章节内容上节我们完成了如下的内容:副本和分片,上节主要是......
  • CF1446C Xor Tree
    很有意思的题目,我们考虑能连边的两个数一定是在01-Trie上距离最近的两个点。于是我们先把所有数插入到01-Trie上去,然后\(dp_u\)考虑以\(u\)为根的子树中最多能留几个数,他的两个儿子内部的点只能在内部转移,你只能取一个儿子和另一个儿子的一个,也就是说我们的转移为\(dp_u......