找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机使用ADC0832进行数模转换源程序

[复制链接]
跳转到指定楼层
楼主
51单片机使用ADC0832进行数模转换在Project中进行仿真模拟


单片机源程序如下:
  1. #include <REGX52.H>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint   unsigned int
  5. //ADC0832绑定引脚
  6. sbit  ADCS=P1^3;
  7. sbit  ADDI=P1^5;
  8. sbit  ADCLK=P1^4;
  9. /**
  10.   * @brief  ADC083初始化,在程序的开头调用
  11.   * @param  无
  12.   * @retval 无
  13.   */
  14. void ADC0832_Init()
  15. {
  16.         ADCS=1;
  17. }

  18. /**
  19.   * @brief  ADC083获取无符号8位数据
  20.   * @param  无
  21.   * @retval 返回 usigned char 型数据
  22.   */
  23. uchar getDaTa()
  24. {
  25.     uchar i=0;
  26.     uchar j;
  27.     uint dat=0;
  28.     uchar ndat=0;

  29.     ADDI=1;
  30.     _nop_();
  31.     _nop_();
  32.     ADCS=0;//拉低CS端
  33.     _nop_();
  34.     _nop_();
  35.     ADCLK=1;//拉高CLK端
  36.     _nop_();
  37.     _nop_();
  38.     ADCLK=0;//拉低CLK端,形成下降沿1
  39.     _nop_();
  40.     _nop_();
  41.     ADCLK=1;//拉高CLK端
  42.     ADDI=1;     //选择通道0
  43.     _nop_();
  44.     _nop_();
  45.     ADCLK=0;//拉低CLK端,形成下降沿2
  46.     _nop_();
  47.     _nop_();
  48.     ADCLK=1;//拉高CLK端
  49.     ADDI=0;  //选择通道1
  50.     _nop_();
  51.     _nop_();
  52.     ADCLK=0;//拉低CLK端,形成下降沿3
  53.     ADDI=1;//控制命令结束
  54.     _nop_();
  55.     _nop_();
  56.     dat=0;
  57.     for(i=0;i<8;i++)
  58.     {
  59.         dat|=ADDI;//收数据
  60.         ADCLK=1;
  61.         _nop_();
  62.         _nop_();
  63.         ADCLK=0;//形成一次时钟脉冲
  64.         _nop_();
  65.         _nop_();
  66.         dat<<=1;
  67.         if(i==7)dat|=ADDI;
  68.     }  
  69.     for(i=0;i<8;i++)
  70.     {
  71.         j=0;
  72.         j=j|ADDI;//收数据
  73.         ADCLK=1;
  74.         _nop_();
  75.         _nop_();
  76.         ADCLK=0;//形成一次时钟脉冲
  77.         _nop_();
  78.         _nop_();
  79.         j=j<<7;
  80.         ndat=ndat|j;
  81.         if(i<7)ndat>>=1;
  82.     }
  83.     ADCS=1;//拉低CS端
  84.     ADCLK=0;//拉低CLK端
  85.     ADDI=1;//拉高数据端,回到初始状态
  86.     dat<<=8;
  87.     dat|=ndat;
  88.     return(dat);            //return ad k
  89. }
复制代码

Keil代码下载:
AD数模转换.zip (110.49 KB, 下载次数: 43)





评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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