第7章单片机人机交互_第1页
第7章单片机人机交互_第2页
第7章单片机人机交互_第3页
第7章单片机人机交互_第4页
第7章单片机人机交互_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理及应用单片机原理及应用(第七章(第七章 单片机人机交互)单片机人机交互)教学内容教学内容u 键盘接口技术键盘接口技术u 数码管接口技术数码管接口技术u LCDLCD液晶接口技术液晶接口技术DATE: 2022-2-9PAGE: 2 一、键盘接口技术一、键盘接口技术4按键是一种常开型按钮开关,与单片机的常见接法如图所示。按键未按下时两个触点断开,单片机I/O口输入高电平;当按键闭合时,I/O口输入低电平。4当I/O口为P0口时,由于没有内部上拉电阻,所以必须外接上拉电阻,当I/O口为P1、P2和P3口时,由于内部已有上拉电阻,因此可省略外接的上拉电阻。DATE: 2022-2-9PAG

2、E: 3 一、键盘接口技术一、键盘接口技术4单片机系统中所使用的键盘都是机械式的弹性按键,因为存在机械触点的弹性作用,在按键闭合和弹起的瞬间都会出现抖动,如图所示。按键抖动一般会持续510ms,为使一次按键仅被处理一次,必须消除按键抖动。消除按键抖消除按键抖动可以采用动可以采用软件消抖软件消抖或或硬件消抖硬件消抖。4软件消抖软件消抖指在检测到有按键闭合时,延时一小段时间之后指在检测到有按键闭合时,延时一小段时间之后再次检测,如果仍然检测到按键闭合,则认为按键真正闭再次检测,如果仍然检测到按键闭合,则认为按键真正闭合。合。DATE: 2022-2-9PAGE: 4 一、键盘接口技术一、键盘接口技

3、术硬件消抖硬件消抖方法常用方法常用R-S触发器,如图所示,当按键接触触发器,如图所示,当按键接触“闭合闭合”端后,上面的与非门输出高电平,下面的与非门端后,上面的与非门输出高电平,下面的与非门输出低电平,即输出为输出低电平,即输出为0,在按键抖动过程中只要不接触,在按键抖动过程中只要不接触断开端,下面的与非门输出不会改变,起到消抖的作用;断开端,下面的与非门输出不会改变,起到消抖的作用;DATE: 2022-2-9PAGE: 5 一、键盘接口技术一、键盘接口技术4下图为44的矩阵键盘接到P2口上,如果使行线输出高电平且列线输出低电平,当有键闭合时,那么必然会将该闭合键所在的行线与列线导通,使行

4、线被拉低到低电平,通过检测行线的电平状态可识别是否有按键按下。DATE: 2022-2-9PAGE: 6 一、键盘接口技术一、键盘接口技术4识别按键值的方法是在主程序中反复扫描键盘的方式,分为以下几个步骤: (1)检测是否有按键闭合。首先使P2口高4位输出0,然后读取低4位,如果低4位不都为1,则有键闭合,进入步骤(2); (2)软件消抖。延迟一段时间再测,如果仍有键闭合则进入到步骤(3),否则回到步骤(1); (3)检测键号。为每行和列都设定标号,使行号和列号相加得到该行列交叉点上按键的编号。具体操作如下:依次扫描各列,使该列输出0值,然后读取低4位,如果低4位不全为1,则依次检测各行线的值

5、,找出不为1的行号,从而确定键号。为防止一次按键闭合时间过长而被多次处理,需要等待按键松开之后,再做相应处理。DATE: 2022-2-9PAGE: 7 一、键盘接口技术一、键盘接口技术4例7-1如图7-4所示,编程实现用44的矩阵键盘控制连接在P0和P1口上的16个LED,当按下某键并释放后只有对应的LED灯亮,例如按S0后D0亮,按S1后D1亮。DATE: 2022-2-9PAGE: 8 一、键盘接口技术一、键盘接口技术#include#define KEYPORT P2/定义按键端口定义按键端口#define uchar unsigned char sbit line0=KEYPORT0

