单片机 数字电压表(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 这位兄弟=============

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

单片机 数字电压表(TLC2543)相关推荐

  1. 数字电压表单片机 c语言程序,单片机数字电压表(带仿真图C程序).docx

    单片机数字电压表(带仿真图C程序) 基于51单片机数字电压表 本模块采用ADC0832模数转换芯片,LCD1602液晶显示,测量范围0-5V,精度误差0.01V 看了很多网上的课程设计或者毕业论文,得 ...

  2. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  3. 单片机:数字电压表TLC2543 C程序代码

    #include"TLC2543.H" unsigned char TLC2543_DATA[7]; void TLC2543_Delay10us(void) {unsigned ...

  4. 单路电压表c语言编程,单片机数字电压表的设计

    第1章 绪论1.1系统的开发背景 在电量的测量中,电压.电流和频率是最基本的三个被测量,其中电压量的测量最为经常.而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少 ...

  5. 单片机数字电压表设计

    摘要: 本设计中利用STC89C52单片机制作了一个简单的数字电压表,主要通过A/D转换器XPT2046把输入的模拟信号即电位器的电压值转换成数字信号,送到1602液晶进行数据显示,并预设了一个警报值 ...

  6. 44、基于51单片机数字电压表设计电流电压功率表

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Protues仿真 七.程序 部分代码 八.资料包括 摘要 本次设计要求 ...

  7. 基于51单片机自动数字电压表PCF8591 TLC2543 TL548 proteus仿真汇编程序设计

    硬件设计1 基于51单片机+PCF8591 ADC的仿真电路图: A. 基于51单片机和PCF8591的电压表,具有仿真图/源程序: B. 由数码管作为显示器: C.测试电压范围为0~5V,精度约为0 ...

  8. 单片机设计资料,仿真、程序、原理图收集好资料分享,stm32、8086、单片机方案

    偶然网上保存的资料,单片机设计资料,仿真.程序.原理图收集的资料转发分享,有需要的拿走. 资源下载地址 百度网盘 基于单片机红外自动触发计时器protues仿真 基于单片机汇编语言抢答器系统设计 基于 ...

  9. 【毕业设计】单片机和stm32设计选题,proteues仿真、程序完整资料-转发分享

    题目:1854 基于单片机智能充电器系统设计仿真 程序 论文 摘要 在我们的日常生活中,手机已经变得越来越重要了.我们经常需要使用手机,打电话.发短信.上网.看电影.听歌.玩游戏等等.随着大屏幕和高主 ...

最新文章

  1. 数据库中如何判断某参数为空就不执行where条件
  2. xsl-mode属性用法
  3. Ubuntu KDE中 Kaccounts-provider 问题
  4. 眼睛看特定角度有闪光的处理办法
  5. centos8.2安装mysql_centos8安装mysql
  6. Python爬虫基础(三)urllib2库的高级使用
  7. 同步中心服务器,同步中心以非常慢的速度同步脱机文件 - Windows Server | Microsoft Docs...
  8. 基于WebMatrix的轻量级Web开发系列课程
  9. Software Switching优化
  10. dqn在训练过程中loss越来越大_强化学习笔记:OpenAI Gym+DQN+Tensorflow2实现
  11. android 内存测试
  12. oracle的简单命令
  13. C语言计算器详细教程(四则运算、小数、括号)
  14. 黑马程序员—怎么去黑马?吃住问题解答
  15. linux的DRM应用程序,Linux中的DRM
  16. 服务器ping不通,但是远程桌面可以连接上
  17. 如何批量删除多个PDF文档中的一页或多页
  18. debian安装java
  19. http协议中get和post的基本区别,tcp/ip协议的三次握手
  20. linux read 少读末尾一行的问题

热门文章

  1. iphone投影到电脑屏幕,QuickTime出现报错和黑屏的解决方案
  2. spring mvc 附件上传至腾讯云qcloud
  3. Super expression must either be null or a function错误
  4. 利用JWT安全验证(前后端分离,单点登录,分布式微服务)
  5. gitlab:切换远程仓库
  6. 基于GIS、、geosever插件实现当地旅游资源网格化管理系统的架构
  7. 雷电3菊链功能_简单说说雷电接口有哪些用途?
  8. leaflet移动图标(leaflet篇.68)
  9. HTML表单、表格制作个人简历
  10. 十进制如何转化为二进制和六进制