(工学)单片机接口技术专题讲座课件_第1页
(工学)单片机接口技术专题讲座课件_第2页
(工学)单片机接口技术专题讲座课件_第3页
(工学)单片机接口技术专题讲座课件_第4页
(工学)单片机接口技术专题讲座课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机接口技术专题讲座外部总线的扩展外部存储器的扩展I/O口的扩展A/D和D/A接口功能的扩展综合实例分析键盘和数码显示人机交互的C语言编程第1页,共71页。1 外部总线的扩展 一、 外部总线的扩展 图 1 MCS - 51外部三总线示意图 第2页,共71页。图 2 地址锁存器的引脚和接口 第3页,共71页。第4页,共71页。二、总线驱动 在单片机应用系统中, 扩展的三总线上挂接很多负载, 如存储器、并行接口、A/D接口、显示接口等, 但总线接口的负载能力有限, 因此常常需要通过连接总线驱动器进行总线驱动。 总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载, 因此驱动器除了对后级电路

2、驱动外,还能对负载的波动变化起隔离作用。 在对TTL 负载驱动时, 只需考虑驱动电流的大小; 在对MOS负载驱动时, MOS负载的输入电流很小, 更多地要考虑对分布电容的电流驱动。 第5页,共71页。 1 常用的总线驱动器 系统总线中地址总线和控制总线是单向的, 因此驱动器可以选用单向的, 如74LS244。 74LS244还带有三态控制, 能实现总线缓冲和隔离。 . 系统中的数据总线是双向的, 其驱动器也要选用双向的, 如74LS245 。74LS245 也是三态的, 有一个方向控制端DIR, DIR=1时输出(AnBn), DIR=0时输入(AnBn)。 第6页,共71页。图 3 总线驱动

3、器芯片管脚(a) 单向驱动器;(b) 双向驱动器 第7页,共71页。2. 总线驱动器的接口 图 4 8051与总线驱动器的接口(a) P2 口的驱动; (b) P0 口的驱动 第8页,共71页。2 外部存储器的扩展 图 5 MCS - 51 单片机程序存储器的扩展原理 2.1 外部程序存储器的扩展(1)外部程序存储器的扩展原理及时序 第9页,共71页。(2) EPROM扩展电路 图 6 2716的引脚图 第10页,共71页。2716 有五种工作方式, 见表 1。 表 1 2716工作方式选择 第11页,共71页。图 7 2716与8031的连接图 第12页,共71页。 由图 7.7可确定271

4、6芯片的地址范围。方法是A10A0从全0开始, 然后从最低位开始依次加 1, 最后变为全1, 相当于211=2 048个单元地址依次选通, 称为字选。即 第13页,共71页。2.2 静态RAM扩展 图 8 6264 管脚图 第14页,共71页。表 2 6264的工作方式 第15页,共71页。图 9 扩展6264 静态RAM第16页,共71页。 6264的8 KB地址范围不唯一(因为A14A13可为任意值), 6000H7FFFH是一种地址范围。当向该片6000H单元写一个数据DATA时, 可用如下指令: MOV A, DATA MOV DPTA, 6000H MOVX DPTR, A从FFFH

5、单元读一个数据时, 可用如下指令: MOV DPTR, 7FFFH MOVX , DPTR 第17页,共71页。2.3 多片存储器芯片的扩展 (1) 线选法寻址 图 10 用线选法实现片选 第18页,共71页。各芯片的地址范围如下: 第19页,共71页。 (2) 译码法寻址 译码法寻址就是利用地址译码器对系统的片外高位地址进行译码, 以其译码输出作为存储器芯片的片选信号, 将地址划分为连续的地址空间块, 避免了地址的间断。 译码法仍用低位地址线对每片内的存储单元进行寻址, 而高位地址线经过译码器译码后输出作为各芯片的片选信号。常用的地址译码器是 3/8 译码器 74LS138。 译码法又分为完

6、全译码和部分译码两种。 第20页,共71页。 例 要求用 2764 芯片扩展 8031 的片外程序存储器空间, 分配的地址范围为 0000H3FFFH。 本例采用完全译码方法。 (1) 确定片数。 因0000H 3FFFH的存储空间为16 KB, 则 所需芯片数=实际要求的存储容量/单个芯片的存储容量 = 16 KB/ 8 KB = 2(片) 第21页,共71页。(2) 分配地址范围。 第22页,共71页。(3) 存储器扩展连接如图 11 所示。 图 11 采用地址译码器扩展存储器的连接图 第23页,共71页。3 I/O口的扩展 51系列单片机有32个I/O口,且大多数情况下不能完全提供给用户

