基于AD转换模块的单片机仿真和C语言开发设计


 大学做过的一小设计,那会没事就弄这些AD\DA\MCU以及功能性的IC.    后来一老师要求做的这个,设计一多路数据采集系统,当时资料大多都是0809,0832之类的ADDA,网上找了部分资料。因为手上刚好有几片TLC2543。后来就用的它,完全满足题目要求吧。配上PTORUES仿真最后显示出来了。记得当时给老师看的时候用电阻做的10路模拟数据,然后用螺丝刀旋转电位器给被人看。


    没有什么额外特别的功能,相当于做了个AD+显示,也称得上是最小的一个系统了。


技术要求:


1、设计一种多路模拟信号采集模块,从多个通道轮流采集数据一次,并将采集的结果存放在数组中。要求进行电路仿真实验,并使用C语言进行程序的开发。

简易框架如下。


    最后用的PROTUES搭建的电路图。为了实现高速高精度多路数据采集。新片是需要串行输入数据的12 位 66kSPS ADC ,可编程 MSB/LSB 优先,可编程断电/输出数据长度,11 通道TLC2543。用的多路电位器模拟多路输入。软件分别测量电压。作为探测点。


    程序的流程就是利用不断的循环查找有没有变化,再显示。这里不多说,可以看附件程序。
读取AD程序时序如下(或者见附录):

/*启动A/D转换,并读取上次转换结果*/

uint read2543(CHN)

{

  uchar i,temp;

  uint read_ad_data = 0;

  CHN=CHN<<4;

  AD_IOCLK=0;

  AD_CS=1;

STC89C51单片机由CPU和8个部件组成,它们都通过片内单一总线连接,其基本结构依然是通用CPU加上外围芯片的结构模式,但在功能单元的控制上采用了特殊功能寄存器的集中控制方法。其基本组成如下图所示:

  AD_CS=0;

  temp=CHN;

  for(i=0;i<12;i++)

  {

  read_ad_data=read_ad_data<<1;

  if((temp&0x80)!=0){AD_DATIN=1;}

  else{AD_DATIN=0;}

  if(AD_DATOUT){read_ad_data=read_ad_data+1;}

  AD_IOCLK =1;

  _nop_();_nop_();_nop_();_nop_();

  AD_IOCLK =0;

  _nop_();_nop_();_nop_();_nop_();

  temp=temp<<1;

  }

  AD_CS=1;

  read_ad_data=read_ad_data&0x0fff;

  return(read_ad_data);

}

作者博客:http://bbs.ednchina.com/BLOG_ARTICLE_3031632.HTM

单片机

每天更新
单片机各种知识,电子制作DIY,及电子行业最新资讯,关注我们,棒棒哒!

1、课程特色:采用国际标准化的通用单片机器材和图形化界面编程软件,适合8-12岁儿童学习。单片机机器人可以让学员学习到关于机器人的基础知识,他们可以学习到有关电器、电子、构造以及传感器理论,搭建过程需要用到螺丝刀以及各种小零件,可以很好的锻学员的动手能力,儿童在课程中可以逐步学员怎么制作一个机器人。

生成海报
点赞 0

Abin

我还没有学会写个人说明!

相关推荐