《单片机(微控制器)原理及应用》第10章接口技术_第1页
《单片机(微控制器)原理及应用》第10章接口技术_第2页
《单片机(微控制器)原理及应用》第10章接口技术_第3页
《单片机(微控制器)原理及应用》第10章接口技术_第4页
《单片机(微控制器)原理及应用》第10章接口技术_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章

接口技术

教学目的:了解80C51系列单片机与键盘、显示器、功率器件及打印机等外设连接的技术。教学重点:1.键盘接口的工作原理及应用;

2.LED显示器接口的工作原理及应用。

3.打印机的接口及应用。教学难点:1.液晶显示器的原理及应用

2.键盘接口的工作原理。

10.1键盘接口

键盘电路的设计应使CPU不仅能识别是否有键按下,还要能识别是哪一个键按下,而且能把此键所代表的信息翻译成计算机所能接收的形式。 在单片机应用系统中多采用非编码键盘,其分为独立式键盘和矩阵式键盘,硬件上此类键盘只提供通、断两种状态,其它工作都靠软件来完成。

10.1.1键盘工作原理1.键输入原理2.键输入接口与软件应解决的问题(l)键开关状态的可靠输入通常去抖动影响的方法有硬、软件两种。

图10-1键闭合及断开时的电压波动

(a)按键电路(b)按键时电压的抖动

(2)对按键进行编码以给定键值或直接给出键号

①监测有无键按下;

②有键按下后,在无硬件去抖动电路时,应用软件延时方法除去抖动影响;

③有可靠的逻辑处理办法;

④输出确定的键号以满足散转指令要求。10.1.2独立式按键

1.独立式按键结构

在此电路中,按键输入都设置为低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平。

图10-2独立式按键电路2.独立式按键的软件编制

START:MOVA,#0FFH ;置输入方式

MOVP1,AL1:MOVA,P1;输入键状态

CJNEA,#0FFH,L3;有键按下转L3LCALLDELAY;延时5mS,省略

SJMPL1L3:LCALLDELLAY;延时5mSLCALLDELLAY ;延时5mSMOVA,P1 ;再读P1口

CJNEA,#0FFH,L2;确实有键按下转L2SJMPL1;误读键,返回L2:JNBACC.0,TAB0 ;为0转0号键首地址

JNBACC.1,TAB1;为1转1号键首地址

JNBACC.2,TAB2;为2转2号键首地址

JNBACC.3,TAB3;为3转3号键首地址

JNBACC.4,TAB4 ;为4转4号键首地址JNBACC.5,TAB5 ;为5转5号键首地址JNBACC.6,TAB6 ;为6转6号键首地址JNBACC.7,TAB7 ;为7转7号键首地址SJMPL1;再次读入键状态TAB0:LJMPOPR0 ;转向0号键功能程序TAB1:LJMPOPR1……..

TAB7:LJMPOPR7……..

OPR0:…….. ;0号键功能程序 LJMPSTART ;0号键程序执行完返回

……0PR7:……..;7号键功能程序……. LJMPSTART;7号键程序执行完返回

10.1.3行列式键盘1.行列式键盘电路的结构及原理

图10-3单片机I/O口组成的行列式键盘

2.键盘的工作方式(l)循环扫描方式键盘扫描程序一般应具备下述几个功能:判断键盘上有无键按下;去除键的抖动影响;扫描键盘,得到按下键的键号;判别闭合的键是否释放。图8-3中32个键的键值从左上角的数字“0”键对应为如下分布:00H,01H,02H,03H,04H,05H,06H,07H08H,09H,0AH,0BH,0CH,0DH,0EH,0FH10H,11H,12H,13H,14H,15H,16H,17H18H,19H,1AH,1BH,1CH,1DH,1EH,1FH行线P2.0~P2.3处于输入状态,列线P1.0~P1.7为输出状态。按键设置在行、列线交点上,当某个键闭合时,则对应的行线和列线短路,行线输入即为列线输出。获取这32个键值时,P1口和P2口输出与输入的相应值为如下分布:

