单片机 数字电压表(TLC2543)

news/2024/11/24 13:23:05/

单片机 数字电压表(TLC2543)

一、简述

        使用并行ADC会限制系统I/O口的功能扩展,采用串行ADC比较适合那些低速采样而控制管脚又比较多的系统。

        TLC2543是TI公司的12位串行模数转换器,由于是串行输入结构,能够节省51系列单片机I/O资源;

       例子中采用模数转换的芯片TLC2543实现设计数字电压表。例子中设计的数字电压表可以测量0~5V范围内的输入电压值,并且通过4位LED数码管显示采集的电压值,例子测量三个模拟值:0.005、1.5、4.995。

    文件打包:链接: https://pan.baidu.com/s/1aSJJhWNiqYUJCk9VmpHd5A 提取码: epg6

    蓝奏云:https://www.lanzoui.com/i41fhtg      (不用注册,不用登录,可以直接下载)

二、效果

三、工程结构

1、Keil工程

2、仿真电路图

四、源文件

TLC2453.c文件

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
ulong volt;//测量的电压值 
uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段数码管显示0-9的对应电平码
uint vtime;	// 用来控制测量地址位的改变
uchar addr;//测量地址位,指示测量的是哪一个模拟值 (其实就是TLC2543的控制字)
sbit LW1=P2^3;//数码管电压显示值的第1个		比如四个数码管显示4.885值中,对应显示4这个数码管
sbit LW2=P2^2;//数码管电压显示值的第2个
sbit LW3=P2^1;//数码管电压显示值的第3个
sbit LW4=P2^0;//数码管电压显示值的第4个
sbit LW5=P2^4;//定义数码管位选脚
sbit CLK=P1^7;//定义时钟信号口
sbit DIN=P1^6;//定义2543数据写入口
sbit DOUT=P1^5;//定义2543数据读取口
sbit CS=P1^4;//定义2543片选信号口
/**********************************************************/
//函数名:delay(uint x)
//功能:延时程序 改变测量地址 	
//调用函数:
//输入参数:x
//输出参数:
//说明:
/**********************************************************/
void delay(uint x)
{uchar y,z;for(y=x;y>0;y--)for(z=250;z>0;z--);//该步运行时间约为0.5msvtime++;if(vtime==1000){vtime=0;addr++;if(addr==3)addr=0;//以上语句实现测量地址位的改变		}	
}
/**********************************************************/
//函数名:read2543(uchar addr)
//功能:2543驱动程序
//调用函数:
//输入参数:addr
//输出参数:
//说明:进行ad转换将结果存于volt变量中 addr为测量位地址
/**********************************************************/
void read2543(uchar addr)
{uint ad=0;uchar i;CLK=0;CS=0;//片选段,启动2543addr<<=4;//对地址位预处理for(i=0;i<12;i++) //12个时钟走完,完成一次读取测量{if(DOUT==1)ad=ad|0x01;//单片机读取ad数据DIN=addr&0x80;//2543读取测量地址位CLK=1;;;;//很短的延时CLK=0;//产生下降沿,产生时钟信号;;;addr<<=1;ad<<=1;//将数据移位准备下一位的读写}CS=1;//关2543ad>>=1;volt=ad;//取走转换结果volt=volt*1221;//例子的满量程为5V,转换分辩率为12位(2的12次方=4096) 。即最大值是255,5/4096=1221mV,即例子中的1V代表实际1221mV        
}
/**********************************************************/
//函数名:display()
//功能:5位数码管显示
//调用函数:delay(uint x)
//输入参数:
//输出参数:
//说明:将处理后的电压值与测量位值显示在5位数码管上 
/**********************************************************/
void display()
{P0=0xff;//消隐,因为不断进行循环显示,以防上次显示有残留电平的影响LW1=0;	//选中第1个数码管进行显示P0=~led[volt/1000000]&0x7f;//带小数点1伏显示位delay(2);  //延时P0=0xff;  //消隐LW1=1;	//取消选中第1个数码管进行显示LW2=0;	//选中第2个数码管进行显示P0=~led[(volt/100000)%10];//100毫伏显示位delay(2);P0=0xff;LW2=1; LW3=0;P0=~led[(volt/10000)%10];//10毫伏显示位delay(2);P0=0xff;LW3=1;LW4=0;P0=~led[(volt/1000)%10];//1毫伏显示位delay(2);P0=0xff;LW4=1;LW5=0;P0=~led[addr+1];//显示电压测量位delay(2);LW5=1;				
}
/**********************************************************/
//主程序
/**********************************************************/
void main()
{while(1){read2543(addr);//调用2543驱动程序测量地址为0display();//调用显示程序	}
}

五、总结

    1、TLC2543芯片介绍

           TLC2543是12位串行A/D转换器,使用开关电容逐次逼近技术完成A/D转换过程。

    2、引脚

          

AIN0~AIN10为模拟输入通道。

为片选端,低电平有效。

DATA INPUT为串行数据输入端,
DATA OUT为A/D转换结果的三态串行输出端
EOC为转换结束端,
I/O CLK为I/O时钟端,
REF+为正基准电压端,
REF-为负基准电压端,
VCC为电源端,
GND为地。

3、TLC2543控制字

        控制字为从DATA INPUT端串行输入端8位数据,规定了TLC2543要转换的模拟量通道、转换后的输出数据长度以及输出数据端格式。

      高4位(D7~D4)决定通道号,对于模拟输入通道0至模拟输入通道10。其值为0000~1010,对应通道为通道0~通道10。

      低4位(D3~D0)决定输出数据长度及格式。

      其中D3、D2决定输出数据长度,01表示输出数据长度为8位,11表示输出数据长度为16位,其他为12位。

      D1决定输出数据是高位先送出,还是低位先送出,为0表示高位先送出。

      D0决定输出数据是纯正数还是有负数,若为纯正数,该位为0,否则为1。

4、工作过程

==================以下回复 qq_42216469 这位兄弟=============

通过简单修改代码,只显示一个电压值。


http://www.ppmy.cn/news/633471.html

相关文章

ensp综合实验

综合实验要求&#xff1a; 1、AR6理解为ISP设备&#xff0c;所连接的两个网段为公网&#xff1b;R1-R5构建为一个私有的局域网&#xff1b; 2、AR6上只能进行ip地址配置&#xff0c;之后不得对该路由器进行其他任何配置 3、公网范围IP地址已经指定&#xff0c;剩余R1-R5整个私网…

LwM2M协议学习

LwM2M全称lightweight Machine to Machine&#xff0c;是OMA&#xff08;open Mobile Alliance)定义的物联网协议&#xff0c;主要可以使用在资源受限(包括存储、功耗等)的嵌入式设备上。其官方网站 http://www.openmobilealliance.org &#xff0c;协议的下载地址 http://open…

华为ENSP综合实验:eth-trunk、vlan底层、vrrp负载分担、MSTP、DHCP中继

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、实验目的&#xff1a;在局域网内实验&#xff0c;dhcp服务器负责地址分配、核心交换机做链路聚合增加带宽二、使用步骤 1、eth-trunk配置2、VLAN二层配置3、…

LWM2M 简介

物联网热了几年&#xff0c;最基本以及广泛的铺开的应用还只是 Device Management. 基本功能包括: 软件/固件升级&#xff0c;应用程序升级&#xff0c;远程的参数监视告警 Lightweight M2M 基础 OMA是一家国际组织&#xff0c;最初定义了一套 OMA-DM的协议&#xff0c;用来远…

LwM2M简介

1、LwM2M是什么 官方文档&#xff1a;http://www.openmobilealliance.org/release/LightweightM2M/ release: http://openmobilealliance.org/wp/index.html LwM2M的全称是Lightweight Machine-To-Machine&#xff0c;由OMA&#xff08;Open Mobile Alliance&#xff09;提出…

VRRP实验

一、什么是vrrp&#xff1f; 虚拟路由器冗余协议&#xff08;VRRP&#xff09;是一种选择协议&#xff0c;它可以把一个虚拟路由器的责任动态分配到局域网上的VRRP路由器中的一台。控制虚拟路由器IP地址的VRRP路由器称为主路由器&#xff0c;它负责转发数据包到这些虚拟IP地址…

Valhalla LW2的进展–内联类型

过去几周&#xff08;2019年6月/ 2019年7月&#xff09;&#xff0c; 瓦尔哈拉计划的LW2阶段/原型最初于2018年10月提出&#xff0c;在面向公众的方面取得了重大进展。 在这篇文章中&#xff0c;我简要总结了最近发布的一些消息&#xff0c;文档和Valhalla Early Access Build。…

4 测试分类

文章目录 总结:课程笔记 总结: 课程笔记