|
单片机与TLC2543接口实现ad转换,并且用数码管显示的仿真原理图如下(proteus仿真工程文件可到本帖附件下载)
TLC2543与单片机连接的电路图:
TLC2543是11通道12位串行A/D转换器.TLC2543中文资料详见:http://www.51hei.com/chip/4009.html
TLC2543单片机驱动源代码:
- #include<reg51.h>
- 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<n;i++)
- for(j=0;j<125;j++);
- }
- //**********************************
- //向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; //显示十位
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
该系列源码包含有很多非常经典,代码风格十分规范,而且注释详细的单片机例程,还带仿真,对于MCU学习特别是初学者是很有帮助的,全部源码下载(共几十个项目):http://www.51hei.com/bbs/dpj-80575-1.html
本例程下载(含proteus仿真工程文件与源码):
TLC2543单片机程序 带Proteus仿真L9_4.rar
(49.98 KB, 下载次数: 434)
|
评分
-
查看全部评分
|