当前位置:首页 > ADC0808芯片中文资料
ADDWF PCL,1 ;指令寄存器加上偏移地址
RETLW 0C0H ;0的编码(公阳极数码管) RETLW 0F9H ;1的编码 RETLW 0A4H ;2的编码 RETLW 0B0H ;3的编码 RETLW 99H ;4的编码 RETLW 92H ;5的编码 RETLW 082H ;6 RETLW 0F8H ;7 RETLW 080H ;8 RETLW 090H ;9
;***********************主程序*********************** MAIN
MOVLW 30H
MOVWF FSR ;转换结果存放起始地址 LOOP
BSF STATUS,RP0 ;选择体1
MOVLW 7H ;A口高3位为输出,低3位输入 MOVWF TRISA
CLRF TRISD ;D口设为输出 MOVLW 8EH
MOVWF ADCON1 ;结果左对齐,只选择RA0做ADC口,其余做普通数字口 BCF STATUS,RP0 ;回体0 MOVLW 41H
MOVWF ADCON0 ;选择时钟源为fosc/8,允许ADC工作 CALL DELAY ;调用延时程序,保证足够的采样时间 BSF ADCON0,GO ;启动ADC转换 WAIT
BTFSS PIR1,ADIF ;转换是否完成 GOTO WAIT ;等待转换的完成 BSF STATUS,RP0
MOVFW ADRESL ;读取转换的结果 BCF STATUS,RP0
MOVWF INDF ;保存到临时寄存器里 INCF FSR,1
BTFSS FSR,2 ;连续转换4次,求平均值 GOTO LOOP
CALL CHANGE ;调用结果转换程序 CALL DISPLAY ;调用显示程序 GOTO MAIN ;循环工作
;************************转换程序********************* ;入口参数:30H---33H
;出口参数:BAI,SHI,GE CHANGE
CLRF BAI CLRF SHI
CLRF GE ;先清除结果寄存器
MOVFW 31H ;以下8条指令求4次转换结果的平均值 ADDWF 30H,1 MOVFW 32H ADDWF 30H,1 MOVFW 33H ADDWF 30H,1 RRF 30H,1
RRF 30H,0 MOVWF TEMP
MOVLW 64H ;减100,结果保留在W中 SUBWF TEMP,0
BTFSS STATUS,C ;判断是否大于100 GOTO SHI_VAL ;否,转求十位结果 MOVWF TEMP ;是,差送回TEMP中 INCF BAI,1 ;百位加1
GOTO $-6 ;返回继续求百位的值 SHI_VAL
MOVLW 0AH ;减10,结果保留在W中 SUBWF TEMP,0
BTFSS STATUS,C ;判断是否大于10
GOTO GE_VAL ;否,转去判断个位结果 MOVWF TEMP ;是,差送回TEMP中 INCF SHI,1 ;十位值加1
GOTO $-6 ;转会继续求十位的值 GE_VAL
MOVFW TEMP
MOVWF GE ;个位的值 RETURN
;**************************显示程序******************** ;入口参数:BAI,SHI,GE ;出口参数:无 DISPLAY
MOVFW BAI ;显示百位 CALL TABLE MOVWF PORTD BCF PORTA,3 CALL DELAY CALL DELAY
BSF PORTA,3
MOVFW SHI ;显示十位 CALL TABLE MOVWF PORTD BCF PORTA,4 CALL DELAY CALL DELAY BSF PORTA,4
MOVFW GE ;显示个位 CALL TABLE MOVWF PORTD BCF PORTA,5 CALL DELAY CALL DELAY BSF PORTA,5 RETURN
;***************************延时程序*********************** ;入口参数:无 ;出口参数:无 DELAY
MOVLW 5FH MOVWF TEMP DECFSZ TEMP,1 GOTO $-1 RETURN
;********************************************************* END ;程序结束
串行AD转换芯片与51单片机的接口电路及程序设计
-------------------------------------------------------------------------------- -
串行AD转换芯片与51单片机的接口电路及程序设计
AT89C51单片机系统经常使用A/D转换器。虽然并行A/D转换器速度高、转换通道多,但其价格高,占用单片机接口资源比串行A/D转换器多。工业检测控制及智能化仪器仪表中经常采用串行A/D转换器。ADS1110是一种精密、可连续自校准的串行A/D转换器,带有差分输入和高达16位的分辨率,其串行接口为I2C总线。AT89C51单片机通过软件模拟I2C总线实现与ADS1110的连接。
ADS1110的特点与内部结构 ADS1110的特点
完整的数据采集系统和小型SOT23-6封装;片内基准电压:精度2.048 V+0.05%;片内可编程增益放大器PGA;片内振荡器;16位分辨率;可编程的转换速率15次/秒~240次/秒;I2C总线接口(8个有效地址);电源电压2.7 V~5.5 V;低电流消耗240 μA。 ADS1110的引脚功能
ADS1110串行A/D转换器采用6引脚贴片封装,其引脚排列如图1所示。VDD:电源端,通常接+5V;GND:模拟地和数字地;VIN+、VIN-:采样模拟信号输入端,其范围为2.048 V~2.048 V;SCL:I2C总线时钟线;SDA:I2C总线数据线。
ADS1110的内部结构
ADS1110是由带有可调增益的△-∑型转换器内核、2.048 V的电压基准、时钟振荡器和I2C总线接口组成。其内部结构如图2所示。
ADS1110的寄存器读写配置请参考:ADS110引脚功能,寄存器配置及应用电路介绍
ADS1110的A/D转换器内核是由差分开关电容△-∑调节器和数字滤波器组成。调节器测量正模拟输入和负模拟输入的压差,并将其与基准电压相比较。数字滤波器接收高速数据流并输出代码,该代码是一个与输入电压成比例的数字,即A/D转换后的数据。
ADS1110片内电压基准是2.048 V。ADS1110只能采用内部电压基准该基准,不能测量,也不用于外部电路。ADS1110片内集成时钟振荡器用于驱动△-∑调节器和数字滤波器。ADS1110的信号输入端设有可编程增益放大器PGA,其输入阻抗在差分输入时的典型值为2.8 MΩ。
硬件设计
由于AT89C51单片机没有I2C总线接口,可通过软件模拟实现与I2C总线器件的连接。具体方法是将单片机的I/O接口连接至I2C的数据线SDA和时钟线SCL。通过软件控制时钟和数据传输,系统灵活性强。 图5所示是数据采集显示系统,采集工业现场的4路模拟信号并轮询显示。采用4个ADS1110作为A/D转换器,地址为ED0~ED3。具有I2C总线接口的EEPROM AT24C16作为存储器。本系统有4位LED数码显示管和4个参数设定按键。采集数据经数字滤波、16进制→工程值转换后,送至数码管轮询显示。ADS1110和AT24C16的I2C接口连ADSl110数据线SDA至单片机的P1.0,时钟线SCL连接单片机的P1.1,上拉电阻阻值选10 kΩ。
软件设计
按照硬件电路,编写A/D转换子程序为ADS0,其中嵌套调用了START,为起始命令子程序,FSDZ1为向ADS1110发送单个字节命令的子程序,ADREAD是读取输出寄存器和配置寄存器的子程序,STOP是停止命令子程序。ADS0只对地址为ED0的ADS1110读数,如果要读取其他ADS1110,只需更改地址即可。系统中ADS1110的工作方式选用默认设置,即配置寄存器内容为#8CH,所以程序未向配置寄存器写入数据。程序代码如下:
共分享92篇相关文档