关于用tlc2543数模转换,采集的。并送往pc上位机显示
我是根据
http://www.gjwtech.com/scomm/scasinglechipdatasampletrandesign.htm上的设计来搭的电路,程序是根据武汉力源的中文手册进行了一点修改,现在只是实现对ain0的电压监测。但是为什么a/d采集的结果不对,总是fff,就是用(ref+)/2-(ref-)/做监测得到的转换结果也是fff,各位高手帮帮忙了。
我所用的电路见下面连接:
程序清单如下:
org 0000h
jmp start
clk equ p3.3
din equ p3.4
dout equ p3.5
cs equ p3.7
org 1000h
start: mov sp,#50h ;初始化堆栈指针
mov p3,#0ffh ;初始化端口1的i/o管脚
clr clk ;设置i/o时钟为低电平
setb cs ;设置片选信号为高电平
mov a,#00ffh
acall tlc2543
acall rs232
jmp start
tlc2543:mov r4,#11010000b ;读模式/通道数据到寄存器r4和a
mov a,r4
clr cs ;设置片选信号为低电平
jb acc.1,lsb ;如果a的1位为1,则先处理lsbyte
msb: mov r5,#08 ;装载记数器初始值
loop1:mov c,dout ;读数据位到c
rlc a ;a寄存器左移,移入结果数据位,移出方式通道控制位
mov din,c ;输出模式/通道位数据
setb clk ;设置i/o时钟为高电平
clr clk ;设置i/o时钟为低电平
djnz r5,loop1 ;循环得到其它位
mov r2,a ;把msbyte(转换结果高8位)移入r2
mov a,r4 ;把模式/通道数据放入a
jb acc.1,return
lsb: mov r5,#08 ;装载记数器
loop2:mov c,dout ;把数据位读入c
rlc a ;a寄存器左移,移入结果数据位,移出方式通道控制位
mov din,c ;输出模式/通道位数据
setb clk ;产生一个i/o脉冲
clr clk
djnz r5,loop2 ;循环得到其它位
mov r3,a ;把lsbyte移入r3
mov a,r4 ;把模式/通道数据放入a
jb acc.1,msb ;如果r4的位1是1,则处理msbyte
return:ret
rs232:
mov scon,#50h ;串口方式1工作,8位数据位,1位停止位,无奇偶校验
mov pcon,#80h ;smod=1,波特率增倍
mov tmod,#20h ;波特率设置,fosc=6mhz,波特率=2* 1200,n=0f3h
mov th1,#0f3h
mov tl1,#0f3h
setb tr1 ;启动定时器t1
mov a,r2;
mov sbuf,a
mov a,r2;
mov sbuf,a
ret
end