数码之家

 找回密码
 立即注册
搜索
查看: 765|回复: 1

[配件] 24位高精度AD采集模块-STC12C5608AD单片机读取HX710B结果并在串口示波器显示

[复制链接]
发表于 2024-1-20 13:19:39 | 显示全部楼层 |阅读模式 IP属地:河南信阳

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hardair 于 2024-1-20 13:20 编辑


                               
登录/注册后可看大图



                               
登录/注册后可看大图


借着周五晚上和周六上午的空余时间,把板子跑了起来。

下面贴出并分析关键代码,和各位爱好者分享:

包含文件:
  1. #include "STC12C5630AD.h"
  2. #include "intrins.h"
复制代码

主要功能相关的GPIO引脚定义,其中板载LED控制对应P37,与HX710B数据和时钟对应的是P34和P35。
  1. //功能GPIO引脚定义

  2. sbit LED = P3^7;

  3. sbit AD_DAT = P3^4;
  4. sbit AD_SCK = P3^5;
复制代码


串口1初始化:
  1. //串口1初始化
  2. void UartInit(void)                //9600bps@11.0592MHz
  3. {
  4.         PCON &= 0x7F;                //波特率不倍速
  5.         SCON = 0x50;                //8位数据,可变波特率
  6.         AUXR &= 0xBF;                //定时器时钟12T模式
  7.         AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
  8.         TMOD &= 0x0F;                //设置定时器模式
  9.         TMOD |= 0x20;                //设置定时器模式
  10.         TL1 = 0xFD;                //设置定时初始值
  11.         TH1 = 0xFD;                //设置定时重载值
  12.         ET1 = 0;                //禁止定时器%d中断
  13.         TR1 = 1;                //定时器1开始计时
  14. }
复制代码
串口1发送字节:
  1. //串口1发送字节
  2. void SendByte(BYTE dat)
  3. {

  4.         SBUF = dat;        //将数据发送到串口缓冲
  5.         
  6.         while (TI == 0);        //等待前序发送完成
  7.         
  8.         TI = 0;        //清除发送完成标记
  9.         
  10. }
复制代码


读取HX710B的AD采集结果:
  1. //读取HX710B的AD采集结果
  2. FOUR_BYTE GetADC(void)
  3. {
  4.         
  5.         BYTE i = 0;

  6.         FOUR_BYTE Count = 0;
  7.                
  8.         //等待AD转换完成
  9.         while(AD_DAT);
  10.         
  11.         for(i = 0; i < 24; i ++)
  12.         {
  13.                
  14.                 AD_SCK = 1;
  15.                
  16.                 Count = Count << 1;
  17.                
  18.                 AD_SCK = 0;
  19.                
  20.                 if(AD_DAT)
  21.                         Count ++;
  22.         }
  23.         
  24.         //测量差分输入
  25.         AD_SCK = 1;
  26.         AD_SCK = 0;        
  27.         
  28.         //测量DADD-AVDD电
  29.         //AD_SCK = 1;
  30.         //AD_SCK = 0;                        
  31.         
  32.         //数据转换
  33.         Count = Count ^ 0x800000;
  34.         
  35.         return Count;

  36. }
复制代码


循环闪烁LED,并读取HX710B的AD采集结果:

  1. while(1)
  2.         {
  3.                 LED = 0;
  4.                 for(i = 0; i < 8; i ++)
  5.                         Delay10ms();
  6.                
  7.                 LED = 1;
  8.                 Delay100ms();
  9.                 //Delay100ms();

  10.                 Count = GetADC();
  11.                
  12.                 //串口输出32位整数,文本形式
复制代码


SerialChart串口示波器配置文件:
  1. [_setup_]
  2. port=COM8
  3. baudrate=9600

  4. width=1000
  5. height=300
  6. background_color = white

  7. grid_h_origin = 200
  8. grid_h_step = 1
  9. grid_h_color = #EEE
  10. grid_h_origin_color = #CCC

  11. grid_v_origin = 100
  12. grid_v_step = 10
  13. grid_v_color = #EEE
  14. grid_v_origin_color = #CCC

  15. [_default_]
  16. min=0
  17. max=17000000

  18. [DEMO]
  19. color=blue
复制代码

SerialChart串口示波器界面截图如下:
串口示波器-微信图片_20240120131542.png


模块可以在俺的淘宝店购买,链接地址:https://item.taobao.com/item.htm?id=760679720283

也可以在淘宝搜索“STC12C5608AD HX710B”






发表于 2024-1-24 12:00:02 来自手机浏览器 | 显示全部楼层 IP属地:广东阳江
我自制的hx720+stc单片机。  后面的2位数字跳动很利害,还未找到原因,丢在一边几个月了。  现在估计是供电部分有问题,我是直接从电脑usb取电。  到有空时要换个稳定的线性电源重新试验
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-28 21:50 , Processed in 0.124800 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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