TLC2543单片机程序 带Proteus仿真 电路原理图 AD转换实验
2019-10-22 来源:51hei
单片机与TLC2543接口实现ad转换,并且用数码管显示的仿真原理图如下(proteus仿真工程文件可到本帖附件下载)
TLC2543与单片机连接的电路图:
TLC2543是11通道12位串行A/D转换器.TLC2543中文资料详见:http://www.51hei.com/chip/4009.html
TLC2543单片机驱动源代码:
#include sbit SDO=P3^0; //定义端口 sbit SDI=P3^1; sbit CS=P3^2; sbit CLK=P3^3; sbit EOC=P3^4; sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; unsigned char code xiao[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳极数码管0-9的段码 //********************************** //延时程序 //********************************** void delay(unsigned char n) { unsigned char i,j; for(i=0;i } //********************************** //向TLC2543写命令及读转换后的数据 //********************************** unsigned int read2543(unsigned char con_word) { unsigned int ad=0,i; CLK=0; //时钟首先置低 CS=0; //片选为0,芯片工作 for(i=0;i<12;i++) { if(SDO) //首先读TLC2543的一位数据 ad=ad|0x01; SDI=(bit)(con_word&0x80); //向TLC2543写一位数据 CLK=1; //时钟上升沿,TLC2543输出使能 delay(3); CLK=0; //时钟下降沿,TLC2543输入使能 delay(3); con_word<<=1; ad<<=1; } CS=1; ad>>=1; return(ad); } void main() { unsigned int ad; while(1) { ad=read2543(0x00); P0=xiao[ad/1000]; //千位数字的段码 P2_0=1; //显示千位 delay(3); P2_0=0; P0=xiao[(ad%1000)/100]; //百位数字的段码 P2_1=1; //显示百位 delay(3); P2_1=0; P0=xiao[(ad%100)/10]; //十位数字的段码 P2_2=1; //显示十位