容栅数显百分尺是一种新型位移传感器,提供的接口有4条信号线,包括电源线(+1.55V)、地线、时钟控制线CLK、串行数据输出线Data。接口信号不是标准的TTL信号,其信号‘1’为1.5V左右,其信号‘0’为0V左右。因此,必须进行电平转换,随后再经过反向器整形,送到相应芯片接口。
容栅数显卡尺采用串行数据采集,其中数据线波形见图2所示。在最快20ms的周期内,包括一个下述数据采集周期。每个周期输出两组数据,其中第一组为绝对值,第二组为相对值,在本系统中我们采用第二组数值。每组数值包括24个二进制位,其中前13位为整数位,后11位为小数位,换算后的数据单位为0.1inch。
图2 容栅数据信号时序
采用89C52单片机以及12MHz系统时钟,单指令周期在为1us,而传感器每位采集时间为11us,故采用汇编语言进行采集,确保数据的正确性。
软件设计的关键在于确定数据采集的起始条件,容栅传感器输出的快速周期为20ms,慢速周期为250ms,因此起始条件就是大于一个时钟周期并且小于20ms的连续时钟低电平以及接在上述低电平之后的44us的连续高电平。
READ: MOV A, TMOD
ANL A, #0F0H
ORL A, #01H
MOV TMOD, A
MOV TH0, #0FCH
MOV TL0, #66H
CLR TF0
SETB TR0
PG1: JB TF0, PG7
CLR A
MOV R1, #08H
PG2: MOV C, P1.2
RLC A
DJNZ R1, PG2
JNZ PG1
MOV R1, #00H
PG3: MOV TH0, #00H
MOV TL0, #00H
CLR TF0
SETB TR0
PG4: JB TF0, PG6
CLR A
MOV R2, #04H
PG5: MOV C, P1.2
RLC A
DJNZ R2, PG5
CJNE A, #0FH, PG4