7、,因此在需要大量I/O口时,我们必须对其进行扩展。 从功能上看,单片机的I/O口有两种类型:基本I/O和可编程I/O。基本I/O结构简单但功能单一,仅适用于简单的数据输入和输出;可编程I/O功能丰富但成本较高,使用较灵活。简单I/O口的扩展 I/O口的扩展原则为“输入三态、输出锁存”,因此利用TTL或MOS电路可进行简单I/O口的扩展。 利用片选信号对外部I/O进行编址,对其访问就象访问外部RAM一样。第24页,共71页。1G2G 其I/O口地址为0FEFFH,即保证P2.0为“0”即可。其输入和输出共用一个地址,不会发生冲突。273244图 12 基本I/O扩展 第25页,共71页。CLKC

8、LRD7D0Q7Q0001保持1D7D0锁存74LS273功能表74LS244功能表GD7D0Q7Q01高阻态0D7D0D7D0第26页,共71页。LOOP:MOVDPTR,#0FEFFHMOVX A,DPTRCPLAMOVX DPTR,ASJMPLOOP执行如下程序后,试说明工作情况:第27页,共71页。4 A/D和D/A接口功能的扩展 4.1 A/D转换器接口A/D转换器用以实现模拟量向数字量的转换。 按转换原理可分为 4 种: 计数式、 双积分式、逐次逼近式以及并行式A/D转换器。 逐次逼近式A/D转换器是一种速度较快, 精度较高的转换器, 其转换时间大约在几微秒到几百微秒之间。常用的这

9、种芯片有: (1) ADC0801ADC0805型 8 位MOS型A/D转换器; (2) ADC0808/0809 型 8 位MOS型A/D转换器; (3) ADC0816/0817 型 8 位MOS型A/D转换器; 第28页,共71页。4.2 典型A/D转换器芯片ADC0809 简介 图 13 ADC0809的内部结构 第29页,共71页。图 14 ADC0809引脚图 第30页,共71页。表 2 地址码与输入通道的对应关系 第31页,共71页。图 15 ADC0809时序图 第32页,共71页。MCS-51数据采集的C语言编程示例例 ADC0809与8031接口的数据采集程序举例。图16

10、ADC0809与8031的接口电路第33页,共71页。程序如下: # 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通道 */ *a

11、d_adr=0 ; /* 启动转换 */第34页,共71页。 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通道的值 */ 第35页,共71页。例 AD574与8031接口的数据采集程序举例。图17 AD574与8031的接口电路第36页,共71页。源程序如下:#

12、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 ;第37页,共71页。uint ad574 ( void ) /* AD574转换器 */ r =

13、 0 ; /* 产生CE=1 */ w = 0 ; ADCOM = 0 ; /* 启动转换 */ while ( adbusy = =1 ) ; /* 等待转换*/ return ( ( uint )(ADHI4 )+( ADLO &0 x0f ) ); /* 返回12位采样值*/ main ( ) uint idata result ; result =ad574 ( ) ; /* 启动AD574进行一次转换,得转换结果 */ 第38页,共71页。4.3 D/A转换器接口 (1) D/A转换器的性能指标 (1) 分辨率。分辨率是D/A转换器对输入量变化敏感程度的描述, 与输入数字量的位数有关

14、。如果数字量的位数为n, 则D/A转换器的分辨率为 2-n。 (2) 建立时间。建立时间是描述 D/A转换速度的一个参数, 具体是指从输入数字量变化到输出达到终值误差1/2LSB(最低有效位)时所需的时间。通常以建立时间来表明转换速度。 (3) 接口形式。 D/A转换器有两类: 一类不带锁存器, 另一类则带锁存器。对于不带锁存器的D/A转换器, 为保存单片机的转换数据, 在接口处要加锁存器。 第39页,共71页。(2) 典型D/A转换器DAC0832简介 图 18 DAC0832内部结构框图 第40页,共71页。图 19 第41页,共71页。图20 DAC0832的引脚图 第42页,共71页。

15、例 8031与DAC0832双缓冲接口的数据转换程序举例。图21 DAC 0832的双缓冲接口电路第43页,共71页。将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 ; /* 送数据

16、到一片0832 */ INPUTR2 = data2 ; /* 送数据到另一片0832 */ DACR= 0 ; /* 启动两路D/A 同时转换 * /第44页,共71页。例 8031与DAC0832单缓冲区接口的数据转换举例。图22 DAC0832与8031 的单缓冲接口 第45页,共71页。 按片选线确定FFFEH为DAC0832的端口地址。使运行输出端输出一个锯齿波电压信号的C51程序如下:# include # include # define DA0832 XBYTE 0 xfffe # define uchar unsigned char # define uint unsigne

17、d int void stair (void ) uchar i ; while ( 1 ) for ( i=0 ; i=255 ; i=I+ ) /* 形成锯齿波输出值,最大值为255 */ DA0832 = i ; /* D/A转换输出 */ 第46页,共71页。例 8031与AD7521接口的数据转换程序举例。图23 AD7521与8031的接口 第47页,共71页。使AD7521输出梯形波的C51程序如下:# include # include # define DA7521L XBYTE0 x7fff # define DA7521H XBYTE0 xbfff # define UP

