【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

这篇具有很好参考价值的文章主要介绍了【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 A/D与D/A

将模拟量转换为数字量称为模数转换(A/D转换),模拟量是连续的,比如电压、电流等,可以连续变化的量;数字量是离散的,对应于计算机中的位,每一个位只能是0或1,是不存在中间状态的。通过模数转换原件将模拟量转化为数字量输入计算机,以便计算机进行计算、存储等(这里说的计算机指具有cpu芯片的计算系统)。

模数转换中运用到了微分思想。如下图所示:
【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

将连续的信号转换成一系列接近的离散的值,分割的越窄,就能表现得越精确。

数模转换(D/A转换)与模数转换的效果相反,是输入控制的数字量,经过D/A转换器输出模拟量。

2 电路与元器件

  1. 80C51芯片是intel公司开发的MCS-51系列单片机中的经典的一种。
  2. DAC0832是D/A转换芯片,是专门用于数模转换的的芯片。
  3. 电路图如图:

【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

3 源代码

3.1 程序开始

org   0000h
      jmp   Start
;====================================================================
; CODE SEGMENT
;====================================================================
      org   0100h

3.2 监视按钮操作

watchKey:;//监控按钮的操作
      jnb p1.0,squareWave;//p1.0口,方波
      jnb p1.1,sawtoothWave;//p1.1口,锯齿波
      jnb p1.2,triangleWave;//p1.2口,三角波
      ret

根据电路图,三个按钮接地,即按钮按下会产生低电平,所以检测三个口接受到的信号,出现低电平时跳转到波形的发生函数部分。

3.3 按钮控制显示波形

Start:
      mov A,#0FFh
      mov p1,A;//给p1口送高电平,按键按下为低电平
      call watchKey
      jmp start;

先给p1端口送高电平,然后调用按钮监控函数,没有键按下则一直在Start部分循环。

3.4 方波产生的方法

方波信号是有一段时间输出稳定的高电平,一段时间输出稳定的低电平。要实现这个功能,需要保持端口的输出值稳定,并启用延时或循环。

squareWave:
      mov R0,#0FFh;//存电位初值
      mov R1,#0F0h;//存高电平循环次数
      mov R2,#40h;//存低电平循环次数。调整R1和R2可以调整占空比
positive:
      mov A,R0;//取电位值
      mov p3,A;//输出数据电位,DA输出模拟电位
      call watchKey;//监控按钮的动作(可以用开中断代替),下同
      djnz R1,positive;//剩余的循环次数不为零,继续输出高电平,剩余循环次数为零则进入低电平
      mov R0,#00h;//存低电平
negative:
      mov A,R0;
      mov p3,A;
      call watchKey;
      djnz R2,negative;//循判断循环结束,往下执行。
      jmp squareWave;//进行下一周期

这里没有用延时,而是用循环代替,二者的区别在于延时中不会监控按钮动作,循环时每一次循环都会监控按钮。当延时短时二者效果没有太大区别,所以这里用那种都可以。

3.5 锯齿波产生的方法

锯齿波是在一个周期内逐渐增大,在下一周期开始时又会跳回零点。代码实现如下:

sawtoothWave:
      mov R0,#00h;//初值
      mov R1,#80h;//上升沿循环次数
sawup:
      mov A,R0;
      mov p3,A;
      inc A;//每次增加1,在下一次循环输出,出现逐渐增大的效果。
      mov R0,A;
      call watchKey;
      cjne R0,#0FFh,sawup;//循环未结束则继续增加,结束则跳回低电平
      jmp sawtoothWave;//下一周期

3.6 三角波产生的方法

三角波的一个周期分为上升沿和下降沿,都是线性变化的,可以利用锯齿波的方法做一个上升沿和一个下降沿。

triangleWave:
      mov R0,#00h;//初值
      mov R1,#80h;//上升沿循环次数,反映为上升沿宽度
      mov R2,#80h;//下降沿循环次数,反映为下降沿宽度
up:;//上升沿
      mov A,R0;
      mov p3,A;
      inc A;
      mov R0,A;
      call watchKey;
      cjne R0,#80h,up;
down:;//下降沿
      mov A,R0;
      mov p3,A;
      dec A;
      mov R0,A;
      call watchKey;
      cjne R0,#00h,down;
      jmp triangleWave;  

3.7 程序结束

Loop:	
      jmp Loop
;====================================================================
      END

4 效果

4.1 方波

【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

4.2 锯齿波