012345670FE×EFD×EFB×EF7×EEF×EDF×EBF×E7F×E8FE×DFD×DFB×DF7×DEF×DDF×DBF×D7F×D10FE×BFD×BFB×BF7×BEF×BDF×BBF×B7F×B18FE×7FD×7FB×7F7×7EF×7DF×7BF×77F×7

由以上分布可以总结出:闭合键的键号值=行首键号+列号例如,当P1口的输出为F7H(11110111B),即其第3列有输出,读出P2口低4位的值为0DH(1101B),说明是第1行与第3列相交的键闭合,则键号=8+3=11。读键盘程序如下:KEY:LCALLKS ;调用KS判别有键按下吗?JNZK1 ;有键按下转移

LCALLDELAY;无键按下,调延时子程序

LJMP KEYK1:LCALLDELAY;加长延时时间,消除键抖动

LCALLDELAYLCALLKS;调用KS子程序再次判别有无键闭合JNZK2 ;键按下,转逐列扫描LJMPKEY;误读键,返回K2:MOVR2,#0FEH;首列扫描字送R2MOVR4,#00H ;首列号送R4K3:MOVA,R2 MOVP1,A;列扫描字送P1口MOVA,P2;读取行扫描值JBACC.0,L1 ;第0行无键按下,转查第1行MOVA,#00H ;第0行有键按下,该行的行首键号#0H送ALJMPLK ;转求键号L1:JBACC.1,L2;第1行无键按下,转查第2行MOVA,#08H ;第1行有键按下,该行行首键号#08H送ALJMPLK ;转求键号L2:JBACC.2,L3;第2行无键按下,转查第3行MOVA,#l0H ;第2行有键按下,该行的行首键号#l0H送ALJMPLK ;转求键号L3:JBACC.3,NEXT;第3行无键按下,改查下一列

MOVA,#18H ;第3行有键按下,该行的行首键号 ;#l8H送ALK:ADDA,R4;形成键码送入APUSHACC ;键码入栈保护K4: LCALLDELAYLCALLKS ;等待键释放

JNZK4;未释放,等待

POPACC;键释放,弹栈送ACCRET;键扫描结束,返回NEXT:INCR4;修改列号,指向下一列MOVA,R2JNBACC.7,KEY;第7位为0,已扫描完最高列转KEYRLA ;未扫描完,扫描字左移一 位,变为下列扫描字MOVR2,A ;扫描字暂存R2LJMPK3;转下列扫描KS:MOVA,#0 MOVP1,A ;全扫描字#00H送P1口MOVA,P2;读入P2口行状态CPLA;变正逻辑,以高电平表示有键按下ANLA,#0FH ;屏蔽高4位RET ;出口状态:A

0时有键按下

(2)中断工作方式

采用中断扫描工作方式可提高CPU的工作效率。一种简易键盘接口如图8-5所示。图10-5中断方式键盘电路由于P1口为双向I/O口,可以采用“线路反转”法识别键值。步骤如下:(1)P1.0~P1.3输出0,由P1.4~P1.7输入并保存数据到A中;(2)P1.4~P1.7输出0,由P1.0~P1.3输入并保存数据到B中;(3)A的高四位与B的低四位相或成为键码值;(4)查表求得键号。线路反转程序如下:

ORG0000H LJMPSTART ORG0003 LJMPFZH;转读键值程序

ORG 0030HSTART: MOVSP,#50HMOVP1,#0FH MOVIE,#81H;CPU和外部中断0开中断

… SJMP$ ORG0080H;读键值中断程序FZH:SETBRS0;选择第1组工作寄存器

MOVP1,#0F0H;设P1.0~P1.3输出0 MOVA,P1;读P1口

ANLA,#0F0H;屏蔽低4位,保留高4位

