16位adc AD7705单片机例程(串口打印采集数据)

发布者:王岚枫最新更新时间:2020-02-21 来源: 51hei关键字:16位adc  AD7705  单片机  串口打印 手机看文章 扫描二维码
随时随地手机看文章

1.本例程适合的CPU:   STC89C52   11.0592晶振

2.编译环境: Keil_c51_v802

2.串口输出的波特率 = 9600bps  无校验 无硬件流控(请取消串口工具上的RTS CTS功能)

3.请在PC机上安装串口软件: SecureCRT(v6.1.0英文安装版).rar

4.如果你的板子经常出现SPI接口时序迷失,就请检查P1口上的上拉电阻配置。这种情况多半是波形不好所致。

  (1)如果你使用发光二极管串联电阻代替上拉电阻,则极容易迷失接口。

  (2)如果上拉电阻大于2K欧姆,波形上升沿比较缓,会影响时序。

  (3)建议: P1口增加1K-2K欧姆的上拉电阻(不要LED串联)。


5. 在bsp.c 中有ms延迟函数,该函数是按照89C52 12T指令周期, 11.0592晶振调试通过的。

  

  void bsp_DelayMS(uint16_t n)  延迟精度 99% (500ms 实测 498ms), 如果换其他CPU,请自行调整。


6. TM7705的驱动程序在 bsp_tm770.c 和.h文件。

  其中  static void TM7705_WaitDRDY(void) 函数,已经做了接口时序迷失处理。当时序迷失时,会自动重新同步。


【接线方法】

    TM7705模块   STC89C52开发板

      VCC   ------  5.0V (3.3V)

      GND   ------  GND

      CS    ------  P1.0

      RST   ------  P1.1   

      DIN   ------  P1.2

      SCK   ------  P1.3

      DOUT  ------  P1.4

      DRDY  ------  P1.5


单片机源程序如下:

#include "bsp.h"


/* 定义例程名和例程发布日期 */

#define EXAMPLE_NAME        "STC89C52_TM7705双路ADC模块例程"

#define EXAMPLE_DATE        "2014-04-20"

#define DEMO_VER                "1.0"


static void PrintfLogo(void);

static void PrintfHardInfo(void);

static void TM7705_Demo(void);


/*

*********************************************************************************************************

*        函 数 名: main

*        功能说明: C程序入口

*        形    参:无

*        返 回 值: 无

*********************************************************************************************************

*/

void main(void)

{

        bsp_Init();     /* 初始化底层硬件。 该函数在 bsp.c文件 */

        PrintfLogo();        /* 打印例程logo */

        PrintfHardInfo();        /* 打印硬件接线信息 */


        TM7705_Demo();

}


/*

*********************************************************************************************************

*        函 数 名: TM7705_Demo

*        功能说明: 定时读取TM7705的ADC值,并打印到串口。请通过PC机串口工具查看结果。

*        形    参:无

*        返 回 值: 无

*********************************************************************************************************

*/

static void TM7705_Demo(void)

{

        uint16_t adc1, adc2;

        

        bsp_InitTM7705();                        /* 初始化配置TM7705 */


        TM7705_CalibSelf(1);                /* 自校准。执行时间较长,约180ms */                

        adc1 = TM7705_ReadAdc(1);                                

        

        TM7705_CalibSelf(2);                /* 自校准。执行时间较长,约180ms */

        adc2 = TM7705_ReadAdc(2);        

        

        while (1)

        {        

                bsp_Idle();                


                #if 1        

                        /* 双通道切换采样,执行一轮实际那约 160ms */                        

                        adc1 = TM7705_ReadAdc(1);        /* 执行时间 80ms */                

                        adc2 = TM7705_ReadAdc(2);        /* 执行时间 80ms */

                #else

                        /* 如果只采集1个通道,则刷新速率 50Hz (缺省设置的,最大可以设置为500Hz) */

                        adc1 = TM7705_ReadAdc(1);        /* 执行时间 20ms (50Hz速率刷新时) */                

                        adc2 = 0;

                #endif

                        

                /* 打印采集数据 */

                {

                        int volt1, volt2;

                        

                        /* 计算实际电压值(近似估算的),如需准确,请进行校准 */

                        volt1 = ((int32_t)adc1 * 5000) / 65535;

                        volt2 = ((int32_t)adc2 * 5000) / 65535;

                        

                        /* 打印ADC采样结果 */        

                        printf("CH1=%5ld (%5dmV) CH2=%5ld (%5dmV)r", (long int)adc1, volt1, (long int)adc2, volt2);

                }

        }

}


