《第4章人机交互技术.ppt》由会员分享,可在线阅读,更多相关《第4章人机交互技术.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4 4章章 人机交互技术人机交互技术 4.1 键盘接口设计4.2 LED显示器接口设计4.3 LCD显示器接口设计4.4 触摸屏技术4.5 打印机接口设计第第4章章 单片机的人机交互技术单片机的人机交互技术 人机交互是指操作人员与计算机之间进行的现场或远程信息交换与联系,用于人机交互的设备称为人机接口,这些设备主要有键盘、显示器和打印机等。一般的计算机控制系统必须要有人机交互功能,以便操作人员可以随时输入数据传递生产命令,并通过显示和打印功能及时掌握生产情况。对于简单的应用场合,由于单片机本身就是一个最小的应用系统,因此能直接满足实际应用所要求的功能,充分发挥单片机硬件结构紧凑、设计简单、
2、成本低的优点。当设计一些较为复杂的测控系统时,其自身的功能往往不能够满足应用的需要,此时可利用MCS-51系列单片机强大的外部扩展功能,扩展各种外围电路以补充片内资源的不足,适应特定应用的要求。概概 述述 键盘是若干按键的集合,是向系统提供操作人员干预命令及数据的接口设备。键盘可分为编码键盘和非编码键盘两种。编码键盘能够由硬件逻辑自动提供与被按键对应的编码。此外,一般还具有去抖动和多键、窜键保护电路,这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作都靠软件来完成,由于其经济实用,目前在单片机应用系统中多采用这种办法。4.1
3、 4.1 键盘接口设计键盘接口设计1、在设计键盘接口时,解、在设计键盘接口时,解决以下几个问题:决以下几个问题:检测是否有键按下;去抖动 若有键按下,判定是哪一个键;确定被按键的读数;不管一次按键持续的时间有多长,仅采用一个数据;处理同时按键。510ms510ms100ms按键过程 前跳沿 后跳沿 识别区 2 2、独立式连接的非编码键盘、独立式连接的非编码键盘()查询方式()中断方式8031INTINT0 0INTINT1 1&P1.0P1.1P1.2P1.78031+5VP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7 为了识别键盘上的闭合键,通常采用两种方法,一种为扫描法,
4、另一种称为线反转法。v扫描法扫描法原理:原理:CPU每次使并行每次使并行输出端口的某位为零,输出端口的某位为零,而其它位为而其它位为1,然后,然后CPU只要读取输入端口中的只要读取输入端口中的数据,就可判别。数据,就可判别。3 3、矩阵式连接的非编码键盘、矩阵式连接的非编码键盘0123456789101112131415+5V8031P1.6P1.7P1.0P1.1P1.2P1.3P1.5P1.4v线反转法线反转法5V原理:原理:第一步设第一步设A口输出口输出B口输入口输入A口输出全口输出全0值,然后值,然后从从B口读入;口读入;第二步设第二步设A口输入口输入B口输出口输出将将B口刚读入的值输
5、出,口刚读入的值输出,再从再从A口读入口读入PA0PA1PA2PA3PB0PB1PB2PB310k890例4.1:用一位数码管显示4X4矩阵键盘按键号名称0-F。#include#define uchar unsigned char#define uint unsigned intuchar code DSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e,0 x00;/段码uchar Pre_KeyNo=16,KeyNo=16;/上次和当前
6、按键的序号,序号范围015,16表示无按键/延时void DelayMS(uint x)uchar i;while(x-)for(i=0;i40 x0f;switch(Tmp)/对对03行分别附加行首键值行分别附加行首键值0,4,8,12case 1:KeyNo+=0;break;case 2:KeyNo+=4;break;case 4:KeyNo+=8;break;case 8:KeyNo+=12;/主程序void main()P0=0 x00;while(1)P1=0 xf0;if(P1!=0 xf0)Keys_Scan();/获取键序号if(Pre_KeyNo!=KeyNo)P0=DSY
7、_CODEKeyNo;Pre_KeyNo=KeyNo;DelayMS(100);1.LED显示技术4.2 LED4.2 LED显示器接口设计显示器接口设计 在单片机应用系统中,为了便于观察和监视系统的运行情况,经常需要用显示器显示输入信息、中间信息、运行状态及运行结果等数据。目前常用的显示器件有LED(发光二极管显示器)和LCD(液晶显示器)两种。LED显示器主要是指由发光二极管组成的数码管显示器或LED点阵显示模块。根据公共端的接法不同,LED数码管分为共阴极和共阳极二种类型,在使用时,由于LED显示器的工作电流通常为515mA,工作电压为1.52.5V,因此使用时需加驱动及限流电阻。根据显
8、示方式不同,LED显示有静态显示和动态显示之分。(1)静态显示方式:每一位显示都占用单独的具有锁存功能的I/O接口,显示信号始终存在;com端连接在一起;8051P1.5P1.4P1.3P1.2P1.1P1.0 LE D C B Ag f e d c b a Dp g f e d c b aMC14495 LE D C B Ag f e d c b a g f e d c b aMC14495+5V(2)动态显示方式 是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,每个数码管的COM为各自独立的位选信号,当单片机输出字形码时,所有数码管都接收到相同的字形码,但
9、究竟是哪个数码管会显示出字形,取决于位选信号。用第2章动态显示程序控制显示的方法是1ms延时,CPU周而复始显示,在实际工程中是不可取的;另外还有一种方法是定时20ms扫描一次,在中断服务程序中,将所有数码管显示一次。虽然程序简单,但CPU的负担较重,一次循环显示的过程,需要几个毫秒,在这段时间里CPU不能做其它事情,否则影响LED亮度的一致性。在一些实时性要求较高的控制系统中,可以采用1ms中断显示的方法控制显示,即用单片机内部定时器每隔1ms产生一次中断。在定时中断服务程序中更新显示,由于中断显示程序不需要延时,更新一位显示只需要几十微秒,对主程序的影响较小。例例4.2:如第二章例:如第二
10、章例3图所示,用定时中断的方式编写控制图所示,用定时中断的方式编写控制4位显示器动态显示的程序。位显示器动态显示的程序。位选码输出位选码输出段选码输出段选码输出#include “reg51.h”char code dispdata=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;/*数字数字0-9对应的段选码对应的段选码*/char dis_data=2,4,6,8;void time(void)interrupt 1 using 1 /*T0中断服务程序入口,中断服务程序入口,定时定时1ms*/static unsig
11、ned char ch1=0;TH0=-500/256;TL0=-500%256;disp(ch1);ch1+;if(ch1=0 x04)ch1=0;void disp(char ch1)/*显示函数显示函数*/static char ch=0 x01;P1=ch;P2=dispdatadis_datach1;ch=ch1;if(ch=0 x10)ch=0 x01;main()TMOD=0 x01;/*T0为为16位定时工作方式位定时工作方式*/TH0=-(500/256);/*预置计数初值预置计数初值*/TL0=-(500%256);EA=1;/*CPU中断开放中断开放*/ET0=1;/*T
12、/C0中断开放中断开放*/TR0=1;/*启动启动T/C0开始定时开始定时*/while(1);/*等待中断等待中断*/LCD(Liquid Crystal Display)液晶显示是一种新型的显示技术,它是利用液晶材料的电光效应(如加电引起光学特性变化)的显示器。液晶本身不发光,靠电信号控制环境光在显示部位反射(或透射)而显示。液晶显示具有很多独到的优异特性,比如低压、微功耗、平板型结构、被动型显示、易于彩色化、长寿命等,已经越来越多地应用到各个领域,从智能化仪器仪表、计算机到家用电器都可以看到液晶显示的身影。液晶显示器通常把驱动电路集成在一起,形成液晶显示模块,用户可以不必了解驱动器与显示
13、器是如何连接的,使用时只需按照一定的要求向显示模块发命令和写数据即可。4.3 LCD显示技术典型应用(典型应用(OCMJ48)如图为MCS-51单片机与OCMJ48中文显示模块的接口电路。图中单片机的P1口接OCMJ模块的8根数据线用于数据的传送,P0.0、P0.1引脚接OCMJ模块的BUSY和REQ作为握手联络信号。1)写字节子程序)写字节子程序该子程序采用查询方式对模块进行写操作。SUB1:JB P0.1,SUB1 ;确信模块空闲(BUSY=0)MOV P1,A ;向总线送数 NOP ;等待数据总线稳定 SETB P0.0 ;置模块REQ=1,向模块发请求命令 HE3:JNB P0.1,H
14、E3 ;等待模块响应(BUSY=1)CLR P0.0 ;撤消REQ请求信号,数据输入结束 RET ;返回2)写汉字程序段)写汉字程序段该程序段显示一个汉字“啊”(区位码为 1601H)。MOV A,#0F0H ;选显示汉字命令字 ACALL SUB1 ;调用写子程序 MOV A,#02H ;#O2H,XX,屏幕坐标 ACALL SUB1 ;调用写子程序 MOV A,#00H ;#00H,YY,屏幕坐标 ACALL SUB1 ;调用写子程序 MOV A,#16H ;#16H,QQ,GB2312汉字区位码高位ACALL SUB1 ;调用写子程序 MOV A,#01H ;#01H,WW,GB2312
15、汉字区位码低位 ACALL SUB1 ;调用写子程序3)写)写816 ASCII 码程序段码程序段 该程序段显示一个816 ASC码“A”。MOV A,#0F9H ;选显示816 ASCII字符命令字 ACALL SUB1 ;调用写子程序 MOV A,#04H ;#04H,XX坐标值 ACALL SUB1 MOV A,#00H ;#00H,YY坐标值 ACALL SUB1 MOV A,#41H ;#41H,ASCII字符代码“A”ACALL SUB1 4)绘制一个点()绘制一个点(11点阵)程序段点阵)程序段 MOV A,#0F2H ;选显示位点阵命令字 ACALL SUB1 ;调用写子程序
16、MOV A,#20H ;#20H,XX,以11 点阵屏幕坐标值 X ACALL SUB1 MOV A,#00H ;#00H,YY,以11点阵屏幕坐标值 Y ACALL SUB1 5)绘制一横线()绘制一横线(18点阵)程序段点阵)程序段 MOV A,#0F3H ;选显示字节点阵命令字 ACALL SUB1 ;调用写子程序 MOV A,#04H ;#04H,XX,以18 点阵屏幕坐标值 X ACALL SUB1 MOV A,#00H ;#00H,YY,以11点阵屏幕坐标值 Y ACALL SUB1 MOV A,#0FH ;为输入字节数据,1为黑点,0 为白点 ACALL SUB14.4.1 触摸
17、屏技术概述触摸屏技术概述 触摸屏触摸屏又称为“触控屏”、“触控面板”,是一种可接收触头等输入讯号的感应式液晶显示装置,当接触了屏幕上的图形按钮时,屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置,可用以取代机械式的按钮面板,并借由液晶显示画面制造出生动的影音效果。触摸屏作为一种较新的电脑输入设备,是目前最简单、方便、自然的人机交互方式。从技术原理角度来讲,触摸屏是一套透明的绝对定位系统,其特性是:透明、采用绝对坐标及能检测触摸并定位。4.4 4.4 触触 摸摸 屏屏 技技 术术4.4.2 触摸屏的分类触摸屏的分类 从技术原理来区别触摸屏,可分为五个基本种类:矢量压力传感技术触摸屏、电阻
18、技术触摸屏、电容技术触摸屏、红外线技术触摸屏、表面声波技术触摸屏。每一类触摸屏都有其各自的优缺点,要了解哪种触摸屏适用于哪种场合,关键就在于要懂得每一类触摸屏技术的工作原理和特点。矢量压力传感技术触摸屏已退出历史舞台;红外线技术触摸屏价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真;电容技术触摸屏设计构思合理,但其图像失真问题很难得到根本解决;电阻技术触摸屏的定位准确,但其价格颇高,且怕刮易损;表面声波触摸屏解决了以往触摸屏的各种缺陷,清晰不容易被损坏,适于各种场合,缺点是屏幕表面如果有水滴和尘土会使触摸屏变的迟钝,甚至不工作。4.5.1 标准标准Centronics接口接口 并行打印机
19、接口通常按Centronics标准定义插头插座引脚,Centronics标准中各引脚和信号之间的对应关系见下表。4.5 4.5 打印机接口电路设计打印机接口电路设计4.5.2 应用实例应用实例在计算机控制系统中,常用的有并行和串行接口的针式打印机。下面介绍并行打印机与计算机的接口举例。例:用8255控制打印机。下图是8031扩展8255与打印机接口的电路。8255的片选线为P0.7,打印机与8031采用查询方式交换数据。打印机的状态信号输入给PC7,打印机忙时BUSY=1,微型打印机的数据输入采用选通控制,当STB上负跳变时数据被输入。8255采用方式0由PC0模拟产生STB信号。按照接口电路
20、,A口地址为7CH,C口地址为7EH,命令口地址为7FH,PC7PC4输入,PC3PC0输出。方式选择命令字为8EH。8031扩展8255与打印机接口的电路 向打印机输出字符串WELCOME的程序如下:#include#include#define uchar unsigned char#define COM8255 XBYTE0 x007f /*命令口地址*/#define PA8255 XBYTE 0 x007c /*口A地址*/#define PC8255 XBYTE 0 x007e /*口C 地址*/void toprn(uchar*p)/*打印字符串函数*/while(*p!=0)/*字符串结束标志*/while(0 x80&PC8255)!=0);/*查询等待打印机的BUSY状态*/PA8255=*p;/*输出字符*/COM8255=0 x00;/*模拟STB脉冲*/COM8255=0 x01;p+;void main(void)uchar idata prn =WELCOME;/*设测试用字符串*/COM8255=0 x8e;/*输出方式选择命令*/toprn(prn);/*打印字符串*/