版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 MCS-51 单片机的系统扩展,本章主要介绍51系列单片机系统扩展问题,在本章中要研究较多的硬件方面及硬软结合方面的问题,本章与第一章关系密切,在学习本章内容之前,要先明确51系列单片机本身的系统资源,可先复习一下前面几章的有关单片机硬件组成方面的内容。,本章将介绍以下具体内容: 系统扩展的含义、单片机的地址总线和数据总线、常见系统扩展电路举例。,7.0 前言 1.系统扩展的含义 单片机中虽然已经集成了CPU、I/O口、定时器、中断系统、存储器等计算机的基本部件(即系统资源),但是对一些较复杂应用系统来说有时感到以上资源中的一种或几种不够用,这就需要在单片机芯片外加相应的芯片、电路,使
2、得有关功能得以扩充,我们称为系统扩展(即系统资源的扩充)。,2.系统扩展分类-单一功能的扩展 综合功能的扩展,3.系统扩展需要解决的问题- 单片机与相应芯片的接口电路连接(即地址总线、数据总线、控制总线的连接)与编程。,51系列单片机没有专用的对外地址总线和数据总线,其P0口和P2口既是通用I/O口,同时P0口还是分时复用的双向数据总线和低8位地址总线(一般需要加一级锁存器),而P2口则是高8位地址总线。,4.单片机的地址总线和数据总线,(1)单一功能的系统扩展 存储器的扩展(程序存储器、数据存储器、E2PROM ) 外部中断源的扩展(简单门电路) 并行口的扩展(8155) (2)综合功能的扩
3、展 外部RAM、定时器、并行口扩展(8155) 存储器、并行口、定时器扩展(多芯片),5.常见系统扩展电路,.程序存储器的作用-存放程序代码或常数表格 .扩展时所用芯片-一般用只读型存储器芯片(可以是EPROM、E2PROM、 FLASH芯片等)。 .扩展电路连接 - 用EPROM 2764扩展程序存储器。 .存储器地址分析-究竟单片机输出什么地址值时,可以指向存储器中的某一单元。,7.1 存储器的扩展,7.1.1 程序存储器的扩展,2764-8K EPROM,2764引脚功能,VPP A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND,Vcc PGM N.C A
4、8 A9 A11 OE A10 CE D7 D6 D5 D4 D3,2764,.扩展时所用芯片1,D7 D6 D5 D4 D3 D2 D1 D0 G,74LS373,GND,+5V,E,Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0,.扩展时所用芯片2,373引脚功能,使能端,当E=0,G=1时, 输出Q=输入D(透明); 当E=0,G=0时, 输出Q端不变(锁存) 当E=0,输出高阻态,.扩展电路连接,图7-4 扩展电路,单片机 8031,P2.0,:,.,A8,.,.,.,ALE,PSEN,74LS 373,G,2764,A7 . . A0,O0 . . O7,P0.0 : P0.7,OE
5、,CE,Q0 . . Q7,D0 . . D7,8031 2764 数据总线的连接: P0.0-P0.7(数据总线)-O0-O7 地址总线的连接: P0.0-P0.7(地址总线低8位)- A0-A7 P2.0-P2.4(地址总线高8位中的5位)- A8-A12 控制总线的连接: PSEN(程序存储器允许,即读指令) - OE ALE(地址锁存允许)-接373的使能端G,经过锁存器373,A12,P2.4,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,地址A8A15,A0A7,A0A7,指令码,指令码,图7-2 从外存取指令时序图,一个机器周期,ALE,PSEN,P2,P0,地址A
6、8A15,地址A8A15,A0A7,A0A7,指令码,指令码,单片机 8031,P2.0,:,.,A8,.,.,.,ALE,PSEN,74LS 373,G,2764,A7 . . A0,O0 . . O7,P0.0 : P0.7,OE,CE,Q0 . . Q7,D0 . . D7,A12,P2.4,.存储器地址分析-究竟单片机输出什么地址值时,可以指向存储器中的某一单元。,8031 P2.4 P2.0 P0.7P0.0 选中单元 (2732 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) 0 0 0 0 0 0 0 0 0 0 0 0 0(0000H)0
7、0 0 0 0 0 0 0 0 0 0 0 0 1(0001H)1 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H)2 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H)3 0 0 0 0 0 0 0 0 0 0 1 0 0(0004H)4 . . . 1 1 1 1 1 1 1 1 1 1 1 1 1(1FFFH) 8K-1 可见,当单片机输出地址0000H1FFFH时,选中2764的08K-1号单元,即按照上面电路扩展的4K存储器的地址范围是0000H1FFFH(共8K字节)。,请思考:请同学们结合图7.2来分析图7.4中373 的作用,并说明没有它行不行?为
8、什么?,.扩展时所用芯片,.程序存储器的作用,.扩展电路连接,.存储器地址分析,程序存储器的扩展,7.1.2 数据存储器的扩展 .数据存储器的作用-存放数据,可改写 .扩展时所用芯片-一般用静态读写型存储器芯片SRAM,也可以用E2PROM、FLASH芯片等 .扩展电路连接 - 用SRAM 6264扩展程序存储器。 .存储器地址分析-究竟单片机输出什么地址值时,可以指向存储器中的某一单元。,.扩展时所用芯片,6264-8K SRAM,6264引脚功能,N.C A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND,Vcc WE CS A8 A9 A11 OE A10
9、CE D7 D6 D5 D4 D3,6264,.扩展电路连接,图7-9 扩展电路,数据总线的连接: P0.0P0.7(数据总线)-D0D7 地址总线的连接: P0.0P0.7(地址总线低8位)- A0A7 P2.0P2.4(地址总线高8位中的5位)- A8A12 控制总线的连接: RD(读外部数据) - OE WR(写外部数据)- WE ALE(地址锁存允许)-接373的使能端 G,经过373,A8,6264,WE,单片机 8031,P2.0,:,.,A8,. .,ALE,RD,74LS 373,G,A7 . . A0,P0.0 : P0.7,OE,CE,Q0 . . Q7,D0 . . D7
10、,A12,P2.4,WR,8031,6264,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,A0A7,三态,数据D0D7入,图7-6 读外部数据RAM时序图,RD,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,A0A7,数据D0D7出,图7-7 写外部数据RAM时序图,WR,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,A0A7,三态,数据D0D7入,RD,图4.4 读外部数据RAM时序图,.存储器地址分析-究竟单片机输出什么地址值时,可以,指向存储器中的某一单元。,8031 P2.7 P2.4 P2.0 P0.7 P0.0 选中单元(6264 CE
11、A12 A11 A8 A7 A6 A5 A4 A3 A2 A1 A0) 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 0(0000H) 0 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 1(0001H) 1 0 X X 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H) 2 0 X X 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H) 3 0 X X 0 0 0 0 0 0 0 0 0 0 1 0 0(0004H) 4 . . . 0 X X 1 1 1 1 1 1 1 1 1 1 1 1 1(1FFFH) 8K-1 可见,当单片机输出
12、地址0000H1FFFH时,选中6264的08K-1号单元,即按照上面电路扩展的4K存储器的地址范围是0000H1FFFH(共8K字节)。,请注意,与扩展程序存储器相比较,有以下不同点: . 存储器芯片为可读可写的静态RAM芯片,有读写控制引脚OE和WE。 .单片机输出的对数据存储器的读写控制信号分别是RD(而不再是读程序存储器时的PSEN)和WR。,.扩展时所用芯片,.数据存储器的作用,.扩展电路连接,.存储器地址分析,数据存储器的扩展,2864-8K E2PROM,2864引脚功能,N.C A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND,Vcc WE N.
13、C A8 A9 A11 OE A10 CE D7 D6 D5 D4 D3,2864,.扩展时所用芯片,7.1.3 E2PROM的扩展,单片机 8031,P2.4,P2.0,A8,A12,ALE,RD,74LS 373,G,2864,A7 A6 A5 A4 A3 A2 A1 A0,D0 D1 D2 D3 D4 D5 D6 D7,P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7,OE,CE,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7,D0 D1 D2 D3 D4 D5 D6 D7,WE,WR,P2.7,PSEN,&,图7-9 2864扩展电路图,请思考:什么情况下
14、图7-9中的与门输出低电平,使E2PRAM的内容可以被读出,读出的是什么方面的内容?图中扩展的E2PRAM是外部数据存储器?外部程序存储器?两者都扩展了?,7.2 并行口的扩展,7.2.1 并行口的简单扩展,输出口-利用锁存器扩展,并行口扩展的分类 利用锁存器、缓冲器进行并行口简单扩展 用可编程并行接口芯片进行扩展,输入口-利用缓冲器扩展,8031,WR,RD,P2.7,G,Q0 . . Q7,P0.0 . . P0.7,D0 . . D7,Q0 . . Q7,D0 . . D7,CLK,图7-10 并行口的简单扩展,273,244,7.2.2 可编程并行接口芯片8155的扩展,一、8155的
15、结构及引脚,8155的结构,8155,256字节RAM,三个可编程并行口,14位二进制减法计数器,8155芯片的内部结构,256B 静态 RAM,A,定时器,B,C,口A,PA0PA7,口B,PB0PB7,PC0PC5,口C,IO/ M,AD0AD7,CE ALE RD WR RESET,定时器输入,定时器输出,接单片机,接外设,接外设,接外设,图7.11b,8155引脚功能,PC3 PC4 PC5 IO/ M CE RD WR ALE AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss,Vcc PC2 PC1 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1
16、 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0,TIMER IN,RESET,TIMER OUT,图7.11a,CE,CE,IO/ M,RD、WR,CE,I/O口地址-当IO/ M 加高电平时,1. 8155的RAM和I/O口地址,RAM地址-当IO/ M 加低电平时,此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是 0000 0000-1111 1111 分别指向8155 RAM 的256个存储单元。,此时AD0-AD7 (仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是:,二、81
17、55的工作原理,8155的RAM和I/O口地址分配,2. 8155的使用(分二种情况:片内RAM的使用 各端口的使用),8155内RAM的使用:,与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/ M 为低电平。,8155各端口(包括定时器)的使用:,A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。,8155命令字含义,PA,PB,PC1,PC2,IEA,IEB,TM1,TM2,00C口输入,A、B口基本I/O方式 11C口输出,A、B口基本I/O方式 01PC3-PC5输出,A口选通方式,B口基本I/O方式 10A、B口选通方式,PC2、PC1C口数
18、据传送方向及AB口工作方式,TM1、TM2定时器/计数器控制,00 空操作 01 停止定时器,10 记满回零停止计数 11 启动,8155内部有一个14位减法计数器,计数脉冲来自其引脚“TIMER IN”,使用定时器前要先装入“时间常数”-14位二进制数。其格式为:,8155定时器/计数器,高6位计数值,低8位计数值,定时器方式,M2 M1,00 单方波 01 连续方波 单脉冲 连续脉冲,三.扩展电路的连接举例-见图7-12,接口电路非常简单,基本上是相同信号对接。,8031,8155,RESET RD WR ALE P2.0 P2.7,P0.0 P0.1 P0.2 P.03 P0.4 P0.
19、5 P0.6 P0.7,RESET RD WR ALE IO/M,CE,AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7,口A,PA0PA7,口B,PB0PB7,PC0PC5,口C,图7-12,请思考:对比图7-4(2764的扩展),为什么图7-12中扩展8155时,单片机P0口输出的地址信号没有经过373锁存而是直接接到8155的地址/数据复用线上了?,四. 应用举例-(见教材p139例),设8155与单片机连接电路如图7-12,现要求其A口为基本输入方式,B口为基本输出方式,定时器为方波发生器,对8031输入脉冲进行24分频,编制初始化程序段。,解:首先分析各端口地址-见教材
20、P138表7-9。 命令状态口地址为7F00H A口地址为7F01H B口地址为7F02H C口地址为7F03H 定时器低8位地址7F04H 定时器高6位地址7F05H 8155的控制字为0C2H:,PA,PB,PC1,PC2,IEA,IEB,TM1,TM2,1 1 0 0 0 0 1 0,补充题1: 根据图7-12的电路,把8155的PB口设置成输入方式,PA口设置成输出方式,并把PB口输入的数据与8031 P1口输入的数据相“异或”,结果从PA口输出。试写出满足此要求的程序。,MOV DPTR,#7F00H MOV A,#0C2H MOVX DPTR,A MOV DPTR,#7F05H,2
21、4分频即计数初值为24(000000 0011000B=18H)加上 定时计数控制01(连续方波),则送往定时计数器的时间常数及定时控制字应为 01000000 00011000B=4018H,MOV A,#40H MOVX DPTR,A MOV DPTR,#7F04H MOV A,#18H MOV DPTR,A,TM2 TM1 IEB IEA PC2 PC1 PB PA 0 0 0 0 0 0 0 1 即控制字为01H,(注:此处PC2 PC1取1 1也可以),依图7-12电路,8155的六个端口地址分配如下,解:根据题目要求,要先初始化8155(设置其端口的输入输 出方式-这里PB口输入,
22、PA口输出),其控制字如下:,SJMP $,所以程序如下:,MOV DPTR,#7F00H ;选中8155命令口,MOV A,#01H ;控制字01H,MOVX DPTR,A ;控制字01H送8155命令口,MOV DPTR,#7F02H ;选中8155 PB口,MOVX A, DPTR ;从PB口输入数据,XRL A,P1 ;与8031 P1口内容“异或”,MOV DPTR,#7F01H ;选中8155 PA口,MOVX DPTR,A ;从PA口输出数据,补充题2:根据图7-12电路,设计一段程序把8155片内RAM全部填满FFH。,解:根据图7-12的电路,8155片内RAM地址是0000
23、H00FFH,又由于是对8155片内RAM操作,不需要初始化芯片,,程序如下:,SJMP $,MOV R7, #00H ;R7作计数器,从0开始共减256次再到0,MOV A,#0FFH ;准备送FFH,MOV DPTR,#0000H ;DPTR指向第一个单元,LOOP: MOVX DPTR,A ;送数,INC DPTR ;调整指针,指向下一个单元,DJNZ R7,LOOP ;循环控制,1.综合功能的扩展:使用具有综合功能的芯片、 使用多个芯片扩展。 (1)综合功能芯片扩展- 8155 使用具有综合功能的可编程芯片8155来同时扩展单片机的I/O口、定时器、外部数据存储器RAM。,补充,(2)
24、多芯片扩展-使用多个芯片来进行综合功能扩展。,8031,373 G,2716,6116(2),6116(1),8155,P0,P2.2-P2.0,PSEN,ALE,WR,RD,A B C G2A G2B G1,P1.0,A0A7,A8A10,D7D0,D7D0,D7D0,CE,CE,CS,OE,A0A7,A8A10,WE,WE,OE,OE,WE,RD,ALE,AD0AD7,CE,Y2,Y1,Y0,+5V,IO/ M,PA,PB,PC,P2.3 P2.4 P2.5 P2.6 P2.7,需要弄清以下几个问题:,.选片问题-,选片信号的功能是:当某个芯片的选片信号接低电平时,意味着该芯片被选中,而当
25、其接高电平时,意味着该芯片没有被选中,此时就好象该芯片没有连接到电路中(实际上是其各引脚处于高阻态)。在这部分以前所有扩展电路中所用的芯片的选片信号引脚CE,都是直接接地或者接某一P2口线的。,芯片138是3:8译码器,它在这里的作用是输出选片信号:其输出端Y0、Y1、Y2分别用来选择8155、6116(1)、6116(2)。138的引脚及功能见下表:,. 译码器问题-,控 制 引 脚,输 入 引 脚,输 出 引 脚,G1 G2A G2B,C B A,Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0,1 0 0,0 0 0,1 1 1 1 1 1 1 0,1 0 0,0 0 1,1 1 1 1
26、1 1 0 1,1 0 0,0 1 0,1 1 1 1 1 0 1 1,1 0 0,0 1 1,1 1 1 1 0 1 1 1,1 0 0,1 0 0,1 1 1 0 1 1 1 1,1 0 0,1 0 1,1 1 0 1 1 1 1 1,1 0 0,1 1 0,1 0 1 1 1 1 1 1,1 0 0,1 1 1,0 1 1 1 1 1 1 1,138 功能表,请思考:,b.为什么图中 6116(1)的地址范围是 0800H-0FFFH?而 6116(2)的地址范围是 1000H-17FFH?,a.为什么图中的8155的各端口地址分别是 0000H、0001H、0005H, 而其内部RAM
27、地址范围是 0000H-00FFH?,a.由图可知 图中8155的CE接138的Y0, 138的G2B、G2A和CBA分别接到8031的P2.7-P2.3,所以要选中8155,即要CE=0,则必有Y0=0, 由Y0=0得到必有G1=1,且G2A=G2B=0,CBA=000, 即8031的P2.7-P2.3=00000时,选中8155, 在此前提下,当8031的P0口输出地址是 00000000-11111111,且IO/ M=0时,选中8155的RAM单元,所以其内部RAM地址范围是 0000H-00FFH 。 当8031的P0口输出地址是 XXXXX000-XXXXX101,且IO/ M=1
28、时,选中8155的各端口,即,P2.7 P2.0 P0.7 P0.0 端口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0000H) 命令口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (0001H) PA口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 (0002H) PB口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 (0003H) PC口 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 (0004H)计数器低 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 (0005H)计数器
29、高,所以8155的各端口地址分别是 0000H、0001H、0005H。,b.同理可得6116(1)和6116(2)的地址范围分别是0800H-0FFFH和1000H-17FFH:,同样分析可知6116(2)的地址范围是1000H-17FFH,7.4.1 显示器及接口 一、 LED结构与原理,D7 D6 D5 D4 D3 D2 D1 D0,如共阳极时,输出1 1 1 1 1 0 0 0 即 F8H时,显示“7”。字型表见表5.9。,a,b,c,d,e,f,g,7.4 键盘及显示接口(见教材p146153),二、LED接口(分静态、动态),.静态LED-亮度大,硬件、软件相对简单,可以 用并行或
30、串行方式。,8031 WR P2.7 P2.6,a,Dp,373,P0,a,Dp,373,1,1,1,1,7-15 并行输出的静态显示电路,.动态LED分时使各数码管轮流点亮,硬件简单。,8155,同 相 驱 动,反 向 驱 动,C5,C4,C3,C2,C1,C0,PB0 PB1 . . . . PB7,PA0 PA1 . . PA5,图 7-17 扫描式显示电路,共阴极数码管,原理: 8155的PB口输出字型码到所有数码管的ag各段(1亮,0暗), PA口输出位选字,选中某一个数码管(因为加了一级反相器,所以1亮,0暗), 使该数码管显示相应的字型,其余数码管不亮。 轮流点亮每个数码管并不断
31、扫描,最后各数码管得到稳定的字型显示。,参考程序,MOD:MOV R0,#CWR ;指向8155命令口,MOV A,#03H ;设命令字,PA口、PB口输出,MOVX R0,A ;初始化8155,DIR:MOV R0,#DIS0 ;指向片内显示缓冲区首地址,MOV R3,#01H ;选中C0数码管0000 0001,ACALL DL1 ;调延时子程序,MOV A,R3 ;,INC DPTR ;指向8155的PB口,LD0:MOV DPTR,#POA ;指向8155的PA口,MOV A,R0 ;取要显示的数,MOVC A,A+PC ;查表求得字型码,MOVX DPTR,A ;送字型码(段值),M
32、OVX DPTR,A ;送位扫描值,ADD A,#0DH ;加上偏移量,INC R0 ;指向下一个要显示的数,MOV A,R3,JB ACC.5,ELD1 ;判断扫描到C5数码管没有,ELD1:RET,MOV R3,A,DSEG:DB 3FH,06H,5BH,4FH,66H,6DH,请思考:LED静态、动态接口分别有什么特点?,RL A ;未扫描到C5,扫描码左移1位,AJMP LD0,DSEG1:DB 7DH,07H,7FH,67H,77H,7CH,DSEG2:DB 39H,5EH,79H,71H,ELD1:MOV R7, #02H ;延时子程序,DL:MOV R6,#0FFH,DL6:DJ
33、NZ R6,DL6,DJNZ R7,DL,RET,7.4.2.键盘及接口,-扫描(判断哪个键按下)、去抖动、判断按键是否抬起(以防止重复进行键处理)。,前沿抖动,后沿抖动,键按下,闭合稳定,键释放,a.键盘接口要解决的问题,一、键盘工作原理,8031,+5V,I/O P1,R8,b.独立式键盘工作原理,请思考:什么是键抖动?为什么键盘要考虑去抖动?一般常用哪两种去抖动的方法?,原理-当任何一个键被按下时,与其相连的输入线被置成 “0”,平时该线为“1”。,键处理程序,ORG 2000H,START:MOV A ,#0FFH ;先置P1口为“1”,MOV P1,A,MOV A,P1 ;输入键状态
34、,JNB ACC.0, P0F ;查询0号键,JNB ACC.1, P1F ;查询1号键,JNB ACC.2, P2F ;查询2号键,JNB ACC.3, P3F ;查询3号键,JNB ACC.4, P4F ;查询4号键,JNB ACC.5, P5F ;查询5号键,JNB ACC.6, P6F ;查询6号键,JNB ACC.7, P7F ;查询7号键,LJMP START,键盘扫描,P0F:LJMP PROM0 ;入口地址表,P1F:LJMP PROM1,P6F:LJMP PROM6,P7F:LJMP PROM7,PROM0:. ;0号键功能程序,PROM7:. ;7号键功能程序,.,LJMP
35、 START ;0号键处理完返回键盘扫描,LJMP START ;7号键处理完返回键盘扫描,.,. .,. .,c.行列式键盘工作原理(见教材p150151),+5V,I/O接口,X3 X2 X1 X0 Y3 Y2 Y1 Y0,5.1K4,特点:节省I/O口线,过程:先判断有无键按下,列线输出0000,然后输入行线状态, 若没有键按下,则行线状态为全1( 1111 ); 若有任一键按下,则行线状态不为全(1111);,再确认哪个键被按下,列线逐行输出0(如1110),然后输入行线状态, 若没有键按下,则行线状态为全1( 1111 ); 若有任一键按下,则行线状态不为全为1(如0111,说明右上
36、角那个键被按下),确定每个键的键值,负逻辑表示-行列线数据直接组合,上例中的各键值分别为:77H、7BH 、7DH 、7EH、,B7H 、BBH 、BDH、BEH、,D7H、DBH、DDH、DEH、,E7H、EBH、EDH、EEH、,负逻辑表示-行列线数据求反组合,上例中的各键值分别为:88H、84H 、82H 、81H、,48H 、44H 、42H、41H、,28H、24H、22H、21H、,18H、14H、12H、11H、,(2)键盘扫描的控制方式,程序控制扫描方式-连续扫描,定时控制扫描方式-定时扫描,中断控制扫描方式-中断后扫描,a.程序控制扫描方式以8155扩展I/O口组成的行列式键
37、盘为例,8155扩展I/O口组成的行列式键盘,8155 PA口地址7F01H PC口地址7F03H,8155:PA口输出列扫描信号 PC口输入行状态信号,.判断有无键按下,PA口输出00H,PC口输入行状态信号,若PC3PC01111,有键按下,.去抖动,延时510ms后再判断有无键按下,.再确认哪个键被按下及其键号,8155的PA口依次输出下列扫描字:,PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0,1 1 1 1 1 1 1 0 FEH,1 1 1 1 1 1 0 1 FDH,0 1 1 1 1 1 1 1 7FH,8155的PC口输入行状态,可能为下列之一:,PC5 PC
38、4 PC3 PC2 PC1 PC0, 1 1 1 0 EH, 1 1 0 1 DH, 1 0 1 1 BH, 0 1 1 1 7H,则每个键的键值(列行组合),FE E 、FD E 、 FB E 、 F7 E 、EF E、DE E、BF E、 7F E,FE D 、FD D 、 FB D 、 F7 D 、EF D、DE D、BF D、 7F D,FE B 、FD B 、 FB B 、 F7 B 、EF B、DE B、BF B、 7F B,FE 7 、 FD 7 、 FB 7 、 F7 7、 EF 7、 DE 7、 BF 7、 7F 7,每个键的键号(自己安排),N=行首键号+列号,.判断按键是
39、否抬起(以防止重复进行键处理),等待键释放后再进行进一步处理。,键扫描程序框图,入口,有键按下?,延时12ms,有键按下?,N,Y,N,Y,键号入栈保存,按键抬起?,N,Y,键号送A,返回,ORG 1000H,KEY1:ACALL KS1 ;调用判断有无键按下子程序,JNZ LK1 ;有键按下,转去抖动,AJMP KEY1 ;无键按下,返回,LK1:ACALL TM12S ;延时12ms,ACALL KS1 ;再查有无键按下,JNZ LK2 ;确实有键按下,逐行扫描,确定具体键,AJMP KEY1 ;无键按下,返回,LK2:MOV R2,#0FEH ;首列扫描字送R2,MOV R4,#00H
40、;首列号R4,LK4:MOV DPTR,#7F01H ;首列扫描字送8155的PA口,MOV A,R2 ;第一列扫描,MOVX DPTR,A ;使第i 列为0(R2中Di位为0),INC DPTR INC DPTR ;指向8155的PC口,MOVX A,DPTR ;读入行状态,JB ACC.0, LONE ;0行无键按下,转查1行,LONE:JB ACC.1, LTWO ;1行无键按下,转查2行,MOV A,#00H ;0行有键按下,行首键号#00H送A,AJMP LKP ;求键号,LTWO:JB ACC.2, LTHR ;2行无键按下,转查3行,MOV A,#08H ;1行有键按下,行首键号
41、#08H送A,AJMP LKP ;求键号,LTHR:JB ACC.3, NEXT ;3行无键按下,转查下一列,MOV A,#10H ;2行有键按下,行首键号#10H送A,AJMP LKP ;求键号,MOV A,#18H ;3行有键按下,行首键号#18H送A,LKP: ADD A,R4 ;求键号=行首键号+列号,PUSH ACC ;键号入栈,LK3:ACALL KS1 ;等待键释放,JNZ LK3 ;未释放,继续等待,POP ACC ;已释放,键号送A,RET,NEXT:INC R4 ;指向下一列,列号加1,MOV A, R2 ;判断8列扫描完没有,JNB ACC.7,KND ;8列扫描完,返回
42、,RL A ;没扫描完,置下一列扫描字,MOV R2, A ;扫描字送A,AJMP LK4 ;继续下列扫描,KND:AJMP KEY1 ;8列扫描完,返回,KS1:MOV DPTR, #7F01H ;查有无键按下子程序,MOV A,#00H,MOVX DPTR,A ;8155 PA口输出全扫描字#00H,INC DPTR INC DPTR ;指向8155的PC口,MOVX A,DPTR ;读入行状态,若有键按下,则A0FFH,CPL A ;改成正逻辑,若有键按下,则A00H,ANL A ,#0FH ;屏蔽高四位,RET ;子程序返回,当有键按下时,AA00H,T12sm:MOV R7, #18
43、H ;12sm延时子程序,TM:MOV R6,#0FFH,TM6:DJNZ R6, TM6,DJNZ R7,TM,RET,;td=1+(1+255*2+2)*24+2*MC,d.键操作及功能处理,求出键号后要进行键处理:,先判断是何种键,然后: 对数字键-送显示缓冲区显示; 对功能键-执行相应的功能键处理程序。,设图5.36中,015号键为数字键,即键号10H的是数字键;1631号键为功能键,即键号10H的是功能键,其功能键处理程序入口地址分别为:AAA、BBB、CCC、PPP。,则转入功能键处理程序清单如下:,ORG 8000H,KEYADR:MOV A ,BUFF ;键号送A,CLR C,
44、SUBB A,#10H ;Y与10H比较,JC DIGPRO ;10H,数字键,转,AJMP A+DPTR,RL A ;使键值为0、2、4、6、偶数,KEYTBL:MOV DPTR,#JMPTBL,JMPTBL:AJMP AAA ;2 字节指令散转到16个功能键处理,AJMP BBB ; 程序入口,AJMP CCC,AJMP DDD,AJMP EEE,AJMP FFF,AJMP GGG,AJMP HHH,AJMP III,AJMP JJJ,AJMP KKK,AJMP LLL,AJMP MMM,AJMP NNN,AJMP OOO,AJMP PPP,D/A电路一般是作成集成电路芯片,使用时要注意2
45、个问题:一个是转换时间及转换精度;另一个是转换出来的模拟量的形式是什么(电流量还是电压量)。,8.1 D/A转换器及其与单片机接口,-D/A转换即是将数字量转换成相应的模拟量,常用于控制系统中。如单片机输出不同的数字量经D/A转换后加给直流电机,即可控制电机的转速。,第八章 MCS-51单片机的测控接口,本章主要介绍构成单片机测控系统的重要内容,即模拟量和开关量的输入、输出接口技术。,8.1.1 D/A转换原理-倒T型电阻网络D/A转换电路原理,图8-2(a) 倒T型电阻网络D/A转换原理图,R,2R,2R,2R,2R,R,R,R,R,D0,D1,D2,D3,节点3,节点2,节点1,节点0,I
46、,VREF,+,-,VOUT,I3,I2,I1,I0,图中 D3 D2 D1 D0是4位二进制数字量输入,当D3 D2 D1 D0中的某一位状态为1时,图中开关打向右方,为0 时,开关打向左方。,RF,IOUT1,IOUT2,VREF为基准电压输入, Vout是电压模拟量输出。 由运算放大器概念可知:,Vout=-RFIout1,Iout1,是开关打向右端的各支路电流,Ii,之和,实际上,(其中 就是数字量D3 D2 D1 D0的某一位),Di,图8.2 (b) 等效电路图,R,2R,2R,2R,2R,R,R,R,R,D0,D1,D2,D3,节点3,节点2,节点1,节点0,I,VREF,I3,
47、I2,I1,I0,由等效电路图5.6(b)可知,各支路电流分别为:,上式右边,表示的就是数字量D3 D2 D1 D0的值(按权展开),而左边是模拟量输出值,可见模拟量输出正比于数字量输入,即实现了D/A转换。,请思考:倒T型电阻网络相对于权电阻网络有什么优势?,8.1.2 DAC0832芯片及其与单片机接口,一.DAC0832的引脚及结构,0832-8位D/A,0832引脚功能,IOUT2,电流输出2,CS,选片,WR1,输入写,DI0DI7,数据线,CS WR1 AGND DI3 DI2 DI1 DI0 VREF RFR DGND,Vcc ILE WR2 XFER DI4 DI5 DI6 D
48、I7 IOUT2 IOUT1,DAC 0832,DAC写,WR2,IOUT1,电流输出1,数据锁存,ILE,数据传送,XFER,图 8-4 DAC0832的引脚分布图,输入 寄存器,DAC 寄存器,D/A 转换器,ILE,CS,WR1,WR2,XFER,IOUT1,IOUT2,DI7DI0,RFR,VREF,图8-3 DAC0832的逻辑结构,二、DAC0832与单片机的接口,单缓冲方式接口电路 -将两级寄存器的控制信号并接在一起,相当于控制一级寄存器(线选译码地址7FFFH)。,8031,WR,P2.7,P0,DI7DI0,CS,XFER,WR1,WR2,DAC0832,IOUT2,IOUT
49、1,+,-,RFR,图8-5 DAC0832单缓冲方式接口电路,ILE,+5V,采用单缓冲方式输出锯齿波、矩形波、三角波、梯形波等的D/A转换程序(见教材p103105),锯齿波,ORG 2000H,START:MOV DPTR,#7FFFH ;选中0832,MOV A,#00H ;D/A数据初值,LP: MOVX DPTR, A ;转换,INC A ;修改D/A数据,SJMP LP ;循环,输出连续模拟量,A=00,A=0FFH,三角波,ORG 2000H,START:MOV DPTR,#00FEH ;选中0832,MOV A,#00H ;D/A数据初值,UP: MOVX DPTR, A ;
50、转换,INC A ;修改D/A数据(上升),JNZ UP ;未上升到最大值,继续,DOWN:DEC A ;否则,修改D/A数据(下降),MOVX DPTR, A ;转换,JNZ DOWN ;未下降到最小值,继续,SJMP UP ;一个周期结束,继续,双缓冲方式-略,-A/D转换即是将模拟量信号转换成数字量信号,常用于数据采集系统,外界的模拟信号经A/D转换后,读入单片机内部以便进行处理。,8.2 A/D转换器及其与单片机接口,常见A/D转换电路有双积分式和逐次逼近式。A/D转换的主要指标是精度(位数)、转换时间。,先假设一个数字量,并将其进行D/A转换,然后将得到的模拟量与输入模拟量进行比较,
51、若前者大于后者,说明所设数字量偏大,将其减小后重复上述过程;若前者小于后者,则说明所设数字量偏小,将其增大后重复上述过程如此反复调整所设数字量,使得其D/A转换后的值逐渐逼近输入模拟量,此时所设数字量即为转换好的数字量。,8.2.1 A/D转换原理-逐次逼近式A/D转换原理,一、逐次逼近A/D转换的基本原理,比较器,D/A转换器,时序与控制 逻辑电路,输 出 缓 冲 器,模拟量输入,VX,VN,时钟,启动,EOC,OE,N位数 字量输出,N位寄存器,图5.16 逐次逼近A/D转换器原理图,转换过程:,模拟量VX送到比较器后,启动A/D转换,先设N位寄存器的最高位(DN-1)为1,其余位为0,进行D/A转换,得到的模拟量VN与输入VX比较,,VN VX,,再设次高位(DN-2)为1,继续,若,若,VN VX,,先清零DN-1 ,再设次高位(DN-2)为1,继续,如此反复,经过N次比较后,最后一位D0得到确定,此时,N位寄存器的内容就是转换好的数字量,而EOC输出转换结束信号,在输出允许OE(高电平)有效时,数字量经输出缓冲器读出。,8.2.2 ADC0809芯片与单片机的接口,一、ADC0809的引脚及内部结构,0809-8位A/D,0809引脚功能,VR,参考电源,CL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人事专员招聘与选拔流程模拟测试
- 2026年大学英语六级写作高分技巧模拟试题
- 2026年建筑行业行测资料分析建筑材料价格地域性差异专项练习
- 2026年市场调查与分析专业试题集市场调研方法与数据分析题目
- 2026年数据库管理与应用系统操作题集
- 2026年智慧医疗健康服务体系建设考核题
- 2026年计算机等级考试编程语言题库
- 2026年职场英语实战应用题库
- 2024年郴州市桂阳县电视台招聘考试真题
- 2026年智能手环健康监测系统准确性功能测试题
- 中国临床肿瘤学会(CSCO)结直肠癌诊疗指南2024
- 2025版《煤矿安全规程》宣贯解读课件(电气、监控与通信)
- 2025厦门大学鹭江创新实验室未来枢纽海洋科技产业合作经理招聘1人备考考试题库及答案解析
- 2025年老年心理支持课件
- 泵站运行维护方案
- g120变频器培训课件
- 土方开挖专项施工监测与预警方案
- 洒水车工程合同协议书
- 施工单位春节安全培训课件
- 国有企业外部董事个人履职报告
- 物业石材养护合同
评论
0/150
提交评论