第 5章 MCS–51单片机的接口与应用第 9章 MCS–51的接口技术
9.1 概述
9.2 键盘接口
9.3 单片机与 LED显示器接口技术
9.5 单片机与 A/D,D/A转换器接口
9.6 单片机的功率开关接口电路
9.7 步进电机接口电路第 5章 MCS–51单片机的接口与应用
9.1 概述
MCS—51单片机系统的 I/O口和外部
RAM统一编址。
进行 I/O口扩展时,
应全面考虑 I/O口和外部数据存储器的地址分配,避免地址重叠。
一个外部 I/O口往往占有多个地址。
第 5章 MCS–51单片机的接口与应用
9.1.2 单片机与外设的数据交换方式
单片机与外设的数据交换方式通常有三种:查询方式、延时等待方式和中断方式。
( 1)查询方式
1) 发启动外设的信号;
2) 读入外设的状态或标志;
3) 判断其是否已做好数据交换的准备;
4) 如外设未做好准备,则一直查询;
5) 外设准备好了,用输入 /输出指令进行数据交换。
查询方式的优点是能够自动适配外设的工作速度,缺点是花费 CPU时间较多。在 CPU不太忙的情况下可采用此方式。
第 5章 MCS–51单片机的接口与应用
( 2)延时等待方式
1) 发启动外设的信号;
2) 延时等待一段时间;
3) 用输入 /输出指令进行数据交换。
延时等待方式的特点是将查询方式下循环判断的时间用软件延时来等待,CPU可用这段时间执行别的程序。
但是,必须事先计算好外设从得到启动信号到做好数据交换的时间。
第 5章 MCS–51单片机的接口与应用
( 3)中断方式
1) 设置中断,开中断;
2) 当外设需要与单片机交换数据时,发中断请求;
3) 单片机响应中断申请,执行中断服务程序,与外设交换数据。
中断方式下,可充分利用单片机的工作效率并适配外设的工作速度。因此,中断方式是应用最多的一种 I/O
数据交换方式。但中断方式需要的硬件资源较多。
第 5章 MCS–51单片机的接口与应用
9.1.3 I/O指令与编程方法由于将 I/O口和外部 RAM统一编址,因此使用外部 RAM
的访问指令对 I/O口进行数据传送。
MOVX A,@Ri ;输入
MOVX @Ri,A ;输出
MOVX A,@DPTR ;输入
MOVX @DPTR,A ;输出第 5章 MCS–51单片机的接口与应用
9.1.3 I/O指令与编程方法例 9-1 设单片机需要将端口地址为 7CF7H中的数据 0EDH读入累加器
A中,编写程序。
MOV P2,#7CH
MOV R0,#0F7H
MOVX A,@R0
例 9-2 设单片机需要将数据 F4H输出到端口地址为 7E7FH的 I/O口,
编写程序。
MOV DPTR,#7E7FH
MOV A,#0F4H
MOVX @DPTR,A ;输出第 5章 MCS–51单片机的接口与应用
9.2 键盘接口键盘是微机系统中最常用的人机对话输入设备。键盘有两种基本类型,编码键盘和非编码键盘 。
编码键盘本身除了按键以外,还包括产生键码的硬件电路。这种键盘使用十分方便,但价格较高,一般的单片机应用系统较少采用。
非编码键盘是靠软件识别键盘上的闭合键,由此计算出键码。非编码键盘几乎不需要附加的硬件逻辑。
非编码键盘又分为独立式和行列式键盘。
第 5章 MCS–51单片机的接口与应用独立式按键
1.独立式按键接口结构独立式按键的接口电路示意图
(a) 中断方式; (b) 查询方式第 5章 MCS–51单片机的接口与应用消除键抖动键闭合和释放过程呈现一串抖动脉冲波,其时间由按键的机械特性有关,一般为
5~10毫秒;键闭合稳定期一般为几百毫秒到几秒。为确保 CPU对键的一次闭合仅做一次处理,必须去除抖动。
硬件方法是加 RS触发器消抖动电路,从根本避免抖动的产生。
软件方法是通过延时的方法躲过抖动,待信号稳定之后,
在进行状态的输入。
第 5章 MCS–51单片机的接口与应用图 消除键抖动电路第 5章 MCS–51单片机的接口与应用
2.独立式按键的软件结构下面是查询方式的键盘程序。 K0~K7为功能程序入口地址标号,其地址间隔应能容纳 JMP指令字节,PROM0~PROM7分别为每个按键的功能程序。
设 I/O为 P1口。 START,MOV A,#0FFH ;
MOV P1,A ;置 P1口为输入状态
PAN,MOV A,P1 ;键状态输入
CPL A
JZ PAN
ACALL DEALAY10MS
MOV A,P1 ;键状态输入
CPL A
JZ PAN
第 5章 MCS–51单片机的接口与应用
JNB ACC.0,K0 ;检测 0号键是否按下,按下转
JNB ACC.1,K1 ;检测 1号键是否按下,按下转
JNB ACC.2,K2 ;检测 2号键是否按下,按下转
JNB ACC.3,K3 ;检测 3号键是否按下,按下转
JNB ACC.4,K4 ;检测 4号键是否按下,按下转
JNB ACC.5,K5 ;检测 5号键是否按下,按下转
JNB ACC.6,K6 ;检测 6号键是否按下,按下转
JNB ACC.7,K7 ;检测 7号键是否按下,按下转
JMP START ;无键按下返回,再顺次检测
K0,AJMP PROM0
K1,AJMP PROM1
K7,AJIMP PROM7;入口地址表…
第 5章 MCS–51单片机的接口与应用
PROM0,……………………… ; 0号键功能程序
………………………
JMP START ; 0号键功能程序执行完返回
PROM1,……………………… ; 0号键功能程序
………………………
JMP START ; 1号键功能程序执行完返回
……………………… ; 7号键功能程序
PROM7,………………………
JMP START ; 7号键功能程序执行完返回
…
第 5章 MCS–51单片机的接口与应用行列式键盘第 5章 MCS–51单片机的接口与应用键盘识别过程:
(1)测试是否有键按下单片机 I/O口向所有列线( D0~D3)输出低电平,即向列口写入 00H;然后输入各行线状态( D4~D7),即读入输入口的字;比较:若行线状态全为高电平,则表明无键按下,若行线状态中有低电平,则表明有键按下。
( 2)消抖动
( 3)扫描键盘以确定被按键的物理位置第 5章 MCS–51单片机的接口与应用键盘识别过程:
(4)计算键码根据被按下键的行线号和列线号,按照一定的算法,可以求出被按下键的键码。键码实际上是键在矩阵中按从 左到右、从上到下 的序号。按这种编排规律,本键盘 32个键的键码为 00H~1FH。各行的首键号是 00H、
08H,10H,18H,如列线按 0~7编号,则键码的计算公式为:
键码 =首键号 +列号第 5章 MCS–51单片机的接口与应用图 行列式键盘的编码与键值
(a) 二进制组合编码; (b) 顺序排列编码第 5章 MCS–51单片机的接口与应用键盘识别过程:
(5)等待键释放计算完键码后,再以延时和扫描的方法等待和判定键释放。键释放之后就可以根据得到的键码,转到相应的键处理子程序,进行数据的输入或命令的处理。
第 5章 MCS–51单片机的接口与应用键盘扫描流程:
第 5章 MCS–51单片机的接口与应用键盘扫描控制方式:
在系统运行过程中,为了及时响应键盘操作,一般情况下在 10ms左右就要调用一次键盘扫描子程序、对键盘进行一次扫描。键盘扫描有三种控制方式:
1)程序控制扫描方式:主程序中直接调用键盘扫描子程序。这种方式只有在 CPU空闲时才能调用。
2)定时扫描方式:利用内部的定时器,产生 10ms的定时中断,CPU
响应中断对键盘进行扫描。这种方式 CPU有可能进行的是空扫描。
3)中断扫描方式,CPU平时不扫描键盘,只要有键盘闭合时就产生中断请求,CPU即可进行键盘扫描。这种方式可提高 CPU的效率,但要增加硬件电路。
第 5章 MCS–51单片机的接口与应用
9.2.2 键盘接口及键盘扫描子程序设计行列式键盘又叫矩阵式键盘。用 I/O口线组成行、列结构,
按键设置在行列的交点上。例如 4× 4的行列结构可组成 16个键的键盘。因此,在按键数量较多时,可以节省 I/O口线 。
行列式键盘的接口方法有许多,例如直接接口于单片机的
I/O口上;利用扩展的并行 I/O接口;用串行口扩展并行 I/O口接口;利用一种可编程的键盘、显示接口芯片 8279进行接口等。
其中,利用扩展的并行 I/O接口方法方便灵活,在单片机应用系统中比较常用。
第 5章 MCS–51单片机的接口与应用图 5.6 8155扩展 I/O口组成的行列式键盘第 5章 MCS–51单片机的接口与应用假定 PA口地址为 7F01H,PC口地址为 7F03H,键盘扫描程序 KEY扫描键盘时分两步进行。
1)进行粗扫描,调用 KS1子程序,判断是否有键按下:如果没有键按下,则回主程序;如果有键按下,则进入第二步。
粗扫描的实现过程是 PA口输出全 0信号,然后读回 PC口的低 4位,取反后进行判断:如果为 0则表示没有键按下,如果不为 0则表示有键按下。主要通过调用两个子程序实现:
KS1判断子程序:用于判断键盘上是否有键闭和;
T12延时子程序:执行时间为 12s。
2)进行键盘细扫描,找出按下的是哪一个键,并求出相应的键码。
这部分包括三个程序段:逐行扫描程序段 LK2、下一列扫描程序段 NEXT、求键码子程序段 LKP。
第 5章 MCS–51单片机的接口与应用第 5章 MCS–51单片机的接口与应用;键盘粗扫描程序段:
KEY1,ACALL KS1 ;调用判断有无键按下子程序
JNZ LK1 ;有键按下时,(A)≠ 0转消抖延时
AJMP KEY1 ;无键按下返回
LK1,ACALL TM12S ;调 12 ms延时子程序
ACALL KS1 ;查有无键按下,若有则真有键按下
JNZ LK2 ;键 (A)≠ 0逐列扫描
AJMP KEY1 ;不是真有键按下,返回第 5章 MCS–51单片机的接口与应用;逐行扫描程序段:
LK2; MOV R2,#0FEH ;初始列扫描字 (0列 )送入 R2
MOV R4,#00H ;初始列 (0列 )号送入 R4
LK4,MOV DPTR,#7F01H ; DPTR指向 8155PA口
MOV A,R2 ;列扫描字送至 8155PA口
MOVX @DPTR,A
INC DPTR ; DPTR指向 8155PC口
INC DPTR
MOVX A,@DPTR ;从 8155 PC口读入行状态
JB ACC.0,LONE ;查第 0行无键按下,转查第 1行
MOV A,#00H ;第 0行有键按下,行首键码 #00H→A
AJMP LKP ;转求键码
LONE,JB ACC.1,LTWO ;查第 1行无键按下,转查第 2行
MOV A,#08H ;第 1行有键按下,行首键码 #08H→A
AJMP LKP ;转求键码第 5章 MCS–51单片机的接口与应用
LTWO,JB ACC.2,LTHR ;查第 2行无键按下,转查第 3行
MOV A,#10H ;第 2行有键按下,行首键码 #10H→A
AJMP LKP ;转求键码
LTHR,JB ACC.3,NEXT ;查第 3行无键按下,转该查下一列
MOV A,#18H ;第 3行有键按下,行首键码 #18H→A;求键码子程序段:
LKP,ADD A,R4 ;求键码,键码 =行首键码 +列号
PUSH ACC ;键码进栈保护
LK3,ACALL KS1 ;等待键释放
JNZ LK3 ;键未释放,等待
POP ACC ;键释放,键码 → A
RET ;键扫描结束,出口状态 (A)=键码第 5章 MCS–51单片机的接口与应用;下一列扫描程序段:
NEXT,INC R4 ;准备扫描下一列,列号加 1
MOV A,R2 ;取列号送累加器 A
JNB ACC.7,KND ;判断 8列扫描否?扫描完返回
RL A ;扫描字左移一位,变为下一列扫描字
MOV R2,A ;扫描字送入 R2
AJMP LK4 ;转下一列扫描
KND,AJMP KEY1
第 5章 MCS–51单片机的接口与应用;判断是否有键按下子程序
KS1,MOV DPTR,#7F01H ; DPTR指向 8155PA口
MOV A,#00H ;全扫描字 → A
MOVX @DPTR,A ;全扫描字送往 8155PA口
INC DPTR ; DPTR指向 8155PC口
INC DPTR
MOVX A,@DPTR ;读入 PC口行状态
CPL A ;变正逻辑,以高电平表示有键按下
ANL A,#0FH ;屏蔽高 4位,只保留低 4位行线值
RET ;出口状态,(A)≠0时有键按下第 5章 MCS–51单片机的接口与应用;延时 12ms子程序
TM12ms,MOV R7,#18H ;延时 12 ms子程序
TM,MOV R6,#0FFH
TM6,DJNZ R6,TM6
DJNZ R7,TM
RET
第 5章 MCS–51单片机的接口与应用
9.3 单片机与 LED显示器接口技术
9.3.1 LED显示器结构与原理
图 9.8 七段显示块管脚与结构图第 5章 MCS–51单片机的接口与应用表 9-2 七段 LED的段选码
显示字符 共阴极段选码 共阳极段选码 显示字符 共阴极段选码 共阳极段选码
0 3FH C0H C 39H C6H
1 06H F9H D 5EH A1H
2 5BH A4H E 79H 86H
3 4FH B0H F 71H 8EH
4 66H 99H P 73H 8CH
5 6DH 92H U 3EH C1H
6 7DH 82H Γ 31H CEH
7 07H F8H y 6EH 91H
8 7FH 80H 8,FFH 00H
9 6FH 90H,灭” 00H FFH
A 77H 88H
B 7CH 83H
第 5章 MCS–51单片机的接口与应用
9.3.2 LED显示器接口及显示程序图 N位 LED显示器第 5章 MCS–51单片机的接口与应用
1,LED静态显示方式
LED工作在静态显示方式下,共阴极接地或共阳极接 +5 V;每一位的段选线 (a~g,dp)与一个 8位并行 I/O口相连,如图所示。该图表示了一个 4位静态 LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个 8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。
N位静态显示器要求有 N× 8根 I/O口线,占用 I/O口线较多。故在位数较多时往往采用动态显示方式。
静态显示的亮度大,软件较为简单,不占用 CPU时间,但由于每位 LED都需要一个并行接口输出字形代码,故占用 I/O资源较多。
第 5章 MCS–51单片机的接口与应用例 9-4 写出显示 8031片内 RAM中以 30H为首地址的八个数字的程序。
第 5章 MCS–51单片机的接口与应用DIR,PUSH ACC
PUSH DPH
PUSH DPL
MOV R2,#08H
MOV R0,#30H
DL0,MOV A,@R0
MOV DPTR,#TAB
MOV A,@A+DPTR
MOV SBUF,A
DL1,JNB TI,DL1
CLR TI
INC R0
DJNZ R2,DL0
第 5章 MCS–51单片机的接口与应用
POP DPL
POP DPH
POP ACC
RET
TAB,DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H
DB 8EH
第 5章 MCS–51单片机的接口与应用
2,LED动态显示方式动态显示接口是对多位 LED显示器采用动态扫描的方法进行显示,即逐个循环的点亮各位显示器。这样,虽然在任一时刻只有一位显示器被点亮,但由于人眼的视觉残留效应,实际上看起来与全部显示器持续点亮的效果一样。动态显示器可简化电路,常用在智能仪表中。
动态显示除了要给显示器提供字形代码外,还要对显示器提供位码。因此多位 LED动态显示接口电路需要有两个输出口,一个用于输出 8位字形码,另一个用于输出位控码,位控码的位数等于 LED显示器的位数。
第 5章 MCS–51单片机的接口与应用
2,LED动态显示方式图 8位 LED动态显示器电路第 5章 MCS–51单片机的接口与应用例 9-5 写出显示缓冲区 80H~85H单元数据块的程序。
假设 8155命令口地址为 7F00H,LED为共阴接法,PA口输出字型码信息,由于加反相器,所以字型码表设置为共阳码。 PC口输出位选信息,位选信号为,0”电平有效,
由于加了反相器,所以 1为选中,且每次只有一个 1。
第 5章 MCS–51单片机的接口与应用
MOD,MOV A,#00000101B ; 8155初始化
MOV DPTR,#7F00H ;使 DPTR指向 8155控制寄存器端口
MOVX @DPTR,A
MOV R0,#80H ;动态显示初始化,使 R0指向缓冲区首址
MOV R6,#20H ;首位位选字送 R6
MOV R7,#00H
DIR1,MOV A,R6 ;
MOV DPTR,#7F03H ;使 DPTR指向 PC口
MOVX @DPTR,A ;选通显示器低位 (最右端一位 )
第 5章 MCS–51单片机的接口与应用
MOVX A,@R0 ;读要显示数
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查表取得段选码
MOV DPTR,#7F01H
MOVX @DPTR,A ;段选码从 PA口输出
HERE:DJNZ R7,$ ;调用 1 ms延时子程序
INC R0 ;指向缓冲区下一单元
MOV A,R6 ;位选码送累加器 A
JB ACC.0,ENDIR ;判断 8位是否显示完毕,显示完返回
RRC A ;未显示完,把位选字变为下一位选字
MOV R6,A ;修改后的位选字送 R3
AJMP DIR1 ;循环实现按位序依次显示
ENDIR,RET
第 5章 MCS–51单片机的接口与应用
TAB,DB 0CH,0F9H,0A4H; 0B0H,99H ;段码表
DB 92H,82H,0F8H,80H,90H
第 5章 MCS–51单片机的接口与应用
9.4 A/D转换器接口
9.4.1 A/D转换器概述在设计 A/D转换器与单片机接口之前,往往要根据 A/D转换器的技术指标选择 A/D转换器。为此,先介绍一下 A/D转换器的主要技术指标。
量化间隔和量化误差 是 A/D转换器的主要技术指标之一。量化间隔可用下式表示。
其中 n为 A/D转换器的位数 。
nn 212
满量程输入电压满量程输入电压?
第 5章 MCS–51单片机的接口与应用量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。
22
量化间隔绝对误差
%1002 1 1n相对误差
A/D转换器芯片种类很多,按其转换原理可分为 逐次比较式、双重积分式、计数式和并行式 A/D转换器; 按其分辨率可分为 8~16位的 A/D转换器芯片。目前最常用的是逐次逼近式和双重积分式。
第 5章 MCS–51单片机的接口与应用逐次比较式,转换速度快,最常用。
双重积分式:转换精度高,速度慢。
计数式:速度慢,硬件需要元件精度不高。
并行式 A/D转换器:转换速度最快,但由于硬件要求高,不易实行。
第 5章 MCS–51单片机的接口与应用逐次逼近式转换器的常用产品有 ADC0801~ADC0805型 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启动方式、转换结束信号处理方法以及时钟的连接等。
第 5章 MCS–51单片机的接口与应用
A/D转换器 数字量输出线 与单片机的连接方法与其内部结构有关。对于内部带有三态锁存数据输出缓冲器的 ADC(如 ADC0809,AD574等 ),可直接与单片机相连。对于内部不带锁存器 ADC,一般通过锁存器或并行 I/O接口与单片机相连。在某些情况下,为了增强控制功能,那些带有三态锁存数据输出缓冲器的 ADC也常采用 I/O接口连接。
还有,随着位数的不同,ADC与单片机的连接方法也不同。对于 8位 ADC,其数字输出线可与 8位单片机数据线对应相接。对于 8位以上的 ADC,与 8位单片机相接就不那么简单了,此时必须增加读取控制逻辑,把 8位以上的数据分两次或多次读取。为了便于连接,一些 ADC产品内部已带有读取控制逻辑,而对于内部不包含读取控制逻辑的 ADC,在和 8位单片机连接时,应增设三态缓冲器对转换后的数据进行锁存。
第 5章 MCS–51单片机的接口与应用一个 ADC开始转换时,必须加一个 启动转换信号,这一启动信号要由单片机提供。不同型号的 ADC,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种。对于脉冲启动型 ADC,只要给其启动控制端上加一个符合要求的脉冲信号即可,如 ADC0809,ADC574等。通常用 WR和地址译码器的输出经一定的逻辑电路进行控制。对于电平启动型 ADC,当把符合要求的电平加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,
一般采用 D触发器、锁存器或并行 I/O接口等来实现。 AD570、
AD571等都属于电平启动型 ADC。
第 5章 MCS–51单片机的接口与应用当 ADC转换结束时,ADC输出一个 转换结束标志信号,通知单片机读取转换结果。单片机检查判断 A/D转换结束的方法一般有中断和查询两种。对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的 I/O接口的相应引脚,作为中断请求信号;对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位 I/O口线上,作为查询状态信号。
A/D转换器的另一个重要连接信号是 时钟,其频率是决定芯片转换速度的基准。整个 A/D转换过程都是在时钟的作用下完成的。 A/D转换时钟的提供方法有两种:一种是由芯片内部提供 (如
AD574),一般不许外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到
A/D转换器的相应时钟端。
第 5章 MCS–51单片机的接口与应用9.4.2 A/D转换器 ADC0809与单片机的接口
1,ADC0809芯片简介第 5章 MCS–51单片机的接口与应用表 9.10 ADC0809通道地址选择表
ADDC ADDB ADDA 选通的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3
1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7
第 5章 MCS–51单片机的接口与应用图 5.17 ADC0809转换工作时序第 5章 MCS–51单片机的接口与应用
2,ADC0809与单片机接口第 5章 MCS–51单片机的接口与应用转换结果数据的传送方式:
定时传送方式,根据转换时间在转换开始后延时一段时间,读取转换结果。
查询传送方式,查询转换完成信号,在转换完成后进行数据传送。
中断方式,把表明转换完成的状态信号( EOC)作为中断请求信号,以中断方式进行数据传送。
图 9-16中 ADC0809的地址码为,0FEF8H~0FEFFH.
第 5章 MCS–51单片机的接口与应用例 9-16.欲对 IN1通道进行 A/D转换,采用的是定时方式进行转换结果数据的传送。
MAIN,MOV DPTR,#0FEF9H
MOV A,#00H
MOVX @DPTR,A
MOV R7,#50H
DJNZ R7,$
MOVX A,@DPTR
RET
第 5章 MCS–51单片机的接口与应用例 9-7.设图 9.16接口电路用于一个 8路模拟量输入的巡回检测系统,
使用中断方式采样数据,把采样转换所得的数字量按序存于片内 RAM的 30H~37H单元中。采样完一遍后停止采集。
ORG 2000H
MAIN,MOV R0,#30H ;设立数据存储区指针
MOV R2,#08H ;设置 8路采样计数值
SETB IT1 ;设置外部中断 0为边沿触发方式
SETB EA ; CPU开放中断
SETB EX1 ;允许外部中断 0中断
MOV DPTR,#FEF8H ;送入口地址并指向 IN0
MOVX @DPTR,A ;启动 A/D转换,A的值无意义
HERE,SJMP HERE ;等待中断第 5章 MCS–51单片机的接口与应用
ORG 2100H
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 ;中断返回第 5章 MCS–51单片机的接口与应用
9.5 D/A转换器接口
9.5.1 D/A 转换器概述按转换数字量的位数可分为 8位,10位,12位等;按数据传送方式分为并行和串行两种;按转换输出的模拟量分为电压和电流输出型。
在设计 D/A转换器与单片机接口之前,一般要根据 D/A转换器的技术指标选择 D/A转换器芯片。
(1) 分辨率 。分辨率是 D/A转换器对输入量变化敏感程度的描述。 D/A转换器的分辨率定义为:当输入数字量发生单位数码变化时,即 LSB位产生一次变化时所对应输出模拟量的变化量。对于线性 D/A转换器来说,其分辨率 Δ
与输入数字量输出的位数 n呈现下列关系
n2
模拟量输出的满量程值
第 5章 MCS–51单片机的接口与应用
(2) 建立时间 。建立时间是描述 D/A转换速率快慢的一个重要参数。一般所指的建立时间是输入数字量变化后,模拟输出量达到终值误差 ± LSB/2(最低有效位 )时所经历的时间。根据建立时间的长短,把 D/A转换器分成以下几挡:
超高速 < 100 ns
较高速 100 ns~1 μs
高 速 1~10 μs
中 速 10~100 μs
低 速 ≥100 μs
第 5章 MCS–51单片机的接口与应用就 数据线 来说,D/A转换器与单片机的接口要考虑到两个问题:一是位数,当高于 8位的 D/A转换器与 8位数据总线的
MCS-51单片机接口时,MCS-51单片机的数据必须分时输出,
这时必须考虑数据分时传送的格式和输出电压的 "毛刺 "问题;
二是 D/A转换器的内部结构,当 D/A转换器内部没有输入锁存器时,必须在单片机与 D/A转换器之间增设锁存器或 I/O接口。
最常用、也是最简单的连接是 8位带锁存器的 D/A转换器和 8位单片机的接口,这时只要将单片机的数据总线直接和 D/A转换器的 8位数据输入端一一对应连接即可。
第 5章 MCS–51单片机的接口与应用就 地址线 来说,一般的 D/A转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或部分译码,经译码器的输出控制片选信号,也可由某一位 I/O线来控制片选信号。也有少数 D/A转换器有少量的地址线,用于选中片内独立的寄存器或选择输出通道 (对于多通道 D/A转换器 ),这时单片机的地址线与 D/A转换器的地址线对应连接。
就 控制线 来说,D/A转换器主要有片选信号、写信号及启动转换信号等,一般由单片机的有关引脚或译码器提供。一般来说,写信号多由单片机的 ---WR信号控制;启动信号常为片选信号和写信号的合成。
第 5章 MCS–51单片机的接口与应用9.5.2 8位 D/A转换器与单片机的接口
1,DAC0832的结构与引脚功能第 5章 MCS–51单片机的接口与应用
2,DAC0832 D/A转换器与单片机接口根据对 DAC0832的输入寄存器和 DAC寄存器的不同控制方式,可有三种工作方式:
( 1)直通方式:使 WR1*=WR2*=0,数据可以经输入端经两个寄存器直接进入 D/A转换器。
( 2)单缓冲方式:两个寄存器之一处于直通,
WR1*=0或 WR2*=0,另一个寄存器处于受控状态。
( 3)双缓冲方式:两个寄存器均处于受控状态。
第 5章 MCS–51单片机的接口与应用
2,DAC0832 D/A转换器与单片机接口第 5章 MCS–51单片机的接口与应用设分配给 DAC0832的地址为 7FFFH(P2.7=0),则执行下列三条指令就可以将一个数字量转换为模拟量:
MOV DPTR,#7FFFH ;端口地址送 DPTR
MOV A,#DATA ; 8位数字量送累加器
MOVX @DPTR,A ;向锁存器写入数字量,同时启动转换第 5章 MCS–51单片机的接口与应用图 单路 DAC0832控制时序第 5章 MCS–51单片机的接口与应用
DAC0832可以输出各种波形:
第 5章 MCS–51单片机的接口与应用输出呈渐升骤降的电压锯齿波:
START,MOV DPTR,#7FFFH
MOV A,#00
LOOP,MOVX @DPTR,A
INC A
MOV R0,#data ; data为延时常数
DJNZ R0,$ ;延时,改变 data可改变锯齿波周期 T值
SJMP LOOP
第 5章 MCS–51单片机的接口与应用输出矩形波:
START,MOV DPTR,#7FFFH
LOOP,MOV A,#DATAH
MOVX @DPTR,A
LCALL DELAYH
MOV A,#DATAL
MOVX @DPTR,A
LCALL DELAYL
SJMP LOOP
第 5章 MCS–51单片机的接口与应用输出三角波:
START,MOV DPTR,#7FFFH
MOV A,#00H
UP,MOVX @DPTR,A
INC A
JNZ UP
DOWN,DEC A
MOVX @DPTR,A
JNZ DOWN
SJMP UP
第 5章 MCS–51单片机的接口与应用输出梯形波:
START,MOV DPTR,#7FFFH
L1,MOV A,#DATAL
UP,MOVX @DPTR,A
INC A
CLR C
SUBB A,#DATAH
JNC DOWN
ADD A,#DATAH
SJMP UP
DOWN,MOV A,#DATAH
L2,MOVX @DPTR,A
LCALL DELAYH
DEC A
SUBB A,#DATAL
JC L1
ADD A,#DATAL
SJMP L2
第 5章 MCS–51单片机的接口与应用图 两路 DAC0830/DAC0831/DAC0832与单片机接口逻辑图第 5章 MCS–51单片机的接口与应用如果图中的模拟输出分别用于示波器的 X,Y偏转,则 MCS-
51执行下面的程序后,可使示波器上的光点根据参数 X,Y的值同步移动。
MOV DPTR,#0DFFFH
MOV A,#X
MOVX @DPTR,A ;将参数 X写入 DAC(1)的数据输入锁存器
MOV DPTR,#0BFFFH
MOV A,#Y
MOVX @DPTR,A ;将参数 Y写入 DAC(1)的数据输入锁存器
MOV DPTR,#7FFFH
MOVX @DPTR,A ;两片 DAC同时启动转换,同步输出
SJMP $
第 5章 MCS–51单片机的接口与应用
3,DAC0830/DAC0831/DAC0832的模拟输出方式
DAC0830/DAC0831/DAC0832属于 电流输出型 的 D/A转换器,
其转换结果是与输入数字量成正比的电流。这种形式的输出不能直接带动负载,需经运算放大器放大并转换成电压输出。电压输出又根据不同的场合,需要单极性电压输出和双极性电压输出。
图所示的接口电路是单极性电压输出,运放的输出电压为
R E FO U T V
DV
82
其中,D为用十进制表示的数字输入量。
第 5章 MCS–51单片机的接口与应用例如,设 VREF =-5 V,当 D=FFH=255时,
VV OUT 98.4)5(2 5 62 5 5
这是最大的输出电压。
若 D=01H=1时,这是最低位 LSB对应的输出电压。运放的输出电压与参考电压 VREF是反极性。
VV OUT 02.0)5(2 5 61
第 5章 MCS–51单片机的接口与应用第 5章 MCS–51单片机的接口与应用根据运放的理想情况,运放 A2的反向输入端 "虚地 ",且 I1+I2=0,
而
,
3
2
2
1 R
V
R
VI OUTREF
1
1
2 R
VI OUT?
如果选择 R2=R3=2R1,则可以得到
VOUT2=–(2VOUT1+VREF)
设 VREF=+5 V,当 VOUT1=0 V时,VOUT2=5 V; VOUT1=–2.5 V时,
VOUT2=0 V; VOUT1=–5 V时,VOUT2=5 V。 可见,VOUT2将 VOUT1输出电压范围 0~5 V转换成双极性电压范围 –5~+5 V。 因第 5章 MCS–51单片机的接口与应用
R E F8O U T V2
DV
所以
R E FR E FR E F V1 2 8
1 2 8D)V2V
2 5 6
D(V
第 5章 MCS–51单片机的接口与应用
9.6 单片机的功率开关接口电路
9.6.1 光电耦合器件光电耦合器件是由发光二极管 (发光源 )与受光源 (如光敏三极管、光敏晶闸管或光敏集成电路等 )封装在一起,构成电-光
-电转换器件。根据受光源结构的不同,可以将光电耦合器件分为晶体管输出的光电耦合器件和晶闸管输出的光电耦合器件两大类。
晶体管输出的光电耦合器件的内部结构如图 5.31所示。
第 5章 MCS–51单片机的接口与应用图 9.17 晶体管光耦器件结构图第 5章 MCS–51单片机的接口与应用第 5章 MCS–51单片机的接口与应用
9.7 步进电机接口电路第 5章 MCS–51单片机的接口与应用
5.2.4 键盘、显示器组合接口
1.键盘、显示器组合接口电路图 5.15是一个采用 8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了 32个键。如果多使用 PC口线,可以增加按键,最多可达 8× 8=64个键。可根据需要进行设置。
LED显示器采用共阴极。段选码由 8155 PB口提供,位选码由 PA口提供。键盘的列输入由 PA口提供,与显示器的位选输入公用,行输入由 PC0~PC3提供。显然,因为键盘与显示器公用了 PA口,比单独接口节省了一个 I/O口。
第 5章 MCS–51单片机的接口与应用图 5.15 8155扩展 I/O口的键盘、显示器组合接口第 5章 MCS–51单片机的接口与应用
2.软件设计
LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。
相应的程序如下:
KD1,MOV A,#03H ;初始化 8155PA,PB口为基本输出,PC口为输入
MOV DPTR,#7F00H
MOVX @DPTR,A
第 5章 MCS–51单片机的接口与应用
KEY1,ACALL KS1
JNZ LK1
ACALL DISPLAY ;调用显示子程序实现延时,防止抖动引起按键拒认
AJMP KEY1 ;延时后再检测键盘
LK1,ACALL DISPLAY ;调用两次显示实现延时,防止抖动引起误处理
ACALL DISPLAY
ACALL KS1
JNZ LK2
ACALL DISPLAY
AJMP KEY1
第 5章 MCS–51单片机的接口与应用
LK2,MOV R2,#0FEH
MOV R4,#00H
LK4,MOV DPTR,#7F01H
MOV A,R2
MOVX @DPTR,A
INC DPTR
INC DPTR
MOVX A,@DPTR
JB ACC.0,LONE
MOV A,#00H
AJMP LKP
第 5章 MCS–51单片机的接口与应用
LONE,JB ACC.1,LTWO
MOV A,#08H
AJMP LKP
LTWO,JB ACC.2,LTHR
MOV A,#10H
AJMP LKP
LHR,JB ACC.3,NEXT
MOV A,#18H
LKP,ADD A,R4
PUSH ACC
第 5章 MCS–51单片机的接口与应用
LK3,ACALL DISPLAY
ACALL KS1
JNZ LK3
POP ACC
RET
NEXT,INC R4
MOV A,R2
JNB ACC.7,KEND
RL A
MOV R2,A
AJMP LK4
KEND,AJMP KEY1
第 5章 MCS–51单片机的接口与应用
KS1,MOV DPTR,#7F01H
MOV A,#00H
MOVX @DPTR,A
INC DPTR
INC DPTR
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DISPLAY:见 5.2.3节 8155扩展动态扫描子程序。
9.1 概述
9.2 键盘接口
9.3 单片机与 LED显示器接口技术
9.5 单片机与 A/D,D/A转换器接口
9.6 单片机的功率开关接口电路
9.7 步进电机接口电路第 5章 MCS–51单片机的接口与应用
9.1 概述
MCS—51单片机系统的 I/O口和外部
RAM统一编址。
进行 I/O口扩展时,
应全面考虑 I/O口和外部数据存储器的地址分配,避免地址重叠。
一个外部 I/O口往往占有多个地址。
第 5章 MCS–51单片机的接口与应用
9.1.2 单片机与外设的数据交换方式
单片机与外设的数据交换方式通常有三种:查询方式、延时等待方式和中断方式。
( 1)查询方式
1) 发启动外设的信号;
2) 读入外设的状态或标志;
3) 判断其是否已做好数据交换的准备;
4) 如外设未做好准备,则一直查询;
5) 外设准备好了,用输入 /输出指令进行数据交换。
查询方式的优点是能够自动适配外设的工作速度,缺点是花费 CPU时间较多。在 CPU不太忙的情况下可采用此方式。
第 5章 MCS–51单片机的接口与应用
( 2)延时等待方式
1) 发启动外设的信号;
2) 延时等待一段时间;
3) 用输入 /输出指令进行数据交换。
延时等待方式的特点是将查询方式下循环判断的时间用软件延时来等待,CPU可用这段时间执行别的程序。
但是,必须事先计算好外设从得到启动信号到做好数据交换的时间。
第 5章 MCS–51单片机的接口与应用
( 3)中断方式
1) 设置中断,开中断;
2) 当外设需要与单片机交换数据时,发中断请求;
3) 单片机响应中断申请,执行中断服务程序,与外设交换数据。
中断方式下,可充分利用单片机的工作效率并适配外设的工作速度。因此,中断方式是应用最多的一种 I/O
数据交换方式。但中断方式需要的硬件资源较多。
第 5章 MCS–51单片机的接口与应用
9.1.3 I/O指令与编程方法由于将 I/O口和外部 RAM统一编址,因此使用外部 RAM
的访问指令对 I/O口进行数据传送。
MOVX A,@Ri ;输入
MOVX @Ri,A ;输出
MOVX A,@DPTR ;输入
MOVX @DPTR,A ;输出第 5章 MCS–51单片机的接口与应用
9.1.3 I/O指令与编程方法例 9-1 设单片机需要将端口地址为 7CF7H中的数据 0EDH读入累加器
A中,编写程序。
MOV P2,#7CH
MOV R0,#0F7H
MOVX A,@R0
例 9-2 设单片机需要将数据 F4H输出到端口地址为 7E7FH的 I/O口,
编写程序。
MOV DPTR,#7E7FH
MOV A,#0F4H
MOVX @DPTR,A ;输出第 5章 MCS–51单片机的接口与应用
9.2 键盘接口键盘是微机系统中最常用的人机对话输入设备。键盘有两种基本类型,编码键盘和非编码键盘 。
编码键盘本身除了按键以外,还包括产生键码的硬件电路。这种键盘使用十分方便,但价格较高,一般的单片机应用系统较少采用。
非编码键盘是靠软件识别键盘上的闭合键,由此计算出键码。非编码键盘几乎不需要附加的硬件逻辑。
非编码键盘又分为独立式和行列式键盘。
第 5章 MCS–51单片机的接口与应用独立式按键
1.独立式按键接口结构独立式按键的接口电路示意图
(a) 中断方式; (b) 查询方式第 5章 MCS–51单片机的接口与应用消除键抖动键闭合和释放过程呈现一串抖动脉冲波,其时间由按键的机械特性有关,一般为
5~10毫秒;键闭合稳定期一般为几百毫秒到几秒。为确保 CPU对键的一次闭合仅做一次处理,必须去除抖动。
硬件方法是加 RS触发器消抖动电路,从根本避免抖动的产生。
软件方法是通过延时的方法躲过抖动,待信号稳定之后,
在进行状态的输入。
第 5章 MCS–51单片机的接口与应用图 消除键抖动电路第 5章 MCS–51单片机的接口与应用
2.独立式按键的软件结构下面是查询方式的键盘程序。 K0~K7为功能程序入口地址标号,其地址间隔应能容纳 JMP指令字节,PROM0~PROM7分别为每个按键的功能程序。
设 I/O为 P1口。 START,MOV A,#0FFH ;
MOV P1,A ;置 P1口为输入状态
PAN,MOV A,P1 ;键状态输入
CPL A
JZ PAN
ACALL DEALAY10MS
MOV A,P1 ;键状态输入
CPL A
JZ PAN
第 5章 MCS–51单片机的接口与应用
JNB ACC.0,K0 ;检测 0号键是否按下,按下转
JNB ACC.1,K1 ;检测 1号键是否按下,按下转
JNB ACC.2,K2 ;检测 2号键是否按下,按下转
JNB ACC.3,K3 ;检测 3号键是否按下,按下转
JNB ACC.4,K4 ;检测 4号键是否按下,按下转
JNB ACC.5,K5 ;检测 5号键是否按下,按下转
JNB ACC.6,K6 ;检测 6号键是否按下,按下转
JNB ACC.7,K7 ;检测 7号键是否按下,按下转
JMP START ;无键按下返回,再顺次检测
K0,AJMP PROM0
K1,AJMP PROM1
K7,AJIMP PROM7;入口地址表…
第 5章 MCS–51单片机的接口与应用
PROM0,……………………… ; 0号键功能程序
………………………
JMP START ; 0号键功能程序执行完返回
PROM1,……………………… ; 0号键功能程序
………………………
JMP START ; 1号键功能程序执行完返回
……………………… ; 7号键功能程序
PROM7,………………………
JMP START ; 7号键功能程序执行完返回
…
第 5章 MCS–51单片机的接口与应用行列式键盘第 5章 MCS–51单片机的接口与应用键盘识别过程:
(1)测试是否有键按下单片机 I/O口向所有列线( D0~D3)输出低电平,即向列口写入 00H;然后输入各行线状态( D4~D7),即读入输入口的字;比较:若行线状态全为高电平,则表明无键按下,若行线状态中有低电平,则表明有键按下。
( 2)消抖动
( 3)扫描键盘以确定被按键的物理位置第 5章 MCS–51单片机的接口与应用键盘识别过程:
(4)计算键码根据被按下键的行线号和列线号,按照一定的算法,可以求出被按下键的键码。键码实际上是键在矩阵中按从 左到右、从上到下 的序号。按这种编排规律,本键盘 32个键的键码为 00H~1FH。各行的首键号是 00H、
08H,10H,18H,如列线按 0~7编号,则键码的计算公式为:
键码 =首键号 +列号第 5章 MCS–51单片机的接口与应用图 行列式键盘的编码与键值
(a) 二进制组合编码; (b) 顺序排列编码第 5章 MCS–51单片机的接口与应用键盘识别过程:
(5)等待键释放计算完键码后,再以延时和扫描的方法等待和判定键释放。键释放之后就可以根据得到的键码,转到相应的键处理子程序,进行数据的输入或命令的处理。
第 5章 MCS–51单片机的接口与应用键盘扫描流程:
第 5章 MCS–51单片机的接口与应用键盘扫描控制方式:
在系统运行过程中,为了及时响应键盘操作,一般情况下在 10ms左右就要调用一次键盘扫描子程序、对键盘进行一次扫描。键盘扫描有三种控制方式:
1)程序控制扫描方式:主程序中直接调用键盘扫描子程序。这种方式只有在 CPU空闲时才能调用。
2)定时扫描方式:利用内部的定时器,产生 10ms的定时中断,CPU
响应中断对键盘进行扫描。这种方式 CPU有可能进行的是空扫描。
3)中断扫描方式,CPU平时不扫描键盘,只要有键盘闭合时就产生中断请求,CPU即可进行键盘扫描。这种方式可提高 CPU的效率,但要增加硬件电路。
第 5章 MCS–51单片机的接口与应用
9.2.2 键盘接口及键盘扫描子程序设计行列式键盘又叫矩阵式键盘。用 I/O口线组成行、列结构,
按键设置在行列的交点上。例如 4× 4的行列结构可组成 16个键的键盘。因此,在按键数量较多时,可以节省 I/O口线 。
行列式键盘的接口方法有许多,例如直接接口于单片机的
I/O口上;利用扩展的并行 I/O接口;用串行口扩展并行 I/O口接口;利用一种可编程的键盘、显示接口芯片 8279进行接口等。
其中,利用扩展的并行 I/O接口方法方便灵活,在单片机应用系统中比较常用。
第 5章 MCS–51单片机的接口与应用图 5.6 8155扩展 I/O口组成的行列式键盘第 5章 MCS–51单片机的接口与应用假定 PA口地址为 7F01H,PC口地址为 7F03H,键盘扫描程序 KEY扫描键盘时分两步进行。
1)进行粗扫描,调用 KS1子程序,判断是否有键按下:如果没有键按下,则回主程序;如果有键按下,则进入第二步。
粗扫描的实现过程是 PA口输出全 0信号,然后读回 PC口的低 4位,取反后进行判断:如果为 0则表示没有键按下,如果不为 0则表示有键按下。主要通过调用两个子程序实现:
KS1判断子程序:用于判断键盘上是否有键闭和;
T12延时子程序:执行时间为 12s。
2)进行键盘细扫描,找出按下的是哪一个键,并求出相应的键码。
这部分包括三个程序段:逐行扫描程序段 LK2、下一列扫描程序段 NEXT、求键码子程序段 LKP。
第 5章 MCS–51单片机的接口与应用第 5章 MCS–51单片机的接口与应用;键盘粗扫描程序段:
KEY1,ACALL KS1 ;调用判断有无键按下子程序
JNZ LK1 ;有键按下时,(A)≠ 0转消抖延时
AJMP KEY1 ;无键按下返回
LK1,ACALL TM12S ;调 12 ms延时子程序
ACALL KS1 ;查有无键按下,若有则真有键按下
JNZ LK2 ;键 (A)≠ 0逐列扫描
AJMP KEY1 ;不是真有键按下,返回第 5章 MCS–51单片机的接口与应用;逐行扫描程序段:
LK2; MOV R2,#0FEH ;初始列扫描字 (0列 )送入 R2
MOV R4,#00H ;初始列 (0列 )号送入 R4
LK4,MOV DPTR,#7F01H ; DPTR指向 8155PA口
MOV A,R2 ;列扫描字送至 8155PA口
MOVX @DPTR,A
INC DPTR ; DPTR指向 8155PC口
INC DPTR
MOVX A,@DPTR ;从 8155 PC口读入行状态
JB ACC.0,LONE ;查第 0行无键按下,转查第 1行
MOV A,#00H ;第 0行有键按下,行首键码 #00H→A
AJMP LKP ;转求键码
LONE,JB ACC.1,LTWO ;查第 1行无键按下,转查第 2行
MOV A,#08H ;第 1行有键按下,行首键码 #08H→A
AJMP LKP ;转求键码第 5章 MCS–51单片机的接口与应用
LTWO,JB ACC.2,LTHR ;查第 2行无键按下,转查第 3行
MOV A,#10H ;第 2行有键按下,行首键码 #10H→A
AJMP LKP ;转求键码
LTHR,JB ACC.3,NEXT ;查第 3行无键按下,转该查下一列
MOV A,#18H ;第 3行有键按下,行首键码 #18H→A;求键码子程序段:
LKP,ADD A,R4 ;求键码,键码 =行首键码 +列号
PUSH ACC ;键码进栈保护
LK3,ACALL KS1 ;等待键释放
JNZ LK3 ;键未释放,等待
POP ACC ;键释放,键码 → A
RET ;键扫描结束,出口状态 (A)=键码第 5章 MCS–51单片机的接口与应用;下一列扫描程序段:
NEXT,INC R4 ;准备扫描下一列,列号加 1
MOV A,R2 ;取列号送累加器 A
JNB ACC.7,KND ;判断 8列扫描否?扫描完返回
RL A ;扫描字左移一位,变为下一列扫描字
MOV R2,A ;扫描字送入 R2
AJMP LK4 ;转下一列扫描
KND,AJMP KEY1
第 5章 MCS–51单片机的接口与应用;判断是否有键按下子程序
KS1,MOV DPTR,#7F01H ; DPTR指向 8155PA口
MOV A,#00H ;全扫描字 → A
MOVX @DPTR,A ;全扫描字送往 8155PA口
INC DPTR ; DPTR指向 8155PC口
INC DPTR
MOVX A,@DPTR ;读入 PC口行状态
CPL A ;变正逻辑,以高电平表示有键按下
ANL A,#0FH ;屏蔽高 4位,只保留低 4位行线值
RET ;出口状态,(A)≠0时有键按下第 5章 MCS–51单片机的接口与应用;延时 12ms子程序
TM12ms,MOV R7,#18H ;延时 12 ms子程序
TM,MOV R6,#0FFH
TM6,DJNZ R6,TM6
DJNZ R7,TM
RET
第 5章 MCS–51单片机的接口与应用
9.3 单片机与 LED显示器接口技术
9.3.1 LED显示器结构与原理
图 9.8 七段显示块管脚与结构图第 5章 MCS–51单片机的接口与应用表 9-2 七段 LED的段选码
显示字符 共阴极段选码 共阳极段选码 显示字符 共阴极段选码 共阳极段选码
0 3FH C0H C 39H C6H
1 06H F9H D 5EH A1H
2 5BH A4H E 79H 86H
3 4FH B0H F 71H 8EH
4 66H 99H P 73H 8CH
5 6DH 92H U 3EH C1H
6 7DH 82H Γ 31H CEH
7 07H F8H y 6EH 91H
8 7FH 80H 8,FFH 00H
9 6FH 90H,灭” 00H FFH
A 77H 88H
B 7CH 83H
第 5章 MCS–51单片机的接口与应用
9.3.2 LED显示器接口及显示程序图 N位 LED显示器第 5章 MCS–51单片机的接口与应用
1,LED静态显示方式
LED工作在静态显示方式下,共阴极接地或共阳极接 +5 V;每一位的段选线 (a~g,dp)与一个 8位并行 I/O口相连,如图所示。该图表示了一个 4位静态 LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个 8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。
N位静态显示器要求有 N× 8根 I/O口线,占用 I/O口线较多。故在位数较多时往往采用动态显示方式。
静态显示的亮度大,软件较为简单,不占用 CPU时间,但由于每位 LED都需要一个并行接口输出字形代码,故占用 I/O资源较多。
第 5章 MCS–51单片机的接口与应用例 9-4 写出显示 8031片内 RAM中以 30H为首地址的八个数字的程序。
第 5章 MCS–51单片机的接口与应用DIR,PUSH ACC
PUSH DPH
PUSH DPL
MOV R2,#08H
MOV R0,#30H
DL0,MOV A,@R0
MOV DPTR,#TAB
MOV A,@A+DPTR
MOV SBUF,A
DL1,JNB TI,DL1
CLR TI
INC R0
DJNZ R2,DL0
第 5章 MCS–51单片机的接口与应用
POP DPL
POP DPH
POP ACC
RET
TAB,DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H
DB 8EH
第 5章 MCS–51单片机的接口与应用
2,LED动态显示方式动态显示接口是对多位 LED显示器采用动态扫描的方法进行显示,即逐个循环的点亮各位显示器。这样,虽然在任一时刻只有一位显示器被点亮,但由于人眼的视觉残留效应,实际上看起来与全部显示器持续点亮的效果一样。动态显示器可简化电路,常用在智能仪表中。
动态显示除了要给显示器提供字形代码外,还要对显示器提供位码。因此多位 LED动态显示接口电路需要有两个输出口,一个用于输出 8位字形码,另一个用于输出位控码,位控码的位数等于 LED显示器的位数。
第 5章 MCS–51单片机的接口与应用
2,LED动态显示方式图 8位 LED动态显示器电路第 5章 MCS–51单片机的接口与应用例 9-5 写出显示缓冲区 80H~85H单元数据块的程序。
假设 8155命令口地址为 7F00H,LED为共阴接法,PA口输出字型码信息,由于加反相器,所以字型码表设置为共阳码。 PC口输出位选信息,位选信号为,0”电平有效,
由于加了反相器,所以 1为选中,且每次只有一个 1。
第 5章 MCS–51单片机的接口与应用
MOD,MOV A,#00000101B ; 8155初始化
MOV DPTR,#7F00H ;使 DPTR指向 8155控制寄存器端口
MOVX @DPTR,A
MOV R0,#80H ;动态显示初始化,使 R0指向缓冲区首址
MOV R6,#20H ;首位位选字送 R6
MOV R7,#00H
DIR1,MOV A,R6 ;
MOV DPTR,#7F03H ;使 DPTR指向 PC口
MOVX @DPTR,A ;选通显示器低位 (最右端一位 )
第 5章 MCS–51单片机的接口与应用
MOVX A,@R0 ;读要显示数
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查表取得段选码
MOV DPTR,#7F01H
MOVX @DPTR,A ;段选码从 PA口输出
HERE:DJNZ R7,$ ;调用 1 ms延时子程序
INC R0 ;指向缓冲区下一单元
MOV A,R6 ;位选码送累加器 A
JB ACC.0,ENDIR ;判断 8位是否显示完毕,显示完返回
RRC A ;未显示完,把位选字变为下一位选字
MOV R6,A ;修改后的位选字送 R3
AJMP DIR1 ;循环实现按位序依次显示
ENDIR,RET
第 5章 MCS–51单片机的接口与应用
TAB,DB 0CH,0F9H,0A4H; 0B0H,99H ;段码表
DB 92H,82H,0F8H,80H,90H
第 5章 MCS–51单片机的接口与应用
9.4 A/D转换器接口
9.4.1 A/D转换器概述在设计 A/D转换器与单片机接口之前,往往要根据 A/D转换器的技术指标选择 A/D转换器。为此,先介绍一下 A/D转换器的主要技术指标。
量化间隔和量化误差 是 A/D转换器的主要技术指标之一。量化间隔可用下式表示。
其中 n为 A/D转换器的位数 。
nn 212
满量程输入电压满量程输入电压?
第 5章 MCS–51单片机的接口与应用量化误差有两种表示方法:一种是绝对误差,另一种是相对误差。
22
量化间隔绝对误差
%1002 1 1n相对误差
A/D转换器芯片种类很多,按其转换原理可分为 逐次比较式、双重积分式、计数式和并行式 A/D转换器; 按其分辨率可分为 8~16位的 A/D转换器芯片。目前最常用的是逐次逼近式和双重积分式。
第 5章 MCS–51单片机的接口与应用逐次比较式,转换速度快,最常用。
双重积分式:转换精度高,速度慢。
计数式:速度慢,硬件需要元件精度不高。
并行式 A/D转换器:转换速度最快,但由于硬件要求高,不易实行。
第 5章 MCS–51单片机的接口与应用逐次逼近式转换器的常用产品有 ADC0801~ADC0805型 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启动方式、转换结束信号处理方法以及时钟的连接等。
第 5章 MCS–51单片机的接口与应用
A/D转换器 数字量输出线 与单片机的连接方法与其内部结构有关。对于内部带有三态锁存数据输出缓冲器的 ADC(如 ADC0809,AD574等 ),可直接与单片机相连。对于内部不带锁存器 ADC,一般通过锁存器或并行 I/O接口与单片机相连。在某些情况下,为了增强控制功能,那些带有三态锁存数据输出缓冲器的 ADC也常采用 I/O接口连接。
还有,随着位数的不同,ADC与单片机的连接方法也不同。对于 8位 ADC,其数字输出线可与 8位单片机数据线对应相接。对于 8位以上的 ADC,与 8位单片机相接就不那么简单了,此时必须增加读取控制逻辑,把 8位以上的数据分两次或多次读取。为了便于连接,一些 ADC产品内部已带有读取控制逻辑,而对于内部不包含读取控制逻辑的 ADC,在和 8位单片机连接时,应增设三态缓冲器对转换后的数据进行锁存。
第 5章 MCS–51单片机的接口与应用一个 ADC开始转换时,必须加一个 启动转换信号,这一启动信号要由单片机提供。不同型号的 ADC,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种。对于脉冲启动型 ADC,只要给其启动控制端上加一个符合要求的脉冲信号即可,如 ADC0809,ADC574等。通常用 WR和地址译码器的输出经一定的逻辑电路进行控制。对于电平启动型 ADC,当把符合要求的电平加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,
一般采用 D触发器、锁存器或并行 I/O接口等来实现。 AD570、
AD571等都属于电平启动型 ADC。
第 5章 MCS–51单片机的接口与应用当 ADC转换结束时,ADC输出一个 转换结束标志信号,通知单片机读取转换结果。单片机检查判断 A/D转换结束的方法一般有中断和查询两种。对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的 I/O接口的相应引脚,作为中断请求信号;对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位 I/O口线上,作为查询状态信号。
A/D转换器的另一个重要连接信号是 时钟,其频率是决定芯片转换速度的基准。整个 A/D转换过程都是在时钟的作用下完成的。 A/D转换时钟的提供方法有两种:一种是由芯片内部提供 (如
AD574),一般不许外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到
A/D转换器的相应时钟端。
第 5章 MCS–51单片机的接口与应用9.4.2 A/D转换器 ADC0809与单片机的接口
1,ADC0809芯片简介第 5章 MCS–51单片机的接口与应用表 9.10 ADC0809通道地址选择表
ADDC ADDB ADDA 选通的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3
1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7
第 5章 MCS–51单片机的接口与应用图 5.17 ADC0809转换工作时序第 5章 MCS–51单片机的接口与应用
2,ADC0809与单片机接口第 5章 MCS–51单片机的接口与应用转换结果数据的传送方式:
定时传送方式,根据转换时间在转换开始后延时一段时间,读取转换结果。
查询传送方式,查询转换完成信号,在转换完成后进行数据传送。
中断方式,把表明转换完成的状态信号( EOC)作为中断请求信号,以中断方式进行数据传送。
图 9-16中 ADC0809的地址码为,0FEF8H~0FEFFH.
第 5章 MCS–51单片机的接口与应用例 9-16.欲对 IN1通道进行 A/D转换,采用的是定时方式进行转换结果数据的传送。
MAIN,MOV DPTR,#0FEF9H
MOV A,#00H
MOVX @DPTR,A
MOV R7,#50H
DJNZ R7,$
MOVX A,@DPTR
RET
第 5章 MCS–51单片机的接口与应用例 9-7.设图 9.16接口电路用于一个 8路模拟量输入的巡回检测系统,
使用中断方式采样数据,把采样转换所得的数字量按序存于片内 RAM的 30H~37H单元中。采样完一遍后停止采集。
ORG 2000H
MAIN,MOV R0,#30H ;设立数据存储区指针
MOV R2,#08H ;设置 8路采样计数值
SETB IT1 ;设置外部中断 0为边沿触发方式
SETB EA ; CPU开放中断
SETB EX1 ;允许外部中断 0中断
MOV DPTR,#FEF8H ;送入口地址并指向 IN0
MOVX @DPTR,A ;启动 A/D转换,A的值无意义
HERE,SJMP HERE ;等待中断第 5章 MCS–51单片机的接口与应用
ORG 2100H
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 ;中断返回第 5章 MCS–51单片机的接口与应用
9.5 D/A转换器接口
9.5.1 D/A 转换器概述按转换数字量的位数可分为 8位,10位,12位等;按数据传送方式分为并行和串行两种;按转换输出的模拟量分为电压和电流输出型。
在设计 D/A转换器与单片机接口之前,一般要根据 D/A转换器的技术指标选择 D/A转换器芯片。
(1) 分辨率 。分辨率是 D/A转换器对输入量变化敏感程度的描述。 D/A转换器的分辨率定义为:当输入数字量发生单位数码变化时,即 LSB位产生一次变化时所对应输出模拟量的变化量。对于线性 D/A转换器来说,其分辨率 Δ
与输入数字量输出的位数 n呈现下列关系
n2
模拟量输出的满量程值
第 5章 MCS–51单片机的接口与应用
(2) 建立时间 。建立时间是描述 D/A转换速率快慢的一个重要参数。一般所指的建立时间是输入数字量变化后,模拟输出量达到终值误差 ± LSB/2(最低有效位 )时所经历的时间。根据建立时间的长短,把 D/A转换器分成以下几挡:
超高速 < 100 ns
较高速 100 ns~1 μs
高 速 1~10 μs
中 速 10~100 μs
低 速 ≥100 μs
第 5章 MCS–51单片机的接口与应用就 数据线 来说,D/A转换器与单片机的接口要考虑到两个问题:一是位数,当高于 8位的 D/A转换器与 8位数据总线的
MCS-51单片机接口时,MCS-51单片机的数据必须分时输出,
这时必须考虑数据分时传送的格式和输出电压的 "毛刺 "问题;
二是 D/A转换器的内部结构,当 D/A转换器内部没有输入锁存器时,必须在单片机与 D/A转换器之间增设锁存器或 I/O接口。
最常用、也是最简单的连接是 8位带锁存器的 D/A转换器和 8位单片机的接口,这时只要将单片机的数据总线直接和 D/A转换器的 8位数据输入端一一对应连接即可。
第 5章 MCS–51单片机的接口与应用就 地址线 来说,一般的 D/A转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或部分译码,经译码器的输出控制片选信号,也可由某一位 I/O线来控制片选信号。也有少数 D/A转换器有少量的地址线,用于选中片内独立的寄存器或选择输出通道 (对于多通道 D/A转换器 ),这时单片机的地址线与 D/A转换器的地址线对应连接。
就 控制线 来说,D/A转换器主要有片选信号、写信号及启动转换信号等,一般由单片机的有关引脚或译码器提供。一般来说,写信号多由单片机的 ---WR信号控制;启动信号常为片选信号和写信号的合成。
第 5章 MCS–51单片机的接口与应用9.5.2 8位 D/A转换器与单片机的接口
1,DAC0832的结构与引脚功能第 5章 MCS–51单片机的接口与应用
2,DAC0832 D/A转换器与单片机接口根据对 DAC0832的输入寄存器和 DAC寄存器的不同控制方式,可有三种工作方式:
( 1)直通方式:使 WR1*=WR2*=0,数据可以经输入端经两个寄存器直接进入 D/A转换器。
( 2)单缓冲方式:两个寄存器之一处于直通,
WR1*=0或 WR2*=0,另一个寄存器处于受控状态。
( 3)双缓冲方式:两个寄存器均处于受控状态。
第 5章 MCS–51单片机的接口与应用
2,DAC0832 D/A转换器与单片机接口第 5章 MCS–51单片机的接口与应用设分配给 DAC0832的地址为 7FFFH(P2.7=0),则执行下列三条指令就可以将一个数字量转换为模拟量:
MOV DPTR,#7FFFH ;端口地址送 DPTR
MOV A,#DATA ; 8位数字量送累加器
MOVX @DPTR,A ;向锁存器写入数字量,同时启动转换第 5章 MCS–51单片机的接口与应用图 单路 DAC0832控制时序第 5章 MCS–51单片机的接口与应用
DAC0832可以输出各种波形:
第 5章 MCS–51单片机的接口与应用输出呈渐升骤降的电压锯齿波:
START,MOV DPTR,#7FFFH
MOV A,#00
LOOP,MOVX @DPTR,A
INC A
MOV R0,#data ; data为延时常数
DJNZ R0,$ ;延时,改变 data可改变锯齿波周期 T值
SJMP LOOP
第 5章 MCS–51单片机的接口与应用输出矩形波:
START,MOV DPTR,#7FFFH
LOOP,MOV A,#DATAH
MOVX @DPTR,A
LCALL DELAYH
MOV A,#DATAL
MOVX @DPTR,A
LCALL DELAYL
SJMP LOOP
第 5章 MCS–51单片机的接口与应用输出三角波:
START,MOV DPTR,#7FFFH
MOV A,#00H
UP,MOVX @DPTR,A
INC A
JNZ UP
DOWN,DEC A
MOVX @DPTR,A
JNZ DOWN
SJMP UP
第 5章 MCS–51单片机的接口与应用输出梯形波:
START,MOV DPTR,#7FFFH
L1,MOV A,#DATAL
UP,MOVX @DPTR,A
INC A
CLR C
SUBB A,#DATAH
JNC DOWN
ADD A,#DATAH
SJMP UP
DOWN,MOV A,#DATAH
L2,MOVX @DPTR,A
LCALL DELAYH
DEC A
SUBB A,#DATAL
JC L1
ADD A,#DATAL
SJMP L2
第 5章 MCS–51单片机的接口与应用图 两路 DAC0830/DAC0831/DAC0832与单片机接口逻辑图第 5章 MCS–51单片机的接口与应用如果图中的模拟输出分别用于示波器的 X,Y偏转,则 MCS-
51执行下面的程序后,可使示波器上的光点根据参数 X,Y的值同步移动。
MOV DPTR,#0DFFFH
MOV A,#X
MOVX @DPTR,A ;将参数 X写入 DAC(1)的数据输入锁存器
MOV DPTR,#0BFFFH
MOV A,#Y
MOVX @DPTR,A ;将参数 Y写入 DAC(1)的数据输入锁存器
MOV DPTR,#7FFFH
MOVX @DPTR,A ;两片 DAC同时启动转换,同步输出
SJMP $
第 5章 MCS–51单片机的接口与应用
3,DAC0830/DAC0831/DAC0832的模拟输出方式
DAC0830/DAC0831/DAC0832属于 电流输出型 的 D/A转换器,
其转换结果是与输入数字量成正比的电流。这种形式的输出不能直接带动负载,需经运算放大器放大并转换成电压输出。电压输出又根据不同的场合,需要单极性电压输出和双极性电压输出。
图所示的接口电路是单极性电压输出,运放的输出电压为
R E FO U T V
DV
82
其中,D为用十进制表示的数字输入量。
第 5章 MCS–51单片机的接口与应用例如,设 VREF =-5 V,当 D=FFH=255时,
VV OUT 98.4)5(2 5 62 5 5
这是最大的输出电压。
若 D=01H=1时,这是最低位 LSB对应的输出电压。运放的输出电压与参考电压 VREF是反极性。
VV OUT 02.0)5(2 5 61
第 5章 MCS–51单片机的接口与应用第 5章 MCS–51单片机的接口与应用根据运放的理想情况,运放 A2的反向输入端 "虚地 ",且 I1+I2=0,
而
,
3
2
2
1 R
V
R
VI OUTREF
1
1
2 R
VI OUT?
如果选择 R2=R3=2R1,则可以得到
VOUT2=–(2VOUT1+VREF)
设 VREF=+5 V,当 VOUT1=0 V时,VOUT2=5 V; VOUT1=–2.5 V时,
VOUT2=0 V; VOUT1=–5 V时,VOUT2=5 V。 可见,VOUT2将 VOUT1输出电压范围 0~5 V转换成双极性电压范围 –5~+5 V。 因第 5章 MCS–51单片机的接口与应用
R E F8O U T V2
DV
所以
R E FR E FR E F V1 2 8
1 2 8D)V2V
2 5 6
D(V
第 5章 MCS–51单片机的接口与应用
9.6 单片机的功率开关接口电路
9.6.1 光电耦合器件光电耦合器件是由发光二极管 (发光源 )与受光源 (如光敏三极管、光敏晶闸管或光敏集成电路等 )封装在一起,构成电-光
-电转换器件。根据受光源结构的不同,可以将光电耦合器件分为晶体管输出的光电耦合器件和晶闸管输出的光电耦合器件两大类。
晶体管输出的光电耦合器件的内部结构如图 5.31所示。
第 5章 MCS–51单片机的接口与应用图 9.17 晶体管光耦器件结构图第 5章 MCS–51单片机的接口与应用第 5章 MCS–51单片机的接口与应用
9.7 步进电机接口电路第 5章 MCS–51单片机的接口与应用
5.2.4 键盘、显示器组合接口
1.键盘、显示器组合接口电路图 5.15是一个采用 8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了 32个键。如果多使用 PC口线,可以增加按键,最多可达 8× 8=64个键。可根据需要进行设置。
LED显示器采用共阴极。段选码由 8155 PB口提供,位选码由 PA口提供。键盘的列输入由 PA口提供,与显示器的位选输入公用,行输入由 PC0~PC3提供。显然,因为键盘与显示器公用了 PA口,比单独接口节省了一个 I/O口。
第 5章 MCS–51单片机的接口与应用图 5.15 8155扩展 I/O口的键盘、显示器组合接口第 5章 MCS–51单片机的接口与应用
2.软件设计
LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。
相应的程序如下:
KD1,MOV A,#03H ;初始化 8155PA,PB口为基本输出,PC口为输入
MOV DPTR,#7F00H
MOVX @DPTR,A
第 5章 MCS–51单片机的接口与应用
KEY1,ACALL KS1
JNZ LK1
ACALL DISPLAY ;调用显示子程序实现延时,防止抖动引起按键拒认
AJMP KEY1 ;延时后再检测键盘
LK1,ACALL DISPLAY ;调用两次显示实现延时,防止抖动引起误处理
ACALL DISPLAY
ACALL KS1
JNZ LK2
ACALL DISPLAY
AJMP KEY1
第 5章 MCS–51单片机的接口与应用
LK2,MOV R2,#0FEH
MOV R4,#00H
LK4,MOV DPTR,#7F01H
MOV A,R2
MOVX @DPTR,A
INC DPTR
INC DPTR
MOVX A,@DPTR
JB ACC.0,LONE
MOV A,#00H
AJMP LKP
第 5章 MCS–51单片机的接口与应用
LONE,JB ACC.1,LTWO
MOV A,#08H
AJMP LKP
LTWO,JB ACC.2,LTHR
MOV A,#10H
AJMP LKP
LHR,JB ACC.3,NEXT
MOV A,#18H
LKP,ADD A,R4
PUSH ACC
第 5章 MCS–51单片机的接口与应用
LK3,ACALL DISPLAY
ACALL KS1
JNZ LK3
POP ACC
RET
NEXT,INC R4
MOV A,R2
JNB ACC.7,KEND
RL A
MOV R2,A
AJMP LK4
KEND,AJMP KEY1
第 5章 MCS–51单片机的接口与应用
KS1,MOV DPTR,#7F01H
MOV A,#00H
MOVX @DPTR,A
INC DPTR
INC DPTR
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DISPLAY:见 5.2.3节 8155扩展动态扫描子程序。