MOVB,A;P1.4~P1.7的值存B

MOVP1,#0FH;反转设置,设P1.4~P1.7输出0MOVA,P1 ANLA,#0FH;屏蔽高4位,保留低4位

ORLA,B;与P1.4~P1.7的值相或,形成键码

MOVB,A MOVR0,#00H;置键号初值

MOVDPTR,#TAB;LOOP:MOVA,R0 MOVCA,@A+DPTR;取键码值

CJNEA,B,NEXT2;与按键值相比较,不相等,继续

SJMPRR0;相等返回,键码值在A中NEXT2:INCR0;键值加1 CJNER0,#10H,LOOP;是否到最后一个键RR0: CLRRS0;恢复第0组工作寄存器

RETI TAB:DB0EEH,0EDH,0EBH,0E7H;0,1,2,3的键码值

DB0DEH,0DDH,0DBH,0D7H;4,5,6,7的键码值

DB0BEH,0BDH,0BBH,0B7H;8,9,10,11的键码值

DB07EH,07DH,07BH,077H;12,13,14,15的键码值

10.2显示器接口

10.2.1LED显示器的结构与原理图10-6“8”字型数码管下面以共阴极数码管为例说明字形与字形码的关系。对照图10-6(a)字段,字形码各位定义如下:D7D6D5D4D3D2D1D0DPGfedcba数据位D0与a字段对应,D1与b字段对应……,依此类推。参考图10-6(a)和(b)可以看出,如要显示“1”字形,b、c两字段应点亮,所以对应的字形码为00000110B。10.2.2LED静态显示方式

图10-7静态显示电路

显示子程序如下:功能:把数据从显示缓冲区送到数码管。入口:要显示的数放在以DIS0为首的8个单元中。出口:把预置的数输出以更新原有的显示。DIR:SETBRS0 ;保护第0组工作寄存器

PUSHACC ;保护现场

PUSHDPHPUSHDPLMOVR2,#08H ;显示8个数码管

MOVR0,#DIS7 ;显示缓冲区末地址送入R0DL0:MOVA,@R0 ;取要显示的数作查表偏移量

MOVDPTR,#TAB ;指向字形表首

MOVCA,@A+DPTR;查表得字形码

MOVSBUF,A ;发送显示DL1:JNBTI,DL1 ;等待发送完一帧

CLRTI ;清中断标志,准备继续发送

DECRO ;更新显示单元

DJNZR2,DL0 ;重复显示所有数码管

CLRRS0 ;恢复使用第0组工作寄存器

POPDPL ;恢复现场

POPDPHPOPACCRETTAB:DB0COH,0F9H,0A4H,0BOH,99H;0,1,2,3,4DB92H,82H,0F8H,80H,90H;5,6,7,8,9DB88H,83H,0C6H,0A1H,86H;A,B,C,D,EDB8EH,0BFH,8CH,0FFH;F,-,P,暗10.2.3LED动态显示方式

图10-8扫描式显示电路这种工作方式是分时轮流选通数码管的公共端,使得各个数码管轮流导通,即各数码管是由脉冲电流导电的(循环扫描一次的时间一般为10ms)。当所有数码管依次显示一遍后,软件控制循环,使每位显示器分时点亮。例如,如果要显示“123DEF”时,位选码、段选码扫描一遍的相应显示状态如表8-2所示。

本段程序中,设CWR为8255控制口地址,POA为A口地址,POC为C口地址。DIS0~DIS5是片外显示缓冲区,共6个单元对应6个数码管。

程序清单如下:MOD:PUSHACC ;保护现场

PUSHDPHPUSHDPLMOVR0,#CWR ;指向8255控制口

MOVA,#82H ;设置8255工作方式字

MOVX@R0,A ;设A口、C口为基本输出方式DIR:MOVR0,#DIS5 ;指向显示缓冲区首单元

MOVR6,#20H ;选中最左数码管

MOVR7,#00H ;设定显示时间

