- UID
- 192770
- 帖子
- 450
- 积分
- 2147
- 威望
- 1654
- 金币
- 398132
- 贡献
- 483
- 职业
- 以技术求生存,赢信誉占市场
- 来自
- 河南省商丘市柘城县
- 注册时间
- 2009-4-2
- 最后登录
- 2011-12-29
|
4#
发表于 2009-5-23 07:51
| 只看该作者
2.4 A/D转换时序的程序设计
ADS7843的典型应用如图4所示。假设μP接口与51单片机的P1.3~P1.7相连,现以一次转换需24个时钟周期为例,介绍A/D转换时序的程序设计。
; A/D 接口控制线
DCLKBITP1.3
CSBITP1.4
DINBITP1.5
BUSYBITP1.6
DOUTBITP1.7
; A/D 信道选择命令字和工作寄存器
CHXEQU094H;信道X+的选择控制字
CHYEQU0D4H;信道Y+的选择控制字
CH3EQU0A4H
CH4EQU0E4H
AD_CHEQU35H;信道选择寄存器
AD_DATAHEQU36H;存放12 bit A/D值
AD_DATALEQU37H
; 存放信道CHX+的A/D值
CHX_AdHEQU38H
CHX_AdLEQU39H
; 存放信道CHY+的A/D值
CHY_AdHEQU3AH
CHY_AdLEQU3BH
;===============================
; 采集信道CHX+的程序段(CHXAD)
CHXAD:
MOVAD_CH,#CHX
LCALLAD_RUN
MOVCHX_AdH,AD_DATAH
MOVCHX_AdL,AD_DATAL
RET
; 采集信道CHY+的程序段(CHYAD)
CHYAD:
MOVAD_CH,#CHY
LCALLAD_RUN
MOVCHY_AdH,AD_DATAH
MOVCHY_AdL,AD_DATAL
RET
;=====================================
; A/D转换子程序(AD_RUN)
; 输入: AD_CH-模式和信道选择命令字
; 输出: AD_RESULTH,L ;12 bit的A/D转换值
; 使用: R2 ;辅助工作寄存器
AD_RUN:
CLRCS; 芯片允许
CLRDCLK
MOVR2,#8;先写8 bit命令字
MOVA,AD_CH
AD_LOOP:
MOVC, ACC.7
MOVDIN,C;时钟上升沿锁存DIN
SETBDCLK;开始发送命令字
CLRDCLK;时钟脉冲,一共24个
RL A
DJNZR2,AD_LOOP
NOP
NOP
NOP
NOP
ADW0:
JNBBUSY,AD_WAIT;等待转换完成
SJMPADW1
AD_WAIT:
LCALLWATCHDOG
NOP
SJMPADW0
CLRDIN
ADW1:
MOVR2,#12;开始读取12bit结果
SETBDCLK
CLRDCLK
AD_READ:
SETBDCLK
CLRDCLK;用时钟的下降沿读取
MOVA,AD_DATAL
MOVC,DOUT
RLCA
MOVAD_DATAL,A
MOVA,AD_DATAH
RLCA
MOVAD_DATAH,A
DJNZR2,AD_READ
MOVR2,#4;最后是没用的4个时钟
IGNORE:
SETBDCLK
CLRDCLK
DJNZR2,IGNORE
SETBCS;禁止芯片
ANLAD_DATAH,#0FH;屏蔽高4 bit
RET
2.5 A/D转换结果的资料格式
ADS7843转换结果为二进制格式。需要说明的是,在进行公式计算时,参考电压在两种输入模式中是不一样的。而且,如果选取8位的转换精度,1LSB=VREF/256,一次转换完成时间可以提前4个时钟周期,此时串口时钟速率也可以提高一倍。
结束语
在许多嵌入式系统中,CPU提供专门的模块来支持液晶显示和触摸屏的输入,使得接口非常简单。比如,MOTOROLA的MC68VZ328(称为Dragon Ball)就提供专门的引脚来支持8位和4位的液晶显示,对触摸屏的支持通过SPI2借助ADS7843也很容易完成。 |
-
2
评分次数
-
|