TLC549(8位A/D转换器)实现将输入的模拟电压显示到数码管上

代码:

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned intsbit SDO = P1^0; // 芯片的三个关键的输入数据端口,主要是靠外电压来提供的
sbit CS = P1^1;
sbit SCLK = P1^2;sbit wei0 = P2^0;
sbit wei1 = P2^1;
sbit wei2 = P2^2;
sbit wei3 = P2^3;// 数据是从0-9显示
uchar seg[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};void delay(uint N){ // 延时uint i;for (i = 0; i < N; i++){_nop_();}
}uchar convert(){uchar i, dat = 0;CS = 0;  // 初状态,CS拉低,看SPI总线的定义for (i = 0; i < 8; i++){dat <<= 1;if (SDO == 1) dat |= 0x01; // 有数据,最低为置1/* SCLK 完成一次1到0的脉冲,即可实现数据的发送 */SCLK = 1;delay(4);SCLK = 0;delay(4);}CS = 1; // 完成数据转换,CS重新置高return dat;
}void main(){uint value;while(1){/* 数据的接收位在这个,一字节的接收和转换,将5V模拟量转为255的离散数字量 */value = convert() * 19.607; // 5000 / 255 wei0 = 0;P0 = seg[value/1000] + 0x80; // 这个是为了把小数点显示出来delay(500);wei0 = 1;wei1 = 0;P0 = seg[value%1000/100];delay(500);wei1 = 1;wei2 = 0;P0 = seg[value%100/10];delay(500);wei2 = 1;wei3 = 0;P0 = seg[value%10];delay(500);wei3 = 1;}}

仿真:

介绍:

        在单片机测控系统中,非电量如温度、压力、流量、速度等,经传感器先转换成连续变化的模拟电信号(电压或电流),然后再将模拟电信号转换成数字量后才能在单片机中进行处理。实现模拟量转换成数字量的器件称为ADC(A/D转换器)。

        单片机处理完毕的数字量,有时根据控制要求需要转换为模拟信号输出。数字量转换成模拟量的器件称为DAC(D/A转换器)。本章从应用的角度,介绍典型的ADC、DAC芯片与AT89S51单片机的硬件接口设计以及接口驱动程序设计。

单片机扩展AD转换

        单片机只能输出数字量,但是对于某些控制场合,常常需要输出模拟量,例如直流电动机的转速控制。下面介绍单片机如何扩展DAC。

        目前集成化的DAC芯片种类繁多,设计者只需要合理选用芯片,了解它们的性能、引脚外特性以及与单片机的接口设计方法即可。由于现在部分单片机的芯片中集成了DAC,位数一般在10位左右,且转换速度也很快,所以单片的DAC开始向高的位数和高转换速度上转变。而低端的并行8位DAC,开始面临被淘汰的危险,但是在实验室或涉及某些工业控制方面的应用,低端8位DAC以其优异的性价比还是具有较大的应用空间。

1.D/A转换器简介

        购买和使用D/A转换器时,要注意有关D/A转换器选择的几个问题。

(1)D/A转换器的输出形式

        D/A转换器有两种输出形式:电压输出和电流输出。电流输出的D/A转换器在输出端加一个运算放大器构成的I-V转换电路,即可转换为电压输出。

(2)D/A转换器与单片机的接口形式

        单片机与D/A转换器的连接,早期多采用8位的并行传输的接口,现在除了并行接口外,带有串行口的D/A转换器品种也不断增多,目前较为流行多采用SPI串行接口。在选择单片D/A转换器时,要根据系统结构考虑单片机与D/A转换器的接口形式。
2.主要技术指标

        D/A转换器的指标很多,设计者最关心的几个指标如下。

(1)分辨率

        分辨率指单片机输入给D/A转换器的单位数字量的变化,所引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比(n为D/A转换器的二进制位数),习惯上用输入数字量的位数表示。显然,二进制位数越多,分辨率越高,即D/A转换器输出对输入数字量变化的敏感程度越高。例如,8位的D/A转换器,若满量程输出为10V,根据分辨率定义,则分辨率为10V/2n,分辨率为10V/256 = 39.1mV,即输入的二进制数最低位数字量的变化可引起输出的模拟电压变化39.1mV,该值占满量程的0.391%,常用符号1LSB表示。

同理:

10位D/A转换  1 LSB = 9.77mV = 0.1%满量程

12位D/A转换  1 LSB = 2.44mV = 0.024%满量程

16位D/A转换  1 LSB = 0.076mV = 0.00076%满量程

使用时,应根据对D/A转换器分辨率的需要选定D/A转换器的位数。

(2)建立时间

        建立时间是描述D/A转换器转换速度的参数,表明转换时间长短。其值为从输入数字量到输出达到终值误差± (1/2)LSB(最低有效位)时所需的时间。电流输出的转换时间较短,而电压输出的转换器,由于要加上完成I-V转换的时间,因此建立时间要长一些。快速D/A转换器的建立时间可控制在1us以下。
(3)转换精度

        理想情况下,转换精度与分辨率基本一致,位数越多精度越高。但由于电源电压、基准电压、电阻、制造工艺等各种因素存在误差。严格地讲,转换精度与分辨率并不完全一致。两个相同位数的不同的DAC,只要位数相同,分辨率则相同,但转换精度会有所不同。例如,某种型号的8位DAC精度为±0.19%,而另一种型号的8位DAC精度为±0.05%

单片机扩展串行8位AD转换器TLC549

        串行A/D转换器与单片机连接具有占用I/O口线少的优点,使用较多,大有取代并行A/D转换器的趋势。下面介绍单片机扩展串行8位 AD转换器TLC549的应用设计。

  1. TLC549的特性及工作原理

        TLC549是美国TI公司推出的价廉、高性能的带有SPI接口的8位 AD转换器,其转换速度小于17µs,最大转换速率为 40kHz,内部系统时钟的典型值为4MHz,电源为3~6V。能方便与各种单片机通过SPI串行接口连接。

  • CS:片选端。*
  • DATAOUT:转换结果数据TTL电平串行输出端,输出时高位在前。
  • ANALOGIN:模拟信号输入端,0≤ANALOGIN≤Vcc,当
  • ANALOGIN≥REF+电压时,转换结果为全“1”(0xff),
  • ANALOGIN≤REF- 电压时,转换结果为全“0”(0x00)。
  • I/O CLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。
  • REF+:正基准电压输入 2.5V≤REF+≤Vcc+0.1V。
  • REF-:负基准电压输入端,-0.1V≤REF-≤2.5V。且:(REF+)-(REF-)≥1V。
  • VCC:电源3V≤Vcc≤6V。
  • GND:地。
  1. TLC549 工作时序

(1)串行数据中高位A7先输出,最后输出低位A0;

(2)在每一次I/O COLCK高电平期间DATA OUT 线上数据产生有效输出,每出现一次I/O COLCK,DATA OUT线就输出1位数据。一个周期出现8 次I/O COLCK 信号并对应8位数据输出;

(3)在CS*变为低电平后,最高有效位(A7)自动置于DATA OUT 总线 。其余7位(A6~A0)在前7 个I/O CLOCK 下降沿由时钟同步输出。B7~B0 以同样方式跟在其后;

(4)tsu在片选信号CS*变低后,I/O COLCK 开始正跳变的最小时间间隔1.4μs;

(5)ten是从CS*变低到DATA OUT 线上输出数据最小时间(1.2μs);

(6)只要I/O COLCK 变高就可读取DATA OUT 线上数据;

(7)只有在CS*端为低时,TLC549 才工作;

(8)TLC549的A/D转换电路没有启动控制端,只要读取前一次数据后马上就可以开始新的A/D 转换。转换完成后就进入保持状态。TLC549 每次转换所需时间是17μs, 它开始于 变为低电平后I/OCLOCK 的第8个下降沿,没有转换完成标志信号。

当CS变为低电平后,TLC549芯片被选中, 同时前次转换结果的最高有效位MSB (A7)自 DATA OUT 端输出,接着要求从I/O CLOCK端输入8个外部时钟信号,前7个 I/O CLOCK信号的作用,是配合TLC549 输出前次转换结果的的A6~A0 位,并为本次转换做准备:在第4个 I/O CLOCK 信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个 I/O CLOCK 信号的下降沿使片内采样/保持电路进入保持状态并启动 A/D开始转换。转换时间为 36 个时钟周期,最大为 17µs。直到 A/D转换完成前的这段时间内,TLC549 的控制逻辑要求:或者CS保持高电平,或者 I/O CLOCK 时钟端保持36个系统时钟周期低电平。

由此可见,在TLC549的 I/O CLOCK 端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次 A/D转换开始。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295719.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lv13 操作系统、内核实现 1

目录 一、程序分类 二、计算机系统的层次结构 2.1 无操作系统的简单的两层结构 ​编辑 2.2 有操作系统的复杂的四层结构 三、 什么是操作系统 四、操作系统内核的实现模式 五、什么是设备驱动程序 一、程序分类 程序按其运行环境分为&#xff1a; 裸机程序&#xff1a;…

更改WiseAlign软件界面图标方法

更改WiseAlign软件界面图标方法 未替换时 首先将图片转换为BMP格式&#xff0c;在搜索栏处输入画图&#xff0c;点击打开画图工具 按住图标拖动到画布内&#xff0c;或是直接CtrlV将图标复制到画布内 点击文件&#xff0c;再点击另存为 保存类型选择“24位位图&#xff08;*.bm…

【Nacos】—客户端与服务端源码解析

Nacos系列 Nacos—简述、注册中心、配置中心 Nacos安装教程 SpringBoot项目与Nacos配置 一、背景介绍 Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴开源的服务发现和配置管理工具&#xff0c;它是一个全面的微服务基础设施组件&#xff0c;提供…

中心性算法归纳

中心性算法不仅是在我所学习的计算机网络当中起很重要的作用&#xff0c;在交通网络、社交网络、信息网络、神经网络当中也有很多的应用例子。今天我在这里总结一下场景的几种中心性算法。 参考文献 Python NetworkX库 偏心中心性&#xff08;Eccentricity Centrality&#x…

基于SSM的手机官网系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Linux--shell练习题

1、写一个 bash脚本以输出数字 0 到 100 中 7 的倍数(0 7 14 21...)的命令。 vim /shell/homework1.sh #!/bin/bash for num in {1..100} doif [[ num%7 -eq o ]];thenecho $numfi done执行输出脚本查看输出结果 输出结果&#xff1a; 2、写一个 bash脚本以统计一个文本文件…

跟着LearnOpenGL学习9--光照

文章目录 一、颜色二、创建光照场景 一、颜色 显示世界中有无数种颜色&#xff0c;每一个物体都有它们自己的颜色。我们需要使用&#xff08;有限的&#xff09;数值来模拟现实世界中&#xff08;无限的&#xff09;的颜色&#xff0c;所以并不是所有现实世界中的颜色都可以用…

Android Canvas画布saveLayer与对应restoreToCount,Kotlin

Android Canvas画布saveLayer与对应restoreToCount&#xff0c;Kotlin private fun mydraw() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.heigh…

一篇文章带你搞定CTFMice基本操作

CTF比赛是在最短时间内拿到最多的flag&#xff0c;mice必须要有人做&#xff0c;或者一支战队必须留出一块时间专门写一些mice&#xff0c;web&#xff0c;pwn最后的一两道基本都会有难度&#xff0c;这时候就看mice的解题速度了&#xff01; 说实话&#xff0c;这是很大一块&…

1162字符串逆序

一&#xff1a;题目 二.思路分析 1.如果不用递归&#xff0c;可以输入字符串后&#xff0c;再逆序输出&#xff0c;但是题目要求使用递归 2.使用递归&#xff1a; 2.1输入字符&#xff0c;直到输入的字符是‘&#xff01;’&#xff0c;停止输入&#xff0c;否则继续输入&…

智能优化算法应用:基于野马算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于野马算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于野马算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野马算法4.实验参数设定5.算法结果6.参考文献7.MA…

智能优化算法应用:基于晶体结构算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于晶体结构算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于晶体结构算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.晶体结构算法4.实验参数设定5.算法结果6.…