单片机应用技术(汇编)第七章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程:按三个按键中 的任一键都对应一个 特定功能。 若判断键释 放应如何修 改?
ORG 0000H KB: MOV P1,#0FFH MOV A,P1 CPL A ANL A,#0FH JZ KB LCALL D10MS MOV A,P1 CPL A ANL A,#0FH JZ KB CJNE A,#01H,KB01 LCALL PGM1 SJMP KB KB01:CJNE A,#02H,KB02 LCALL PGM2 SJMP KB KB02:CJNE A,#04H,KB LCALL PGM3 SJMP KB END
LINE3:
LINE4:
TRYK: BACK:
AJMP JB MOV AJMP INC MOV RL JNB MOV AJMP ADD RET
TRYK ACC.3,LINE4 A,#0CH TRYK R3 A,R2 A ACC.0,BACK R2,A LINE0 A,R3
定时扫描方式
定时扫描方式就是每隔一段时间对键 盘扫描一次,它利用单片机内部的定时器 产生一定时间(例如10 ms)的定时,当定 时时间到就产生定时器溢出中断。CPU响应 中断后对键盘进行扫描,并在有键按下时 识别出该键,再执行该键的功能程序。
单缓冲方式的接口(1)
——一个处于直通方式,另一个处于受控的锁存方式
LED的结构和显示原理 静态显示方式 动态显示方式 动态显示的实现
问题引入: LED显示器如何显示出指定数字/字符?
com
com
例:模拟产品计数显示电路
编 程
ORG 1000H STAR:MOV TMOD,#60H ;定时器T1工作在方式2计数 MOV TH1,#00H ;T1置初值 MOV TL1,#00H MAIN:MOV P1,#0C0H ;数码管显示0 DISP:JB P3.3,DISP ;监测按键信号 ACALLDELAY ;消抖延时 JB P3.3,DISP ;确认低电平信号 DISP1:JNB P3.3,DISP1 ;监测按键信号 ACALLDELAY ;消抖延时 JNB P3.3,DISP1 ;确认高电平信号 SETB TR1 ;启动计数器 DISP2:MOV A,TL1 MOVC A,@A+DPTR ;查表获取数码管显示值 MOV P1,A ;数码管显示计数值 CJNE A,#8E,DISP2 LJMP STAR TAB:0C0H,0F9H,0A4H … … DELAY:MOV R2,#14H DELAY1:MOV R3,#0FAH DJNZ R3,$ DJNZ R2,DELAY1 RET END
第
章 单 片 机 接 口 技 术
Single Chip Microcomputer 本章内容
人机接口 键盘接口 显示器接口 模拟量输入/输出接口 D/A转换接口 A/D转换接口 通信接口
实训1简易秒表的制作
1.实训目的
(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。 (2)通过LED显示程序的调整,熟悉8051与LED的接口技术,熟悉LED动 态显示的控制过程。 (3)通过键盘程序的调整,熟悉矩阵式键盘的接口技术,熟悉键盘扫描原 理。 (4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、 键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和 调试技巧。
静态显示方式 连接
所有LED的位选均共同连接到+VCC或GND,每个LED的8 根段选线分别连接一个8位并行I/O口,从该I/O口送出 相应的字型码显示字型。
特点
原理简单;显示亮度强,无闪烁;占用I/O资源较多。
动态显示方式 连接
所有LED的段选线共同连接在一起共用一个 8位I/O口,而每个LED的位选分别由一根相应 的I/O口线控制。因此必须采用动态扫描显示 方式,每一个时刻只选通其中一个LED,同时 在段选口送出该位LED的字型码。
键号=行首键号(0、4、8、12)+列号(0、1、2、3)
例2:键盘扫描程序
SERCH: MOV MOV LINE0: MOV MOV MOV JB MOV AJMP LINE1: JB MOV AJMP LINE2: JB MOV R2,#0EFH R3,#00H A,R2 P1,A A,P1 ACC.3,LINE1 A,#00H TRYK ACC.2,LINE2 A,#04H TRYK ACC.1,LINE3 A,#08H
注:其它子程序参考教材
4. 实训分析与总结
例5.4与本实训相比,二者均是秒表,但差别较大。前者采用发光 二极管显示,后者采用七段码LED(俗称数码管),后者显示更直观; 前者计时采用软件延时,后者采用定时器中断,后者更准确;前者功 能单一,程序一旦开始运行,中间过程无法控制,后者功能齐全,可 随时启动、停止、清零,后者智能化程度更高。综上所述,后者更实 用。
指向显示缓冲区下一个单元
位选码左移
N
扫描完一遍吗?
Y
结束
1
课堂练习
+5V
P1.7 P1.6 P1.5 P1.4
P1.3 P1.2 P1.1 P1.0
8031
试编制程序,要求当其中某一按键压下时与 其对应的二极管将被点亮。
7.3 D/A转换器接口
D/A转换器的作用
典型芯片DAC0832
DAC0832的应用
中断扫描方式
为提高CPU工作效率,可采用中断扫描工作方式。 其工作过程如下:当无键按下时,CPU处理自己的工作, 当有键按下时,产生中断请求,CPU转去执行键盘扫描 子程序,并识别键号。
8 03 1 INT0 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
&
7.2 显示器接口技术
键盘接口需要解决的问题
按键识别:
是否有键按下 求键号 键抖动及消除: 机械按键抖动时间在 5ms~10ms之间 消除方法: 硬件方案——双稳态去抖电路 软件方案——延时10ms~20ms后再次判断
独立式按键
接口电路:
特点:一线一键,按键识别(编程)简单;但占用 较多口线,适合8键以下使用。
例1:用P1口检测三个按键的状态并完成相应的功能 解: 资源分配: 用P1口的低3位检测3个按键的输入,为1则表 示按键没有按下,为0则表示相应按键被按下。 流程图:
PC机除了主 机以外还需要 哪些部分呢?
单片机电路有时候也需要键盘、显示等外设。
定时器中断服务 程序流程图
动态显示子程序 子程序入口
主程序程序
中断入口 保护现场
开 始 初始化
保护现场
置定时器初值
N 1秒到否? Y
显示初始化 有键闭合吗? 查表取字形码
调显示子程序
N
软件计数脉冲T1
Y
两次调用显示 子程序
;读入P1口状态
;变正逻辑,高电平表示有键按下 ;取低4位 ;返回,A≠0表示有键按下
按键识别——扫描法
原理: 在某一时刻只让一条列线处于低电平,其余列线均 处于高电平,则当这一列有键按下时,该键所在的行 电平将会由高电平变为低电平,可判定该列相应的行 有键按下。 流程: 当第0列处于低电平时,逐行查找是否有行线变低, 若有,则第0列与该行的交叉点按键按下;若无,则表示 第0列无键按下,再让下一列处在低电平,依此循环,这 种方式称为键盘扫描。
D/A转换器的作用
将数字量转换为模拟量,以便操纵控制对象。
单片机
D/A转换
控制对象
D/A转换器的主要指标
转换速度:一般几十微秒到几百微秒,快速的可达1微秒。
转换精度(分辨率):决定于输入数字量的位数,位数越多, 精度越高。
典型芯片-DAC0832介绍
DAC0832是一个八位D/A转换器,转换时间1微秒,结构如下: 可输 转出 换为 为模 电拟 压电 。流 , LE1或LE2=1,当前寄存器的输出跟随输入 LE1或LE2=0,锁存数据
7.1 键盘接口
按键的特点及输入原理 独立式按键 矩阵式按键
按键的特点及输入原理
按键的分类: 触点式:机械;无触点式:电气 键输入原理: 通过按键的接通与断开,产生两种相反的逻辑 状态 低电平“0”与高电平“1”。 键功能的实现: 对于一组键或一个键盘,需通过接口电路与单 片机相连。可采用查询或中断方式测试有无键按下, 再确定是哪一个键按下,将该键号送入累加器ACC, 然后判断是数字键还是功能键,若是数字键,则将 键号对应的数字送入相关输入缓冲区;若是功能键, 则通过跳转指令转入执行该键的功能程序,执行完 后再返回主程序。
PB0~PB7 200Ω×8
g
d
dp
b
e
c
8 9 10 7 11
CE RD WR IO/M AL E
8155
0
1
2
3
4
a 5
f
6
6
TMROUT
3
TMRIN
4
RE SET
PA0~PA7
电路的接法决定了必须采用逐位扫描显示方式。 即从段选口送出某位LED的字型码,然后选通该位LED, 并保持一段延时时间。然后选通下一位,直到所有位扫 描完。
要注意的两个问题:
1.字型码通常通过查表指令MOVC来求得.
2.换位显示时通常要加一段程序使所有的LED全灭.
7
动态显示程序流程图
采用动态扫描方式依次循环点亮各位数码管,构成 1 多位动态数码管显示电路。
开 始 显示缓冲区首地址送R0 显示位数送R2 起始显示位送R3 禁止所有位(关显示) 从缓冲区取要显示的数 查表得字型码 指向段选口,送字型码 指向位选口,送位选码 延时
接口电路:
矩 阵 式 按 键
wk.baidu.com
关键:如何 判断键号?
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
0 4 8 1 5 9 2 6 3 7
+5V
10 11
12 13 14 15
MCS-51
特点:按键识别应采用扫描法或线路反转法 编程较为复杂,节省口资源,8键以上使用
键盘扫描子程序一般包括以下内容:
1.判别有无键按下;
2.扫描获取闭合键的行、列值;
3.用计算法或查表法得到键值;
4.判断闭合键释放否,如没释放则继续等待;
5.保存闭合键号。
键按下/释放判断
KS: MOV A,#00H MOV P1,A MOV P1,#0FH MOV A,P1 CPL A ANL A,#0FH RET ;全扫描字#00H送P1口
动态显示基本原理
12 13 14 15 16 17 18 19 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 1 2 5
A+1
A
N
60秒到否? Y
段码->8155 PB口 P2口
计数单元清零 数据处理
位码->8155 PC口 P0口 延时显示
N
确有键按下吗?
Y
判断键号
数据送显示 缓冲区 恢复现场 返回
N 8位显示扫描完了吗? Y 恢复现场 释放否?
N
Y
键号送A 按键处理
3.实训流程图
返回
3.实训程序
ORG 0000H AJMP MAIN ORG 000BH AJMP CONT ;◇◇◇◇◇◇◇◇◇◇◇主程序◇◇◇◇◇◇◇◇◇◇◇◇◇ ;――――――――――初始化程序―――――――――――― MAIN: MOV TMOD,#61H ;置T0方式1定时,T1方式2计数 MOV TH0,#3CH ;T0置初值 MOV TL0,#0B0H MOV TH1,#0C4H ;T1置初值 MOV TL1,#0C4H MOV 20H,#00H ;60秒计数单元置初值 MOV 21H,#14H ;50ms计数单元置初值 MOV SP,#3FH ;堆栈指针置初值 MOV R2,#08H ;LED待显示位数送R2 MOV R0,#30H ;显示缓冲区首址送R0 STAR: MOV @R0,#00H ;显示缓冲区清零 INC R0 DJNZ R2,STAR CLR A ;累加器清零
DAC0832功能分析
DI0-DI7:转换数据输入
CS:片选信号
因此,DAC0832可以 有三种工作形式:直通、 单级锁存、两级锁存。
ILE,WR1:控制输入寄存器
ILE=1,WR1=0时:直通
ILE=1,WR1=1时:锁存
XFER,WR2:控制DAC寄存器
XFER=0,WR2=0时:直通
XFER=1 or WR2=1时:锁存