6、;sbit line1=KEYPORT1;sbit line2=KEYPORT2;sbit line3=KEYPORT3; /定义行线定义行线led= 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f ;/定义定义LED显示状态显示状态bit iskeyinput()/判断是否有按键闭合判断是否有按键闭合KEYPORT=0 x0f;/低低4位置位置1,高,高4位置位置0if(KEYPORT & 0 x0f) =0 x0f ) /屏蔽高屏蔽高4位位(列线列线),只检测低只检测低4位位(行线行线) return 0;/没有键闭合,返回没有键闭合

7、,返回0else return 1;/有键闭合,返回有键闭合,返回1DATE: 2022-2-9PAGE: 9 一、键盘接口技术一、键盘接口技术uchar key_identify()/识别键号识别键号 uchar linecode=0,rowcode=0;uchar i;uchar scancode=0 xef;/定义扫描码,使第一列为定义扫描码,使第一列为0,其它为,其它为1for( i=0;i4;i+ )/扫描扫描4列列KEYPORT=scancode;/输出扫描码,扫描各列输出扫描码,扫描各列 if(KEYPORT & 0 x0f) =0 x0f ) /屏蔽高屏蔽高4位位(列线

8、列线),检测低检测低4位位(行线行线)/当前列无按键闭合当前列无按键闭合 rowcode+;scancode=scancode1|1;/使输出使输出0的列线左移一位的列线左移一位else /当前列有按键,已经确定了列号,还需要确定行号当前列有按键,已经确定了列号,还需要确定行号 if( line0=0 )linecode=0; /第一行有键闭合,行号为第一行有键闭合,行号为0if( line1=0 )linecode=4; /第二行有键闭合,行号为第二行有键闭合,行号为4if( line2=0 )linecode=8; /第三行有键闭合,行号为第三行有键闭合,行号为8if( line3=0 )

9、linecode=12; /第四行有键闭合,行号第四行有键闭合,行号12break; return linecode+rowcode; /输出键号输出键号DATE: 2022-2-9PAGE: 10 一、键盘接口技术一、键盘接口技术void wait_key_release()/等待按键松开等待按键松开while(1)KEYPORT=0 x0f;/低低4位置位置1,高,高4位置位置0 if(KEYPORT & 0 x0f) =0 x0f ) /如果行线全为高电平如果行线全为高电平break;/没有键闭合没有键闭合,即键盘已经松开即键盘已经松开DATE: 2022-2-9PAGE: 11

10、 一、键盘接口技术一、键盘接口技术void display(uchar n)/键盘处理程序键盘处理程序if(n 8 ) P0 = ledn;P1=0 xff; else P0=0 xff;P1 = ledn-8; DATE: 2022-2-9PAGE: 12 一、键盘接口技术一、键盘接口技术int main(void) uchar keycode; /用于保存识别的键号:用于保存识别的键号:015unsigned int i; while(1) while (!iskeyinput() );/如果没有键按下,则等待如果没有键按下,则等待for( i=0;i500;i+ ); /去除键抖动去除键

11、抖动 if( iskeyinput() ) /检测当前是否有按键检测当前是否有按键 keycode= key_identify(); /识别键号识别键号 wait_key_release(); /等待按键松开后,该函数才退出等待按键松开后,该函数才退出 display (keycode); /显示按键状态显示按键状态 DATE: 2022-2-9PAGE: 13 二、数码管接口技术二、数码管接口技术数码管接口技术 4数码管 (又称LED,即发光二极管显示器, light emitting diode),是单片机系统中最常用的显示器件。通常数码管是由8个发光二级管组合而成,当发光二级管的阳极为高

12、电平,阴极为低电平时,发光二级管可以导通发光。控制LED中各二极管亮灭,可以显示不同的字形。DATE: 2022-2-9PAGE: 14 二、数码管接口技术二、数码管接口技术4数码管分为共阴极和共阳极两种结构形式,如图所示。 共阴极指所有发光二级管的阳极相互独立,而把所有的阴极连接起来形成公共端,公共端通常需要接地。 共阳极指所有发光二极管的阴极相互独立,而把所有的阳极连接起来形成公共端,公共端通常需要接电源。DATE: 2022-2-9PAGE: 15 二、数码管接口技术二、数码管接口技术4通常将数码管的公共端称为位选控制端,将其余8个发光二级管独立的一端称为段选控制端。4为了能够在数码管上