【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

4.3 三角波

【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

5 参考资料

[1] 80c51_百度百科 (baidu.com)

[2] DAC0832_百度百科 (baidu.com)

[3] 51单片机汇编指令集_宇宙379的博客-CSDN博客_51单片机指令集

[4] 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤_cumt等等的博客-CSDN博客_矩阵键盘键码扫描程序设计实验文章来源地址https://www.toymoban.com/news/detail-462787.html

到了这里,关于【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)

    本设计 (仿真+程序源码+设计说明书+讲解视频) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 1、本设计采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和LCD1602液晶显示电路。 2、电路采用单

    2024年02月05日
    浏览(46)
  • STC89C51系列单片机与ADC0832通信

    ADC0832是一种常用的8位模数转换器,它可以将模拟信号转换为数字信号,以供单片机进行处理。STC89C51系列单片机是一款常见的8位单片机,具有强大的处理能力和丰富的外设资源,可以与ADC0832通信,实现模拟信号采集的功能。 本文将介绍如何使用STC89C51单片机与ADC0832通信,并

    2024年02月13日
    浏览(49)
  • 基于STM32单片机和AD9850的智能DDS函数信号发生器

    CSDN话题挑战赛第2期 参赛话题:学习笔记 有一天,我在浏览CSDN时看到一篇关于 AD9850 的帖子。AD9850是一款可以产生1hz到40mhz左右正弦波的芯片。淘宝的产品经销商能够将芯片与提供 TTL 电平控制的小板配对,然后以令人难以置信的 60元(或更低!)的价格出售。 要控制 AD985

    2024年02月13日
    浏览(47)
  • 基于51单片机 + MQ-3酒精传感器 + ADC0832模数转换器 + LCD1602液晶显示器的酒精检测系统

    废话不多说,直接上东西。本文是基于51单片机的酒精检测系统设计,用的元器件有:51单片机、MQ-3酒精传感器、ADC0832模数转换器、 LCD1602液晶显示器、喇叭等元器件。 1、MQ-3 酒精检测传感器,用于检测酒精浓度。当然采集到的数据是模拟的还需要通过ADC0832模数转换器将其转

    2024年02月12日
    浏览(61)
  • 51单片机制作简易密码锁

    51单片机期末考试设计题目 设计要求: 设计具有16个按键和1个数码管显示的密码锁,具体要求: 输入一位密码(为0~9,A~F之间的数字),密码输入正确显示“F”并将锁打开;否则显示“E”,继续保持锁定状态。 基本要求: 密码锁的基本功能如下:16个按键,分别代表数

    2024年02月11日
    浏览(49)
  • 51单片机最小系统制作完整流程

    目录 一、51单片机最小系统原理图 电源电路 晶振电路 按键复位电路 二、51单片机最小系统制作元器件表 三、51单片机最小系统实物展示   51单片机最小系统是51单片机能够正常运行的最基本电路,由电源电路、晶振电路和按键复位电路组成。 电源电路         电源电路中在

    2023年04月10日
    浏览(41)
  • 51单片机制作简易数字电压表

    首先打开proteus软件导入各个元器件,并连线。  接下来介绍下adc0808的导入方法  频率发生器的导入方法:  接下来就要编写c程序了,代码都是经过测试的,可以方型复制使用。 最后就是编译成hex文件并导入proteus中仿真了,然后调节滑动变阻器,就可以发现电压表的值和l

    2024年02月11日
    浏览(43)
  • 【C51】基于51单片机的多路抢答器的设计与制作

        随着社会的进步和科技的发展,当今社会活动对电子设备的使用也越发依赖,此时抢答器也作为一种答题方式所需要的设备应运而生。抢答器的适用方面广泛,可用在当下各种答题节目,知识竞赛等活动之中。但随之而来的也有很多问题,当今市面上有的抢答器使用线

    2024年02月03日
    浏览(48)
  • 51单片机+ESP8266制作的门锁,含电路图、制板文件。支持密码、人脸、语音。

    Esp-8266-01S(3.3v供电,需使用ams1117-3.3电路进行电压转换); STC89C52RC最小系统; LCD1602A; 1A05继电器; 2P接线端子; 2x4P排针、1x2P排针; 有源蜂鸣器(高电平触发); 按键若干; 杜邦线若干; USB转TTL烧写器 keil C51 Arduino IDE 立创EDA Android Studio STC烧写工具 vs2019 通过app语音控制

    2023年04月08日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包