工学单片机接口技术专题讲座课件.ppt

上传人:scccc 文档编号:15029430 上传时间:2022-03-06 格式:PPT 页数:71 大小:1.98MB
返回 下载 相关 举报
工学单片机接口技术专题讲座课件.ppt_第1页
第1页 / 共71页
工学单片机接口技术专题讲座课件.ppt_第2页
第2页 / 共71页
工学单片机接口技术专题讲座课件.ppt_第3页
第3页 / 共71页
工学单片机接口技术专题讲座课件.ppt_第4页
第4页 / 共71页
工学单片机接口技术专题讲座课件.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《工学单片机接口技术专题讲座课件.ppt》由会员分享,可在线阅读,更多相关《工学单片机接口技术专题讲座课件.ppt(71页珍藏版)》请在三一文库上搜索。

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

2、动。 总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载, 因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。 在对TTL 负载驱动时, 只需考虑驱动电流的大小; 在对MOS负载驱动时, MOS负载的输入电流很小, 更多地要考虑对分布电容的电流驱动。,工学单片机接口技术专题讲座,6,1 常用的总线驱动器 系统总线中地址总线和控制总线是单向的, 因此驱动器可以选用单向的, 如74LS244。 74LS244还带有三态控制, 能实现总线缓冲和隔离。 . 系统中的数据总线是双向的, 其驱动器也要选用双向的, 如74LS245 。74LS245 也是三态的, 有一个方向控制端DI

3、R, DIR=1时输出(AnBn), DIR=0时输入(AnBn)。,工学单片机接口技术专题讲座,7,图 3 总线驱动器芯片管脚(a) 单向驱动器;(b) 双向驱动器,工学单片机接口技术专题讲座,8,2. 总线驱动器的接口,图 4 8051与总线驱动器的接口(a) P2 口的驱动; (b) P0 口的驱动,工学单片机接口技术专题讲座,9,2 外部存储器的扩展,图 5 MCS - 51 单片机程序存储器的扩展原理,2.1 外部程序存储器的扩展(1)外部程序存储器的扩展原理及时序,工学单片机接口技术专题讲座,10,(2) EPROM扩展电路,图 6 2716的引脚图,工学单片机接口技术专题讲座,1

4、1,2716 有五种工作方式, 见表 1。,表 1 2716工作方式选择,工学单片机接口技术专题讲座,12,图 7 2716与8031的连接图,工学单片机接口技术专题讲座,13,由图 7.7可确定2716芯片的地址范围。方法是A10A0从全0开始, 然后从最低位开始依次加 1, 最后变为全1, 相当于211=2 048个单元地址依次选通, 称为字选。即,工学单片机接口技术专题讲座,14,2.2 静态RAM扩展,图 8 6264 管脚图,工学单片机接口技术专题讲座,15,表 2 6264的工作方式,工学单片机接口技术专题讲座,16,图 9 扩展6264 静态RAM,工学单片机接口技术专题讲座,1

5、7,6264的8 KB地址范围不唯一(因为A14A13可为任意值), 6000H7FFFH是一种地址范围。当向该片6000H单元写一个数据DATA时, 可用如下指令: MOV A, DATA MOV DPTA, 6000H MOVX DPTR, A从FFFH单元读一个数据时, 可用如下指令: MOV DPTR, 7FFFH MOVX , DPTR,工学单片机接口技术专题讲座,18,2.3 多片存储器芯片的扩展,(1) 线选法寻址,图 10 用线选法实现片选,工学单片机接口技术专题讲座,19,各芯片的地址范围如下:,工学单片机接口技术专题讲座,20,(2) 译码法寻址 译码法寻址就是利用地址译码

6、器对系统的片外高位地址进行译码, 以其译码输出作为存储器芯片的片选信号, 将地址划分为连续的地址空间块, 避免了地址的间断。 译码法仍用低位地址线对每片内的存储单元进行寻址, 而高位地址线经过译码器译码后输出作为各芯片的片选信号。常用的地址译码器是 3/8 译码器 74LS138。 译码法又分为完全译码和部分译码两种。 ,工学单片机接口技术专题讲座,21,例 要求用 2764 芯片扩展 8031 的片外程序存储器空间, 分配的地址范围为 0000H3FFFH。 本例采用完全译码方法。 (1) 确定片数。 因0000H 3FFFH的存储空间为16 KB, 则 所需芯片数=实际要求的存储容量/单个

7、芯片的存储容量 = 16 KB/ 8 KB = 2(片),工学单片机接口技术专题讲座,22,(2) 分配地址范围。,工学单片机接口技术专题讲座,23,(3) 存储器扩展连接如图 11 所示。,图 11 采用地址译码器扩展存储器的连接图,工学单片机接口技术专题讲座,24,3 I/O口的扩展,51系列单片机有32个I/O口,且大多数情况下不能完全提供给用户,因此在需要大量I/O口时,我们必须对其进行扩展。 从功能上看,单片机的I/O口有两种类型:基本I/O和可编程I/O。基本I/O结构简单但功能单一,仅适用于简单的数据输入和输出;可编程I/O功能丰富但成本较高,使用较灵活。,简单I/O口的扩展,I

