资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,4,章,A-D,转换,4.1 PIC,内部,A/D,转换原理,4.2 A/D,转换主要技术指标和,IC16F877,片内,ADC,模块简介,4.3,编程方法及实例,本章重点内容,:,1,、了解逐次逼近型,A/D,转换的结构。,2,、了解逐次逼近型,A/D,转换的工作原理。,3,、熟悉,A/D,转换器有三个主要的技术指标,:,转换时间,(,转换速率,),、分辨率和转换精度。,4,、掌握与,ADC,模块有关的寄存器的功能。,5,、掌握,A/D,转换器编程方法。,4.1 PIC,内部,A/D,转转换原理,ADC,有很多种,从电路结构看可分为,逐次逼近型,、,并联比较型,、,双积分型,等。,ADC,的种类繁多,工作原理各异,但逐次逼近型,ADC,是应用较多的类型之一,主要原因为转换速度快、精度高。逐次逼近型,ADC,是由,采样保持电路,、,电压比较器,、,逐次逼近寄存器,、,数,/,模转换器,DAC,和,锁存器,等部分组成。,逐次逼近型,ADC,工作原理:,启动转换后,控制逻辑电路首先把逐次逼近寄存器的最高位置,1,,其他置,0,,逐次逼近寄存器的这个内容经过模,/,数转换后得到约为满量程输出一半的电压值。这个电压值在比较器中与输入信号进行比较。比较器的输出反馈到模数转换器,并在下一次比较前对其进行修正。在逻辑控制电路的时钟驱动下,逐次逼近寄存器不断进行比较和移位操作,直到完成最低有效位,(LSB),的转换。这时逐次逼近寄存器的各位值均已确定,逐次逼近转换完成。,由于逐次逼近型模,/,数转换器在,1,个时钟周期内只能完成,1,位转换,,N,位转换需要,N,个时钟周期,故这种模,/,数转换器的采样速率不高,输入带宽也较小。它的优点是原理简单,便于实现,不存在延迟问题适用于中速率和分辨率较高的应用场合。,4.2,A/D,转换器的,主要技术指标和,PIC16,F877,片内,ADC,模块简介,4.2.1,A/D,转换器的主要技术指标,A/D,转换器有三个主要的技术指标:,转换时间,(转,换速率)、,分辨率,和,转换精度,。,1,转换时间和转换速率,转换时间是,A/D,完成一次转换所需要的时间,转换,时间的倒数即为转换速率。,2,分辨率,A/D,转换器的量化精度称为分辨率,是指输出数字,量最低有效位为,1,所需的模拟电压输入值。,3,转换精度,指产生一个给定数字量所需模拟电压的理想值与实际值之间的误差,。,4.2.2,PIC16,F877,片内,ADC,模块简介,PIC16,F877,内嵌的,ADC,模块共有,8,个模拟信道,每个信道是,10,位数字量的精度。,8,个信道的引脚分别与,PORTA,和,PORTE,共用。参考电压可以是单电源,也可以是双电源。,PIC16F877,单片机内部,ADC,结构示意图,与,ADC,模块有关的寄存器,PIC16F877,内部嵌入的,ADC,模块是,10,位数字量精度,共有,8,个模拟信道。与,ADC,模块有关的寄存器比较多,共有,11,个。其中以下四个寄存器是,ADC,模块专用的:,(),A/D,控制寄存器,ADCON0,(),A/D,控制寄存器,ADCON1,(),ADC,结果寄存器高字节,ADRESH,(),ADC,结果寄存器低字节,ADRESL,()方向控制寄存器,TRISA,和,TRISE,、,A/D,控制寄存器,ADCON0,2,、,ADC,控制寄存器,-ADCON1,ADCON1,3,、,ADC,结果寄存器高位,-ADRESH,当,ADMF=0,时,用于存放,A/D,转换结果的高,8,位;如果分辨率只需要,8,位的话,这时可以直接从,ADRESH,中,读出所需要的数据。,当,ADMF=1,时,用于存放,A/D,转换结果的高,2,位,此时寄存器高,6,位读作,0,。,4,、,ADC,结果寄存器低位,-ADRESL,当,ADMF=1,时,用于存放,A/D,转换结果的低,8,位;,当,ADMF=0,时,用于存放,A/D,转换结果的低,2,位,此时寄存器低,6,位读,0,。,5,方向控制寄存器,TRISA,、,TRISE,与,ADCON,配合使用,控制,ADC,模拟通道的引脚。若作为模拟通道,相应位必须置,1,。否则为,I/O,脚。,4.3,编程方法及实例,4.3.1 A/D,转换器编程方法,要使用好,ADC,模块要先在程序中进行初始化设置。这些设置需要包含以下的内容:,1,设置,ADC,模块端口和数据格式,通过控制寄存器,ADCON1,设置引脚功能为模拟输入信道、参考电压接入方式、通用数字,I/O,引脚和设置转换结果的存放格式。如:,BANKSEL ADCON1,;,体,1,BSF STATUS,RP0,MOVLW B10001110,;AN0,为输入,为右对齐,MOVWF ADCON1,;,REF,选择内部,VDD,和,VSS,4.3,编程方法及实例,4.3.1 A/D,转换器编程方法,2,设置,ADC,模块工作方式,通过控制寄存器,ADCON0,选中某一条模拟输入信道、设定,A/D,转换时钟源以及开启,A/D,转换功能。如:,BANKSEL ADCON0,;,体,0,BCF STATUS,RP0,MOVLW B,01,000,0,0,1,;A/D,转换器使能,MOVWF ADCON0,;,不进行,A,DC,转换,;,选择,RA0/,AN0,通道,;,时钟用,fosc/8,4.3,编程方法及实例,4.3.1 A/D,转换器编程方法,3,如果需要中断功能,应设置,A/D,中断使能位,清除,ADC,模块中断标志位,ADIF,、设置,ADC,模块中断使能位,ADIE=1,、设置中断使能,PEIE=1,和设置全局中断使能位,GIE=1,。操作方法如下:,BCF PIR1;,清除,ADC,中断标志,BANKSEL PIE1;,选择,BANK1,BSF PIE1,ADIE;,使能,ADC,中断,BANKSEL INTCON;,选择,BANK0,BSF INTCON,PEIE;,打开外设中断,BSF INTCON,GIE;,打开全局中断,4.3,编程方法及实例,4.3.1 A/D,转换器编程方法,4,等待所需要的采样时间,采样时间大约是,10-20s,。影响采样时间的主要因素之一是模拟信号源内阻,信号源的最大阻抗不得超过,10K,。,5,将控制位,GO/DONE,置,1,,开始,A/D,转换。如:,BSFADCON0,GO;,开始,A/D,转换,4.3,编程方法及实例,4.3.1 A/D,转换器编程方法,6,等待,A/D,转换完成,可以通过以下两种方法之一来判断:,方法一:,软件循环查询状态位兼控制位,GO/DONE,是否被硬件自动清,0,或中断标志位,ADIF,是否被硬件自动置位。,用查询状态位的方法如下:,ADWAIT,BTFSC ADCON0,GO;AD,转换完毕,,GO=0,;,同时,ADIF=1,发中断请求,GOTO,ADWAIT ;,没有转换完毕,继续等待,;,转换完毕,退出循环,4.3,编程方法及实例,4.3.1 A/D,转换器编程方法,方法二:,等待中断请求。在,A/D,转换完成后,,ADIF,位被 置位,发出中断请求。,7,读取,A/D,转换结果寄存器对,ADRESH,,,ADRESL,;,如果使用中断标志,需要对,ADIF,清零。,8.,如果需要继续转换,根据实际要求重新从第,(2),步或者第,(3),步开始。,在转换完成后,下一次采样开始前,须加入,2T,ad,的等待时间约是,3.2s,(,T,ad,为,A/D,每位转换时间)。,4.3,编程方法及实例,4.3.2 A/D,转换器编程举例,【,4-1,】,请编写适用于,F877,的,A/D,测试程序,实现如下功能:,(,1,)应用,RA0/AN0,作为此,A/D,转换输入信道;,(,2,)参考电压源,REF,选择内部,V,DD,和,V,SS,;,(,3,),A/D,转换时钟源选用,4MHz,振荡器;,(,4,),10,位数据精度,并将,AD,结果写入分两次写到,C,口。,LEDx8,解:程序清单如下:,参考程序清单,;8L8ADSY.ASMA/D,转换,list p=16f877A,INCLUDE P16F877A.INC,ORG 0 x000,NOP,BANKSEL ADCON1,;,体,1,BSF STATUS,RP0,MOVLW B10001110,;AN0,为输入,为右对齐,MOVWF ADCON1,;,REF,选择内部,VDD,和,VSS,CLRF,TRISC,;,设,C,口为输出,BANKSEL ADCON0,;,体,0,BCF STATUS,RP0,MOVLW B01000001,;,时钟,8Tosc,使能,DC,AN0,MOVWF ADCON0,CLRF PORTC,;,对,C,口清,0,AtoD,NOP,;,为了保证采样时间,通常,应该插入,20,个,以上的,NOP,NOP,;,或者安排一段有相当长的应用程序,。,BSF ADCON0,GO,;GO,位置,1,开始,A/D,转换,ADWAIT:,BTFSC ADCON0,GO,;,在,A/D,转换完成后,GO,位将被清,0,GOTO ADWAIT,;,如果没有转换完毕,则返回继续检测,MOVF ADRESL,W,;,如果转换完毕,把低位读入,W,中,MOVWF PORTC,;,将,AD,结果低位写入,C,口,CALL DELAY_1S,;,延时秒,MOVF ADRES,W,;,把高位读入,W,中,MOVWF PORTC,;,将,AD,结果高位写入,C,口,CALL DELAY_1S,;,延时秒,GOTO,AtoD,;,循环进行,A/D,转换,END,本章小节,1,、理解逐次逼近型,A/D,转换的结构,逐次逼近型,ADC,是由采样保持电路、电压比较器、逐次逼近寄存器、数,/,模转换器,DAC,和锁存器等部分组成。,2,、了解逐次逼近型,A/D,转换的工作原理,3,、熟悉,A/D,转换器有三个主要的技术指标,转换时间(转换速率)、分辨率和转换精度。,4,、掌握与,ADC,模块有关的寄存器的功能,(),A/D,控制寄存器,ADCON0,、,A/D,控制寄存器,ADCON0,2,、,ADC,控制寄存器,-ADCON1,ADCON1,本章结束,
展开阅读全文