ADC0832的使用

article/2025/10/19 0:56:41

百度搜索ADC0832 Datasheet便可以免费获取该芯片的权威数据手册。
最重要的是查看它的时序及对应英文词组的意思。
ADC0832 Timing
CLK为时钟信号,需要外部输入,可直接与单片机引脚相连
Chip Select(CS):从Timing图中可以看出芯片工作期间要保持低电平
DATA IN(DI):
第一个时钟周期,输入高电平为启动信号
第二个时钟周期,设置输入方式(单端输入/差分输入)
第三个时钟周期,设置具体通道
第四个时钟周期,将DI拉高,使主机处于接收状态,准备接收
具体的通道设置如图:
Channel Setting
DATA OUT (DO):8位的采样数据先从高位到低位输出,然后最低位复用,在从倒数二位输出只最高位,共15位数据(bit7–>bit0–>bit7)
除此之外,在第1,2,3周期DI配置通道,DO位TRI-STATE,在4-19周期,DO输出数据,DI处于DONT CARE状态。因此在实际的应用中,这两个引脚可以连在单片机的一个网络标号下。
Proteus原理图:
原理图
仿真结果:
在这里插入图片描述
程序:IODEFINE.H MAIN.H DELAY.C ADC0832.C MAIN.C
1.IODEFINE.H

#ifndef _IODEF_H_
#define _IODEF_H_#include<REG52.H>
#include <INTRINS.H>
#include <ABSACC.H>#define uchar unsigned char
#define uint unsigned int#define segA P1_4
#define segB P1_5					//用74HC139节省IO资源
#define LED P1_1
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
sbit P2_5 = P2^5;
sbit P2_6 = P2^6;
sbit P2_7 = P2^7;sbit P3_0 = P3^0;
sbit P3_1 = P3^1;
sbit P3_2 = P3^2;
sbit P3_3 = P3^3;
sbit P3_4 = P3^4;
sbit P3_5 = P3^5;
sbit P3_6 = P3^6;
sbit P3_7 = P3^7;#endif

2.MAIN.H

#ifndef _MAIN_H
#define _MAIN_H
/*--------------------------------------------*/#include "iodefine.h"				//自定义内容/*--------------------------------------------*/
#define DELAY
#define ADC0832/*--------------------------------------------*/
#ifdef DELAY
#define DELAY_MS_US
void delay_ms(uint xms);
void delay_us(uint Xus);
#endif/*--------------------------------------------*/
#ifdef ADC0832void start_ADC0832(void);					//启动0832以及设置采样方式
uchar getADC0832_DO(void);					//返回采样电压值0-5v
void ADC_dataProcess(uchar);				//ADC0832采样数据处理,存放在ADC_data[4]中
void ADC_seg7display();						//及显示在数码管
#endif/*--------------------------------------------*/
#endif

3.DELAY.C

#include"main.h"#ifdef DELAY_MS_US
void delay_ms(uint xms)	
{uint loop;for (loop = 0; loop < xms; loop++){/* 1ms_code 误差	+0.306315ms/2000ms */uchar i, j;_nop_();i = 2;j = 195;do{while (--j);} while (--i);}
}
/*--------------------------*/
void delay_us(uint Xus)
{uint i,j;for(i=0;i<8;i++){for(j=0;j<Xus;j++){_nop_();}}
}
#endif

4.ADC0832.C

#include "main.h"
#ifdef ADC0832extern uchar code SEG7_yin[];
static uint ADC_data[4] = {0};		//存放采样数据的各个位,便于数码管显示
#define	CS_LOW  P1_7 		//ADCS
#define CLK P3_4			//ADCLK
#define DI_DO P1_6			//DIO
#define led P1_1void start_ADC0832()
{CS_LOW = 1;CLK = 0;delay_us(2);			//未上电//第零个周期CS_LOW = 0;CLK = 0;DI_DO = 1;				//START//第一个周期delay_us(2);CLK = 1;delay_us(2);CLK = 0;DI_DO = 0;				//DIF差分输入方式//第二个周期delay_us(2);CLK = 1;delay_us(2);CLK = 0;DI_DO = 0;				//CH0 +  CH1 - //第三个周期delay_us(2);CLK = 1;delay_us(2);CLK = 0;DI_DO = 1;delay_us(2);			//MUX SETTING TIME}
uchar getADC0832_DO(void)	//返回采样电压值
{uchar i,dat = 0,redat = 0;for ( i = 0; i < 8; i++){CLK = 1;delay_us(2);CLK = 0;delay_us(2);dat  = (dat << 1)|(uchar)DI_DO;}for ( i = 0; i < 8; i++){redat = redat | ((uchar)DI_DO << i);CLK = 1;delay_us(2);CLK = 0;delay_us(2);}CS_LOW = 1;						//使能端禁止return (dat == redat)? dat : 0;	//校验正确则输出	}void ADC_dataProcess(uchar beforeDat)
{uint afterDat,qian,bai,shi,ge;afterDat = (double)beforeDat / 51 * 1000;qian = 	afterDat / 1000;bai =  (afterDat % 1000) / 100;shi = (afterDat % 100) / 10;ge =  afterDat % 10;ADC_data[0] = qian;ADC_data[1] = bai;ADC_data[2] = shi;ADC_data[3] = ge; }void ADC_seg7display()
{P0 = 0;P0 = SEG7_yin[ADC_data[0]]+0x80;//P0 = SEG7_yin[0];segB = 0;segA = 0;delay_us(100);P0 = 0;P0 = SEG7_yin[ADC_data[1]];//P0 = SEG7_yin[1];segB = 0;segA = 1;delay_us(100);P0 = 0;P0 = SEG7_yin[ADC_data[2]];//P0 = SEG7_yin[2]; segB = 1;segA = 0;delay_us(100);P0 = 0;P0 = SEG7_yin[ADC_data[3]];//P0 = SEG7_yin[3];segB = 1;segA = 1;delay_us(100);
}#endif

5.主函数(main.c)

#include "main.h"
uchar code SEG7_yin[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void main(){start_ADC0832();ADC_dataProcess(getADC0832_DO());while(1){ADC_seg7display();}
}

^^Crystal


http://chatgpt.dhexx.cn/article/pnULb0fU.shtml

相关文章

ADC0832的AD模数转换原理及编程

✅作者简介&#xff1a;嵌入式领域优质创作者&#xff0c;博客专家 ✨个人主页&#xff1a;咸鱼弟 &#x1f525;系列专栏&#xff1a;单片机设计专栏 目录 一、描述 二、模数转换原理&#xff1a; 三、模数转换的过程&#xff1a; 四、八位串行A/D转换器ADC0832简介&…

ADC0809的使用

一、前言介绍 使用ADC0809对一个模拟电压进行转换转换后的电压使用数码管显示出来 二、ADC0809的介绍 1、ADC0809简介 ADC0809是采用COMS工艺制造的双列直插式单片8位A/D转换器。分辨率8位&#xff0c;精度7位&#xff0c;带8个模拟量输入通道&#xff0c;有通道地址译码锁…

基于STM32F103RCT6的AD9833驱动开发(代码可以免费发邮箱)

基于STM32F103RCT6的AD9833驱动开发&#xff08;代码可以免费发邮箱&#xff09; AD9833手册分析 管脚定义&#xff1a; 手册就先讲到这里&#xff0c;不明白的欢迎评论区留言&#xff0c;另外我会把代码还有手册一并发送给感兴趣的朋友。 AD9833典型应用电路&#x…

AD9833数字信号发生器模块

简 介&#xff1a; 本文记录了使用快速制版测试AD9833这款数字信号发生器的内容。 关键词&#xff1a; AD9388&#xff0c;数字信号发生&#xff0c;快速制版 基于AD9833的正弦波&#xff0c;三角波&#xff0c;方波频率发生模块可以通过ZIGBEE来完成输入输出控制。其中还包括有…

STM32驱动AD9833模块

STM32驱动AD9833模块 前言软硬件准备一、本次使用的硬件二、代码 链接 前言 淘宝上买了个AD9833模块&#xff0c;stm32用商家的例程代码可以调频&#xff0c;可以调相&#xff0c;就是调不了幅度。换了几块不同32开发板都不行&#xff0c;重新以正点原子F103的工程为基础把驱动…

AD9833信号波形谐波

AD9833产生高频信号的谐波 ~ AD9833是一款AnalogDevices公司提供的数字信号可编程信号发生器芯片。它一般配有外置的主时钟信号&#xff0c;每次时钟信号将将内部28位的相位累加器递增一个相位数值。该相位数值由芯片SPI串口被外部的MCU设置。 相位累加器的高12位选择内部4096…

51驱动AD9833

使用51驱动AD9833模块的使用 关于AD9833相关参数程序流程代码片上传程序总结 原文链接&#xff1a;https://www.yourcee.com/newsinfo/2925703.html 关于AD9833 AD9833是一款低功耗、可编程波形发生器&#xff0c;能够产生正弦波、三角波和方波输出。各种类型的检测、信号激励…

Arduino + AD9833 波形发生器

Arduino SI5351 方波发生器_姜戈12的博客-CSDN博客SI5351 方波发生器https://blog.csdn.net/jiangge12/article/details/125815044 感觉 Si5351 只有方波还是少点意思。 看到有人做 AD9833 &#xff0c;成品卖355元。https://www.bilibili.com/video/av463721457/ 上面视频…

[技术讨论][DDS] AD9833原理介绍及chiliDDS驱动分享(上)

其实本文还有另一标题&#xff1a;《AD9833调不通&#xff1f;看这篇**就够了》 总觉字里行间隐隐霸气外露&#xff0c;不符合作者低调的风格&#xff0c;于是换了个朴素标题。标题狂不狂暂且不评&#xff0c;作者水平有限却是个事实&#xff1b;看到这篇**是你我缘分&#xff…

STM32单片机TFT显示AD9833 DDS信号发生器语音播报正弦波方波三角波

实践制作DIY- GC0146---TFT显示AD9833 DDS信号发生器 基于STM32单片机设计---TFT显示AD9833 DDS信号发生器 二、功能介绍&#xff1a; 硬件组成&#xff1a;STM32F103C系列最小系统板 1.8寸TFT彩屏AD9833信号模块4*4矩阵键盘DY-SV17F语音播报模块 1.通过4*4键盘来设定频率值和…

失真很大的波形发生器AD9833

波形发生器AD9833 01 波形发生器 一、AD9833 AD9833是一款AnalogDevices公司提供的数字信号可编程信号发生器芯片。 它一般配有外置的主时钟信号&#xff0c;每次时钟信号将将内部28位的相位累加器递增一个相位数值。 该相位数值由芯片SPI串口被外部的MCU设置。  相位累加器…

【STM32+cubemx】0030 HAL库开发:DDS芯片AD9833实现简单的波形发生器

大家好&#xff0c;我是学电子的小白白&#xff0c;今天带大家了解一款波形发生器芯片——AD9833。 AD9833是AD公司出品的一款DDS波形发生器&#xff0c;能够产生正弦波、三角波和方波输出。 1&#xff09;什么是DDS 通俗来讲&#xff0c;DDS是一种把波形预先存储在芯片内部的…

2.电赛进行时......(AD9833(DDS)模块的学习使用)

文章目录 前言一、DDS是什么&#xff08;信号发生器&#xff09;&#xff1f;二、AD9833模块介绍1.概述2.模块移植3、效果展示![在这里插入图片描述](https://img-blog.csdnimg.cn/2b0d29939275403f9248339c894965a0.png#pic_center) 前言 如果是玫瑰&#xff0c;它总会开花的…

AD9833介绍与应用(C语言实现)

1.特性 低功耗、可编程波形发生器&#xff0c;能产生正弦波、三角波和方波的输出&#xff1b; 主频时钟为25MHz时&#xff0c;可实现0.1Hz的分辨率&#xff1b;主频时钟为1MHz时&#xff0c;可实现0.004Hz的分辨率&#xff1b; 三线式串行接口(SDATA、SCLK、FSYNC)写入数据&a…

2021电赛预测—手把手带你玩转DDS模块AD9833

1、电赛预测 摘要&#xff1a;原定于7月28日才发布的器件清单&#xff0c;提前2天在26号就发布。感觉大家现在应该猜题预测&#xff0c;与其猜题&#xff0c;还不如静下心来做题。盲目猜题是没有必要的&#xff0c;熟悉相关器件倒尤为重要。不要到处去水群聊天&#xff0c;听风…

幻方....

c语言上机。。。。 c写的幻方。 1 /*************************************************************************2 > File Name: code/class/7.c3 > Author: 111qqz4 > Email: rkz2013126.com 5 > Created Time: 2015年11月11日 星期三 19时31分5…

Unity脚本生命周期流程图

转载自【无幻】&#xff1a;http://blog.csdn.net/akof1314/article/details/39323081 渲染 OnPreCull: 在相机剔除场景之前调用此函数。相机可见的对象取决于剔除。OnPreCull 函数调用发生在剔除之前。 OnBecameVisible/OnBecameInvisible: 在对象对于相机可见/不可见时调用此…

SonicUI在MFC中的使用

SonicUI是一个GUI引擎&#xff0c;提供了一些简单的UI组件实现高效率的UI效果&#xff0c;例如&#xff1a;自绘按钮、异形窗体、动画、超链接和图像操作方法。此项目作者开源到CodeProject&#xff0c;地址为&#xff1a;http://www.codeproject.com/KB/GDI/SonicUI.aspx。下载…

将ribbon主题应用到对话框中去(转载)

原帖地址&#xff1a;这里 找了N久&#xff0c;终于在无幻大神这里找到了将ribbon sdi主题应用到对话框程序中的方法&#xff0c;好像这是一个开源的项目&#xff0c;google code里有,地址在 这里。记录下&#xff1a; 1、下载网页里的资源KofPack0.1&#xff0c;vs里打开工程…

如何制作一个横版格斗过关游戏 Cocos2d-x 2.0.4

本文原创版权归 csdn 无幻 所有&#xff0c;转载请详细标明原创作者及出处&#xff0c;以示尊重&#xff01; 作者&#xff1a;无幻 原文&#xff1a;http://blog.csdn.net/akof1314/article/details/8549150 本文实践自 Allen Tan 的文章《How To Make A Side-Scrolling Bea…