8、/O口的扩展原则为“输入三态、输出锁存”,因此利用TTL或MOS电路可进行简单I/O口的扩展。 利用片选信号对外部I/O进行编址,对其访问就象访问外部RAM一样。,工学单片机接口技术专题讲座,25,1G2G,其I/O口地址为0FEFFH,即保证P2.0为“0”即可。其输入和输出共用一个地址,不会发生冲突。,273,244,图 12 基本I/O扩展,工学单片机接口技术专题讲座,26,74LS273功能表,74LS244功能表,工学单片机接口技术专题讲座,27,LOOP:MOVDPTR,#0FEFFHMOVX A,DPTRCPLAMOVX DPTR,ASJMPLOOP,执行如下程序后,试说明工作情

9、况:,工学单片机接口技术专题讲座,28,4 A/D和D/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转换器;,工学单片机接口技术专题讲座,29,4.2 典型A/

10、D转换器芯片ADC0809 简介,图 13 ADC0809的内部结构,工学单片机接口技术专题讲座,30,图 14 ADC0809引脚图,工学单片机接口技术专题讲座,31,表 2 地址码与输入通道的对应关系,工学单片机接口技术专题讲座,32,图 15 ADC0809时序图,工学单片机接口技术专题讲座,33,MCS-51数据采集的C语言编程示例例 ADC0809与8031接口的数据采集程序举例。,图16 ADC0809与8031的接口电路,工学单片机接口技术专题讲座,34,程序如下:,# include # include # define uchar unsigned char # define

11、 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 ; /* 启动转换 */,工学单片机接口技术专题讲座,35,i=i ; /* 延时等待EOC变低 */ i=i ; while (ad_busy = =0 ) ;

12、/* 查询等待转换结束 */ xi = * ad_adr ; /* 存转换结果 */ ad_adr + ; /* 下一通道 */ void main ( void ) static uchar idata ad 10 ; ad0809 ( ad ) ; /* 采样AD0809通道的值 */ ,工学单片机接口技术专题讲座,36,例 AD574与8031接口的数据采集程序举例。,图17 AD574与8031的接口电路,工学单片机接口技术专题讲座,37,源程序如下:,工学单片机接口技术专题讲座,38,uint ad574 ( void ) /* AD574转换器 */ r = 0 ; /* 产生CE

13、=1 */ w = 0 ; ADCOM = 0 ; /* 启动转换 */ while ( adbusy = =1 ) ; /* 等待转换*/ return ( ( uint )(ADHI4 )+( ADLO &0 x0f ) ); /* 返回12位采样值*/ main ( ) uint idata result ; result =ad574 ( ) ; /* 启动AD574进行一次转换,得转换结果 */ ,工学单片机接口技术专题讲座,39,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转换器, 为保存单片机的转换数据, 在接口处要加锁存器。,工学单片机接口技术专题讲座,40,(2) 典型D/A转换器DAC0832简介,图 18 DAC0832内部结构框图,工学单片机接口技术专题讲座,41,图 19,工学单片机接口技术专题讲座,42,图20 DAC08

15、32的引脚图,工学单片机接口技术专题讲座,43,例 8031与DAC0832双缓冲接口的数据转换程序举例。,图21 DAC 0832的双缓冲接口电路,工学单片机接口技术专题讲座,44,将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

16、, data2 ; INPUTR1 = data1 ; /* 送数据到一片0832 */ INPUTR2 = data2 ; /* 送数据到另一片0832 */ DACR= 0 ; /* 启动两路D/A 同时转换 * /,工学单片机接口技术专题讲座,45,例 8031与DAC0832单缓冲区接口的数据转换举例。,图22 DAC0832与8031 的单缓冲接口,工学单片机接口技术专题讲座,46,按片选线确定FFFEH为DAC0832的端口地址。使运行输出端输出一个锯齿波电压信号的C51程序如下:,# include # include # define DA0832 XBYTE 0 xfffe

17、# 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转换输出 */ ,工学单片机接口技术专题讲座,47,例 8031与AD7521接口的数据转换程序举例。,图23 AD7521与8031的接口,工学单片机接口技术专题讲座,48,使AD7521输出梯形波的C51程序如下:# include # include # def

18、ine DA7521L XBYTE0 x7fff # define DA7521H XBYTE0 xbfff # define UP 0 x010# define T 1000# define uint unsigned int,工学单片机接口技术专题讲座,49,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 ; /* 送高

19、4位数据到高4位缓冲器,同时送低8位到第二级 /* 缓冲转换 */ dlms ( T ) ; /* 延时 */ ,工学单片机接口技术专题讲座,50,5 综合实例分析,工学单片机接口技术专题讲座,51,A/D转换,D/A转换,RAM扩展,测试程序,工学单片机接口技术专题讲座,52,工学单片机接口技术专题讲座,53,工学单片机接口技术专题讲座,54,工学单片机接口技术专题讲座,55,# include / 绝对地址访问# include / MCS-51寄存器符号定义# define TLC7524 XBYTE 0 x3FFF # define ADC0820 XBYTE 0 x5FFF # de

