(七)ADC0809 模数转换的学习 AD转换

ADC0808

引脚功能各引脚功能如下:

1~5和26~28(IN0~IN7):8路模拟量输入端

8、14、15和17~21:8位数字量输出端

22(ALE):地址锁存允许信号,输入,高电平有效。

6(START): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

7(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

9(OE):数据输出允许信号,输入,高电平有效。    当A/D转换结束时,此端输入一个高电平,输出数字量。

10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。

12(VREF(+))和16(VREF(-)):参考电压输入端

23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路

仿真图:

上图计算公式:

3.45/5= X / 255  那么 X=175.95   也就是 176 (对应 LED   1011 0000  )  ,实验正确

参考程序代码:

 1 #include<reg52.h>
 2 #define uchar8  unsigned char
 3 #define uint16  unsigned int
 4 #define LED P0
 5 #define out P1
 6 sbit start = P2^1 ;
 7 sbit OE   = P2^7;       //   当A/D转换结束时,此端输入一个高电平,输出数字量。OE=0,关闭输出,不准输出到单片机
 8 sbit EOC  = P2^3;      //  A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
 9 sbit CLOCK = P2^0;      //  时钟脉冲输入端
10
11 sbit add_a = P2^4;    // abc  用来选择 ADC芯片的通道,
12 sbit add_b = P2^5;
13 sbit add_c = P2^6;
14
15 void main(void)
16 {
17
18   uchar8  temp ;
19
20   add_a=0;  add_b=0;  add_c=1;   // 选择 ADC0809 芯片的通道 4   对应 100
21
22   while(1)
23   {
24       start=0;
25       start=1;   // 上升沿使得 0809 复位
26       start=0;   // 下降沿  启动AD 转换
27
28       while(1)
29       {
30             CLOCK = ! CLOCK ; if( EOC == 1)  break ;   // 等待转换结束,跳出循环
31       }
32
33         OE=1;
34
35       temp = out ;   // 暂存转换结果
36       OE = 0;         // 关闭输出
37
38       LED=~temp;      // 这里取反,是因为自己把 电路图 线接反了
39                       //所以通过软件修改,使得LED 亮的 为 1,灭的为 0
40                         // 采样结果通过 P0 口 输出到 LED 灯
41   }
42
43 } 

总结: 拓展 怎样才能把 要显示的 在 数码管 或者 LCD 屏幕上显示出来呢??????有点困难,想不出,有没有专门的译码器????

时间: 2024-09-29 02:00:56

(七)ADC0809 模数转换的学习 AD转换的相关文章

STM32F10X入门指南---AD转换

首先,点击下面的链接下载我们需要使用的代码.链接 1.添加必要的文件: 之前我们说过,有三个文件是必须添加的,这三个文件分别是:startup_stm32f10x_xd.s ,stm32f10x_rcc.c ,system_stm32f10x.c.其中,前面的xd是根据你的芯片的容量来选择的.这三个文件都可以在千帆提供的代码中找到.文件路径:Core.rar\Core\STM32\Source\Must . 另外,如果想操作IO口,必须添加千帆的一个库文件DeviceBase.cpp.文件路径:

51单片机 AD转换

在数逻的课程中,已经学习过AD转换的概念:将模拟信号采样.量化.编码后转换为数字信号.但是未学习过通过单片机编程,显示结果. 编码分有舍有入.只舍不入两种,量化误差前者更小.=2Vm/(2^n+1  - 1 ) 注意,为了达到精确度高.稳定性好的目的,最好将所有器件的模拟地和数字分别连接,最后将模拟地和数字地仅在一点相连. 此处,使用的是STC12C5A60S2内部的AD转换. 1 /* 功能:使用12C5A60S2内部AD读取外部电压,显示在1602上 */ 2 3 #include "STC

s5pv210 AD转换

1:ADC:Analog-to-Digital Converter,模拟信号转数字信号,自然界一般为模拟信号,而SoC需要数字信号,所以之间通信需要ADC. 2:转换原理: 以逐次逼近式AD转换为例: 这里以8位为例,而S5pv210SoC是可选10bit.12bit: (1) 首先发出"启动信号"信号S.当S由高变低时,"逐次逼近寄存器SAR"清0,DAC输出Vo=0,"比较器"输出1.当S变为高电平时, "控制电路"使SA

STM8S AD转换

终于把bochs和gdb连起来了,下面描述下步骤以作记录. 1.安装bochs 前面有篇文章介绍了bochs源码编译安装过程,这里安装也非常相似,只是命令稍微有些不同 ./configure --enable-gdb-stub make make install 2.下载调试映像 http://oldlinux.org/Linux.old/bochs/linux-0.11-gdb-rh9-050619.tar.gz 在这里下载压缩包,里面含有不少东西,要在ubuntu下使用需要修改配置的内容,参

AD转换精度的计算

声明原文来源于:http://wenku.baidu.com/view/1e6d8f3083c4bb4cf7ecd1c2.html 讨论AD转换分辨率的算法(zt) (1)在总长度为5米的范围里,平均分布6棵树(或说6个元素),算出每科树(或说每个元素)的间隔? 解:每棵树(或说每个元素)应该这样分布: 在开头0米处种第1棵(记为0号树) 在1米处种第2棵(记为1号树): 在2米处种第3棵(记为2号树): 在第5米(即终点)处种第6棵(记为5号树) 所以,每棵树的间隔(或分辨率)的算法是:总长度

msp430单片机AD转换

msp430单片机AD转换 2010-08-01 20:14:05|  分类: msp430单片机|举报|字号 订阅 一.简单介绍: ADC12模块中是由以下部分组成:输入的16路模拟开关(外部8路,内部4路),ADC内部电压参考源,ADC12内核,ADC时钟源部分,采集与保持/触发源部分,ADC数据输出部分,ADC控制寄存器等组成. 四种采样模式: (1)单通道单次转换模式 (2)序列通道单词转换模式 (3)单通道多次转换模式 (4)序列通道多次转换模式 个人觉得(3)模式应该是使用较多的,

AD转换

一.AD转换的概念  AD转换的功能是把模拟量电压转换为数字量电压.DA转换的功能正好相反,就是讲数字量转换位模拟量. 二.芯片PCF8591介绍 PCF8591是一个单片集成.单独供电.低功耗.8-bit CMOS数据获取器件.PCF8591具有4个模拟输入.1个模拟输出和1个串行I2C总线接口.PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件.在PCF8591器件上输入输出的地址.控制和数据信号都是通过双线双

verilog实验3:AD转换后串口输出到PC端

一.实验任务 通过tcl549AD转换芯片将模拟电压信号转换为数字信号,并通过串口显示到电脑上.此AD转换芯片为串行转换芯片,且转换速率要和串口选择的速率匹配.等待串口发送完后,再进行下一次AD转换.就实际应用而言,此转换速率有点低. 二.代码开发 根据AD芯片的芯片手册编写程序.以下为顶层程序. //将实时转换的数字结果通过串口传输到PC上 module adc_top ( clk, rst, ad_cs_out,//--TLC549片选信号 ad_clk_out,//--TLC549时钟信号

温故《单片机基础》之——AD转换

重新翻开这本书,还是有收获的,这里记录点ADC的知识点,虽然书上有些知识点跟不上时代的发展,但是基本上,还算比较系统的,也不是很过时,零几年的技术,数字电路的基本原理是没变过.这里结合自己的项目实际和书上的知识点整理一下. 1.ADC的采样过程,这个四步骤基本上,没变过,采样.保持.量化.编码,而且在∑△还有一个数字滤波器的. 2.在采样的前端,通常需要有传感器.放大器,传感器有温度传感器.光电传感器.湿度传感器.流量传感器.压力传感器.机械量传感器pH传感器等,目前我接触过温度传感器.光电传感