750 likes | 938 Views
人机接口 键盘接口 显示器接口 模拟量输入 / 输出接口 D/A 转换接口 A/D 转换接口 通信接口. 第 章 单 片 机 接口技术. Single Chip Microcomputer. 本章内容. PC 机除了主机以外还需要哪些部分呢?. 单片机电路有时候也需要键盘、显示等外设。. 7.1 键盘接口. 按键的特点及输入原理 独立式按键 矩阵式按键. 按键的特点及输入原理. 按键的分类: 触点式:机械;无触点式:电气 键输入原理: 通过按键的接通与断开,产生两种相反的逻辑状态
E N D
人机接口 • 键盘接口 • 显示器接口 • 模拟量输入/输出接口 • D/A转换接口 • A/D转换接口 • 通信接口 第章单片机接口技术 Single Chip Microcomputer 本章内容
PC机除了主机以外还需要哪些部分呢? 单片机电路有时候也需要键盘、显示等外设。
7.1 键盘接口 • 按键的特点及输入原理 • 独立式按键 • 矩阵式按键
按键的特点及输入原理 • 按键的分类: 触点式:机械;无触点式:电气 • 键输入原理: 通过按键的接通与断开,产生两种相反的逻辑状态 低电平“0”与高电平“1”。 • 键功能的实现: 对于一组键或一个键盘,需通过接口电路与单片机相连。可采用查询或中断方式测试有无键按下,再确定是哪一个键按下,将该键号送入累加器ACC,然后判断是数字键还是功能键,若是数字键,则将键号对应的数字送入相关输入缓冲区;若是功能键,则通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。
按键识别: 键抖动及消除: 硬件方案——双稳态去抖电路 键盘接口需要解决的问题 是否有键按下 求键号 机械按键抖动时间在5ms~10ms之间 消除方法: 软件方案——延时10ms~20ms后再次判断
接口电路: 特点:一线一键,按键识别(编程)简单;但占用较多口线,适合8键以下使用。 独立式按键
流程图: 例1:用P1口检测三个按键的状态并完成相应的功能 解: 资源分配: 用P1口的低3位检测3个按键的输入,为1则表示按键没有按下,为0则表示相应按键被按下。
若判断键释放应如何修改? 编程:按三个按键中的任一键都对应一个特定功能。 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
接口电路: P1.7 P1.6 P1.5 +5V P1.4 0 1 2 3 P1.3 5 6 7 4 P1.2 8 9 10 11 P1.1 12 13 14 15 P1.0 MCS-51 特点:按键识别应采用扫描法或线路反转法 编程较为复杂,节省口资源,8键以上使用 矩阵式按键 关键:如何判断键号?
键盘扫描子程序一般包括以下内容: 1.判别有无键按下; 2.扫描获取闭合键的行、列值; 3.用计算法或查表法得到键值; 4.判断闭合键释放否,如没释放则继续等待; 5.保存闭合键号。
键按下/释放判断 KS: MOV A,#00H MOV P1,A ;全扫描字#00H送P1口 MOV P1,#0FH MOV A,P1 ;读入P1口状态 CPL A ;变正逻辑,高电平表示有键按下 ANL A,#0FH ;取低4位 RET ;返回,A≠0表示有键按下
原理: 在某一时刻只让一条列线处于低电平,其余列线均处于高电平,则当这一列有键按下时,该键所在的行电平将会由高电平变为低电平,可判定该列相应的行有键按下。 按键识别——扫描法 流程: 当第0列处于低电平时,逐行查找是否有行线变低,若有,则第0列与该行的交叉点按键按下;若无,则表示第0列无键按下,再让下一列处在低电平,依此循环,这种方式称为键盘扫描。 键号=行首键号(0、4、8、12)+列号(0、1、2、3)
例2:键盘扫描程序 SERCH: MOV R2,#0EFH MOV R3,#00H LINE0: MOV A,R2 MOV P1,A MOV A,P1 JB ACC.3,LINE1 MOV A,#00H AJMP TRYK LINE1: JB ACC.2,LINE2 MOV A,#04H AJMP TRYK LINE2: JB ACC.1,LINE3 MOV A,#08H
AJMP TRYKLINE3: JB ACC.3,LINE4 MOV A,#0CH AJMP TRYKLINE4: INC R3 MOV A,R2 RL A JNB ACC.0,BACK MOV R2,A AJMP LINE0 TRYK: ADD A,R3BACK: RET
定时扫描方式 定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10 ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。
中断扫描方式 为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。
LED的结构和显示原理 静态显示方式 动态显示方式 动态显示的实现 7.2 显示器接口技术 动态显示方式
com com 问题引入: LED显示器如何显示出指定数字/字符?
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 ;监测按键信号 ACALL DELAY ;消抖延时 JB P3.3,DISP ;确认低电平信号 DISP1:JNB P3.3,DISP1 ;监测按键信号 ACALL DELAY ;消抖延时 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 编 程
静态显示方式 • 连接 所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型。 • 特点 原理简单;显示亮度强,无闪烁;占用I/O资源较多。
动态显示方式 • 连接 所有LED的段选线共同连接在一起共用一个 8位I/O口,而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式,每一个时刻只选通其中一个LED,同时在段选口送出该位LED的字型码。
动态显示基本原理 电路的接法决定了必须采用逐位扫描显示方式。 即从段选口送出某位LED的字型码,然后选通该位LED, 并保持一段延时时间。然后选通下一位,直到所有位扫 描完。 要注意的两个问题: 1.字型码通常通过查表指令MOVC来求得. 2.换位显示时通常要加一段程序使所有的LED全灭.
动态显示程序流程图 1 指向段选口,送字型码 开 始 采用动态扫描方式依次循环点亮各位数码管,构成多位动态数码管显示电路。 指向位选口,送位选码 显示缓冲区首地址送R0 显示位数送R2 延时 起始显示位送R3 指向显示缓冲区下一个单元 禁止所有位(关显示) 位选码左移 从缓冲区取要显示的数 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的应用
单片机 控制对象 D/A转换 D/A转换器的作用 • 将数字量转换为模拟量,以便操纵控制对象。 • D/A转换器的主要指标 转换速度:一般几十微秒到几百微秒,快速的可达1微秒。 转换精度(分辨率):决定于输入数字量的位数,位数越多,精度越高。
典型芯片-DAC0832介绍 输出为模拟电流,可转换为电压。 LE1或LE2=1,当前寄存器的输出跟随输入 LE1或LE2=0,锁存数据 DAC0832是一个八位D/A转换器,转换时间1微秒,结构如下:
XFER,WR2:控制DAC寄存器 XFER=0,WR2=0时:直通 XFER=1 or WR2=1时:锁存 ILE,WR1:控制输入寄存器 ILE=1,WR1=0时:直通 ILE=1,WR1=1时:锁存 DAC0832功能分析 DI0-DI7:转换数据输入 CS:片选信号 因此,DAC0832可以有三种工作形式:直通、单级锁存、两级锁存。
译码器输出 单缓冲方式的接口(1) ——一个处于直通方式,另一个处于受控的锁存方式
单缓冲方式的接口(2) ——两个输入寄存器同时受控的方式 “同时”做何解释?
单缓冲方式的应用——产生锯齿波 假定采用接口(1)方式,即输入寄存器受控,而DAC寄存器直通,输入寄存器地址为E000H,产生锯齿波。 源程序清单如下: ORG 0200 MOV DPTR,#0E000H ;指向输入寄存器地址 MOV A,#00H ;转换初值 WW: MOVX @DPTR,A ;WR1有效,启动D/A转换 INC A NOP ;延时 NOP AJMP WW
产生的锯齿波的过程 255/28 254/28 3/28 2/28 1/28 0
D/A转换产生的锯齿波 用同样的方法也可以产生三角波、矩形波、梯形波。 若将A的初值改为FF INC改为DEC? ORG 0200 MOV DPTR,#0E000H ;指向输入寄存器地址 MOV A,#0FFH ;转换初值 WW: MOVX @DPTR,A ;WR1有效,启动D/A转换 A NOP ;延时 NOP AJMP WW DEC INC
74LS138 A7A6A5 CBA Y7 Y7 Y6 Y6 双缓冲方式的接口和应用 ——两个锁存器都接成受控锁存方式。 你知道它与第二种单缓冲方式的区别吗? 输入寄存器地址:00E0H DAC寄存器地址:00C0H 对一个数字量的转换,需两步完成,程序如下: MOV DPTR,#00E0H MOVX @DPTR,A MOV DPTR,#00C0H MOVX @DPTR,A
7.4 A/D转换器接口 • A/D转换器的作用 • 典型芯片ADC0809 • ADC0809的应用
A/D转换 A/D转换器的作用 将模拟量转换为数字量,以便计算机接收处理 传感器 单片机 • 双积分式A/D转换器 • 逐次逼近式A/D转换器。
A/D转换器概述 逐次逼近式典型A/D转换器芯片有: (1)ADC0801~ADC0805型8位MOS型A/D转换器 (2)ADC0808 / 0809型8位MOS型A/D转换器 (3) ADC0816 / 0817
典型芯片—ADC0809介绍 ADC0809是一个8位8通道的AD转换器。
ADC0809功能分析 转换有以下几步: • ALE信号上升沿有效,锁存地址并选中相应通道。 • ST信号有效,开始转换。A/D转换期间ST为低电平。 • EOC信号输出高电平,表示转换结束。 • OE信号有效,允许输出转换结果。 CLK:时钟信号,可由单片机ALE信号分频得到。
转换时钟由ALE分频得到。 P 0 A 0 - A 7 7 4 L S 3 7 3 A 0 A 1 A 2 A L E G 写信号、P2.0有效时,启动AD转换。 ÷ 2 A B C L K 转换结束后,输出高电平,向CPU发出中断请求 C 8 0 3 1 D 0 - D 7 V R ( + ) + 5 V 转换结果由此输出 V R ( - ) G N D 1 I N T 1 E O C I N 0 A D C 0 8 0 9 I N 1 I N 2 I N 3 读信号、P2.0有效时,允许输出AD转换结果。 W R I N 4 1 S T 1 ≥ I N 5 P 2 . 0 I N 6 A L E I N 7 1 O E 1 ≥ R D ADC0809和单片机的连接
8031 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0809 × × × × × × × ST × × × × × C B A C B A 选择的通道 × × × × × × × 0 × × × × × 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 … … × × × × × × × 0 × × × × × 1 1 1 1. 首先分析各个通道的地址。(IN0到IN7的地址为0000H到0007H) 通道选择表
编程应用—中断方式 中断方式: ORG 0000H ;主程序入口地址 AJMP MAIN ;跳转主程序 ORG OO13H ;中断入口地址 AJMP INT1 ;跳转中断服务程序 MAIN:SETB IT1 ;边沿触发 SETB EA ;开中断 SETB EX1 ;允许中断 MOV DPTR,#0007H ;指向0809 IN7通道地址 • 编程:可采用中断、查询两种方式。
MOVX @DPTR,A ;启动A/D转换 SJMP $ ;等待中断 INT1: MOVX A,@DPTR ;读A/D转换结果 MOV B,A ;存数 RETI ;返回
查询方式: ORG 0000H ;主程序入口地址 AJMP MAIN ;跳转主程序 ORG 1000H ;中断入口地址 MAIN: MOV DPTR,#0007H ;指向0809 IN7通道地址 MOVX @DPTR,A ;启动A/D转换 L1: JB P3.3 L1 ;查询 MOVX A,@DPTR ;读A/D转换结果 MOV B,A ;存数 SJMP $
实训练习 • 分析实训电路板中0809的连接,确定各通道地址。 • 对通道0输入模拟电压,运行转换程序,用动态显示方式在最右边两个LED显示转换结果。
7.4 单片机与LCD 接 口 设 计
任务1:如何在LCD的指定位置显示出 指定的字符。 A b 2行×16列
任务2:如何在LCD的指定位置显示字 符串。 Shenzhen Polytechnic 2行×16列
基本内容 • 字符型LCD模块的使用方法 • 单片机与字符型LCD模块接口电路 • LCD接口程序设计** ≈≈≈≈NOTICE≈≈≈≈ LCD: Liquid Crystal Display