[信息与通信]转换_第1页
[信息与通信]转换_第2页
[信息与通信]转换_第3页
[信息与通信]转换_第4页
[信息与通信]转换_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.8位A/D转换器ADC0809 (1)技术指标:  工作方式:逐次逼近式  转换时间:100s  线性误差:+/-1/2LSB  封装形式:28脚双列直插式  (2)简要说明  CMOS工艺,逐次比较式ADC,内含8通道多路开关,锁存逻辑控制器,具有三态输出缓冲器,能于微机兼容,输出电平与TTL或CMOS兼容。 (3)引脚说明  (4)功能框图(5)电器指标 (a)电源电压         &#

2、160; 65V (b)除输入端的任意端电压    -0.3 VDD+0.3V (c)控制输入端电压     -0.3+15V (d)工作温度      -4085    民品      -55125    军品 (e)储存温度      -65150   以

3、上的技术指标,我们都是要关心的,在使用时一定要注意。(6)时序图(7)0809接口框图  每一个部分的电路是独立的,完成AD转换首先地址选择,其次启动,等待,最后是读数,在完成AD转换时是相关的的,但接口电路的设计是独立的。(8)地址锁存的时序:(9)启动(10)等待(11)读数     设计此电路有两种方法:一种是利用I/O端口设计,另一种利用总线设计.例:利用I/O口设计。   在8088中不提供I/O口,利用74LS273和74LS245扩I/O端口。ALE,A0,A1,A2,START,OE要求CPU系统电路提供输出

4、端口,EOC,D0,D1-D7要求CPU系统电路提供输入端口。所以需要1片74LS273和两片74LS245.  译码电路,采用一对多设计:     A15  A14    A13   A12              A0   CS0  CS1  CS2      0

5、    0      X     X               X     0    1    1      0    1   

6、   X     X               X     1    0    1      1    0      X    

7、 X               X     1    1    0     CS0的地址为:0000-3FFFh     CS1的地址为:4000-7FFFh     CS0的地址为:8000-BFFFh   

8、;输出接口电路的设计:  输入电路接口电路的设计:对于8031的结构是:当前的主流CPU的结构:  目前芯片的设计都是基于I/O端口的方式:  软件编程的方法:     1、需求分析     2、算法     3、框图     4、编写代码     5、调试  需求分析:此程序采集8路将数据存放到某个数组中。  算法:简单略。&

9、#160; 框图:   初始化:硬件和变量为固定状态,硬件ALE为低,SATRT为高,OE为低,通道地址为第一个通道,存储数据的数组清零。选择通道:启动:等待:读数:     编写代码   利用C语言编写,C语言为中级语言,它具有低级语言和高级语言的特性,在利用C语言时,一种是加操作系统,另外是不加操作系统(操作系统的功能是内存管理,进程管理,设备管理,文件管理)。在单片机系统中这些功能都由我们自己来做。    所以变量的理解是关键。    变量

10、的理解第一是作用域(全局变量和局部变量)。    变量的理解第二是生存期(静态和动态变量)。    变量的理解第三是存储的位置(对于8088系统寄存器,数据区,堆栈区。其它还有更多的区域),这些都必须在程序中说明。   变量的理解第四变量的特点,字节数,具有地址的属性,描述方法,存放形式。不管是多少位机一个字节对应一个地址。    例如:int iii;    16位机,字节数16位,两个字节。低位字节存放在低位地址,高位字节存放高位地

11、址,以低位字节的地址代表所有单元的地址。描述方法,最高位为符号位,正数是以原码形式存放,负数是以补码形式存放。   在使用的时候降维,对于iii是个地址,常量。降维的含义是取地址的数据。如果取不到数据的话,返回这个单元的地址。如果取数据的话,返回数据,再不能降维。    例如:int S234;       s+1,*s+1,*s+1,*s+1的理解,*的意思也是降维。     s由两个元素组成,s0由三个元素组成,s00由四