13、显示某一个字符,需要在它的段选控制端输入不同的电平组合,该电平组合为8位数据,通常称为字型码或者段选码,格式如表7-1所示。DATE: 2022-2-9PAGE: 16 二、数码管接口技术二、数码管接口技术4字符的字型码都不同,即使是同一个字符,对于共阴极结构和共阳极结构的LED,字型码也不同,如表7-2所示。DATE: 2022-2-9PAGE: 17 二、数码管接口技术二、数码管接口技术数码管的显示方式有静态显示方式和动态显示方式两种。DATE: 2022-2-9PAGE: 18 (1)静态显示 硬件连线上,每个数码管的公共端都直接接地(共阴极数码管)或接电源(共阳极数码管),各个段选端分

14、别与一个8位的并行I/O端口连接。 显示字符时,将各个字符的字型码分别送入相应的I/O端口,使各数码管同时显示不同的字符。二、数码管接口技术二、数码管接口技术4例7-2 图7-6是采取静态显示方式,单片机的P0口和P1口分别连接两个共阳极7段数码管。编写控制程序,实现P0口上数码管从0到9循环显示,P1口上数码管从9到1循环显示。DATE: 2022-2-9PAGE: 19 二、数码管接口技术二、数码管接口技术#include void delay(unsigned char n);int main(void) unsigned char led=0 xC0,0 xF9,0 xA4,0 xB0

15、,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/0-9的字型码的字型码 unsigned char i; while(1) for(i=0;i10;i+) P0=ledi;P2=led9-i; delay(200); /延时延时 DATE: 2022-2-9PAGE: 20 void delay(unsigned char n) /延时子函数; unsigned char i,j; for(i=0;in;i+) for(j=0;jn;j+);二、数码管接口技术二、数码管接口技术(2)动态显示 只利用一个用于段选的单片机8位I/O端口循环点亮各数码管,当间隔时间较短时

16、,由于人眼的视觉暂留现象,效果与各数码管静态显示相同。 在硬件连线上,将所有的数码管的段选端并联,与一个8位的并行I/O端口连接,每个数码管的位选端分别与另一个I/O端口中的某位连接,轮流输出高电平使各数码管循环点亮。DATE: 2022-2-9PAGE: 21 二、数码管接口技术二、数码管接口技术4例7-3 如图7-7所示,2个共阳极数码管采取动态显示方式与单片机的相连接。P0口为段选端,P2.6和P2.7分别与三极管基极相连做位选端。要求编写控制程序,实现2个数码管能够分别显示“1”和“2”。DATE: 2022-2-9PAGE: 22 二、数码管接口技术二、数码管接口技术#include

17、 unsigned char led=0 xf9,0 xa4;/存储共阳极存储共阳极1和和2的字型码的字型码unsigned char segment= 0 x7f,0 xbf;/存储存储2个数码管的位选码个数码管的位选码unsigned char k=0; /全局变量,用于标识显示器位置全局变量,用于标识显示器位置int main(void)TMOD=0 x00;/设定工作方式设定工作方式0TL0=(8192-2000)%32; /低低5位赋值位赋值(满值满值-定时时间定时时间/机器周期机器周期)%32TH0=(8192-2000)/32; /高高8位赋值位赋值(满值满值-定时时间定时时间/

18、机器周期机器周期)/32TR0=1;EA=1;ET0=1;/开放中断开放中断while(1);DATE: 2022-2-9PAGE: 23 二、数码管接口技术二、数码管接口技术void T0_timer(void) interrupt 1/中断服务程序中断服务程序P0=ledk;/段选赋值段选赋值P2=segmentk; /位选赋值位选赋值k+; /下一个数码管下一个数码管if(k=2) k=0; /显示完最后一个数码管,重新从头开始。显示完最后一个数码管,重新从头开始。 TL0=(8192-2000)%32;TH0=(8192-2000)/32;/重新写入初始值重新写入初始值,即重新定时即重

