欢迎来到泰骏兴电子,大家有问题可以直接联系管理员QQ:233619809单片机 QQ群:59194556 各位游客也可以注册玩玩,享受更多权益。温馨提示:本网站仅提供平台学习以及渠道,一切后果自行承担,还望广大用户提高自我意识,请不要轻易相信他人,请不要轻易相信他人,请不要轻易相信他人。为了更好的管理论坛工作,所以现在使用邮箱注册,如果以前的邮箱不能修改的,请联系管理员代为修改

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 189|回复: 0

STM32操作ADC0832的AD器件程序

[复制链接]
发表于 2023-4-25 09:07:36 | 显示全部楼层 |阅读模式
  1. #include "adc0832.h"




  2. unsigned int ADC0832(unsigned char channel)        //模数转换
  3. {
  4.     unsigned char i;
  5.     unsigned char x=0x00;
  6.     unsigned char y=0x00;
  7.         u16 dat;
  8.     CLK=0;      //初始化
  9.     DI=1;
  10.     _nop_();
  11.     CS=0;
  12.         CS1=1;
  13.     _nop_();
  14.     CLK=1;
  15.     _nop_();

  16.     if(channel==0x00)       //通道选择
  17.     {       //通道0
  18.         CLK=0;
  19.         DI=1;
  20.         _nop_();
  21.         CLK=1;
  22.         _nop_();
  23.         CLK=0;
  24.         DI=0;
  25.         _nop_();
  26.         CLK=1;
  27.         _nop_();
  28.     }
  29.     else        //通道1
  30.     {
  31.         CLK=0;
  32.         DI=1;
  33.         _nop_();
  34.         CLK=1;
  35.         _nop_();
  36.         CLK=0;
  37.         DI=1;
  38.         _nop_();
  39.         CLK=1;
  40.         _nop_();
  41.     }

  42.     CLK=0;
  43.     DI=1;
  44.     for(i=0;i<8;i++)        //读取ADC0832输出的前8位数据
  45.     {
  46.         x<<=1;
  47.         _nop_();
  48.         CLK=1;
  49.         _nop_();
  50.         CLK=0;
  51.         if(DO==1)
  52.         {
  53.             x|=0x01;
  54.         }
  55.         else
  56.         {
  57.             x|=0x00;
  58.         }
  59.     }
  60.     for(i=0;i<8;i++)        //读取ADC0832输出的后8位数据
  61.     {
  62.         y>>=1;
  63.         if(DO==1)
  64.         {
  65.             y|=0x80;
  66.         }
  67.         else
  68.         {
  69.             y|=0x00;
  70.         }
  71.         _nop_();
  72.         CLK=1;
  73.         _nop_();
  74.         CLK=0;
  75.     }
  76.     if(x==y)        //校验,比较前8位与后8位的值
  77.     {
  78.         dat=x;
  79.     }
  80.     _nop_();
  81.     CS=1;       //释放ADC0832
  82.     DO=1;
  83.     CLK=1;
  84.     return dat;
  85. }

  86. unsigned int ADC0832_1(unsigned char channel)        //模数转换
  87. {
  88.     unsigned char i;
  89.     unsigned char x=0x00;
  90.     unsigned char y=0x00;
  91.         u16 dat;
  92.     CLK=0;      //初始化
  93.     DI=1;
  94.     _nop_();
  95.         CS=1;
  96.     CS1=0;
  97.     _nop_();
  98.     CLK=1;
  99.     _nop_();

  100.     if(channel==0x00)       //通道选择
  101.     {       //通道0
  102.         CLK=0;
  103.         DI=1;
  104.         _nop_();
  105.         CLK=1;
  106.         _nop_();
  107.         CLK=0;
  108.         DI=0;
  109.         _nop_();
  110.         CLK=1;
  111.         _nop_();
  112.     }
  113.     else        //通道1
  114.     {
  115.         CLK=0;
  116.         DI=1;
  117.         _nop_();
  118.         CLK=1;
  119.         _nop_();
  120.         CLK=0;
  121.         DI=1;
  122.         _nop_();
  123.         CLK=1;
  124.         _nop_();
  125.     }

  126.     CLK=0;
  127.     DI=1;
  128.     for(i=0;i<8;i++)        //读取ADC0832输出的前8位数据
  129.     {
  130.         x<<=1;
  131.         _nop_();
  132.         CLK=1;
  133.         _nop_();
  134.         CLK=0;
  135.         if(DO==1)
  136.         {
  137.             x|=0x01;
  138.         }
  139.         else
  140.         {
  141.             x|=0x00;
  142.         }
  143.     }
  144.     for(i=0;i<8;i++)        //读取ADC0832输出的后8位数据
  145.     {
  146.         y>>=1;
  147.         if(DO==1)
  148.         {
  149.             y|=0x80;
  150.         }
  151.         else
  152.         {
  153.             y|=0x00;
  154.         }
  155.         _nop_();
  156.         CLK=1;
  157.         _nop_();
  158.         CLK=0;
  159.     }
  160.     if(x==y)        //校验,比较前8位与后8位的值
  161.     {
  162.         dat=x;
  163.     }
  164.     _nop_();
  165.     CS1=1;       //释放ADC0832
  166.     DO=1;
  167.     CLK=1;
  168.     return dat;
  169. }

  170. 程序是两片ADC,一个函数一片,共用DIO与CLK,CS线是单独的


复制代码



本帖子中包含更多资源

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

×
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|泰骏兴电子科技有限公司 ( 粤ICP备2023060260号-1 ) 单片机爱好者

GMT+8, 2026-5-27 02:30

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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