12、个元素组成,s000由两个字节组成。    s首先降维,取第一个元素,但取不到具体数据,返回地址,那么就是S000的第一个字节存放的地址。1的维数和S相同,所以是加24。    对于语句和函数是复杂的动词。它一定是对变量的操作。理解变量就是名词!    每个程序都有自己的框架!对C程序,是由库函数和主函数构建的。    书写规范也可以说是习惯:常量和变量用名词,函数用动词和操作的变量,常量用大写字母和变量用小写字母。一般动词的第一个字母大写!  

13、  #inlude "stdio.h"    unsigned char ad_buf;       unsigned char ad_adr;       unsigned char buf;       unsigned char out_0809_data;       main() 

14、;                         int i;             Init();            

15、for(i=0;i<8;i+)                                            Set_ad0809_adr();  

16、;                    ad_adr=i;                      Start_ad0809();    

17、0;                 Delay_ad0809();                      Read_ad0809();       

18、60;              Write_data();                                  &

19、#160;      以上是不是在写作文!      功能:初始化硬件和变量     输入参数:空      输出参数:略        Init()              &

20、#160;     int i;          for(i=0;i<8;i+)                                

21、0; ad_bufi=0;                           ad_adr=0;         out_0809_data=00100000B; /start=1;ALE=0;OE=0;    

22、60;                             /加这个变量的目的是,对某一个端口操作时不破坏其它口          outportb(0x0,out_0809_data);   &

23、#160;           说明:     功能:设置通道     输入参数:ad_adr      输出参数:空      Set_ad0809_adr()           

24、60;          out_0809_data=out_0809_data|ad_adr;           outportb(0x0,out_0809_data);           out_0809_data=out_0809_data| 0x10;  /ALE=1;

25、0;           outportb(0x0,out_0809_data);           out_0809_data=out_0809_data& 0xef;  /ALE=0;            outportb(0x0,out_0809_da

26、ta);                功能:启动     输入参数:空      输出参数:空      Start_ad0809()             

27、0;        out_0809_data=out_0809_data&0xdf;  /START=0;            outportb(0x0,out_0809_data);           out_0809_data=out_0809_data|0x20;  /SATRT

28、=1;            outportb(0x0,out_0809_data);                功能:等待     输入参数:空      输出参数:空    

29、0; Delay_ad0809()                      unsigned char ccc;           ccc=inportb(0x8000);           c

30、cc=ccc&0x01;           while(ccc=1)                                    

31、      ccc=inportb(0x8000);                     ccc=ccc&0x01;                  

32、60;             ccc=inportb(0x8000);           ccc=ccc&0x01;           while(ccc=0)         

33、0;                                ccc=inportb(0x8000);                

34、     ccc=ccc&0x01;                                     功能:读数     输入参数:空 

35、;     输出参数:buf     Read_ad0809()                                out_0809_data=out_0809_data&0x40;

36、0; /OE=0;              outportb(0x0,out_0809_data);             buf=inportb(0x4000);             out_0809_data=out_0809_

37、data|0xbf;  /OE=1;              outportb(0x0,out_0809_data);                   功能:存数     输入参数:空   &#

38、160;  输出参数:ad_buf      Write_data()                          ad_bufad_adr=buf;         

39、60;        程序结束!    目前CPU的速度越来越快,绝大多数都已经是50MHz, 那么执行一条语句的速度也是越越来快,那么时间延时就不能忽略不计。    例如ALE的要求:    对于语句和函数是复杂的动词。它一定是对变量的操作。理解变量就是名词!    每个程序都有自己的框架!对C程序,是由库函数和主函数构建的。    书写规范也可以说是习惯:常量和变量用名词,

40、函数用动词和操作的变量,常量用大写字母和变量用小写字母。一般动词的第一个字母大写!    #inlude "stdio.h"    unsigned char ad_buf;       unsigned char ad_adr;       unsigned char buf;       unsigned char out_0809_

41、data;       main()                          int i;             Init();   &#

42、160;         for(i=0;i<8;i+)                                       

43、     Set_ad0809_adr();                      ad_adr=i;                   

44、60;  Start_ad0809();                      Delay_ad0809();                      Read_a

45、d0809();                      Write_data();                         &#

