1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在已经做出了TLC2543的12位转换结果的程序,现在想要做8位和16位的转换,可是怎么改也没有好用。在模拟量输入为0~5v时(参考电压为5V),8位和16位的输出结果总是以2.5V为分断点,例如:16位时,低于2.5V转换结果为0000H~8000H,但是高于2.5V是转换结果是0000h~7FF0H。现在求助个位大神,如何来写8位和16位的程序。我写的12位的程序如下,求如何修改,或者直接给份好用的8位和16位的程序。
/************************************** TLC2543驱动程序 *************************************/ #include #include /************************************** 2543控制引脚宏定义 *************************************/ #define uint unsigned int #define uchar unsigned char ***it _CS = P0^4; //AD的片选信号 ***it CLOCK = P0^1; //AD的时钟信号 ***it D_IN = P0^2; //AD的数据输入信号 ***it D_OUT= P0^3; //AD的数据输出信号 ***it EOC = P0^0; //AD的转换结束结束 uint dat[10]; /************************************** 名称:delay 功能:延时模块 输入参数:n要延时的周期数 输出参数:无 *************************************/ void delay(uchar n) { uchar i; for(i=0;i _nop_(); } } /************************************** 名称:read2543 功能:TLC2543驱动模块 输入参数:port通道号 输出参数:ad转换值 *************************************/ uint read2543(uchar port) { uint ad=0,i; CLOCK=0; _CS=0; port<<=4; for(i=0;i<12;i++) { if(D_OUT) ad|=0x01; D_IN=(bit)(port&0x80); CLOCK=1; delay(3); CLOCK=0; delay(3); port<<=1; ad<<=1; } _CS=1; ad>>=1; return(ad); } /************************************** 名称:main 功能:主函数 输入参数:无 输出参数:无 *************************************/ void main() { uint ad; uchar i; while(1) { ad=read2543(0); dat[i++]=ad; if(i==10) i=0; } } |
|
相关推荐
1个回答
|
|
自己写吧
|
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
597浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:18 , Processed in 1.241167 second(s), Total 77, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号