MOVDPTR,#TAB ;指向字形表首地址DIR1:MOVA,#00HMOVR1,#POC ;指向8255C口(位选口)

MOVX@R1,A ;关断显示

MOVXA,@R0 ;取要显示的数

MOVCA,@A+DPTR ;查表得字形码。

MOVR1,#POA ;指向8255A口(字形口)

MOVX@R1,A ;送字形码

MOVA,R6 ;取位选字

MOVR1,#POC ;指向位选口

MOV@R1,A;送位选字HERE:DJNZR7,HERE ;延时

INCR0 ;更新显示缓冲单元

CLRCMOVA,R6RRCA ;位选字右移

MOVR6,AJNCDIR1 ;未扫描完继续循环

POPDPL;恢复现场

POPDPHPOPACCRETTAB:DB3FH,06,5BH,4FH,66H,6DH,7DH,07;0~7DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;8~0FH10.2.4液晶显示器概述

1.段码型液晶模块2.点阵字符液晶模块3.点阵图形液晶模块本节将介绍一种较容易学习,使用也较广泛的字符型液晶显示模块LCM。

10.2.5字符型液晶显示模块LCM的组成及原理与指令控制有关的主要部件如下:1.地址指针计数器AC:AC是显示数据寄存器DDRAM和字符发生器CGRAM共同的地址指针计数器。2.DDRAM显示数据存储器存放LCD当前要显示的数据。3.CGROM字符产生器ROMCGROM字符产生器的ROM中存放已经固化好的字符库。4.CGRAM字符产生器RAMCGRAM字符产生器的RAM可存放8个用户设计的5×8点阵图型。5.忙碌标志触发器BFBF指示LCD是否正在作内部处理工作,在写指令前,必须先检查BF标志。10.2.6液晶显示模块LCM引脚及说明

一个典型LCM各引脚的名称及功能如下。1脚VSS-电源地;2脚VCC-+5V;3脚VO-液晶电源(调节显示对比度);4脚RS-寄存器选择端,当RS为0,选择指令寄存器;当RS为1,选择数据寄存器;5脚R/W-读写控制信号,当R/W为0,选择写操作;当R/W为1,选择读操作;由RS和R/W控制读写操作的格式如表10-4所示。表10-4RS和R/W控制读写操作的格式RSR/W操作00写指令寄存器01读忙标志位BF和地址计数器AC到D0~D710写数据寄存器11读数据寄存器6脚E-使能控制端,E是正脉冲信号(脉冲宽度为0.5微妙左右),下降沿有效;7脚~14脚DB0~DB7-8位数据总线;不同厂家15和16脚的设置不同,具体设置情况,要查看型号说明书。10.2.7LCM的指令

表10-5LCM指令一览表指令名称控制信号控制代码

RSR/WD7D6D5D4D3D2D1D0清除屏幕0000000001归位000000001*输入方式00000001I/DS显示状态0000001DCB光标/画面移位000001S/CR/L**工作方式00001DLNF**CGRAM地址设置0001A5A4A3A2A1A0DDRAM地址设置001A6A5A4A3A2A1A0标志/地址计数器

01BFA6A5A4A3A2A1A0写数据10数据

读数据11数据

10.2.8LCM的复位及初始化

在LCM内部有一个复位电路,上电即可自动复位,复位后默认状态如下:1)清除显示;2)功能设定为:8位数据长度,单行显示,5×7点阵字符;3)显示屏、光标、闪烁功能均为关闭;4)输入模式为:AC地址自动加1,显示屏不移动。 如果采用指令进行热启动,使用LCM的一般操作步骤如下:1)写入指令代码30H或38H;2)延时>4.1ms;3)写入指令代码30H或38H;4)延时>100µS;5)写入指令代码30H或38H:6)读取BF标志位,如果为1则等待,为0执行下一条指令;如果电源符合要求,或者已经用指令进行了热启动,则可直接执行功能初始化指令,通常为如下几步:1)工作方式设置指令,0011NFxx;2)清除显示,01;3)设定输入方式,000001I/DS;4)设置显示状态指令,00001DCB。