46、160;               以上是不是在写作文!      功能:初始化硬件和变量     输入参数:空      输出参数:略        Init()    

47、60;               int i;          for(i=0;i<8;i+)                        

48、;          ad_bufi=0;                           ad_adr=0;         out_0809_data=00100

49、000B; /start=1;ALE=0;OE=0;                                  /加这个变量的目的是,对某一个端口操作时不破坏其它口        &

50、#160; outportb(0x0,out_0809_data);               说明:     功能:设置通道     输入参数:ad_adr      输出参数:空      Set_ad0809_adr()  

51、;                    out_0809_data=out_0809_data|ad_adr;           outportb(0x0,out_0809_data);           out_

52、0809_data=out_0809_data| 0x10;  /ALE=1;            outportb(0x0,out_0809_data);           out_0809_data=out_0809_data& 0xef;  /ALE=0;      &#

53、160;     outportb(0x0,out_0809_data);                功能:启动     输入参数:空      输出参数:空      Start_ad0809()    

54、                  out_0809_data=out_0809_data&0xdf;  /START=0;            outportb(0x0,out_0809_data);         

55、  out_0809_data=out_0809_data|0x20;  /SATRT=1;            outportb(0x0,out_0809_data);                功能:等待     输入参数:空   

56、;   输出参数:空      Delay_ad0809()                      unsigned char ccc;           ccc=inportb(0x8000); 

57、60;         ccc=ccc&0x01;           while(ccc=1)                           &

58、#160;              ccc=inportb(0x8000);                     ccc=ccc&0x01;         

59、0;                      ccc=inportb(0x8000);           ccc=ccc&0x01;           while(ccc=0) 

60、;                                         ccc=inportb(0x8000);       &

61、#160;             ccc=ccc&0x01;                                    

62、; 功能:读数     输入参数:空      输出参数:buf     Read_ad0809()                             &

63、#160;  out_0809_data=out_0809_data&0x40;  /OE=0;              outportb(0x0,out_0809_data);             buf=inportb(0x4000);       &

64、#160;     out_0809_data=out_0809_data|0xbf;  /OE=1;              outportb(0x0,out_0809_data);                   功能:存数

65、60;    输入参数:空      输出参数:ad_buf      Write_data()                          ad_bufad_adr=buf;

66、0;                 程序结束!    目前CPU的速度越来越快,绝大多数都已经是50MHz, 那么执行一条语句的速度也是越越来快,那么时间延时就不能忽略不计。    例如ALE的要求:例利用总线设计:    以上论述了AD0809的接口电路分成通道选择,启动,等待,读数四个独立部分。利用总线设计的方法和以前讲述的方法是一样的。即利

67、用计算机的读时序或者写时序和芯片的逻辑设计控制电路。对于AD0809的接口电路的接口电路设计是一样的。因为需要四个单元,就需要设计4个片选信号,假设设计的片选信号为CS0(40h-43H),CS1(80h-83H),CS2(A0H-A3H),CS3(B0H-B3h)。    整体设计如下:1、通道选择设计         通道选择是将总线上的信息输出到0809。那么利用的就是计算机的读的时序。       

68、       计算机的写时序     0809的通道选择的时序:       写和片选是当且仅当,低有效,所以片选信号和写信号是或的关系。所以设计如下:          通道选择程序:     MOV DX,40H     MOV  AL,通道号  

69、;   OUT DX,AL         unsigned char adr,data_x;     adr=0x40;     data_x=0; 第一个通道     outportb(adr,data_x);         地址线包容地址线,如果片选C

70、S0包括8个地址(A0,A1,A2不参与译码),A,B,C也可以接地址线。         通道选择程序:     MOV DX,40H  第一个通道     OUT  AL,DX       unsigned char adr,data_x;     adr=0x40;    

71、 outportb(adr,data_x);        数据线无用。 2、启动设计     只要一个下降沿即可3、等待     可以通过IO口方式查询低高平.     在这个时候是等待,为了省口可以利用延时的方法。     如果程序可以做其它事情就可以接到中断上。4、读数    计算机的读时序如下: 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论