/*

*********************************************************************************************************

*        函 数 名: PrintfLogo

*        功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果

*        形    参:无

*        返 回 值: 无

*********************************************************************************************************

*/

static void PrintfLogo(void)

{

        /* 友情提示:

                使用STVD开发时,printf/sprintf 入口参数 %d 必须是 int 类型(16位),否则打印结果不正确。

                IAR无此问题。

        */


        printf("*************************************************************nr");

        printf("* 例程名称   : %srn", EXAMPLE_NAME);        /* 打印例程名称 */

        printf("* 例程版本   : %srn", DEMO_VER);                /* 打印例程版本 */

        printf("* 发布日期   : %srn", EXAMPLE_DATE);        /* 打印例程日期 */

        printf("* QQ    : 1295744630 rn");

        printf("* Email : armfly@qq.com rn");

        printf("* Copyright www.armfly.com 安富莱电子rn");

        printf("*************************************************************nr");

}


/*

*********************************************************************************************************

*        函 数 名: PrintfHardInfo

*        功能说明: 打印硬件接线信息

*        形    参:无

*        返 回 值: 无

*********************************************************************************************************

*/

static void PrintfHardInfo(void)

{

        printf("接线方法: rn");

        printf("AD7705模块    51开发板(STC89C52, 11.0592M晶振)rn");

    printf("  VCC   <------  5.0V      5V供电rn");

    printf("  GND   -------  GND       地rn");          

        printf("  CS    <------  P1.0      SPI片选rn");

        printf("  RST   <------  P1.1      SPI复位rn");

        printf("  DIN   <------  P1.2      SPI MOSIrn");

        printf("  SCK   <------  P1.3      SPI时钟rn");

        printf("  DOUT  -------> P1.4      SPI MISOrn");

        printf("  DRDY  <------> P1.5      满信号,数据准备好rn");

}


关键字:16位adc  AD7705  单片机  串口打印 引用地址:16位adc AD7705单片机例程(串口打印采集数据)

上一篇:用单片机定时器T1中断控制两个LED以不同周期闪烁程序
下一篇:用单片机数码管和矩阵按键实现密码锁功能

推荐阅读最新更新时间:2024-11-10 14:27

