**

51单片机波形发生器产生锯齿波、三角波、梯形波、方形波、正弦波。

**
dac0832相关内容
各种波形:
(1)锯齿波:dac0832中所存数据不断增大,直至到达最值(十进制255),随后令dac0832中所存数据变为0,从而到达锯齿波的效果,具体代码如下:

for(j=0;j<200;j++)
{for(i=0;i<255;i+=5)//锯齿波{dac0832=i;if(i==255)dac0832=0;}
}//外层for循环为波形循环产生时间

结果图:

(2)三角波:原理同锯齿波相似,dac0832中所存数据不断增大,直至到达最值(十进制255),随后以相同增长速率减小,直至为0,即可达到产生三角波的目的,代码如下:

for(j=0;j<100;j++) //波形循环产生时间
{for(i=0;i<255;i+=5){dac0832=i;}for(i=255;i>0;i-=5){dac0832=i;}
}

结果图:

(3)梯形波:原理同锯齿波相似,dac0832中所存数据不断增大,直至到达最值(十进制255),随后维持一段时间最大值,之后以相同增长速率减小,直至为0,即可产生梯形波,代码如下:

for(j=0;j<100;j++)
{for(i=0;i<255;i+=5){dac0832=i;}dac0832=0xff;//0xff为16进制255delay(1);for(i=255;i>0;i-=5){dac0832=i;}dac0832=0x00;delay(1);
}

结果图:

(4)方形波:只要保证dac0832中两次所存数据不同即可产生方形波,代码如下:

for(j=0;j<150;j++)
{dac0832=0xaf;delay(1);dac0832=0x10;delay(1);
}

结果图:

(5)正弦波:通过64位采集点,给dac0832遍历采集点数组产生正弦波。代码如下:

uchar code table[]={0x80,0x8C,0x98,0xA5,0xB0,0xBC,0xC7,0xD1,
0xDA,0xE2,0xEA,0xF0,0xF6,0xFA,0xFD,0xFF,
0xFF,0xFF,0xFD,0xFA,0xF6,0xF0,0xEA,0xE3,
0xDA,0xD1,0xC7,0xBC,0xB1,0xA5,0x99,0x8C,
0x80,0x73,0x67,0x5B,0x4F,0x43,0x39,0x2E,
0x25,0x1D,0x15,0x0F,0x09,0x05,0x02,0x00,
0x00,0x00,0x02,0x05,0x09,0x0E,0x15,0x1C,
0x25,0x2E,0x38,0x43,0x4E,0x5A,0x66,0x73};
for(j=0;j<200;j++)
{for(i=0;i<64;i++)dac0832=table[i];
}

结果图:

程序仿真图:

源代码:

#include<reg51.h>
#include<absacc.h>
#define dac0832 XBYTE[0x7fff]      //定义DAC0832端口地址
#define uint unsigned int
#define uchar unsigned char
sbit  k1=P1^0;
sbit  k2=P1^1;
sbit  k3=P1^2;
sbit  k4=P1^3;
sbit  k5=P1^4;
uchar code table[]={0x80,0x8C,0x98,0xA5,0xB0,0xBC,0xC7,0xD1,
0xDA,0xE2,0xEA,0xF0,0xF6,0xFA,0xFD,0xFF,
0xFF,0xFF,0xFD,0xFA,0xF6,0xF0,0xEA,0xE3,
0xDA,0xD1,0xC7,0xBC,0xB1,0xA5,0x99,0x8C,
0x80,0x73,0x67,0x5B,0x4F,0x43,0x39,0x2E,
0x25,0x1D,0x15,0x0F,0x09,0x05,0x02,0x00,
0x00,0x00,0x02,0x05,0x09,0x0E,0x15,0x1C,
0x25,0x2E,0x38,0x43,0x4E,0x5A,0x66,0x73};
void delay(uint xms);
void main()
{uchar i,j;while(1){if(P1!=0xff){delay(10);if(k1==0){for(j=0;j<200;j++){for(i=0;i<255;i+=5)//锯齿波{dac0832=i;if(i==255)dac0832=0;}while(!k1);}}if(k2==0)//三角波{delay(10);if(k2==0){for(j=0;j<100;j++) //波形循环产生时间{for(i=0;i<255;i+=5){dac0832=i;}for(i=255;i>0;i-=5){dac0832=i;}}while(!k2);}}if(k3==0)//方形波{delay(10);if(k3==0){for(j=0;j<150;j++){dac0832=0xaf;delay(1);dac0832=0x10;delay(1);}}while(!k3); }if(k4==0)  //梯形波{delay(10);if(k4==0){for(j=0;j<100;j++){for(i=0;i<255;i+=5){dac0832=i;}dac0832=0xff;delay(1);for(i=255;i>0;i-=5){dac0832=i;}dac0832=0x00;delay(1);}while(!k4);}}if(k5==0)    //正弦波{delay(10);if(k5==0){for(j=0;j<200;j++){for(i=0;i<64;i++)dac0832=table[i];}}while(!k5);}}  }
}
void delay(uint xms)
{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);
}

51单片机波形发生器产生各种波形的原理相关推荐

  1. 【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

    [Proteus仿真]51单片机+DAC0832+LM358放大电路波形发生器 Proteus仿真 主程序代码 #include<reg52.h> //包含头文件 #include< ...

  2. 51单片机c语言dac0832产生波形,基于51单片机的DAC0832波形发生器设计

    波形发生器是一种常用的信号源,广泛的应用于电子电路.自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一.在研制.生产.测试和维修各种电子元件.部件以及整机设备时,都需要有信号源. ...

  3. 25、基于51单片机函数信号发生器四种波形和频率显示系统设计

    摘  要 本文所设计的系统是利用51单片机和数模转换器件DAC0832产生所需不同信号的低频信号源,即采用STC89C51 单片机作为控制核心,而在外围采用数字/模拟转换电路(DAC0832).运放电 ...

  4. 51单片机学习笔记之数码管工作原理

    昨天我们学习了按键的基本操作,今天我们来学习一下数码管的工作原理,如果觉得我博客更新的太快,没有关系,大家可以回顾我往期的博客,利用课下时间到社团补习,如果我博客哪里有写的不好的地方,大家也不用想太多 ...

  5. 51单片机定时器工作方式1、2原理详解

    写在前面 1.本篇博文旨在帮助那些像我一样刚入门51单片机,如果你对定时器有一定了解,但是其中的的工作方式不能理解,那么这篇文章很适合你,如果你是大神的话-直接绕行吧-- 2.我在学习的过程中由于知识 ...

  6. 【51单片机入门】实现流水灯的原理及四种方法(详细易上手型)

    初学单片机,流水灯的实现是必不可少的,下面将介绍流水灯的原理及使用STC-ISP软件延时计算器生成的延时代码实现流水灯的四种方法,最后介绍如何将延时函数模块化. 目录 一.流水灯原理 二.循环 三.移 ...

  7. 用51单片机测电容容值的方法原理及一些问题的解决方案

    先来说一下电容的测量方式吧,电容测量方式有很多,其中一种是基于对RC 电路的时间常数的计算,电容的充电速度与R 和C 的大小有关,R 与C 的乘积越大,充电时间就越长.这个RC 的乘积就叫做RC电路的 ...

  8. 51单片机蓝牙模块(HC05)运行原理

    51单片机蓝牙模块(HC05)及其运行原理 目录 51单片机蓝牙模块(HC05)及其运行原理 一.测试蓝牙模块 二.配置蓝牙模块 三.烧写程序 四.测试 参考博文 一.测试蓝牙模块 在所有工作进行之前 ...

  9. 51单片机c语言dac0832产生波形,单片机DAC0832波形发生器实验报告

    #include "reg52.h" #include #define ADC_PORT P2 //如图,ADC0832连接端口 //老师要求的5种波 #define W_SINE ...

最新文章

  1. [comparator] 策略模式
  2. FactoryBean的使用--转
  3. 对深拷贝与浅拷贝的再次理解
  4. 如何在LOL中成功制造一颗飞弹?
  5. ZigBee,ZStack
  6. php更多式样,php_1
  7. 解决服务器被黑上不了网的问题
  8. cesium加载 gltf模型
  9. Coablt strike官方教程中文版
  10. cfar(Constant False-Alarm Rate)
  11. unity项目之太空大战(2)
  12. Linux对文本查找、检索、统计及替换的常用命令
  13. android中的m、mm、mmm、make指令
  14. 干货!MetaCorrection:解决无监督域适应的domain gap问题
  15. 如何使用Nginx来实现企业微信域名校验
  16. 核心坚果计划互相监督跟踪平台 (New)
  17. 1993年的台湾工厂SOP解读,依旧经典!
  18. Vue的Excel文件下载
  19. 半年,她从打工妹到小老板!
  20. 比特承诺 Bit Commitment

热门文章

  1. tableau货架图制作_Tableau代写制作地图可视化和树形图、条形图
  2. elasticsearch删除过期数据
  3. ROS2学习笔记(2)什么是ROS2 nodes
  4. Kal设置启动时输出日志,不显示logo
  5. OpenCV轮廓最大内接矩形(带角度)-计算与绘制(Python / C++源码)
  6. 两种 Type-C 耳机:模拟耳机 数字耳机
  7. HASH SEMI JOIN (semi join) 比 hash join 快!
  8. redis mysql qps_测算Redis处理实际生产请求的QPS/TPS
  9. 小程序----文字竖排
  10. 关于linux的进程中的各个线程cpu占用情况的分析和查看