20、fine uchar unsigned char# define uint unsigned int,void ADC (void ) return ( ADC0820 ); void DAC (uchar x ) TLC7524 =x ; void main(void)uchar ad; while(1) ad=ADC0820(); TLC7524 (ad); ,工学单片机接口技术专题讲座,56,6 键盘和数码显示人机交互的C语言编程,6.1 行列式键盘与8031的接口 键盘输入信息的主要过程是: (1) 单片机判断是否有键按下。 (2) 确定按下的是哪一个键。 (3) 把此步骤代表的信息翻

21、译成计算机所能识别的代码,如ASCII或其它特征码。,工学单片机接口技术专题讲座,57,图24 8031与行列式键盘的接口,工学单片机接口技术专题讲座,58,例 44键盘的扫描程序。 扫描程序查询的内容为: (1) 查询是否有键按下。首先单片机向行扫描P1.0 P1.3输出全为0扫描码F0H,然后从列检查口P1.4 P1.7输入列扫描信号,只要有一列信号不为1,即P1口不为F0H,则表示有键按下。接着要查出按下键所在的行、列位置。,工学单片机接口技术专题讲座,59,(2) 查询按下键所在的行列位置。单片机将得到的信号取反,P1.4P1.7中的为1的位便是键所在的列。接下来要确定键所在的行,需要

22、进行逐行扫描。单片机首先使P1.0为0,P1.1P1.7为1,即向P1口发送扫描码FEH,接着输入列检查信号,若全为1,表示不在第一行。接着使P1.1接地,其余为1,再读入列信号这样逐行发0扫描码,直到找到按下键所在的行,将该行扫描码取反保留。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的误动作。,工学单片机接口技术专题讲座,60,(3) 对得到的行号和列号译码,得到键值。 (4) 键的抖动处理。当用手按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键抖动,抖动的持续时间不一,通常不会大于10 ms,若抖动问题不

23、解决,就会引起对闭合键的多次读入,对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行逐行扫描,而是延时10 ms后再进行。由于键按下的时间持续上百毫秒,延时后再也不迟。,工学单片机接口技术专题讲座,61,扫描函数的返回值为键特征码,若无键按下,返回值为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 ( )

24、; dlms( ) ; ,工学单片机接口技术专题讲座,62,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 )

25、 P1=scode ; /* 输出扫描码 */,工学单片机接口技术专题讲座,63,if ( P1 & 0 xf0 )! =0 xf0 ) /* 本行有键按下 */ recode= ( P1 & 0 xf0 ) | 0 x0f ; return ( scode ) + ( recode ) ) ; /* 返回特征字节码 */ else scode = ( scode 1) | 0 x01 ; /* 行扫描左移一位 */ return ( 0 ) ; ,工学单片机接口技术专题讲座,64,6.2 七段数码显示与8031的接口,数码显示器有静态显示和动态显示两种显示方式。 数码显示器有发光管的LED和

26、液晶的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,利用眼睛的视觉惯性,从显示器上便可以见到相当稳定的数字显示。,工学单片机接口技术专题讲座,65,例 8155控制的动态LED显示。,图 25

27、经8155扩展端口的6位LED动态显示,工学单片机接口技术专题讲座,66,确定的8155片内4个端口地址如下:,命令/状态口 : FFF0H口A: FFF1H口B: FFF2H口C: FFF3H,工学单片机接口技术专题讲座,67,6位待显示字符从左到右依次放在dis_buf数组中,显示次序从右向左顺序进行。程序中的table 为段选码表,表中段选码表存放的次序为0F等。以下为循环动态显示6位字符的程序,8155命令字为07H。# include # include #define uchar unsigned char# define COM8155 XBYTE 0 xfff0 # defin

28、e PA8155 XBYTE 0 xfff1 # define PB8155 XBYTE 0 xfff2 # define PC8155 XBYTE 0 xfff3 ,工学单片机接口技术专题讲座,68,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

29、display ( uchar idata * p ) uchar sel ,i ; COM8155 = 0 x07 ; /* 送命令字 */ sel = 0 x01 ; /* 选出右边的LED */ for ( i= 0 ; i6 ; i+ ) PB8155=table * p ; /* 送段码 */,工学单片机接口技术专题讲座,69,PA8155=sel ; /* 送位选码 */ dl_ms ( 1 ) ; p - - ; /* 缓冲区下移1位 */ sel =sel 1 /* 左移1 位 */ void main ( void ) display ( dis_buf +5 ) ; ,工学单片机接口技术专题讲座,70,例 串行口控制的静态LCD显示。,图 26 串行口连接的静态LCD显示电路,工学单片机接口技术专题讲座,71,输出两位显示,即一字节的程序如下:# 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 ),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1