18、 0 x010# define T 1000# define uint unsigned int 第48页,共71页。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 ) ; /* 延时 */ 第49页,共71页。5 综合实例分

19、析第50页,共71页。A/D转换D/A转换RAM扩展测试程序第51页,共71页。第52页,共71页。第53页,共71页。第54页,共71页。# include / 绝对地址访问# include / MCS-51寄存器符号定义# define TLC7524 XBYTE 0 x3FFF # define ADC0820 XBYTE 0 x5FFF # define uchar unsigned char# define uint unsigned intvoid ADC (void ) return ( ADC0820 ); void DAC (uchar x ) TLC7524 =x ; v

20、oid main(void)uchar ad; while(1) ad=ADC0820(); TLC7524 (ad); 第55页,共71页。6 键盘和数码显示人机交互的C语言编程6.1 行列式键盘与8031的接口 键盘输入信息的主要过程是: (1) 单片机判断是否有键按下。 (2) 确定按下的是哪一个键。 (3) 把此步骤代表的信息翻译成计算机所能识别的代码,如ASCII或其它特征码。第56页,共71页。图24 8031与行列式键盘的接口 第57页,共71页。 例 44键盘的扫描程序。 扫描程序查询的内容为: (1) 查询是否有键按下。首先单片机向行扫描P1.0 P1.3输出全为0扫描码F0

21、H,然后从列检查口P1.4 P1.7输入列扫描信号,只要有一列信号不为1,即P1口不为F0H,则表示有键按下。接着要查出按下键所在的行、列位置。第58页,共71页。 (2) 查询按下键所在的行列位置。单片机将得到的信号取反,P1.4P1.7中的为1的位便是键所在的列。接下来要确定键所在的行,需要进行逐行扫描。单片机首先使P1.0为0,P1.1P1.7为1,即向P1口发送扫描码FEH,接着输入列检查信号,若全为1,表示不在第一行。接着使P1.1接地,其余为1,再读入列信号这样逐行发0扫描码,直到找到按下键所在的行,将该行扫描码取反保留。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的误动作。第

22、59页,共71页。 (3) 对得到的行号和列号译码,得到键值。 (4) 键的抖动处理。当用手按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键抖动,抖动的持续时间不一,通常不会大于10 ms,若抖动问题不解决,就会引起对闭合键的多次读入,对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行逐行扫描,而是延时10 ms后再进行。由于键按下的时间持续上百毫秒,延时后再也不迟。第60页,共71页。扫描函数的返回值为键特征码,若无键按下,返回值为0。程序如下:# include # define uchar unsi

23、gned char # define uint unsigned int void dlms( void )void kbscan( void ) ;void main ( void ) uchar key ;while( 1 ) key =kbscan ( ) ; dlms( ) ; 第61页,共71页。void dlms( void ) uchar i ; for ( i=200 ; i0 ; i- -) uchar kbscan ( void ) /* 键扫描函数 */ uchar scode ,recode ; P1=oxf0 ; if ( (P1 & 0 xf0 ) ! =0 xf0

24、 ) /* 若有键按下 */ dlms ( ) ; /* 延时去抖动 */ if ( P1 & 0 xf0 )! = 0 xf0 ) scode =0 xfe ; /* 逐行扫描初值 */ while ( scode & 0 x10 ) !=0 ) P1=scode ; /* 输出扫描码 */第62页,共71页。if ( P1 & 0 xf0 )! =0 xf0 ) /* 本行有键按下 */ recode= ( P1 & 0 xf0 ) | 0 x0f ; return ( scode ) + ( recode ) ) ; /* 返回特征字节码 */ else scode = ( scode

25、1) | 0 x01 ; /* 行扫描左移一位 */ return ( 0 ) ; 第63页,共71页。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不

26、断送出不同的位扫描码,并使每位显示字符停留显示一段时间,一般为15 ms,利用眼睛的视觉惯性,从显示器上便可以见到相当稳定的数字显示。第64页,共71页。例 8155控制的动态LED显示。图 25 经8155扩展端口的6位LED动态显示 第65页,共71页。确定的8155片内4个端口地址如下:命令/状态口 : FFF0H口A: FFF1H口B: FFF2H口C: FFF3H第66页,共71页。 6位待显示字符从左到右依次放在dis_buf数组中,显示次序从右向左顺序进行。程序中的table 为段选码表,表中段选码表存放的次序为0F等。以下为循环动态显示6位字符的程序,8155命令字为07H。# include # include #define uchar unsigned char# define CO

温馨提示

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

评论

0/150

提交评论