单片机接口技术_第1页
单片机接口技术_第2页
单片机接口技术_第3页
单片机接口技术_第4页
单片机接口技术_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCS-51单片机接口技术前向通道接口技术后向通道接口技术人机通道接口技术 单片机与外围单元的关系: 前向通道;后向通道;人机通道和相互通道。受控对象单片机系统操作员其它系统前向通道接口技术 前向通道的作用是采集被控对象的状态信息,所采集的数据类型复杂,主要有:非电量数据强电信号 强度电量数据弱电信号模拟信号形式数字信号频率信号 前向通道的主要工作: 信号变换: 非电信号到电信号,使用变换器(传感器)。 强电信号到弱电信号,使用变送器或衰减器。 模拟信号到数字信号,使用A/D变换器。 信号调理: 滤波,非线性处理。 抗干扰: 信号隔离处理。

A/D变换器的使用:保持器1保持器2保持器n多路开关A/D8051P0通道选择启动转换完成A/D转换器接口A/D转换器概述在设计A/D转换器与单片机接口之前,往往要根据A/D转换器的技术指标选择A/D转换器。为此,先介绍一下A/D转换器的主要技术指标。量化间隔和量化误差是A/D转换器的主要技术指标之一。量化间隔可用下式表示。其中n为A/D转换器的位数。量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。

A/D转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D转换器;按其分辨率可分为8~16位的A/D转换器芯片。目前最常用的是逐次逼近式和双重积分式。逐次逼近式转换器的常用产品有ADC0801~ADC0805型8位MOS型A/D转换器、ADC0808/0809型8位MOS型A/D转换器、ADC0816/0817型8位MOS型A/D转换器、AD574型快速12位A/D转换器。双重积分式转换器的常用产品有ICL7106/ICL7107/ICL7126、MC14433/5G14433、ICL7135等。

A/D转换器与单片机接口具有硬、软件相依性。一般来说,A/D转换器与单片机的接口主要考虑的是数字量输出线的连接、ADC启动方式、转换结束信号处理方法以及时钟的连接等。

一个ADC开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。不同型号的ADC,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种。对于脉冲启动型ADC,只要给其启动控制端上加一个符合要求的脉冲信号即可,如ADC0809、ADC574等。通常用WR和地址译码器的输出经一定的逻辑电路进行控制。对于电平启动型ADC,当把符合要求的电平加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,一般采用D触发器、锁存器或并行I/O接口等来实现。AD570、AD571等都属于电平启动型ADC。

当ADC转换结束时,ADC输出一个转换结束标志信号,通知单片机读取转换结果。单片机检查判断A/D转换结束的方法一般有中断和查询两种。对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的I/O接口的相应引脚,作为中断请求信号;对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位I/O口线上,作为查询状态信号。

A/D转换器的另一个重要连接信号是时钟,其频率是决定芯片转换速度的基准。整个A/D转换过程都是在时钟的作用下完成的。A/D转换时钟的提供方法有两种:一种是由芯片内部提供(如AD574),一般不需外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到A/D转换器的相应时钟端。A/D转换器ADC0809与单片机的接口1.ADC0809芯片简介图1ADC0809芯片的内部逻辑结构与引脚图表1ADC0809通道地址选择表

ADDCADDBADDA选通的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7图2ADC0809转换工作时序ADC0809与单片机接口图3ADC0809与8051的接口连接图A/D转换应用程序举例设图3接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H~37H单元中。采样完一遍后停止采集。其数据采集的初始化程序和中断服务程序如下:初始化程序:

MOVR0,#30H ;设立数据存储区指针

MOVR2,#08H ;设置8路采样计数值

SETBIT0 ;设置外部中断0为边沿触发方式

SETBEA ;CPU开放中断

SETBEX0 ;允许外部中断0中断

MOVDPTR,#FEF8H;送入口地址并指向IN0LOOP:MOVX@DPTR,A ;启动A/D转换,A的值无意义

HERE:SJMPHERE ;等待中断中断服务程序:

MOVXA,@DPTR ;读取转换后的数字量

MOV@R0,A ;存入片内RAM单元

INCDPTR ;指向下一模拟通道

INCR0 ;指向下一个数据存储单元

DJNZR2,INT0 ;8路未转换完,则继续

CLREA ;已转换完,则关中断

CLREX0 ;禁止外部中断0中断

RETI ;中断返回INT0:MOVX@DPTR,A ;再次启动A/D转换

RETI ;中断返回后向通道接口技术后向通道的特点: 小信号输出、大功率控制 与信号采集通道交叉,是干扰的来源 接近受控对象,环境干扰严重输出信号的形式:开关量、数字量、频率量 需要的变换: 功率放大、隔离、D/A变换、F/V变换D/A变换器的使用 数字输入特性:并行、串行二进制 输出特性:电流输出,需进行电流-电压转换,当有多路D/A输出时,有的D/A器件具有锁存功能,在外部信号控制下才开始D/A转换 参考源:有的D/A器件内部具有高精度低漂移参考电压源 输出电压极性:单极性、双极性DAC0832的使用8位输入锁存器8位DAC锁存器8位D/A转换器VREFIOUT2IOUT1RFBAGNDVccDGNDDI0~DI7ILECSWR1WR2XFER

DAC0832结构图DAC0832引脚图CSWR1AGNDDI3DI2DI1DI0VREFRFBDGNDVccILEWR2XFERDI4DI5DI6DI7IOUT2IOUT11234567891020191817161514131211DAC0832管脚图DI0~DI7:8位数据输入线;

ILE:数据锁存允许信号,一般接Vcc;

/CS:片选信号;/WR1:输入锁存器写控制信号;/XFER:DAC锁存器选择信号;/WR2:DAC锁存器写控制信号.一旦数据进入DAC锁存器,D/A转换即开始;Vref:基准参考电源输入。一般接Vcc;Rfb:电流/电压转换放大器反馈信号输入端;Iout1:电流输出端1,其值随DAC锁存器内容线性变化;Iout2:电流输出端2,Iout1+Iout2=常数;Vcc:电源输入端;AGND:模拟地;DGND:数字地。

单缓冲方式下单片机与DAC0832的接口电路case16:……; /*处理4号键*/break;case32:……; /*处理5号键*/break;case64:……; /*处理6号键*/break;case128:……; /*处理7号键*/break;default:break; /*无效按键,如多个键同时按下*/ } key_flag=0; }}}voidint0_srv()interrupt0{ ucharreread_key; IE=0x80; /*屏蔽中断*/ key_flag=0; /*设置中断标志*/P1=0xff; /*P1口锁存器置1*/key_value=P1; /*读入P1口的状态*/delay_10ms(void); /*延时10ms,去抖动*/reread_key=P1&0x07; /*再次读取P1口的状态*/if(key_value==reread_key) { key_flag=1; /*设置中断标志为1*/}IE=0x81; /*中断允许*/}2.矩阵式键盘矩阵式(也称行列式)键盘用于按键数目较多场合,由行线和列线组成,一组为行线,另一组为列线,按键位于行、列的交叉点上。如下图所示,一个44的行、列结构可以构成一个16个按键的键盘。在按键数目较多的场合,与独立式键盘相比,要节省较多的I/O口线。(1)查询方式的矩阵式键盘程序【例4】对下图所示的矩阵式键盘,编写查询式的键盘处理程序。矩阵式键盘接口首先判键盘有无键按下,即把所有行线P1.0~P1.3均置为低电平,然后检查各列线的状态,若列线不全为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。在确认有键按下后,即可进入确定具体闭合键的过程。判断闭合键所在的位置,其方法是依次将行线置为低电平,再逐行检查各列线的电平状态。若某列为低,则该列线与行线交叉处的按键就是闭合的按键。判断有无键按下,以及按下键的位置的参考程序如下。

#include<reg51.h>#defineucharunsignedchar #defineuintunsignedint voidmain(void){ ucharkey; while(1){key=keyscan();/*调用键盘扫描函数,返回的键值送变量key*/ delay(); /*延时*/}voiddelay(void); /*延时函数*/{ uchari; for(i=0;i<200;i++){}}

ucharkeyscan(void) /*键盘扫描函数*/{ ucharcode_h; /*行扫描值*/ ucharcode_l; /*列扫描值*/ P1=0xf0; /*P1.0~P1.3输出都为0,准备读列状态*/ if((P1&f0)!=0xf0) /*如果P1.4~P1.7不全为1,可能有键按下*/ { delay(); /*延时去抖动*/if((P1&f0)!=0xf0)/*重读P1.4~P1.7,若还是不全为1,定有键按下*/code_h=0xfe; /*P1.0置为0,开始行扫描*/while((code_h&0x10)!=0xf0);/*判断是否为最后一行,若不是,继续扫描*/{ P1=code_h; /*P1口输出行扫描值*/ if((P1&f0)!=0xf0); /*如果P1.4~P1.7不全为1,该行有键按下*/{ code_l=(P1&0xf0|0x0f);/*保留P1高4位,低4位变为1,作为列值*/

return((~code_h)+(~code_l));/*键扫描值=行扫描值+列扫描值,返回主程序*/ }else /*若该行无键按下,往下执行*/

code_h=(code_h<<1)|0x01;/*行扫描值左移,扫描下一行*/

} } }

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论