找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MCP3208,ADC程序设计

[复制链接]
跳转到指定楼层
楼主
ID:232460 发表于 2017-9-11 18:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCP3208,ADC程序设计
下载:
MCP3204.zip (715 Bytes, 下载次数: 61)

  1. #include "config_Economy.h"
  2. #include "..\APP\config.h"
  3. #include "typedef.h"
  4. #include "extern.h"

  5. void adclkoutvalue(unsigned char bits)
  6. {
  7.         if(bits==1)
  8.                 FIO1SET =0x80000000;
  9.         else
  10.                 FIO1CLR =0x80000000;
  11. }

  12. void adcsvalue(unsigned char bits)
  13. {
  14.         if(bits==1)
  15.                 FIO0SET =1<<27;
  16.         else FIO0CLR =1<<27;
  17. }

  18. void adconfig(unsigned char bits)
  19. {
  20.         if(bits==1)
  21.                 FIO0SET |=1<<28;
  22.         else FIO0CLR =1<<28;
  23. }

  24. unsigned char add(void)
  25. {
  26.         if((FIO1PIN&(1<<30))>0)        return 1;
  27.         else return 0;
  28. }

  29. void adclk_out(void)
  30. {
  31.         FIO1DIR |=0x80000000;                        //输出
  32. }
  33. void add_out(void)
  34. {
  35.         FIO1DIR &=~(1<<30);                         //输入
  36. }

  37. void add_config(void)
  38. {
  39.         FIO0DIR |=1<<28;                         //输出               
  40. }

  41. void ad_cs(void)
  42. {
  43.         FIO0DIR |=1<<27;                         //输出
  44. }

  45. unsigned int read_mcp3204(unsigned char channel)
  46. {
  47. unsigned int value;
  48. unsigned int i;
  49. unsigned char start=0x18;
  50.         adcsvalue(1);
  51.         adclkoutvalue(0);
  52.         adconfig(0);
  53.         OSTimeDlyHMSM(0,0,0,1);

  54.         start |= channel;
  55.         adcsvalue(0);
  56.         OSTimeDlyHMSM(0,0,0,1);
  57.         for(i=0;i<2;i++)
  58.         {
  59.                 adclkoutvalue(0);
  60.                 adconfig(0);
  61.                 OSTimeDlyHMSM(0,0,0,1);
  62.                 adclkoutvalue(1);
  63.                 OSTimeDlyHMSM(0,0,0,1);
  64.         }
  65.         for(i=0;i<8;i++)
  66.         {
  67.                 adclkoutvalue(0);
  68.                 if(((1<<(7-i))&start)>0) adconfig(1);  
  69.                 else adconfig(0);
  70.                 OSTimeDlyHMSM(0,0,0,1);
  71.                 adclkoutvalue(1);
  72.                 OSTimeDlyHMSM(0,0,0,1);
  73.         }
  74.         for(i=0;i<2;i++)
  75.         {
  76.                 adclkoutvalue(0);
  77.                 adconfig(0);
  78.                 OSTimeDlyHMSM(0,0,0,1);
  79.                 adclkoutvalue(1);
  80.                 OSTimeDlyHMSM(0,0,0,1);
  81.         }
  82.         value = 0;
  83.         for(i=0;i<12;i++)
  84.         {
  85.                 adclkoutvalue(0);       
  86.                 OSTimeDlyHMSM(0,0,0,1);
  87.                 adclkoutvalue(1);
  88.                 OSTimeDlyHMSM(0,0,0,1);
  89.                 value = value<<1;
  90.                 if(add()==1)
  91.                 {                                                
  92.                         value++;
  93.                 }       
  94.         }
  95.         adcsvalue(1);
  96.         adclkoutvalue(0);
  97.         adconfig(0);         
  98.         return(value);
  99. }

  100. void MCP3204_init(void)
  101. {
  102.         SCS        |= 0x01;
  103.         adclk_out();       
  104.         add_out();
  105.         add_config();
  106.         ad_cs();

  107.         adcsvalue(1);
  108.         adclkoutvalue(0);
  109.         adconfig(0);
  110. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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