探索单片机世界:每天了解一个单片机知识点(AD和DAC)
这个系列将帮助您逐步了解单片机的各个方面,包括基本概念、编程技巧、常见应用等。每天我将分享一个新的单片机知识点,以帮助您逐渐建立对单片机的全面理解。
无论您是初学者还是有一定经验的开发者,这个系列都将为您提供有价值的信息和实用技巧。如果您有任何特定的主题或问题想要了解,请随时告诉我,我会尽力为您提供帮助。
ADC 和 DAC
ADC 和 DAC 是单片机中常见的外设,它们分别代表模数转换器(Analog-to-Digital Converter)和数模转换器(Digital-to-Analog Converter)。
ADC(模数转换器)用于将模拟信号转换为数字信号。在许多实际应用中,传感器或其他模拟设备输出的信号通常是连续变化的模拟信号,但单片机内部的处理器只能处理数字信号。因此,为了将模拟信号输入到单片机中进行处理和分析,需要使用 ADC 将其转换为数字信号。
ADC 的用途非常广泛。它可以用于采集模拟传感器信号,如温度、压力、光照强度等物理量,然后将这些模拟信号转换为数字形式,以供单片机进行处理和判断。通过 ADC,单片机可以实现对模拟输入信号的采集、测量和控制,从而实现各种应用,如环境监测、仪器仪表、自动控制等。
DAC(数模转换器)则是将数字信号转换为模拟信号的电子设备。在单片机应用中,DAC 可以用于将数字信号转换为模拟信号,然后通过单片机的输出端口输出到外部设备。
DAC 在实际应用中也具有广泛的用途。它可以用于音频处理,将数字音频信号转换为模拟音频信号输出到扬声器或耳机中。此外,DAC 还可以用于图像显示,将数字图像信号转换为模拟视频信号输出到显示器上。
综上所述,ADC 和 DAC 在单片机应用中扮演着重要的角色。ADC 可以实现模拟信号到数字信号的转换,使单片机能够接收和处理来自外部世界的模拟信号;而 DAC 则可以实现数字信号到模拟信号的转换,使单片机能够向外部设备输出模拟信号。这两种外设的使用使得单片机能够与模拟世界进行有效的交互与通信。
项目应用场景
ADC和DAC在单片机项目中的应用场景是多种多样的,具体使用的场景取决于项目需求和设计要求。以下是其中一些较为常见的应用场景:
ADC:
1. 传感器数据采集:ADC最常见的用途之一是将模拟传感器信号(如温度、湿度、压力等)转换为数字信号,以供单片机进行处理和分析。
2. 电池电压监测:ADC可用于测量电池电压,以便判断电池状态和电量剩余。
3. 声音和图像处理:ADC可以对音频和视频信号进行采样和数字化处理,用于声音录制、图像处理等应用。
4. 数据采样:ADC可以用于对外部模拟信号进行采样,用于数据采集、波形分析等应用。
DAC:
1. 音频输出:DAC常用于将数字音频信号转换为模拟音频信号,用于音频播放、音乐合成等应用。
2. 波形生成:DAC可以用于生成各种类型的波形信号,如正弦波、方波、脉冲波等,用于测试、测量、波形发生器等应用。
3. 控制系统:DAC可以将数字控制信号转换为模拟控制信号,用于控制系统的模拟控制和驱动外部设备。
4. 显示器驱动:DAC可以用于将数字图像信号转换为模拟视频信号,用于显示器的驱动和图像输出。
需要根据具体的项目需求和设计要求确定ADC和DAC的使用场景。在实际应用中,它们通常会同时使用,以实现模拟信号的采集和输出。
如何通过UART实现DAC的功能?
一、前言
视频加载中...
如果在电子线路设计中,碰到一个情况,那就是,单片机没有DAC资源,也没有多余的 PWM 端口可以使用。只剩下一个 串口还能用。那么如何通过该端口输出模拟电压呢?
利用单片机的端口,输出一个占空比可以调节的方波信号,经过RC低通滤波器,去除其中的交流分量之后,便可以输出方波信号中的直流信号。那么就剩下一个问题了,如何应用 UART 输出一个高电平占空比可以改变的方波信号呢?
单片机的串口发送一个字节的信号波形中,包括一个bit 的起始位,一个bit 的停止位。它们分别是0 和 1,这是无法改变的。中间八个bit的数据位是可以改变的。比如发送0x44,其中就会包含有两位高电平。这样就有了8个可以被控制的高低电平的数据位。那么这就可以实现 3bit 位的 DAC输出了。如果想实现 8bit 的 DAC输出。则需要 256个可以被控制的数据位。这样只要将连续32个发送字节合在一起,变可以形成256位可以控制高低电平的信号波形。从而实现 8bit 的 DAC 输出了。下面通过单片机测试一下这种串口输出模拟量的性能。
二、测试电路
设计基于STM32F103的测试电路板。这颗芯片我手边有很多,所以选择它进行实验。利用它的 串口2 进行测试。串口1用于程序的下载。使用RC低通滤波器对 TXD2信号进行滤波。实际上 RXD2 是没有使用的。另外,还将两路ADC引导端口。这样,可以利用ADC对外边送入的信号进行采集之后,再从 TXD2 送出,验证一下对音频信号的采集与合成的功能。布置单面测试电路板。其中包括一个飞线,使用 0 欧姆电阻进行跳线。
▲ 图1.2.1 测试电路原理图
▲ 图1.2.2 PCB版图
一分钟之后获得了两块测试PCB电路板,其中有一块有点过腐蚀。使用另外一块比较正常的进行测试。
焊接电路。放置在面包板上进行测试。面包板直接给测试电路提供 3.3V的工作电源。程序通过探针夹子进行下载。
三、软件测试
设置单片机的 UART2 的基本参数。输出波特率为 1MHz。这样可以提高输出信号的更新率。通过示波器可以测量到输出信号 每一位的时间 为1微秒,对应 1MHz的波特率。启动DMA输出模式,UART2 便可以通过DMA持续发送内存中 32 个字节内容。
D:\zhuoqing\window\ARM\IAR\STM32\Test\2024\Test1\Core\Src\main.c
将32个字节设置为0,输出的电压波形,经过滤波之后测得的直流电压为 0.326V。其中看到的脉冲是每个字节的停止位对应的高电平脉冲。设置32个字节都为 0xff,看到的低脉冲是每个字节的起始位。读取的滤波后的直流电压为 2.9V。设置32个字节为 0x55。此时出现正负交替的脉冲波形,滤波之后的直流电压为 1.61V。
下面分别设置32个字节中,高电平位数从0变化到255,测量滤波之后的输出直流电压。可以看到随着位数的增加,输出直流电压线性上升。由于串口发送字节存在着起始位和停止位,所以对应的直流信号不是从零开始,最高电平也不是输出信号的最高值。
▲ 图1.3.1 设置32字节中高电平位数与滤波之后的直流电压
设置输出DMA中的32个字节的 1 的位数按照正弦波变化,串口信号滤波之后输出完美的正弦波形。设置输出数据递增,滤波后的波形呈现锯齿波形。在下降沿出现缓变,这是因为输出RC低通滤波引起的。这是输出高低电平的情况,RC低通滤波在上升和下降沿都引起缓变。
※总 结 ※
本文测试了利用单片机串口输出PWM波形,然后通过低通滤波形成直流电压。利用这种方式,的确可以在特殊的情况下,给单片机产生一个DAC的端口。
相关问答
单片机DAC 运放?全想DAC2,自己加钱换的Muses02运放,一直在用,十分满意。完全符合题主要求,还带遥控器。声音十分有感情,中频细腻,比很多千元国砖都好,价格500左右。这个...
51 单片机 + DAC 0832输出正弦波最大频率问题?51单片机有很多种,以AT89S52为例,晶振12M,则系统时钟1M,能够定时的最短时间是1us,DAC0832的输入信号要保持1us以上。最大输出频率、是否失真与正弦波的取点个...
什么模块可以让 单片机 的数字信号转换成音频信号?你好!关于这个问题:什么模块可以让单片机的数字信号转换成音频信号?1、单片机本身可以模拟输出音频信号2、输出音频信号其实就是AD采样的逆向工程。即DA3、...
单片机 蜂鸣器除了那种调的声音,还能发出人说话的声音吗?单片机蜂鸣器一般用于发出简单的音调和警报声,不能直接用于模拟人的语音。然而,通过与单片机的组合使用,可以实现类似人说话的声音。具体实现方法是,在单片...
dac 0832芯片的功能?DAC0832(数模转换器的一种)用作过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自动控制。数模转换器电路还用再利用反馈技术的模数转换器设计...
单片机 ,什么是串行口,什么是并行口? - 小小一个小明 的回...有一根时钟线,一根数据线,一个时钟周期传送二进制1位,要传送一个字节至少需要8个时钟周期,串行线根数少,远程传输抗干扰能力强,成本低。...并行接...
PLC和 单片机 的区别是什么?[最佳回答]单片机是一种芯片,在一定场合,配合外围电路,可以用来设计所需要的各种功能,大都用汇编语言、C语言等来开发嵌入式软件,可应用于各种领域。PLC是一...
单片机 ,什么是串行口,什么是并行口? - 珂珂珂的 的回答 - 懂得有一根时钟线,一根数据线,一个时钟周期传送二进制1位,要传送一个字节至少需要8个时钟周期,串行线根数少,远程传输抗干扰能力强,成本低。...并行接...
怎么检测 单片机 的好坏?第一步:从表象来判断:首先我们可以用手去触摸单片机的表面(小心烫到手),看是否发烫?如果发烫,极有可能就是单片机坏掉了,有些甚至直接冒烟。为了进一步...
单片机 speaker怎么添加自主音频?要在单片机上添加自主音频,您需要完成以下步骤:1.生成音频数据:您需要创建或生成您想要播放的音频数据。这可以是以特定格式存储的音频文件,例如WAV或MP3文...