10.2.9LCM的接口及应用举例以AT89S51单片机为主机,实现与字符型LCM的接口,编程显示2行字母数字,第一行显示“WELCOMETO”,第二行显示“OURUNIVERSITY”。此例中的LCM为20×2显示模块。主机频率为6MHz,接口电路如图8-12所示。要求设定为2行显示,8位数据长度,5×7点阵字型。图10-11LCM接口电路原理图

图8-12接口电路原理图

编程如下。RSBITP2.0;寄存器选择信号R/WBITP2.1;读写选择信号EBITP2.2;使能控制ORG0000HLJMPMAINORG60HMAIN:MOVSP,#60H;设堆栈指针LCALLINIT;调LCM初始化程序LCALLFIRST;调设定显示地址为第一行第一个位 置的子程序MOVDPTR,#TAB1;设置第一行字符的首地址指针LCALLDISPLAY;调用显示字符程序LCALLSECOND;调设定显示地址为第二行第一个位 置的子程序MOVDPTR,#TAB2;设置第二行字符的首地址指针LCALLDISPLAY;调用显示字符程序SJMP$;LCM初始化程序INIT:LCALLDELAY1;调延时5ms子程序,省略MOVA,#38H;功能设置为2行显示,8位接口,5×7点阵ACALLWRC;判读BF和写命令MOVA,#01H;清除显示ACALLWRCMOVA,#06H;设置输入方式为AC为加1计数器,光标右移ACALLWRCMOVA,#0CH;设置显示状态为开显示,不显示光标,不闪烁ACALLWRCRET

;判读BF和写命令WRC:ACALLBUSY:调判读BF子程序MOVP2,#11111000B;E、RS、R/W为0,准备写命令SETBE;E为高MOVP0,A;写入指令代码CLRE;E为低RETBUSY:PUSHACCW:MOVP2,#11111010B;RS=0,R/W=1,E=0,准备读数据SETBEMOVA,P0;读BF和AC值JBACC.7,W;BF不为0,等待CLREPOPACCRET写显示数据子程序

WRTD:ACALLBUSYMOVP2,#11111100B;RS=1,R/W=0,E=0,准备写数据

SETBEMOVP0,ACLRELCALLDELAY2RET显示字符程序

DISPLAY:MOVR1,#00NEXT: MOVA,R1MOVCA,@A+DPTR;将DPTR所指的字符码逐一送到LCD显示

CJNEA,#21H,DSL;到结束符“!”返回,否则继续显示

RET

DSL:LCALLWRTD;调显示数据子程序

INCR1 SJMPNEXTTAB1:DB“WELCOMETO”;LCD第1行显示的字符串DB“!”;结束码为“!”TAB2:DB“OURUNIVERSITY”;LCD第2行显示的字符串DB“!”;结束码为“!” ENDDB后面的字符码也可以直接写为它的代码形式,例如TAB1也可以如下表示:DB20H,20H,20H,57H,45H,4CH,43H,4FH,4DH,45HDB20H,54H,4FH,20H,20H,21H;20H为空格符,21H为“!”符FIRST: MOVA,#10000000B;DDRAM的地址设为80H,即要显示的字 符从第一行的第一个位置开始

LCALLWRC RETSECOND: MOVA,#11000000B;DDRAM的地址设为C0H,即要显示的字 符从第二行的第一个位置开始

LCALLWRC RETTAB1:DB“WELCOMETO”;LCD第1行显示的字符串

DB“!”;结束码为“!”TAB2:DB“OURUNIVERSITY”;LCD第2行显示的字符串

DB“!”;结束码为“!”END10.3功率开关器件接口

10.3.1输出接口的隔离技术

图10-12光电隔离器原理及接法(a)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论