700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于51单片机TLC2543芯片实现AD转换

基于51单片机TLC2543芯片实现AD转换

时间:2020-05-20 23:45:21

相关推荐

基于51单片机TLC2543芯片实现AD转换

#include<reg52.h> //头文件sbit TCL2543_EOC = P1^0; //转换结束标志IO口sbit TCL2543_CLK = P1^1;//I/O时钟输入sbit TCL2543_ADIN = P1^2; //串行数据输入端sbit TCL2543_DOUT = P1^3; //串行数据输出端sbit TCL2543_CS = P1^4; //片选脚IO//===================单片机发送数据==================/void UartSende(unsigned char dat){SBUF=dat;//SBUF是两个串行数据缓冲寄存器,一个是接收一个是发送 8位的while(!TI);//TI发送标志位,硬件置1,软件清零TI=0;}void UartSendbyte(char *s) //发送字符串{while(*s){UartSende(*s++) ;}}void loguint32t(unsigned long log){if(log>999999999)UartSende('0'+log/1000000000%10) ;if(log>99999999)UartSende('0'+log/100000000%10) ;if(log>9999999)UartSende('0'+log/10000000%10) ;if(log>999999)UartSende('0'+log/1000000%10) ;if(log>99999)UartSende('0'+log/100000%10) ;if(log>9999)UartSende('0'+log/10000%10) ;if(log>999)UartSende('0'+log/1000%10) ;if(log>99)UartSende('0'+log/100%10) ;if(log>9)UartSende('0'+log/10%10) ;UartSende('0'+log/1%10) ;}//============T2串口初始化9600=========================/void Timer2_Uart() //串口初始化{T2CON = 0x34;RCAP2H = 0xFF;RCAP2L = 0xDC;TH2 = 0xFF;TL2 = 0xDC;TR2 = 1;SCON = 0x50;//ES = 1;EA=1;PS=1;}// 其中 port 为通道: 通道0:port = 0x01 通道1:port = 0x02 通道2:port = 0x04 ...// 片子操作文本地址 /link?url=WTp8rj93fYDbqM6kYbynkqTrI5MGQFQGtgk6aDrMMdfcB0K2Q9HIrVOs-SSSCLUMOKLOS31ENJAadBSdrVMHg_YxXPYcXWC7T0rb-rINptWuint read2543(unsigned char port) //读取TCL2543对应模拟输入口的AD数据,并返回数据{unsigned int i; //上电时,EOC=“1”,CS=“1”uint ad_value=0;TCL2543_CLK=0;TCL2543_CS=0; //使能TCL2543片选TCL2543_EOC=1;port<<=4;for(i=0; i<12; i++) //读取12位的模拟量的数字数据{if(TCL2543_DOUT) ad_value|=0x01; //前次转换结果的MSB即A11位数据输出到Dout供读数TCL2543_ADIN=(bit)(port&0x80);TCL2543_CLK=1; //_nop_();_nop_();_nop_();TCL2543_CLK=0;_nop_();_nop_();_nop_();port=port<<1;ad_value=ad_value<<1;}TCL2543_CS=1; //锁定片子ad_value=ad_value>>1;return ad_value; //返回读取的AD值}void main(){Timer2_Uart();while(1){zhi= read2543(0); //读出模拟转化后的量UartSendbyte("zhiInt ") ;loguint32t(zhiInt) ;UartSendbyte("\r\n") ;}}

TLC2543测得的值是由输入电压和基准电压共同决定的所以对于基准电压同样十分敏感,基准电压稍微变化就会影响到测得的值,

本设计中驱动了数码管显示就导致了电压浮动间接导致了测得的值不稳定,最后只得增加了TL431进行稳压 。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。