工学单片机接口技术专题讲座

上传人:痛*** 文档编号:228490076 上传时间:2023-08-21 格式:PPT 页数:71 大小:976.50KB
返回 下载 相关 举报
工学单片机接口技术专题讲座_第1页
第1页 / 共71页
工学单片机接口技术专题讲座_第2页
第2页 / 共71页
工学单片机接口技术专题讲座_第3页
第3页 / 共71页
点击查看更多>>
资源描述
单片机接口技术专题讲座单片机接口技术专题讲座外部总线的扩展外部总线的扩展外部存储器的扩展外部存储器的扩展I/O口的扩展口的扩展A/D和和D/A接口功能的扩展接口功能的扩展综合实例分析综合实例分析键盘和数码显示人机交互的键盘和数码显示人机交互的C语言编程语言编程单片机接口技术专题讲座1 1 外部总线的扩展外部总线的扩展 一、一、外部总线的扩展外部总线的扩展 图图 1 MCS-51外部三总线示意图外部三总线示意图 单片机接口技术专题讲座图图 2 地址锁存器的引脚和接口地址锁存器的引脚和接口 单片机接口技术专题讲座单片机接口技术专题讲座二、总线驱动二、总线驱动 在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。在对TTL 负载驱动时,只需考虑驱动电流的大小;在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动。单片机接口技术专题讲座 1 常用的总线驱动器常用的总线驱动器 系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如74LS244。74LS244还带有三态控制,能实现总线缓冲和隔离。.系统中的数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245 也是三态的,有一个方向控制端DIR,DIR=1时输出(AnBn),DIR=0时输入(AnBn)。单片机接口技术专题讲座图 3 总线驱动器芯片管脚(a)单向驱动器;(b)双向驱动器 单片机接口技术专题讲座2.总线驱动器的接口总线驱动器的接口 图 4 8051与总线驱动器的接口(a)P2 口的驱动;(b)P0 口的驱动 单片机接口技术专题讲座2 2 外部存储器的扩展外部存储器的扩展 图 5 MCS-51 单片机程序存储器的扩展原理 2.1 外部程序存储器的扩展外部程序存储器的扩展(1)外部程序存储器的扩展原理及时序)外部程序存储器的扩展原理及时序 单片机接口技术专题讲座(2)EPROM扩展电路扩展电路 图 6 2716的引脚图 单片机接口技术专题讲座2716 有五种工作方式,见表 1。表 1 2716工作方式选择 单片机接口技术专题讲座图图 7 2716与与8031的连接图的连接图 单片机接口技术专题讲座 由图 7.7可确定2716芯片的地址范围。方法是A10A0从全0开始,然后从最低位开始依次加 1,最后变为全1,相当于211=2 048个单元地址依次选通,称为字选。即 单片机接口技术专题讲座2.2 静态静态RAM扩展扩展 图图 8 6264 管脚图管脚图 单片机接口技术专题讲座表表 2 6264的工作方式的工作方式 单片机接口技术专题讲座图图 9 扩扩展展6264 静静态态RAM单片机接口技术专题讲座 6264的8 KB地址范围不唯一(因为A14A13可为任意值),6000H7FFFH是一种地址范围。当向该片6000H单元写一个数据DATA时,可用如下指令:MOV A,DATA MOV DPTA,6000H MOVX DPTR,A从FFFH单元读一个数据时,可用如下指令:MOV DPTR,7FFFH MOVX ,DPTR 单片机接口技术专题讲座2.3 多片存储器芯片的扩展多片存储器芯片的扩展(1)线选法寻址线选法寻址 图图 10 用线选法实现片选用线选法实现片选 单片机接口技术专题讲座各芯片的地址范围如下:单片机接口技术专题讲座 (2)译码法寻址译码法寻址 译码法寻址就是利用地址译码器对系统的片外高位地址进行译码,以其译码输出作为存储器芯片的片选信号,将地址划分为连续的地址空间块,避免了地址的间断。译码法仍用低位地址线对每片内的存储单元进行寻址,而高位地址线经过译码器译码后输出作为各芯片的片选信号。常用的地址译码器是 3/8 译码器 74LS138。译码法又分为完全译码和部分译码两种。单片机接口技术专题讲座 例例 要求用 2764 芯片扩展 8031 的片外程序存储器空间,分配的地址范围为 0000H3FFFH。本例采用完全译码方法。(1)确定片数。因0000H 3FFFH的存储空间为16 KB,则 所需芯片数=实际要求的存储容量/单个芯片的存储容量 =16 KB/8 KB =2(片)单片机接口技术专题讲座(2)分配地址范围。单片机接口技术专题讲座(3)存储器扩展连接如图 11 所示。图图 11 采用地址译码器扩展存储器的连接图采用地址译码器扩展存储器的连接图 单片机接口技术专题讲座3 I/O3 I/O口的扩展口的扩展 51系列单片机有系列单片机有32个个I/O口,且大多数情况下不能完口,且大多数情况下不能完全提供给用户,因此在需要大量全提供给用户,因此在需要大量I/O口时,我们必须对其口时,我们必须对其进行扩展。进行扩展。从功能上看,单片机的从功能上看,单片机的I/O口有两种类型:口有两种类型:基本基本I/O和和可编程可编程I/O。基本。基本I/O结构简单但功能单一,仅适用于简单结构简单但功能单一,仅适用于简单的数据输入和输出;可编程的数据输入和输出;可编程I/O功能丰富但成本较高,使功能丰富但成本较高,使用较灵活。用较灵活。简单简单I/OI/O口的扩展口的扩展 I/O口的扩展原则为口的扩展原则为“输入三态、输出锁存输入三态、输出锁存”,因此,因此利用利用TTL或或MOS电路可进行简单电路可进行简单I/O口的扩展。口的扩展。利用片选信号对外部利用片选信号对外部I/O进行编址,对其访问就象访进行编址,对其访问就象访问外部问外部RAM一样。一样。单片机接口技术专题讲座1G2G 其其I/O口地址为口地址为0FEFFH,即保证,即保证P2.0为为“0”即可。即可。其输入和输出共用一个地址,不会发生冲突。其输入和输出共用一个地址,不会发生冲突。273244图图 12 基本基本I/O扩展扩展 单片机接口技术专题讲座LOOP:MOV DPTR,#0FEFFHMOVX A,DPTRCPLAMOVX DPTR,ASJMP LOOP执行如下程序后,试说明工作情况:执行如下程序后,试说明工作情况:单片机接口技术专题讲座4 A/D4 A/D和和D/AD/A接口功能的扩展接口功能的扩展 4.1 A/D转换器接口转换器接口A/D转换器用以实现模拟量向数字量的转换。按转换原理可分为 4 种:计数式、双积分式、逐次逼近式以及并行式A/D转换器。逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几微秒到几百微秒之间。常用的这种芯片有:(1)ADC0801ADC0805型 8 位MOS型A/D转换器;(2)ADC0808/0809 型 8 位MOS型A/D转换器;(3)ADC0816/0817 型 8 位MOS型A/D转换器;单片机接口技术专题讲座4.2 典型典型A/D转换器芯片转换器芯片ADC0809 简介简介 图图 13 ADC0809的内部结构的内部结构 单片机接口技术专题讲座图图 14 ADC0809引脚图引脚图 单片机接口技术专题讲座表 2 地址码与输入通道的对应关系 单片机接口技术专题讲座图图 15 ADC0809时序图时序图 单片机接口技术专题讲座MCS-51数据采集的数据采集的C语言编程示例语言编程示例例例 ADC0809与8031接口的数据采集程序举例。图16 ADC0809与8031的接口电路单片机接口技术专题讲座程序如下:#include#include#define uchar unsigned char#define IN0 XBYTE 0 x7ff8 /*设置AD0809的通道0地址*/sbit ad_busy=P33;/*即EOC状态*/void ad0809(uchar idata*x)/*采样结果放指针中的A/D采集函数*/uchar i;uchar xdata *ad_adr;ad_adr=&IN0;for(i=0;i8;i+)/*处理8通道*/*ad_adr=0;/*启动转换*/单片机接口技术专题讲座 i=i;/*延时等待EOC变低*/i=i;while(ad_busy=0);/*查询等待转换结束*/xi=*ad_adr;/*存转换结果*/ad_adr+;/*下一通道*/void main(void)static uchar idata ad 10 ;ad0809(ad);/*采样AD0809通道的值*/单片机接口技术专题讲座例例 AD574与8031接口的数据采集程序举例。图17 AD574与8031的接口电路单片机接口技术专题讲座源程序如下:#include#inlucde#define uint unsigned int#define ADCOM XBYTE 0 xff7c /*使A0=0,R/C=0,CS=0*/#define ADLO XBYTE 0 xff7f /*使 R/C=1,A0=1,CS=0*/#define ADHI XBYTE 0 xff7d /*使R/C=1,A0=0,CS=0 */sbit r=P3 7;sbit w=P3 6;sbit adbusy=P1 0;单片机接口技术专题讲座uint ad574(void)/*AD574转换器*/r=0;/*产生CE=1*/w=0;ADCOM=0;/*启动转换*/while(adbusy=1);/*等待转换*/return(uint)(ADHI4)+(ADLO&0 x0f);/*返回12位采样值*/main()uint idata result;result=ad574();/*启动AD574进行一次转换,得转换结果*/单片机接口技术专题讲座4.3 D/A转换器转换器接口接口(1)D/A转换器的性能指标转换器的性能指标 (1)分辨率。分辨率是D/A转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。如果数字量的位数为n,则D/A转换器的分辨率为 2-n。(2)建立时间。建立时间是描述 D/A转换速度的一个参数,具体是指从输入数字量变化到输出达到终值误差1/2LSB(最低有效位)时所需的时间。通常以建立时间来表明转换速度。(3)接口形式。D/A转换器有两类:一类不带锁存器,另一类则带锁存器。对于不带锁存器的D/A转换器,为保存单片机的转换数据,在接口处要加锁存器。单片机接口技术专题讲座(2)典型典型D/A转换器转换器DAC0832简介简介 图图 18 DAC0832内部结构框图内部结构框图 单片机接口技术专题讲座图图 19 单片机接口技术专题讲座图图20 DAC0832的引脚图的引脚图 单片机接口技术专题讲座例例 8031与DAC0832双缓冲接口的数据转换程序举例。图21 DAC 0832的双缓冲接口电路单片机接口技术专题讲座将data1和data2数据同时转换为模拟量的C51程序如下:#include#include#define INPUTR1 XBYTE 0 x8fff#define INPUTR2 XBYTE 0 xa7ff#define DACR XBYTE 0 x2fff#define uchar unsigned char void dac2b(data1,data2)uchar data1,data2;INPUTR1=data1;/*送数据到一片0832*/INPUTR2=data2;/*送数据到另一片0832*/DACR=0;/*启动两路D/A 同时转换*/单片机接口技术专题讲座例例 8031与DAC0832单缓冲区接口的数据转换举例。图22 DAC0832与8031 的单缓冲接口 单片机接口技术专题讲座 按片选线确定FFFEH为DAC0832的端口地址。使运行输出端输出一个锯齿波电压信号的C51程序如下:#include#include#define DA0832 XBYTE 0 xfffe#define uchar unsigned char#define uint unsigned int void stair(void)uchar i;while(1)for(i=0;i=255;i=I+)/*形成锯齿波输出值,最大值为255*/DA0832=i;/*D/A转换输出*/单片机接口技术专题讲座例例 8031与AD7521接口的数据转换程序举例。图23 AD7521与8031的接口 单片机接口技术专题讲座使AD7521输出梯形波的C51程序如下:#include#include#define DA7521L XBYTE0 x7fff#define DA7521H XBYTE0 xbfff#define UP 0 x010#define T 1000#define uint unsigned int 单片机接口技术专题讲座void dlms(uint a);void stair(void)uint i;for(i=0;i=4095;i=i+UP)/*以阶高增量增值,形成梯形波输出值,最大4095*/DA7521L=i%256;/*送低8位数据到第一级缓冲器*/DA7521H=i/256;/*送高4位数据到高4位缓冲器,同时送低8位到第二级 /*缓冲转换*/dlms(T);/*延时*/单片机接口技术专题讲座5 5 综合实例分析综合实例分析单片机接口技术专题讲座A/D转换D/A转换RAM扩展测试程序单片机接口技术专题讲座6 6 键盘和数码显示人机交互的键盘和数码显示人机交互的C C语言编程语言编程6.1 行列式键盘与行列式键盘与8031的接口的接口 键盘输入信息的主要过程是:(1)单片机判断是否有键按下。(2)确定按下的是哪一个键。(3)把此步骤代表的信息翻译成计算机所能识别的代码,如ASCII或其它特征码。单片机接口技术专题讲座图图24 8031与行列式键盘的接口与行列式键盘的接口 单片机接口技术专题讲座 例例 44键盘的扫描程序。扫描程序查询的内容为:(1)查询是否有键按下。首先单片机向行扫描P1.0 P1.3输出全为0扫描码F0H,然后从列检查口P1.4 P1.7输入列扫描信号,只要有一列信号不为1,即P1口不为F0H,则表示有键按下。接着要查出按下键所在的行、列位置。单片机接口技术专题讲座 (2)查询按下键所在的行列位置。单片机将得到的信号取反,P1.4P1.7中的为1的位便是键所在的列。接下来要确定键所在的行,需要进行逐行扫描。单片机首先使P1.0为0,P1.1P1.7为1,即向P1口发送扫描码FEH,接着输入列检查信号,若全为1,表示不在第一行。接着使P1.1接地,其余为1,再读入列信号这样逐行发0扫描码,直到找到按下键所在的行,将该行扫描码取反保留。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的误动作。单片机接口技术专题讲座 (3)对得到的行号和列号译码,得到键值。(4)键的抖动处理。当用手按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键抖动,抖动的持续时间不一,通常不会大于10 ms,若抖动问题不解决,就会引起对闭合键的多次读入,对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行逐行扫描,而是延时10 ms后再进行。由于键按下的时间持续上百毫秒,延时后再也不迟。单片机接口技术专题讲座扫描函数的返回值为键特征码,若无键按下,返回值为0。程序如下:#include#define uchar unsigned char#define uint unsigned int void dlms(void)void kbscan(void);void main(void)uchar key;while(1)key=kbscan();dlms();单片机接口技术专题讲座void dlms(void)uchar i;for(i=200;i0;i-)uchar kbscan(void)/*键扫描函数*/uchar scode,recode;P1=oxf0;if(P1&0 xf0)!=0 xf0)/*若有键按下*/dlms();/*延时去抖动*/if(P1&0 xf0)!=0 xf0)scode=0 xfe;/*逐行扫描初值*/while(scode&0 x10)!=0)P1=scode;/*输出扫描码*/单片机接口技术专题讲座if(P1&0 xf0)!=0 xf0)/*本行有键按下*/recode=(P1&0 xf0)|0 x0f;return(scode)+(recode);/*返回特征字节码*/else scode=(scode 1)|0 x01;/*行扫描左移一位*/return(0);单片机接口技术专题讲座6.2 七段数码显示与七段数码显示与8031的接口的接口 数码显示器有静态显示和动态显示两种显示方式。数码显示器有发光管的LED和液晶的LCD两种。LED显示器工作在静态方式时,其阴极(或其阳极)点连接在一起接地(或+5 V),每一个的端选线(a,b,c,d,e,f,g,dp)分别与一个8位口相连。LCD数码显示只能工作在静态显示,并要求加上专门的驱动芯片4056。LED显示器工作在动态显示方式时,段选码端口I/O1用来输出显示字符的段选码,I/O2输出位选码。I/O1不断送待显示字符的段选码,I/O2不断送出不同的位扫描码,并使每位显示字符停留显示一段时间,一般为15 ms,利用眼睛的视觉惯性,从显示器上便可以见到相当稳定的数字显示。单片机接口技术专题讲座例例 8155控制的动态LED显示。图 25 经8155扩展端口的6位LED动态显示 单片机接口技术专题讲座确定的8155片内4个端口地址如下:命令/状态口:FFF0H口A:FFF1H口B:FFF2H口C:FFF3H单片机接口技术专题讲座 6位待显示字符从左到右依次放在dis_buf数组中,显示次序从右向左顺序进行。程序中的table 为段选码表,表中段选码表存放的次序为0F等。以下为循环动态显示6位字符的程序,8155命令字为07H。#include#include#define uchar unsigned char#define COM8155 XBYTE 0 xfff0#define PA8155 XBYTE 0 xfff1#define PB8155 XBYTE 0 xfff2#define PC8155 XBYTE 0 xfff3 单片机接口技术专题讲座uchar idata dis_buf6=2,4,6,8,10,12 ;uchar code table18=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x40,0 x00 ;void dl_ms(uchar d);void display(uchar idata*p)uchar sel,i;COM8155=0 x07;/*送命令字*/sel=0 x01;/*选出右边的LED*/for(i=0;i6;i+)PB8155=table *p;/*送段码*/单片机接口技术专题讲座 PA8155=sel;/*送位选码*/dl_ms(1);p-;/*缓冲区下移1位*/sel=sel 1 /*左移1 位*/void main(void)display(dis_buf+5);单片机接口技术专题讲座例 串行口控制的静态LCD显示。图图 26 串行口连接的静态串行口连接的静态LCD显示电路显示电路 单片机接口技术专题讲座输出两位显示,即一字节的程序如下:#include#define uchar unsigned char uchar byte=0 x59;void display(uchar x)SBUF=x;/*由串口输出*/while(TI=0);/*等待8位发送结束*/TI=0;void main(void)display(byte)
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!