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

下载本文档

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

文档简介

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

2、1P0通道选择启动转换完成A/D转换器接转换器接 口口A/D转换器概述转换器概述 在设计A/D转换器与单片机接口之前,往往要根据A/D转换器的技术指标选择A/D转换器。为此,先介绍一下A/D转换器的主要技术指标。 量化间隔和量化误差是A/D转换器的主要技术指标之一。量化间隔可用下式表示。其中n为A/D转换器的位数。nn212满量程输入电压满量程输入电压 量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。22量化间隔绝对误差%100211n相对误差 A/D转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D转换器;按其分辨率可分为816位的A/D转换器芯

3、片。目前最常用的是逐次逼近式和双重积分式。 逐次逼近式转换器的常用产品有ADC0801ADC0805型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开始转换时,必须加一

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

5、70、AD571等都属于电平启动型ADC。 当当ADC转换结束时,转换结束时,ADC输出一个转换结束标志信号,通知输出一个转换结束标志信号,通知单片机读取转换结果。单片机读取转换结果。单片机检查判断A/D转换结束的方法一般有中断和查询两种。对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的I/O接口的相应引脚,作为中断请求信号;对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位I/O口线上,作为查询状态信号。 A/D转换器的另一个重要连接信号是时钟,其频率是决定芯转换器的另一个重要连接信号是时钟,其频率是决定芯片转换速度的基准。片转换速度的基准。整个A/D转换

6、过程都是在时钟的作用下完成的。A/D转换时钟的提供方法有两种:一种是由芯片内部提供(如AD574),一般不需外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到A/D转换器的相应时钟端。A/D转换器转换器ADC0809与单片机的接与单片机的接 口口1ADC0809芯片简芯片简 介介图 1 ADC0809芯片的内部逻辑结构与引脚图 表 1 ADC0809通道地址选择表 ADDC ADDB ADDA选通的通道0 0 0IN00 0 1IN10 1 0IN20 1 1IN31 0 0IN41 0 1IN51 1 0IN61 1 1IN7图 2 ADC0809

7、转换工作时序 ADC0809与单片机接口与单片机接口 图 3 ADC0809与8051的接口连接图 A/D转换应用程序举例转换应用程序举例 设图3接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H37H单元中。采样完一遍后停止采集。 其数据采集的初始化程序和中断服务程序如下:初始化程序: MOV R0,#30H ;设立数据存储区指针 MOV R2,#08H ;设置8路采样计数值 SETB IT0 ;设置外部中断0为边沿触发方式 SETB EA ;CPU开放中断 SETB EX0 ;允许外部中断0中断 MOV DPTR,#FEF8

8、H ;送入口地址并指向IN0 LOOP: MOVX DPTR,A ;启动A/D转换,A的值无意义 HERE: SJMP HERE ;等待中断中断服务程序: MOVX A,DPTR ;读取转换后的数字量 MOV R0,A ;存入片内RAM单元 INC DPTR ;指向下一模拟通道 INC R0 ;指向下一个数据存储单元 DJNZ R2,INT0 ;8路未转换完,则继续 CLR EA ;已转换完,则关中断 CLR EX0 ;禁止外部中断0中断 RETI ;中断返回INT0: MOVX DPTR,A ;再次启动A/D转换 RETI ;中断返回后向通道接口技术后向通道的特点: 小信号输出、大功率控制

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

10、AC0832引脚图CSWR1AGNDDI3DI2DI1DI0VREFRFBDGNDVccILEWR2XFERDI4DI5DI6DI7IOUT2IOUT11234567891020191817161514131211DAC0832管脚图DI0DI7:8位数据输入线; ILE:数据锁存允许信号,一般接Vcc; /CS:片选信号;/WR1:输入锁存器写控制信号;/XFER:DAC锁存器选择信号;/WR2:DAC锁存器写控制信号.一旦数据进入DAC锁存器,D/A转换即开始;Vref:基准参考电源输入。一般接Vcc;Rfb:电流/电压转换放大器反馈信号输入端;Iout1:电流输出端1,其值随DAC锁存器

11、内容线性变化;Iout2:电流输出端2,Iout1+Iout2=常数;Vcc:电源输入端;AGND:模拟地;DGND:数字地。单缓冲方式下单片机与DAC0832的接口电路case 16: ; case 16: ; / /* *处理处理4 4号键号键* */ /break;break;case 32: ; case 32: ; / /* *处理处理5 5号键号键* */ /break;break;case 64: ; case 64: ; / /* *处理处理6 6号键号键* */ /break;break;case 128: ; case 128: ; / /* *处理处理7 7号键号键* *

12、/ /break;break;default:default:break; break; / /* *无效按键,如多个键同时按下无效按键,如多个键同时按下* */ / key_flag=0;key_flag=0; void int0_srv( ) void int0_srv( ) interrupt 0interrupt 0 uchar reread_key;uchar reread_key;IE=0 x80;IE=0 x80;/ /* *屏蔽中断屏蔽中断* */ /key_flag=0; key_flag=0; / /* *设置中断标志设置中断标志* */ /P1=0 xff; P1=0 x

13、ff; / /* * P1 P1口锁存器置口锁存器置1 1* */ /key_value=P1; key_value=P1; / /* *读入读入P1P1口的状态口的状态* */ /delay_10ms(void); delay_10ms(void); / /* *延时延时10ms10ms,去抖动,去抖动* */ /reread_key=P1&0 x07; reread_key=P1&0 x07; / /* *再次读取再次读取P1P1口的状态口的状态* */ /if(key_value=reread_key)if(key_value=reread_key) key_flag=1

14、; key_flag=1; / /* *设置中断标志为设置中断标志为1 1* */ / IE=0 x81; IE=0 x81; / /* *中断允许中断允许* */ / 2. 矩阵式键盘矩阵式键盘矩阵式(也称行列式)键盘用于按键数目较多场合,由行线矩阵式(也称行列式)键盘用于按键数目较多场合,由行线和列线组成,一组为行线,另一组为列线,按键位于行、列的和列线组成,一组为行线,另一组为列线,按键位于行、列的交叉点上。交叉点上。如如下下图图所示,一个所示,一个4 4的行、列结构可以构成一个的行、列结构可以构成一个16个按键的键盘。在按键数目较多的场合,与独立式键盘相比,个按键的键盘。在按键数目较多

15、的场合,与独立式键盘相比,要节省较多的要节省较多的I/O口线。口线。(1)查询方式的矩阵式键盘程序)查询方式的矩阵式键盘程序【例例4】对对下下图图所示的矩阵式键盘,编写查询式的键盘处理所示的矩阵式键盘,编写查询式的键盘处理程序。程序。 矩阵式键盘接口首先判键盘首先判键盘有无键按下有无键按下,即,即把所有行线把所有行线P1.0P1.3均置为均置为低电平,然后检查各列线的状态低电平,然后检查各列线的状态,若列线不全为高电平,则,若列线不全为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,说明键表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。盘中无键按下。在确认有键按下后,

16、即可进入确定具体闭合键的过程。判在确认有键按下后,即可进入确定具体闭合键的过程。判断闭合键所在的位置,其方法是断闭合键所在的位置,其方法是依次将行线置为低电平,再依次将行线置为低电平,再逐行检查各列线的电平状态逐行检查各列线的电平状态。若某列为低,则该列线与行线。若某列为低,则该列线与行线交叉处的按键就是闭合的按键。判断有无键按下,以及按下交叉处的按键就是闭合的按键。判断有无键按下,以及按下键的位置的参考程序如下。键的位置的参考程序如下。 #include#define uchar unsigned char#define uint unsigned intvoid main(void)uch

17、ar key;while(1)key= keyscan( ); /*调用键盘扫描函数,返回的键值送变量调用键盘扫描函数,返回的键值送变量key*/delay( );/*延时延时*/void delay(void); /*延时函数延时函数*/ uchar i;for(i=0;i200;i+) uchar keyscan(void)/*键盘扫描函数键盘扫描函数*/uchar code_h; /*行扫描值行扫描值*/uchar code_l; /*列扫描值列扫描值*/P1=0 xf0;/*P1.0P1.3输出都为输出都为0,准备读列状态,准备读列状态*/if(P1&f0)!=0 xf0)/*

18、如果如果P1.4P1.7不全为不全为1,可能有键按下,可能有键按下*/delay( );/*延时去抖动延时去抖动*/if(P1&f0)!=0 xf0) /*重读重读P1.4P1.7,若还是不全为,若还是不全为1,定有键按下,定有键按下*/code_h=0 xfe;/* P1.0置为置为0,开始行扫描,开始行扫描*/while(code_h&0 x10)!=0 xf0); /*判断是否为最后一行,若不是,继续扫判断是否为最后一行,若不是,继续扫描描*/P1= code_h;/*P1口输出行扫描值口输出行扫描值*/if(P1&f0)!=0 xf0);/*如果如果P1.4P1

19、.7不全为不全为1,该行有键按下,该行有键按下*/code_l=(P1&0 xf0|0 x0f); /*保留保留P1高高4位,低位,低4位变为位变为1,作为列值,作为列值*/return(code_h)+(code_l); /*键扫描值键扫描值=行扫描值行扫描值+列扫描值,列扫描值, 返回主程序返回主程序*/else/*若该行无键按下,往下执行若该行无键按下,往下执行*/code_h=(code_h1)|0 x01; /*行扫描值左移,扫描下一行行扫描值左移,扫描下一行*/ return(0) ; /*无键按下,返回无键按下,返回0*/键盘扫描方式的选取键盘扫描方式的选取单片机忙于其他

20、各项工作任务时,如何兼顾键盘的输入,这单片机忙于其他各项工作任务时,如何兼顾键盘的输入,这取决于键盘的工作方式。键盘工作方式选取原则是,既要保证取决于键盘的工作方式。键盘工作方式选取原则是,既要保证及时响应按键操作,又不要过多占用单片机的工作时间。通常,及时响应按键操作,又不要过多占用单片机的工作时间。通常,键盘工作方式有键盘工作方式有3种:查询扫描、定时扫描和中断扫描。种:查询扫描、定时扫描和中断扫描。1查询扫描查询扫描查询方式(也称编程扫描方式)是利用单片机空闲时,调用查询方式(也称编程扫描方式)是利用单片机空闲时,调用键盘扫描子程序,反复扫描键盘,来响应键盘的输入请求。键盘扫描子程序,反复扫描键盘,来响应键盘的输入请求。采用本扫描方式,如单片机查询频率过高,虽能及时响应键采用本扫描方式,如单片机查询频率过高,虽能及时响应键盘的输入,但也会影响其他任务的进行。如查询的频率过低,盘的输入,但也会影响其他任务的进行。如查询的频率过低,可能出现键盘输入漏判。所以要根据单片机系统的繁忙程度和可能出现

温馨提示

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

评论

0/150

提交评论