19、新定时 DATE: 2022-2-9PAGE: 24 三、三、LCDLCD液晶接口技术液晶接口技术4液晶显示器(Liquid Crystal Display,简称LCD)可以显示数字、字母、汉字、以及图形图像等丰富的内容,应用非常广泛。液晶显示器由液晶显示部分和控制器两部分组成,控制器通过控制液晶显示区的电压,实现字符的显示。LCD可分为段型、字符型和点阵型三种。其中1602字符型液晶是应用最广泛的液晶显示器之一。41602液晶的控制器是采用日立公司的HD44780集成电路,只需将待显字符的ASCII码放入其数据存储器,字符就会自动在液晶显示器上显示。该显示器每屏最多可显示2行,每行16个字符

20、,共32个字符。DATE: 2022-2-9PAGE: 25 三、三、LCDLCD液晶接口技术液晶接口技术1、LCD引脚 1602型LCD分有背光(16个引脚)和无背光(14个引脚)两种。14脚1602型LCD引脚共分成三类: 1、电源引脚:引脚1和引脚2 分别是电源正极(VSS)和负极(VDD)。 2、数据引脚:引脚7到引脚14共8个引脚是双向数据总线的第0位到第8位。由于P0口无上拉电阻,因此如果需要接到P0口,则必须接上拉电阻。而接到其他并口,可不接上拉电阻。DATE: 2022-2-9PAGE: 26 三、三、LCDLCD液晶接口技术液晶接口技术3、控制引脚: 引脚3(VL)是反视度调

21、整引脚,通常接地。 引脚4(RS)是寄存器选择引脚,当RS=1时选择数据寄存器,当RS=0时,选择指令寄存器。 引脚5(R/W)是读写选择引脚,当R/W=1时读,当R/W=0时写。 引脚6(E)是模块使能信号,当E上为高电平时,可以读出数据或指令;当E上电平正跳变时,开始写入数据或指令;当E上电平负跳变时,开始执行指令。DATE: 2022-2-9PAGE: 27 三、三、LCDLCD液晶接口技术液晶接口技术42、显示及读写控制指令 在给命令前应先检查LCD的忙碌状态。1602型LCD设了一个忙碌标志位BF,连接在8位双向数据线的DB7位上。 当BF状态为1时,则表示LCD忙碌,需要等待,当B

22、F状态为0时,则表示LCD空闲,可以接受命令和数据。 当模块使能信号E上为高电平时,可以读出数据或指令;当E上电平正跳变时,开始写入数据或指令;当E上电平负跳变时,开始执行指令。表7-3是LCD的读写设置。DATE: 2022-2-9PAGE: 28 三、三、LCDLCD液晶接口技术液晶接口技术为使字符能正确显示,需要进行显示模式的设置。显示模式的设置通过控制指令实现,如表7-4所示。各指令设置意义如下:显示设置指令用于显示方式的设置,当DL=1/0时是8位/4位数据接口;当N=1/0时是两行/一行显示;当F=1/0时,是510/57点阵字符。清屏指令用于清除显示内容。归零指令用于光标回归原点

23、DATE: 2022-2-9PAGE: 29 三、三、LCDLCD液晶接口技术液晶接口技术4 输入方式指令用于画面和光标的移动方式设置。当I/D=1/0时,数据读写操作后AC自动加1/减1;当S=1/0时,读写操作后文字移动/不移动;4 显示开关指令用于画面显示开关设置。当D=1/0时显示开/关;当C=1/0时光标显示/不显示;当B=1/0时光标闪烁/不闪烁;4 光标画面移动指令用于画面和光标平移方式设置,当S/C =1/0时画面/光标平移一个字符位;当R/L =1/0时画面或光标右移/左移。DATE: 2022-2-9PAGE: 30 三、三、LCDLCD液晶接口技术液晶接口技术4 例7-4