51单片机PCF8591四路AD数值LCD1602屏显示源码
单片机源程序: /**********************BST-V51实验开发板例程************************ * 平台:BST-V51 + Keil U3 + STC89C52 * 名称:四路AD数值LCD1602屏显示 * 公司:深圳市亚博软件开发有限公司 * 晶振:11.0592MHZ ******************************************************************/ /*----------------------------------------------- 名称:IIC协议 PCF8591ADDA转换 显示有4个,注意
[单片机]
单片机-stm32-使用cdc类实现vcp(虚拟串口
本文所述内容基于STM32 HAL库完成 安装stm32CubeMx(ver4.26.0) 新建工程,选择stm32f412zg tx 配置RCC- HSE- crystal/Ceramic Resonnator 配置USB_OTG_FS- device only(disable Activate_VBUS) 配置MiddleWares- USB_DEVICE- communication device class(virtual Port com) 配置clock,input frequency设置为8Mhz 其他参数全部默认,生成代码 其中USBD_CDC_RegisterInterfac
[单片机]
<font color='red'>单片机</font>-stm32-使用cdc类实现vcp(虚拟<font color='red'>串口</font>)
如何利用stm32单片机进行超声波测距
首先来看模块图 在某宝上一搜就能找到,关于它的使用也是非常简单,先看数据手册里面需要注意的几点 1 基本的参数 在实际测试当中,最大测量三米多的距离还是可以,最小距离我没有做测试,我测的最小距离是50厘米,再往下没有继续测。 2测距的基本原理 这里的基本原理其实应该是它的使用方法,如果你仔细看它的数据手册会发现这种测距模块还有另外一种使用方法:USART通信。 看文字不是很直观,简单粗暴来看图 在写程序的时候没有使用USART的方法,因为上图的这种驱动方式我认为比较简单,后面的程序也是按照这个时序图来编写的。 注意:上图中关于测距的公式,在程序中我没有使用他给的公式,这一点在后面会提到。 3 实物图的连接 实物图
[单片机]
如何利用stm32<font color='red'>单片机</font>进行超声波测距
一种基于ARM 单片机与CPLD的数字轴角转换方法
引言 同步机.正余弦旋转变压器等广泛应用于火力控制.航空航天.自动控制等领域以实现系统间轴角信息的传输.由于计算机技术在上述领域的广泛应用,数字-轴角转换已(Digitalto Shaft-angle Converting,DSC)成为一个重要的问题.市场上DSC集成模块产品价格较高且接口不够灵活,在某些领域应用受到限制,特别在多路DSC使用时效费问题更为突出.基于上述问题,提出一种采用ARM 单片机+CPLD实现数字-轴角转换的方法. 1 数字-轴角转换原理数字-轴角转换(DSC)是将数字形式表示的轴角度θ通过运算电路转换为正余弦旋转变压器形式的电压(如式(1)),经正余弦旋转变压器和经过Scott变压器后驱动同步机指向对应轴角
[电源管理]
一种基于ARM <font color='red'>单片机</font>与CPLD的数字轴角转换方法
单片机在光谱仪控制及检测系统中的应用
引言 本文介绍使用单片机实现控制光谱仪的运作和对光谱仪出射信号光的检测。光谱仪是通过步进电机带动光栅转动,从而达到对信号光全波段的测量。只要实现对步进电机的控制即实现对光谱仪的控制。光谱仪的出射光通过光子计数器系统,成为具有与光强成一定比例的频率脉冲信号。只要完成对脉冲信号频率的测量即实现对光谱仪出射光的检测。单片机收集到出射光的频率参数,传送给计算机进行处理。计算机在此系统中提供良好的人机界面和进行数据处理、图形显示。 1硬件组成 为实现上述功能,系统组成有:AT89C51、MAX202、光子计数器、光谱仪和计算机。 单片机为ATMEL公司生产的AT89C51,此芯片具有和51系列单片机完全兼容的特性,其内部带4K字节F
[单片机]
<font color='red'>单片机</font>在光谱仪控制及检测系统中的应用
超声波测距51单片机12864液晶显示
超声波测距的模块,51单片机接上12864液晶,HC-SR04超声波模块,就可以了,具体程序没怎么看,超声波模块的硬件也不晓得,今天先贴个图,贴个程序吧(程序是淘宝买的模块附赠的)。 超声波测距51单片机12864液晶显示源程序: #include #include //引脚定义 sbit RX = P1 ^ 1; sbit TX = P1 ^ 2; sbit CS = P3 ^ 3; //片选 高电平有效 单片LCD使用时可固定高电平 sbit SID = P3 ^ 4; //数据 sbit SCLK = P3 ^ 5; //时钟 //Function
[单片机]
超声波测距51<font color='red'>单片机</font>12864液晶显示
lpc824 和lpc84x 微控制器的区别和联系
随着物联网技术的发展,MCU 处理器的能力日益强大,如今的MCU 与微处理器的界线越来越模糊,将会进一步融合成为嵌入式处理器。由于AMetal 已经完全屏蔽了底层的复杂细节,因此开发者仅需了解MCU 的基本功能就可以了。 1.1 LPC824 微控制器 1.1.1 特性 系统: -ARM Cortex-M0+嵌入式处理器,内置可嵌套中断向量控制器(NVIC),系统节拍定时器,运行时频率高达30 MHz; -支持串行线调试(SWD)模式与JTAG 边界扫描(BSDL)模式。 最高32kB 片内Flash 和8kB SRAM,带64 字节页面写入和擦除功能。 数字外设: -集成了多达32 个通用I/O 引脚,并具备可配置
[单片机]
lpc824 和lpc84x <font color='red'>微控制器</font>的区别和联系
AT89S52单片机P3口解惑
AT89S52单片机P3端口有第二功能,如下所示: P3.0 RXD (串行接口输入) P3.1 TXD (串行接口输出) P3.2 INT0 (外部中断0输入) P3.3 INT1 (外部中断1输入) P3.4 T0 (定时/计数器0的外部输入) P3.5 T1 (定时/计数器1的外部输入)
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved