找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5902|回复: 11
打印 上一主题 下一主题
收起左侧

怎么通过51实现AD采集

[复制链接]
跳转到指定楼层
楼主
ID:240237 发表于 2017-10-17 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在需要通过51单片机一段变化的波段,然后在通过51去采集这样的一段波型
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:82765 发表于 2017-10-17 16:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:7485 发表于 2017-10-17 18:23 | 只看该作者
“我现在需要通过51单片机一段变化的波段,然后在通过51去采集这样的一段波型

看不懂,......
回复

使用道具 举报

地板
ID:123289 发表于 2017-10-17 19:25 | 只看该作者
研读AD,然后定出间隔采样的时间,就可以了。
回复

使用道具 举报

5#
ID:240344 发表于 2017-10-17 19:37 | 只看该作者
要先确认自己用的是什么型号的AD芯片,方法是不一样的
回复

使用道具 举报

6#
ID:227637 发表于 2017-10-17 20:30 | 只看该作者
51单片机有很多型号,普通的51单片机是没有ADC的,需要外接ADC芯片,一般是ADC0832等等,网上很多,利用51单片机驱动AD芯片进行采样就可以实现AD采集,利用定时器设置好采样率就OK了
回复

使用道具 举报

7#
ID:111634 发表于 2017-10-17 21:07 | 只看该作者
本帖最后由 zl2168 于 2017-10-17 21:12 编辑

给你几个参考案例
1.并行A-D,控制AD的CLK脉冲分为ALE输出CLK和虚拟CLK
实例81  ADC0808中断方式A-D(ALE输出CLK
实例82  ADC0808查询方式A-D(ALE输出CLK
实例83  ADC0808延时方式A-D(ALE输出CLK
实例84  ADC0808并行A-D(虚拟CLK
2.串行A-D,控制AD的CLK脉冲分为TXD输出CLK和虚拟CLK实例85  ADC0832串行A-DTXD输出CLK
实例86  ADC0832串行A-D(虚拟CLK
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。与其他书比较一下,有比较才能有鉴别!绝不忽悠你!
回复

使用道具 举报

8#
ID:240600 发表于 2017-10-18 15:25 | 只看该作者
主要看采样频率吧,看下数字信号就知道了,采样率是频率的两倍以上就没问题的啦,具体程序网上有很多的
回复

使用道具 举报

9#
ID:241073 发表于 2017-10-21 16:37 | 只看该作者
/*这是AD采集,数码管显示。你可以借鉴一下*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit ADrd=P3^7;
sbit ADwr=P3^6;
sbit dula=P2^6;
sbit wela=P2^7;
uint disnum;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uchar x)
{
        int a,b;
        for(a=x;a>0;a--)
        for(b=110;b>0;b--);
}

void display(uint disnum)
{
                P0=table[disnum/100];
                dula=1;
                dula=0;
                P0=0xfe;                                                             
                wela=1;
                wela=0;                 
                delay(10);

                P0=table[disnum%100/10];
                dula=1;
                dula=0;
                P0=0xfd;
                wela=1;
                wela=0;
                delay(10);

                P0=table[disnum%100%10];
                dula=1;
                dula=0;
                P0=0xfb;
                wela=1;
                wela=0;
                delay(10);               
}
void main()
{
        while(1)
        {
                wela=1;               

                P0=0x7f;
                ADwr=1;
                ADwr=0;
                ADwr=1;

                delay(10);

                P1=0xff;
                ADrd=1;
                ADrd=0;
                disnum=P1;
                ADrd=1;

                P1=disnum;
//                for(a=20;a>0;a--)
                display(disnum);
        }
}
回复

使用道具 举报

10#
ID:241073 发表于 2017-10-21 16:40 | 只看该作者
用到的芯片是ADC0804。照着这个原理图找到对应的芯片连接就行

TX-1C增强版原理图.pdf

216.16 KB, 下载次数: 17

回复

使用道具 举报

11#
ID:281113 发表于 2020-2-19 09:48 | 只看该作者
参考一下
回复

使用道具 举报

12#
ID:93224 发表于 2020-2-19 16:02 | 只看该作者
看你用的什么51单片机,有的51单片机自带AD,所以外部不需要再加ADC模块,如果自身不带的话,加个ADC模块
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表