24、 要将1602型液晶显示模式设置为162显示,510点阵,8位数据接口,且要求液晶开显示、光标不闪烁,请给出应写入的控制指令。 解:完成题意要求需要设置显示设置指令和显示开关指令。根据表7-4,可知需要设定N=1、F=1、DL=1,因此显示设置指令应为:0011 1100B 即3CH;需要设定D=1,C=1和B=0,因此显示开关指令应为00001110B,即0EH。DATE: 2022-2-9PAGE: 31 三、三、LCDLCD液晶接口技术液晶接口技术43、字符显示编程过程 实现字符的显示要经过以下几个过程: 1)初始化:在使用之前首先应对显示模式进行初始化,即写入显示方式设置指令、输入方式

25、指令、显示开关指令、清屏指令等; 2)进行忙检测,如果空闲,写入显示地址; 3)进行忙检测,如果空闲,将数据写入显示存储器,系统自动将数据显示在液晶屏上。 DATE: 2022-2-9PAGE: 32 三、三、LCDLCD液晶接口技术液晶接口技术44、写操作时序 为使数据或指令能够被LCD正确接收,在写数据或指令时要遵守一定的时序要求,1602型LCD的写操作应按照以下几个过程进行: 1)设置RS,当RS=0时,读写指令;当RS=1时,读写数据; 2)设置读写控制端RW,当RW=0时,写数据或指令,当RW=1时,读数据或指令; 3)将数据或指令送至数据线; 4)给使能端E正跳变,开始传送数据或

26、指令; 5)给使能端E负跳变,开始显示数据或执行指令。4 DATE: 2022-2-9PAGE: 33 三、三、LCDLCD液晶接口技术液晶接口技术4例7-5:根据图7-11电路,编程实现LCD在第一行显示“HELLO WORLD”,第二行显示数字“1 2 3 4 5 6”。 DATE: 2022-2-9PAGE: 34 三、三、LCDLCD液晶接口技术液晶接口技术#include /包含单片机寄存器的头文件包含单片机寄存器的头文件#include /包含包含_nop_()函数定义的头文件函数定义的头文件#define uchar unsigned charsbit RS= P22;sbit

27、RW = P21;sbit E = P20;uchar code dis1 = HELLOW WORLD;uchar code dis2 = 1 2 3 4 5 6;void delay(uchar ms)/延时延时ms时间时间 uchar i; while(ms-) for(i = 0; i 250; i+) _nop_(); _nop_();_nop_(); _nop_();/延时延时4个机器周期个机器周期 DATE: 2022-2-9PAGE: 35 三、三、LCDLCD液晶接口技术液晶接口技术bit busy()/检查是否忙碌检查是否忙碌 bit result; RS = 0; RW

28、= 1; E = 1; / RS=0、RW=1、E=1时,才允许读时,才允许读 _nop_();_nop_();_nop_();_nop_();/延时延时4个机器周期个机器周期 result = (bit)(P1 & 0 x80);/检测忙状态检测忙状态 E = 0; return result;DATE: 2022-2-9PAGE: 36 三、三、LCDLCD液晶接口技术液晶接口技术void wcmd(uchar cmd) /写命令写命令 while(busy();/判断判断LCD是否忙碌是否忙碌 RS = 0; RW = 0;/RS和和R/W同时为低电平时,可以写入指令同时为低电平

29、时,可以写入指令 E = 0; /为使为使E正跳变,先置低电平正跳变,先置低电平 _nop_(); _nop_(); P1 = cmd; /将命令送入将命令送入P1口口 _nop_();_nop_();_nop_();_nop_(); E = 1;/E置高电平,产生正跳变,将指令写入液晶模块置高电平,产生正跳变,将指令写入液晶模块 _nop_();_nop_();_nop_();_nop_(); E = 0;DATE: 2022-2-9PAGE: 37 三、三、LCDLCD液晶接口技术液晶接口技术void pos(uchar y,uchar x)/设置显示位置设置显示位置y行行x列列 y &= 0 x1; /最多两行,限制最多两行,限制y范围范围01 x &= 0 xF; /每行最多每行最

温馨提示

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

评论

0/150

提交评论