51单片机控制ADC0809的电路图和源程序
8位数模转换器ADC0809实验报告
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
单片机原理与接口技术
课程设计说明书
8位数模转换器ADC0809项目设计
专业
电气工程及其自动化
学生姓名
林雯雯
班级
D电气122
学号
1220601220
指导教师
周云龙
完成日期
2015年12月12日
一 理论部分
1
8位数模转换器ADC0809实验
(1)、设计一个0-5V可调的直流模拟电压信号
(2)、扩展2位静态显示的数码管
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
特性概述:
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
实验六 ADC0809AD转换实验
实验六 ADC0809AD转换实验一、实验目的1、掌握ADC0809AD芯片的工作原理和使用方法。
2、掌握如何使用51单片机配合ADC0809AD芯片实现模拟量转换。
二、实验原理ADC0809AD是一种8位分辨率、并行输出、单通道,3MHz 工作速率的A/D转换器。
ADC 有两个输入电压端子,IN+和IN-,它们之间加入了一个内部参考电压源(RE),所以在输入模拟信号时常在IN+端连接信号输入,而IN-端接地。
当选用RE = +2.5 V时,IN+的输入范围约为0-VREF,在本实验中选用的是RE = +5 V,所以IN+的输入范围约为0-5V。
当外部触发信号TRIGGER开启后,ADC执行转换操作。
在转换时,电压采样保持时间通常为 100 ns,最长转换时间为 200 us,当转换结束时,ADC将数字输出置在低电平并发出一个中断请求(INTR)信号。
转换结果可以通过 8个输出线路(DB0-DB7)获得。
三、实验器材2、*1 9针座(1x9 Pin Socket)。
3、*1 51单片机学习板。
4、*1 电阻10KΩ。
5、*1 电压源。
6、*1 面包板。
7、*5 条杜邦线。
四、实验步骤1、根据下表将ADC0809AD芯片插入到面包板中。
ADC0809AD引脚码ADC0809AD引脚名称功能1 A0- A/D输入(低、多路)引脚17 AGND 模拟地18 VREF/2 参考电压输出19 VCC 数字电源2、将9脚座插入面包板的横向边缘上。
3、使用杜邦线将ADC0809AD转换器连接到学习板上,并根据原理部分对芯片引脚进行接线。
4、将一个10KΩ的电阻连接到ADC0809AD芯片的IN+引脚和GND之间。
6、使用杜邦线将ADC0809AD芯片的DB0-DB7引脚连接到学习板的P0.0-P0.7引脚上。
7、将学习板的P0.0-P0.7引脚转为输出模式。
五、实验代码#include <reg52.h>// SFR位定义sfr ADC_CONTR = 0xBC; // ADC控制寄存器sfr ADC_RES = 0xBD; // ADC结果寄存器sfr ADC_RESL = 0xBE; // ADC结果低字节寄存器sfr P0 = 0x80; // P0口// 公用函数void delay(int time) // 延时函数{int i, j;for (i = 0; i < time; i++) {for (j = 0; j < 125; j++);}}while (1) {ADC_CONTR |= 0x08; // 开始转换while (!(ADC_CONTR & 0x10)); // 等待转换结束P0 = ADC_RES; // 将结果输出到P0口delay(1000); // 延时1000ms}}根据程序分析,程序采用了循环语句控制ADC的转换、输出,程序中实现的是ADC的一次转换。
AT89S51单片机与ADC0809模数转换器的三种典型连接
AT89S51单片机与ADC0809模数转换器的三种典型连接Ξ元增民(长沙大学机电工程系,湖南长沙410003)摘 要:根据模数转换器定位为单片机的外部RAM单元的概念,介绍了AT89S51单片机与ADC0809模数转换器三种典型连接电路及程序编制.分析了三种电路硬件和软件特点.并且给出了一种能用于中断、串行口和模数转换等项目的综合训练的短小精悍的可执行程序.关键词:单片机;模数转换;连接硬件;控制软件;AT89S51;AT89C51;ADC0809中图分类号:TP368.1 文献标识码:A 文章编号:1008-4681(2005)05-0069-04Three Typical Connections B etw een AT89S51Single Chip Computer andADC0809Analog to Digital ConverterY UAN Z engmin(Mechanical and E lectrical Engineering Department,Changsha University,Changsha,Hunan410003) Abstract:According to the concept that analog to digital converters are defined as external RAM of single chip com puter,three typical connections between AT89S51single chip com puter and ADC0809analog to digital converter are introduced.The characteristic of hardware and s oftware of the three circuits are analyzed.A short program which may be used in the integrated training of interrupting,series port and analog to digital converting is given.K ey w ords:single chip com puter;analog to digit converting;connecting hardware;controlling s oftware; AT89S51;AT89C51;ADC0809 MCS51系列单片机是美国英特尔公司于1980年开始生产的.MCS51系列单片机以功能强大的指令系统、并行口串行口兼有以及灵活的SFR模式等优点,在20世纪80~90年代曾经风行我国.上世纪末国际著名电子器件生产厂家,如飞力浦(Philips)公司,西门子(Siemens),都在MCS51系列单片机的框架下设计新型单片机产品.其中美国爱特美(AT ME L)公司采用MCS51系列单片机的指令系统和硬件框架,将MCS51系列单片机内置ROM、EPROM及外挂EPROM等模式改为内置FPEROM (Flash Programmable and Erasable Read Only Mem o2 ry),设计了与MCS51系列单片机兼容的AT ME L51系列单片机,包括内置4kB FPEROM的标准40脚AT89C51、内置2kB FPEROM的20脚AT89C2051以及内置1kB FPEROM的20脚AT89C1051.正是这些后起的51系列单片机赋予MCS51系列单片机以新的生命力.建议把英特尔公司MCS51系列单片机和后来世界各大公司在其框架下生产的各种51系列单片机统称为51系列单片机,简称为51单片机.51系列单片机至今在8位机控制领域还是一只独秀.就连一些32位处理器也在致力8位应用[1].讨论51系列单片机的一些基本应用问题非常有价值.尽管大家都知道模拟数字转换(Analog to Digit C onvert,ADC)数字模拟转换(Digit to Analog C onvert, DAC)接口技术在控制领域非常重要,而且很多教科书,如单片机、电子技术、计算机控制技术、都有关于ADC和DAC的内容,但是实际上在很多学校的教学中ADC和DAC都是一个薄弱环节,或者说是一个交叉点.谁都应当管,结果往往谁都不管.在一定程度上影响了教学效果.目前8路8位逐位比较式模数转换芯片ADC0809无论在工程设计还是教学过程中还是作为首选品种.讨论51系列单片机与ADC0809的硬件连接与软件编程,是一项有价值的工作.概念非常重要.要了解ADC0809与51单片机连接原理,首先要明确ADC0809在整个51单片机第19卷 第5期2005年9月 长 沙 大 学 学 报J OURNA L OF CH AN GSH A UNI VERSITYVol.19 No.5Sep.2005Ξ收稿日期:2005-06-09;修回日期:2005-09-09作者简介:元增民(1957-),男,河北沙河人,长沙大学教授,硕士,主要从事电子学研究和教学.系统中的定位.大体上说,ADC0809在整个51单片机系统中是作为外部RAM 的1个单元定位的.具体到某一个连接方式,ADC0809在整个51单片机系统中的定位又有一些差别.目前,性能非常好的AT 89C51的价格大约在10元左右,已经完全取代MCS51而稳占市场.考虑AT 89C51已经在2004年停产,代之而起的是性能价格比更好的AT 89S51.本文介绍ADC0809与51系列单片机的连接时将以AT 89S51作为例子,不过完全适合于AT 89C51和更早的MCS51系列单片机中的8031,8051和8751.本文介绍ADC0809与AT 89S51(51系列单片机)的3种典型连接方式.1 ADC0809与51单片机的第一种连接方式这是一种数据线对数据线、地址线对地址线的标准连接方式,如图1.但是由于51单片机没有现成的低8位地址总线,所以采用这种标准连接方式需要用74LS373或类似芯片产生低8位地址总线.早期的MCS51系列单片机的应用品种很多是没有内置程序存贮器的8031芯片,本身就需要外挂74LS373等芯片产生低8位地址总线来外接E 2PROM 等程序存贮器,连接ADC0809时不需要专门外挂74LS373.因此早期的MCS51系列单片机,如8031,采用这种方式连接ADC0809还是比较可行的.图1中的P2.7/A15线作为整个ADC0809芯片的片选线.当P2.7/A15=0时,或非门敞开,允许写信号通过,将单片机负的写脉冲转换为ADC0809所需要的正脉冲,以选中ADC0809某一通道并启动转换.图1 ADC0809与51单片机的第一种连接方式这是一种不完全地址译码方式.如果增加地址译码器,将P2.7/A15线改为高位地址译码器的输出线,就可以形成完全译码.在图1连接方式中,ADC0809的转换结果寄存器在概念上定位为单片机外部RAM 单元的一个只读寄存器,与通道号无关.因此读取转换结果时不必关心DPTR 中的通道号如何.编程概要:MOV DPTR ,#7FF8H ;DPTR 指向0809通道0MOVX @DPTR ,A ;锁定通道0并启动转换…………………………MOVX A ,@DPTR ;读取转换结果要求在程序第一条指令中把决定是否能选中整个ADC0809芯片和通道的数据送到数据指针DPTR.在本电路中,只要送到DPTR 的最高位数据为0,就能选中ADC0809,而通道地址由DPTR 的最低3位数字决定.这里累加器A 的内容对于ADC 没有任何意义.因此事先不用操心累加器A 内容如何.这是本程序的一大特点.2 ADC0809与51单片机的第二种连接方式通常芯片的地址线只能进不能出自不必说,ADC0809的数据线有一特点:只能出不能进.就是说,就像往S BUF 写入时写到发送缓冲寄存器,从S BUF 读出时实际是读取接收缓冲寄存器的数据一样,往ADC0809写入时,把数据总线上的数据写到地址寄存器,从ADC0809读出时实际是读取转换结果数据.图2 ADC0809与51单片机的第二种连接方式因此可以在把51单片机的8位数据线接到ADC0809的8位数据线的同时,又把其中的3位直接接到ADC0809的3根地址线以确定通道号.通常把51单片机的8位数据线中的低3位D2,D1,D0直接接到ADC0809的3根地址线A2,A1,A0以确定通道号,如图2.采用这种连接方式明显可以省去一片74LS373.在图2连接方式中,ADC0809的转换结果寄存07长沙大学学报 2005年9月器在概念上定位为单片机外部RAM 单元的只读寄存器,而通道号锁存器在概念上定位为单片机同一个外部RAM 单元的只写寄存器.同一个外部RAM 单元的只读寄存器与只写寄存器使用同一个地址,就像51系列单片机的串行发送缓冲器与串行接收缓冲器使用同一个地址99H 一样,不会发生混乱.图2连接方式有一个特点,那就是单片机要把最低3位二进制数据通过数据总线写入ADC0809的地址锁存器,然后作为通道地址使用.编程概要:MOV A ,#0F8H ;ADC0809通道0地址送到A MOV DPTR ,#7FFFH ;DPTR 指向ADC0809MOVX @DPTR ,A ;锁定通道0并启动转换…………………………MOVX A ,@DPTR ;读取转换结果要求在程序第一条指令中把决定是否能选中整个ADC0809芯片的数据送到数据指针DPTR.在本电路中,只要送到DPTR 的最高位数据为0,就能选中ADC0809,而通道地址由累加器A 的最低3位数字决定.除了最高位以外,DPTR 的其余15位数据对于ADC 没有任何意义.除了较低3位以外,累加器A 的其余5位数据对于ADC 也没有任何意义.这是本程序的一大特点.3 ADC0809与51单片机的第三种连接方式在很多应用场合,AT 89S51内部的硬件资源,例如4kB 闪存,128B 内部RAM ,一个串行口和4个8位并行口等,已经够用.就是说,在很多应用场合,不需要外扩RAM 或I/O 口.图3 ADC0809与51单片机的第三种连接方式当51单片机没有外扩RAM 和I/O 口时,ADC0809就可以在概念上作为一个特殊的唯一的外扩RAM 单元.因为它是唯一的,就没有地址编号,也就不需要任何地址线或者地址译码线.只要单片机往外部RAM 写入,就是写到ADC0809的地址寄存器中.只要单片机从外部RAM 读取数据,就是读取ADC0809的转换结果.基于这种外部RAM 的唯一单元概念设计的AT 89S51与ADC0809的连接电路如图3.相应的启动程序和读数程序都非常简单.编程概要:MOV A ,#0F8H ;ADC0809通道0地址送到A MOVX @R0,A ;锁定通道0并启动转换………………MOVX A ,@R0;读取转换结果只要程序中使用MOVX @R0,A 指令或者MOVX @DPTR ,A 指令,就能启动ADC0809.比较MOVX @R0,A 指令和MOVX @DPTR ,A 指令,当然是MOVX @R0,A 占优势,所以这里使用MOVX @R0,A 指令.其中间址寄存器R0中的数据无论在启动ADC0809还是在读取转换结果时都没有任何意义,因此事先不必考虑往R0中送入什么数据.这是本程序的一大特点.4 三种连接方式的综合比较第一种和第二种连接方式允许多片ADC0809与单片机连接,第三种连接方式只能连接一片.通常1片8通道ADC0809就能满足控制工程需要.因此在单片机没有外扩RAM 和I/O 接口时,第三种连接方式是一种优选方案.需要2片或更多ADC0809时,第二种连接方式是一种优选方案.第一种连接方式需要一片74LS373做地址锁存器.如果单片机系统已经有一片74LS373地址锁存器,那么第一种连接方式也不失为一种可以考虑的连接方式.5 同时进行模数转换和显示的典型程序单片机教学中除了ADC 和DAC 是难点之外,中断和串行口也是难点.下面介绍一个典型的程序.这个程序虽然短小精悍,但是能利用中断和串行口功能同时完成多项任务,有利于学员掌握中断、串行口及ADC0809的编程应用.执行本程序时,需要在图3基础上再增加一片串入并出芯片74LS164及一只共阳数码管,并通过P1口和7406或74LS240控制8只LE D. ORG 0000H LJMP MAI N ORG 0003H ;0号外中断服务子程序 PUSH ACC ;ACC 入栈保护 MOVX A ,@R0 ;读ADC 转换结果 MOV P1,A ;送P1口显示17总第67期 元增民 AT 89S51单片机与ADC0809模数转换器的三种典型连接 C LR A ;ACC指向ADC0809的0通道 MOVX@R0,A ;再次启动ADC0809 POP ACC ;ACC出栈 RETI ;中断返回MAI N:MOV IE,#10000001B;开0号外中断 C LR A ;ACC指向ADC0809的0通道 MOVX@R0,A ;首次启动ADC0809 MOV DPTR,#ST AB ;DPTR指向段码表ST ART:MOV R0,A ;秒数送R0保存 MOVC A,@A+DPTR ;查表取来秒数段码 M O V S BUF,A ;秒数的段码送串行口输出 AC A LL DE LAY ;延时1秒 ADD A,#1 ;加1秒 DA A ;十进制调整 AN L A,#0FH ;屏蔽掉十位 S JMP ST ART ;循环计时DE LAY:……………… ;1秒延时子程序 E ND执行本程序,首先在主程序中启动ADC0809,然后单片机运行一位秒表程序.在秒表运行过程中,当模数转换完成时,ADC0809发出一个正脉冲E OC(End O f C onvert),反相为负脉冲后给单片机的端子,单片机响应中断,执行完当前指令后即进入中断服务子程序,读取转换结果并送显示,然后再次启动ADC0809后返回主程序.ADC0809完成1次转换需用64个时钟脉冲.如果ADC0809时钟信号是640kH z,那么1次转换需要时间为0.1ms,1秒钟之内就能完成1万次转换,就是说,1秒钟之内要产生1万次中断,理论上对秒表运行肯定有影响,但是实际上作为演示实验,人们根本觉察不到中断对秒表的影响.所以我们把这个实验命名为“秒表运行中进行ADC”,其特征是秒表一边运行,一边连续进行ADC,因此实验成功的标志是代表转换结果的LE D显示数字能与为ADC0809提供模拟电压的电位器实现随动,即拧动电位器时LE D显示数字跟着闪烁.参考文献:[1]R obert Crav otta.32位微处理器致力于8位应用[J].电子设计技术,2005(12):5,56-57.[2]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2004.(上接第23页)A=100.11 0.190.1 10.13解:显然矩阵A为对角占优矩阵,且两圆盘R1与R2相交.∵S=1+0.1-0.2=0.9>0,Δ=0.92-4×1.1×0.1=0.37>0,∴R1与R2是可以被分离的.取a=S2P i ≈0.4,令D=0.4 1 1,作变换B=DAD-1=100.040.4 0.2590.1 2.50.13这时R1与R2就已经被分离.三个圆盘都被分离开来了.由G erschg orin圆盘定理可得三个特征值的范围分别为:9.56≤λ1≤10.44,8.65≤λ2≤9.35,2.5≤λ3≤3.5.小结:上面所讲述的方法对于对角占优矩阵是非常行之有效的.但是它还有一定的局限性。
ADC0809与51单片机接口电路及应用程序
ADC0809与51单片机接口电路及应用程序最近研究了下ADC0809这个芯片,做了个电路,和大家分享电路原理图如下:500)this.width=500;" border=0>说明:D0~D7接51单片机的P2口(P2.0~P2.7)ADIN1和ADIN2为通道IN0和IN1的电压模拟量输入(0~5V)应用程序如下:#include"reg52.h"#define uchar unsigned charsbit ST=P1^0;sbit EOC=P1^1;sbit OE=P1^2;sbit CLK=P1^3;sbit ADDCS=P1^4;uchar AD_DATA[2]; //保存IN0和IN1经AD转换后的数据/**********延时函数************/void delay(uchar i){uchar j;while(i--){for(j=125;j>0;j--);}}/*********系统初始化***********/void init(){EA = 1; //开总中断TMOD = 0x02; //设定定时器T0工作方式 TH0=216; //利用T0中断产生CLK信号 TL0=216;TR0=1; //启动定时器T0ET0=1;ST=0;OE=0;}/***********T0中断服务程序************/void t0(void) interrupt 1 using 0{CLK=~CLK;}/***********AD转换函数**********/void AD(){ST=0;ADDCS=0; //选择通道IN0delay(10);ST=1; //启动AD转换delay(10);ST=0;while(0==EOC);OE=1;AD_DATA[0]=P2;OE=0;ST=0;ADDCS=1; //选择通道IN1 delay(10);ST=1; //启动AD转换delay(10);ST=0;while(0==EOC);OE=1;AD_DATA[1]=P2;OE=0;}/*****************主函数**************/。
ADC0809程序
sbit D5=P1 ;
sbit D6=P1;
sbit D7=P1;
ucharad_dat;
/*---------------------------------
函数名:delayus(i)
功能:延时t=(12*i+14)us
参数:i
返回值:无
备注:晶振12MHz
-----------------------------------*/
}
/*---------------------------------
函数名:w_com_1602(uchar com)
功能:写命令
参数:uchar com
返回值:无
-----------------------------------*/
void w_com_1602(uchar com)
{
e=0;
while(!ADC_EOC); //等待转换结束
ADC_OE =1;
w_dat_1602(0x30+(uchar)D0);
w_dat_1602(0x30+(uchar)D1);
w_dat_1602(0x30+(uchar)D2);
w_dat_1602(0x30+(uchar)D3);
w_dat_1602(0x30+(uchar)D4);
dac0809模数转换
----------------------------------*/
void ADC_0809()
{
ADC_START=1; //上升沿复位
_nop_();
_nop_();
_nop_();
ADC_START=0; //下降沿开始
ADC0809
7 2
A/D转换器的主要技术指标 A/D转换器的主要技术指标
1.分辨率 .
分辨率表示输出数字量变化一个相邻数码所需输入模 拟电压的变化量。 拟电压的变化量。 转换器的分辨率定义为满刻度电压与2 之比值,其中n 转换器的分辨率定义为满刻度电压与 n之比值,其中 为ADC的位数。 的位数。 的位数 例如具有12位分辨率的 能分辨出满刻度的1/2 例如具有 位分辨率的ADC能分辨出满刻度的 12或 位分辨率的 能分辨出满刻度的 满刻度的0. 满刻度的12位 满刻度的 . 0245% 。 一个 % 一个10V满刻度的 位 ADC能 满刻度的 能 够分辨输入电压变化的最小值为2. 够分辨输入电压变化的最小值为 .4mV。 。
7
13
3.影响A/D转换技术指标的主要因素 影响A/D转换技术指标的主要因素 A/D 工作电源电压不稳定; 工作电源电压不稳定; 外接时钟频率不适合, 外接时钟频率不适合, 环境温度不适合; 环境温度不适合; 与其它器件的电特性不匹配,如负载过重; 与其它器件的电特性不匹配,如负载过重; 外界有强干扰; 外界有强干扰; 印刷电路板布线不合理。 印刷电路板布线不合理。
基于ADC0809的声音采集电路,程序和仿真
ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
管脚说明如下:
VCC
GND
P0
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FLASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
工作过程如下:
1.
同时,由于Q3至Q5和Q4至Q6的反馈信号将这两个门打开,因此可接收输入信号D,Q5=D,Q6=Q5非=D非。
2.
这时G3和G4打开,它们的输入Q3和Q4的状态由G5和G6的输出状态决定。Q3=Q5非=D非,Q4=Q6非=D。由基本RS触发器的逻辑功能可知,Q=Q3非=D。
3.
这是因为G3和G4打开后,它们的输出Q3和Q4的状态是互补的,即必定有一个是0,若Q3为0,则经G3输出至G5输入的反馈线将G5封锁,即封锁了D通往基本RS触发器的路径;该反馈线起到了使触发器维持在1状态和阻止触发器变为0状态的作用,故该反馈线称为置1维持线,置0阻塞线。Q4为0时,将G3和G6封锁,D端通往基本RS触发器的路径也被封锁。Q4输出端至G6反馈线起到使触发器维持在0状态的作用,称作置0维持线;Q4输出至G3输入的反馈线起到阻止触发器置1的作用,称为置1阻塞线。因此,该触发器常称为维持-阻塞触发器。
ADC0809模数转换器的使用详解与程序
值得一提的是,我按照上面电路,把 AD 的 ABC 三脚共同接接地时,AD0809088 始终输 出高电平,最后当我把 BC 共同接地,在程序中给 A 一个 0,则 AD0809 正常运行,有输出, 并且发现当所给的时钟频率越低, 最高精度的那位输出越稳定, 具体参数范围从芯片资料里 有详细介绍,不过十全英文,专业词汇哦。哈哈 现将程序记录如下: 完整的程序从这里下载: /ziliao/file/0809c51x.rar
ADC0809 模数转换器的使用详解与程序
带我们的王老师刚评上硕导了,下学期开始带研究生了。 从他那里了解到每做一次实验或者实践,应该把它用规范的格式记录下来,一来自己可以 日后查看,二来同学间可以相互交流,共通过进步,甚为必要。现将本次实验记录如下。
实验 名称:根据光强控制外围器件的通断。 实验原理;使用 AD 芯片将太阳能电池产生的光生伏打电压转化为数字信号,再通过单片 机处理后,在数码管上显示电压,同时根据设定电压伐值,控制外围器件的通断。 实验所需的设备:51 单片机烧写器一个,电脑一台,数字式示波器一个,数字式万用表一 个
// //
开始转换 关地址//等来自 eoc 变为 1//
打开输出
temp=P1; oe=0; //
//
取 p1 到 p3 关输出
temp=temp*50; temp=temp/256;
qian=temp/1000; bai=temp%1000/100; shi=temp%100/10; ge=temp%10;
编辑本段转换方法
模数转换器
模数转换过程包括量化和编码。量化是将模拟信号量程分成许多离散量级,并确定输 入信号所属的量级。编码是对每一量级分配唯一的数字码,并确定与输入信号相对应 的代码。最普通的码制是二进制,它有 2n 个量级( n 为位数) , 可依次逐个编号。模 数转换的方法很多,从转换原理来分可分为直接法和间接法两大类。 直接法是直接 将电压转换成数字量。它用数模网络输出的一套基准电压,从高位起逐位与被测电压 反复比较,直到二者达到或接近平衡(见图) 。控制逻辑能实现对分搜索的控制,其 比较方法如同天平称重。先使二进位制数的最高位 Dn-1 = 1 ,经数模转换后得到一个 整个量程一半的模拟电压 VS ,与输入电压 Vin 相比较,若 V in> VS , 则保留这一位;若 V in< V in ,则 Dn-1 = 0 。然后使下一位 Dn -2 = 1, 与上一次的结果一起经数模转换后与 V in 相比较 , 重复这一过程,直到使 D 0 = 1 ,再与 V in 相比较 , 由 V in> VS 还是 V in< V 来 决定是否保留这一位。经过 n 次比较后, n 位寄存器的状态即为转换后的数据。这种 直接逐位比较型(又称反馈比较型)转换器是一种高速的数模转换电路,转换精度很 高,但对干扰的抑制能力较差,常用提高数据放大器性能的方法来弥补。它在计算机
(完整word版)51单片机控制ADC0809的电路图和源程序
ADC0809数模转换与显示/*名称:ADC0809数模转换与显示说明:ADC0809采样通道3输入的模拟量,转换后的结果显示在数码管上。
*/#include〈reg51.h>#define uchar unsigned char#define uint unsigned int//各数字的数码管段码(共阴)uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbit CLK=P1^3;//时钟信号sbit ST=P1^2; //启动信号sbit EOC=P1^1;//转换结束信号sbit OE=P1^0;//输出使能//延时void DelayMS(uint ms){uchar i;while(ms——) for(i=0;i<120;i++);}//显示转换结果void Display_Result(uchar d){P2=0xf7; //第4个数码管显示个位数P0=DSY_CODE[d%10];DelayMS(5);P2=0xfb;//第3个数码管显示十位数P0=DSY_CODE[d%100/10];DelayMS(5);P2=0xfd;//第2个数码管显示百位数P0=DSY_CODE[d/100];DelayMS(5);}//主程序void main(){TMOD=0x02;//T1工作模式2TH0=0x14;TL0=0x00;IE=0x82;TR0=1;P1=0x3f;//选择ADC0809的通道3(0111)(P1。
4~P1。
6)while(1){ST=0;ST=1;ST=0;//启动A/D转换while(EOC==0);//等待转换完成OE=1;Display_Result(P3);OE=0;}}//T0定时器中断给ADC0808提供时钟信号void Timer0_INT() interrupt 1{CLK=~CLK;}硬件电路连接图(proteus仿真):。
ADC0809_多路数据采集和控制系统设计
1. 设计目的本设计包括确定控制任务、系统总体设计、硬件系统设计、软件程序的设计等,使学生进一步学习理解计算机控制系统的构成原理、接口电路与应用程序,巩固与综合专业基础知识和相关专业课程知识,提高学生运用理论知识解决实际问题的实践技能。
2. 设计内容设计一由微机控制的A/D数据采集和控制系统,该卡具有对八个通道上0-5V的模拟电压进行采集的能力,且可以用键盘选择装换通道,选择ADC0809 作为A/D转换芯片。
并在显示器上动态显示采集的数据。
3. 设计要求(1)根据题目要求的指标,通过查阅有关资料,确定系统设计方案,并设计其硬件电路图。
(2)画出电路原理图,分析主要模块的功能及他们之间的数据传输和控制关系。
(3)用protel软件绘制电路原理图。
(4)软件设计,给出流程图及源代码并加注释。
4. 系统总体设计步骤第一步:信号调理电路第二步:8路模拟信号的产生与A/D转换器被测电压要求为0~5V的直流电压,可通过电位器调节产生。
考虑本设计的实际需要,我选择八位逐次比较式A/D转换器(ADC0809)。
第三步:发送端的数据采集与传输控制器第四步:人机通道的借口电路第五步:数据传输借口电路用单片机作为控制系统的核心,处理来之ADC0809的数据。
经处理后通过串口传送,由于系统功能简单,键盘仅由两个开关和一个外部中断组成,完成采样通道的选择,单片机通过接口芯片与LED数码显示器相连,驱动显示器相应同采集到的数据。
串行通信有同步和异步两种工作方式,同步方式传送速度快,但硬件复杂; 异步通信对硬件要求较低,实现起来比较简单灵活,适用于数据的随机发送和 接受。
采用MAX485芯片的转换接口。
经过分析,本系统数据采集部分核心采用 ADC0809,单片机系统采用8051 构成的最小系统,用LED 动态显示采集到的数据,数据传送则选用 RS-485标 准,实现单片机与PC 机的通信。
数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D , 单片机,电平转换接口,接收端(单片机、 PC 或其它设备)组成。
51单片机与ADC0809应用做AD转换(电路图附程序)
#define uchar unsigned char
sbit ST=P1^0;
sbit EOC=P1^1;
sbit OE=P1^2;
sbit CLK=P1^3;
sbit ADDCS=P1^4;
uchar AD_DATA[2];//保存IN0和IN1经AD转换后的数据
void AD()
{
ST=0;
ADDCS=0; //选择通道IN0
delay(10);
ST=1; //启动AD转换
delay(10);
ST=0;
while(0==EOC);
OE=1;
AD_DATA[0]=P2;
OE=0;
ST=0;
ADDCS=1; //选择通道IN1
delay(10);
ST=1; //启动AD转换
d0d751单片机的p2口p20p27adin1adin2为通道in0in1的电压模拟量输入05v应用程序如下
ADC0809与51单片机应用程序
电路原理图如下:
说明:D0~D7接51单片机的P2口(P2.0~P2.7)
ADIN1和ADIN2为通道IN0和IN1的电压模拟量输入(0~5V)
应用程序如下:
delay(10);
ST=0;
whilபைடு நூலகம்(0==EOC);
OE=1;
AD_DATA[1]=P2;
OE=0;
}
/*****************主函数**************/
void main()
{
init();
while(1)
{
AD();
}
}
AD转换与单片机的接口电路(ADC0809)
;设置第0工作区 设置第 工作区 ;采样数据存放首址 ;IN0通道地址 通道地址 ;模拟量通道数 启动A/D转换 ;启动 转换 外部中断0为边沿触发方式 ;外部中断 为边沿触发方式 允许外部中断0中断 ;允许外部中断 中断 开放CPU中断 ;开放 中断
Copyright 2006
ADC 0809
22 21 20 19 18 17 16 15
Copyright 2006
ADC0809的通道选择: 的通道选择: 的通道选择
被选通的通道 IN0 IN1 IN2 IN3 ADDC 0 0 0 0 ADDB 0 0 1 1 ADDA 0 1 0 ቤተ መጻሕፍቲ ባይዱ 被选通的通道 IN4 IN5 IN6 IN7 ADDC 1 1 1 1 ADDB 0 0 1 1 ADDA 0 1 0 1
A/D转换器与单片机的接口技术 转换器与单片机的接口技术
从物理信号到电信号的转换
A/D转换器的作用是将模拟的电信号转换成数字信号。在将 物理量转换成数字量之前,必须先将物理量转换成电模拟 量,这种转换是靠传感器完成的。传感器的种类繁多,如 温度传感器,压力传感器、光传感器、气敏传感器等。 温度传感器:典型的温度传感器有热电偶和热敏电阻。热 电偶是利用热点效应来工作的,室温下的输出电压为毫伏 级的。热敏电阻是一种半导体新型感温元件,具有负的电 阻温度系数,当温度升高时,其电阻减小。 湿度传感器:是利用湿度变化引起其电阻值或电容量变 化原理制成的,即将湿度变化转换成电量变化。
Copyright 2006
ADC0809与51单片机接口 与 单片机接口
ADC0809与单片机接口 与单片机接口
通道地址: 78H~7FH
Copyright 2006
ADC0809实验
实验3 ADC0809并行模数转换实验【实验目的】熟悉A/D转换的工作原理,学习使用并行模数转换芯片ADC0809进行电压信号的采集和数据处理。
【实验设备及器件】IBM PC机一台DP - 51PROC 单片机综合仿真实验仪一台数字万用表一台【实验内容】通过片外总线方式访问并行模拟数字转换器芯片ADC0809,掌握模拟电压的通用采集方法。
【实验要求】理解掌握ADC009的A/D转换原理和并行A/D转换器接口的编程方法,学会使用ADC0809并行模数转换器实现电压信号采集的方案设计。
【实验步骤】1.使用2×10的排线连接D7区的J28接到A7区的J84;2.将D2区1K电位器和10K电位器的左端金属孔通过导线连接到该区的GND金属孔,而右端金属孔通过导线连接到该区的VCC金属孔;3.将D2区1K电位器的中间金属孔连接到A7区的P2_IO2金属孔,而D2区10K电位器的中间金属孔连接到A7区的P2_IO1金属孔;4.将A7区的P2_IO3~P2_IO5分别连接到A2区的A2~A0;5.将A7区的P2_CS连接到A2区的A15;6.运行编写好的软件程序,每次跑到断点就会停止,此时观察转换的结果和用数字万用表测量的结果相比较是否正确(所需观察的存储单元或者变量在程序中依照注释执行);7.改变1K电位器和/或10K电位器的旋钮位置,用数字万用表测量中间金属孔的电压,再次运行程序至断点处,观察转换的结果是否正确。
【实验预习要求】认真预习本节实验内容,按照实验的要求提前做好实验准备工作,认真阅读ADC0809的数据手册。
图3.18155引脚接线图【实验参考程序】汇编语言程序清单;使用该程序前请先按照实验指导手册连接好连线,;运行程序至断点,观察30H单元和31H单元转换的十六进制;数据换算成实际电压值是否与万用表的测量结果相等?;扭动电位器,改变IN0或/和IN1模拟输入电压,再次运行程序至;断点,观察30H或/和31H单元的数值是否随之改变,改变的是否正确?ORG 8000HLJMP MAINORG 8100HMAIN: MOV SP,#70HMOV R1,#30H ;置数据区首地址,用于存放A/D转换结果MOV DPTR,#7FF8H ;P2.7=0,且指向通道0MOV R7,#02H ;置通道数LOOP: MOVX @DPTR,A ;启动A/D转换MOV R6,#20H ;软件延时,等待转换结束DELAY: NOPNOPNOPDJNZ R6,DELAYMOVX A,@DPTR ;读取转换结果MOV @R1,A ;转存INC DPTR ;指向下一个通道INC R1 ;修改数据区指针DJNZ R7,LOOP ;IN0、IN1两个通道全采样完了吗?LJMP MAINENDC51程序清单//使用该程序前请先按照实验指导手册连接好连线,//运行程序至断点,观察result0和result1的转换结果//浮点数值是否与数字万用表的测量结果相等?//扭动电位器,改变IN0或/和IN1模拟输入电压,再次运行程序至断点,//观察result0或/和result1的转换结果浮点数值是否随之改变,改变的是否正确?#include <reg52.h>#include <intrins.h>#include <absacc.h>#define PIN0 XBYTE[0x7ff8]#define PIN1 XBYTE[0x7ff9]typedef unsigned char byte;typedef unsigned int word;void main(void){float result0,result1; //两个通道A/D转换结果的存储变量float result0_reg,result1_reg; //浮点数据输出存储byte i,j;while(1){for(i=0;i<2;i++) //对IN0、IN1两个通道进行采样{if(!i)PIN0=0xff; //启动通道0的A/D转换elsePIN1=0xff; //启动通道1的A/D转换for(j=0;j<0x50;j++); //延时,等待转换的完成if(!i)result0_reg=PIN0; //读取通道0的转换结果elseresult1_reg=PIN1; //读取通道1的转换结果}result0=result0_reg*5/256;result1=result1_reg*5/256;}}【实验思考题】1.本实验采用了延时等待的方式等待ADC0809转换结束,请用户改用中断方式做一次这个实验,并说出这个实验采用中断方式与延时等待方式相比有哪些优点;2.请将D5区上的ZLG7290芯片和数码管与本实验相结合,设计出一个数字电压表,并与商品化的数字电压表测量值比较。
51汇编之ADC0809数字电压表
51汇编之ADC0809数字电压表2009年10月13日星期二 23:29这两天,一个网友用ADC0832采样并PC机处理,一个网友用ADC0809采样显示,都遇到点问题,我给过参考例程也解释过,但是他们在调试上还有问题。
这里把网友沙漠狂风的ADC0809采样显示部分调试好了。
关于ADC0809的资料,这里就不给出了,网上很多。
由于仿真软件里的ADC0809元件有问题,这里用ADC0808代替,它和ADC0809区别很小。
;########################################################;********************************************************;程序名称: ADC0808电压表;主控芯片: 89c51 ,12MHZ,(ADC0808,共阴极数码管);程序编写者:buyixin (不亦心);编写时间: 2009年10月13日 22:24;不亦心的博客:/不亦心/;********************************************************;########################################################OE BIT P3.0 ;ADC0808的OE端EOC BIT P3.1 ;ADC0808的EOC端ST BIT P3.2 ;ADC0808的START和ALE端ADD0 BIT P3.4 ;ADC0808的模拟输入选择端ADD1 BIT P3.5ADD2 BIT P3.6LED_0 DATA 30H ;显示缓冲区LED_1 DATA 31HLED_2 DATA 32HLED_3 DATA 33HADC DATA 34H ;存放转换后的数据;//////主程序开始////////////////////////////////////////ORG 0000HAJMP STARTORG 0030H;------初始化-----------------------------------START: MOV SP,#60H ;设置堆栈MOV LED_0,#00H ;清空显示缓冲区MOV LED_1,#00HMOV LED_2,#00HMOV LED_3,#00HMOV DPTR,#TABLE ;送字型码表首地址SETB ADD0SETB ADD1CLR ADD2 ;选择ADC0808的通道3;------ADC0808转换------------------------------WAIT: CLR STSETB STCLR ST ;启动转换JNB EOC,$ ;等待转换结束SETB OE ;允许输出MOV ADC,P1 ;暂存转换结果CLR OE ;关闭输出;------数据处理,已备显示------------------------MOV A,ADC ;将AD转换结果转换成BCD 码MOV B,#0C3H ;乘以19.5MVMUL ABMOV R7,AMOV R6,BHB2: CLR A ;BCD码初始化CLR CMOV R3,AMOV R4,AMOV R5,AMOV R2,#10H ;转换双字节十六进制整数HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5 ;BCD码带进位自身相加,相当于乘2ADDC A,R5DA A ;十进制调整MOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,AMOV A,R3ADDC A,R3MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整DJNZ R2,HB3MOV A,R5SWAP AANL A,#0FHMOV LED_0,AMOV A,R4ANL A,#0FHMOV LED_1,AMOV A,R4SWAP AANL A,#0FHMOV LED_2,AMOV A,R3ANL A,#0FHMOV LED_3,ALCALL DISP ;调用显示子程序AJMP WAIT;//////数码管显示子程序///////////////////////////////////////////////DISP: MOV A,LED_0 ;数码显示子程序MOVC A,@A+DPTRCLR P2.3MOV P0,ALCALL DELAYSETB P2.3MOV A,LED_1MOVC A,@A+DPTRCLR P2.2MOV P0,ALCALL DELAYSETB P2.2MOV A,LED_2MOVC A,@A+DPTRCLR P2.1MOV P0,ALCALL DELAYSETB P2.1MOV A,LED_3MOVC A,@A+DPTRCLR P2.0MOV P0,ASETB P0.7LCALL DELAYSETB P2.0RET;//////延时子程序////////////////////////////////////DELAY: MOV R6,#0AH ;延时5毫秒D1: MOV R7,#0FAHDJNZ R7,$DJNZ R6,D1RET;//////数码管字形码表/////////////////////////////////TABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH;/////程序结束////////////////////////////////////////END硬件部分:仿真的时候,ADC0808时钟端,我直接加的500KHZ的方波,实际中一般有单片机的ALE 端取时钟信号。
ADC0809芯片的原理及应用
目录引言 (1)1 ADC0809的逻辑结构 (1)1.1 ADC0809引脚结构 (1)1.2 ADC0809的主要性能指标 (3)1.3 ADC0809的内部逻辑结构 (3)1.4 ADC0809的时序 (4)2 ADC0809与MCS-51单片机的接口电路 (5)2.1 0809与51单片机的第一种连接方式 (7)2.2 0809与51单片机的第二种连接方式 (9)2.3 0809与51单片机的第三种连接方式 (10)3 ADC0809与单片机制作的数字电压表 (11)总结 (16)参考文献 (16)英文翻译 (17)ADC0809芯片的原理及应用摘要:ADC0809是8位逐次逼近型A/D转换器,是目前应用比较广泛、典型的A/D转换芯片之一。
本文主要介绍ADC0809芯片的内部逻辑结构、引脚分布,并详细阐述了其工作原理。
在此基础上设计了两种相关应用电路——ADC0809与单片机的接口电路及数字电压表,并对这两种应用电路的可行性进行了讨论。
通过对ADC0809应用电路的探究,能更全面的提高对应用系统的分析、设计能力,对实践具有重要的指导意义。
关键词:ADC0809;模数转换;单片机引言A/D转换器是模拟信号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机等数字系统进行处理、存储、控制和显示。
在工业控制和数据采集及许多其它领域中,A/D转换器是不可缺少的重要组成部分,它的应用已经相当普遍。
目前用软件的方法虽然可以实现高精度的A/D转换,但占用CPU时间长,限制了应用。
8位A/D转换器ADC0809作为典型的A/D转换芯片,具有转换速度快、价格低廉及与微型计算机接口简便等一系列优点,目前在8位单片机系统中得到了广泛的应用。
1 ADC0809的逻辑结构ADC0809是带有8位A/D转换器、8路模拟开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,是目前应用比较广泛的A/D转换芯片之一,主要适用于对精度和采样速率要求不高的场合或一般的工业控制领域,可以和单片机直接相连。
ADC0809引脚图与程序c语言
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
出口参数:
****************************************************************************************/
void timer0(void)interrupt 1
{
count++;
if(count==0x0A)
{
count=0x00;
D7~D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高
OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc—— +5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V).
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。
利用51单片机+8位数码管+AD0809设计数字直流电压表系统
目录1.题目设计要求 (2)2. 系统的组成及工作原理 (2)2.1电路原理图 (2)2.2 A/D转换原理 (3)2.3数据处理原理 (3)2.4器件列表 (3)3. 器件的功能和作用 (4)3.1AT89C51功能介绍 (4)3.1.1AT89C51的简单概述 (4)3.1.2AT89C51的引脚介绍 (4)3.2AD0809功能介绍 (6)3.3 LED数码管功能介绍 (6)4.系统硬件设计 (7)5. 系统软件设计 (8)5.1 程序流程图 (8)5.2程序代码 (10)6.系统仿真调试 (13)6.1仿真原理图设计 (13)6.2 与程序代码链接 (13)6.2.1运用keil uVision4生成.hex文件并链接 (13)6.3 仿真运行结果 (15)7.心得体会 (15)8.参考文献 (16)1.题目设计要求要求:利用51单片机+8位数码管+AD0809设计数字直流电压表系统,精度为0.01V。
完成以下设计环节:1)使用Altium Desinger或Protel99SE开发工具,设计电路原理图与PCB制板图。
2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。
3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。
2.系统的组成及工作原理2.1电路原理图图2.1 电路原理图2.2 A/D转换原理模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。
但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。
A/D转换器的工作原理:采用逐次逼近法,逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。
逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为Vo,与送入比较器的待转换的模拟量Vi进行比较,若Vo<Vi,该位1被保留,否则被清除。
51单片机使用ADC0809采样
void delayms( uint time )
{
unsigned int j=0;
for(;time>0;time--)
{
for(j=0;j<125;j++);
}
}
/************************************************************ //功能:实现将 AD 的值在数码管和 LED 灯上显示出来;
{ *ad=520;
//开始转换;
delayms(1);
xdp=0x8888; P1=*xdp; temp=*xdp;
//读外部 ADC; //使用 P1 口显示;//将转换Fra bibliotek的数给 temp;
a=temp/100; b=temp%100; c=b/10; d=b%10;
//百位;
//十位; //个位;
//入口参数:无 //出口参数:无
************************************************************/
void main ()
{
unsigned char temp,a,b,c,d;
ad=0x8000;
//ad 指向 IN0 通道;
while(1)
temp=ADdata[a]; //当前显示的段码;
xp=0x9004;
//数码管的地址;
*xp=temp;
//段码写入数码管:
temp=ADen[0]; //当前显示的位码; xp=0x9002; //数码管地址; *xp=temp; //位码写入数码管;
delayms(1);
temp=ADdata[c]; //当前显示的段码;
51单片机加CPLD驱动ADC0809的多路数据采集系统
ADC0809 启动受 START、ALE 和 ADDR 信号控制,
一、ADC0809
ADC0809 是 8 位 A/D 转换器、8 路多路开关以及 微处理机兼容的控制逻辑的 CMOS 组件。它是逐次逼 近式 A/D 转换器,容易和单片机总线模式接口。图 1 是 ADC0809 芯片的实物图和引脚图。
51MCU 有与之对应的控制时序,当 MCU 执行指 令 MOVX @DPTR,A 时,将产生如图 3 所示的时序波形 图,P0 口分时复用,分别送出低 8 位地址 addrL 和数 据 data,P2 口送出高八位地址 addrH,并且在 t0 时刻, P3.6(WR)送出低脉冲信号。
通过比较图 2 图、3 波形图,如果将 Wr 信号取反, 就可以得到满足 ADC0809 启动所需的 ALE(START) 信号,从 P0 送出的 data 为其提供 ADDR 通道选择地址。
30 2011. 03
IN3 1 IN4 2 IN5 3 IN6 4 IN7 5 START 6 EOC 7 2-5 8 OE 9 CLOCK 10 VCC 11 VREF(+) 12 GND 13 2-7 14
28 IN2 27 IN1 26 IN0 25 ADD A 24 ADD B 23 ADD C 22 ALE 21 2-1MSB 20 2-2 19 2-3 18 2-4 17 2-8LSB 16 VREF(-) 15 2-6
IN7 5
32 2011. 03
图7 0809与Mini51板接口电路图
单片机制作
MCU
三、程序设计
多路数据采集系统主程序流程图如图 11 所示,外
部中断流程图如图 12 所示。
在 keil 中创建工程,主 C51 程序解读如下。 #include "STC89C51RC.H"//STC 单片机头文件,相当与一 般 51 的 reg51.h #include <absacc.h> #include <stdio.h> #include "STCEEPROM.H"//STC 单片机 EEPROM 读写头文件 // 根据单片机地址译码电路定义单片机扩展地址 #define SEG1 XBYTE[0xffec]// 数码管地址 #define SEG2 XBYTE[0xffed] #define SEG3 XBYTE[0xffee] #define SEG4 XBYTE[0xffef] #define ADC XBYTE[0xffe0]//ADC 地址 #define CH_BYTE EEPROM52// 预定义通道地址在 EEPROM 中存放地址,与单片机型号有关,详细在 STCEEPROM.H 中定义 sbit KEY_UP = P3^5;// 按键端口定义 sbit KEY_DN = P3^4; char CH;// 通道变量,0 ~ 7 unsigned char ledmap[]= // 共阳 LED 数码管译码表 { 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90, //0;1;2;3;4;5;6;7;8;9; 0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ADC0809数模转换与显示
/* 名称:ADC0809数模转换与显示
说明:ADC0809采样通道3输入的模拟量,转换后的结果显示在数码管上。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//各数字的数码管段码(共阴)
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit CLK=P1^3; //时钟信号
sbit ST=P1^2; //启动信号
sbit EOC=P1^1; //转换结束信号
sbit OE=P1^0; //输出使能
//延时
void DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//显示转换结果
void Display_Result(uchar d)
{
P2=0xf7; //第4个数码管显示个位数
P0=DSY_CODE[d%10];
DelayMS(5);
P2=0xfb; //第3个数码管显示十位数
P0=DSY_CODE[d%100/10];
DelayMS(5);
P2=0xfd; //第2个数码管显示百位数
P0=DSY_CODE[d/100];
DelayMS(5);
}
//主程序
void main()
{
TMOD=0x02; //T1工作模式2
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
P1=0x3f; //选择ADC0809的通道3(0111)(P1.4~P1.6)
while(1)
{
ST=0;ST=1;ST=0; //启动A/D转换while(EOC==0); //等待转换完成
OE=1;
Display_Result(P3);
OE=0;
}
}
//T0定时器中断给ADC0808提供时钟信号void Timer0_INT() interrupt 1
{
CLK=~CLK;
}
硬件电路连接图(proteus仿真):。