第七章-单片机人机交互课件

上传人:痛*** 文档编号:241662868 上传时间:2024-07-14 格式:PPT 页数:41 大小:3.16MB
返回 下载 相关 举报
第七章-单片机人机交互课件_第1页
第1页 / 共41页
第七章-单片机人机交互课件_第2页
第2页 / 共41页
第七章-单片机人机交互课件_第3页
第3页 / 共41页
点击查看更多>>
资源描述
单片机原理及应用单片机原理及应用(第七章(第七章 单片机人机交互)单片机人机交互)教学内容教学内容u键盘接口技术键盘接口技术u数码管接口技术数码管接口技术uLCDLCD液晶接口技术液晶接口技术DATE:2024/7/14PAGE:2一、键盘接口技术一、键盘接口技术4按键是一种常开型按钮开关,与单片机的常见接法如图所示。按键未按下时两个触点断开,单片机I/O口输入高电平;当按键闭合时,I/O口输入低电平。4当I/O口为P0口时,由于没有内部上拉电阻,所以必须外接上拉电阻,当I/O口为P1、P2和P3口时,由于内部已有上拉电阻,因此可省略外接的上拉电阻。DATE:2024/7/14PAGE:3一、键盘接口技术一、键盘接口技术4单片机系统中所使用的键盘都是机械式的弹性按键,因为存在机械触点的弹性作用,在按键闭合和弹起的瞬间都会出现抖动,如图所示。按键抖动一般会持续510ms,为使一次按键仅被处理一次,必须消除按键抖动。消消除除按按键键抖抖动可以采用动可以采用软件消抖软件消抖或或硬件消抖硬件消抖。4软软件件消消抖抖指指在在检检测测到到有有按按键键闭闭合合时时,延延时时一一小小段段时时间间之之后后再再次次检检测测,如如果果仍仍然然检检测测到到按按键键闭闭合合,则则认认为为按按键键真真正正闭闭合。合。DATE:2024/7/14PAGE:4一、键盘接口技术一、键盘接口技术硬硬件件消消抖抖方方法法常常用用R-S触触发发器器,如如图图所所示示,当当按按键键接接触触“闭闭合合”端端后后,上上面面的的与与非非门门输输出出高高电电平平,下下面面的的与与非非门门输输出出低低电电平平,即即输输出出为为0,在在按按键键抖抖动动过过程程中中只只要要不不接接触触断开端,下面的与非门输出不会改变,起到消抖的作用;断开端,下面的与非门输出不会改变,起到消抖的作用;DATE:2024/7/14PAGE:5一、键盘接口技术一、键盘接口技术4下图为44的矩阵键盘接到P2口上,如果使行线输出高电平且列线输出低电平,当有键闭合时,那么必然会将该闭合键所在的行线与列线导通,使行线被拉低到低电平,通过检测行线的电平状态可识别是否有按键按下。DATE:2024/7/14PAGE:6一、键盘接口技术一、键盘接口技术4识别按键值的方法是在主程序中反复扫描键盘的方式,分为以下几个步骤:(1)检测是否有按键闭合。首先使P2口高4位输出0,然后读取低4位,如果低4位不都为1,则有键闭合,进入步骤(2);(2)软件消抖。延迟一段时间再测,如果仍有键闭合则进入到步骤(3),否则回到步骤(1);(3)检测键号。为每行和列都设定标号,使行号和列号相加得到该行列交叉点上按键的编号。具体操作如下:依次扫描各列,使该列输出0值,然后读取低4位,如果低4位不全为1,则依次检测各行线的值,找出不为1的行号,从而确定键号。为防止一次按键闭合时间过长而被多次处理,需要等待按键松开之后,再做相应处理。DATE:2024/7/14PAGE:7一、键盘接口技术一、键盘接口技术4例7-1如图7-4所示,编程实现用44的矩阵键盘控制连接在P0和P1口上的16个LED,当按下某键并释放后只有对应的LED灯亮,例如按S0后D0亮,按S1后D1亮。DATE:2024/7/14PAGE:8一、键盘接口技术一、键盘接口技术#include#defineKEYPORTP2/定义按键端口定义按键端口#defineucharunsignedcharsbitline0=KEYPORT0;sbitline1=KEYPORT1;sbitline2=KEYPORT2;sbitline3=KEYPORT3;/定义行线定义行线led=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/定义定义LED显示状态显示状态bitiskeyinput()/判断是否有按键闭合判断是否有按键闭合KEYPORT=0 x0f;/低低4位置位置1,高,高4位置位置0if(KEYPORT&0 x0f)=0 x0f)/屏蔽高屏蔽高4位位(列线列线),只检测低只检测低4位位(行线行线)return0;/没有键闭合,返回没有键闭合,返回0elsereturn1;/有键闭合,返回有键闭合,返回1DATE:2024/7/14PAGE:9一、键盘接口技术一、键盘接口技术ucharkey_identify()/识别键号识别键号ucharlinecode=0,rowcode=0;uchari;ucharscancode=0 xef;/定义扫描码,使第一列为定义扫描码,使第一列为0,其它为,其它为1for(i=0;i4;i+)/扫描扫描4列列KEYPORT=scancode;/输出扫描码,扫描各列输出扫描码,扫描各列if(KEYPORT&0 x0f)=0 x0f)/屏蔽高屏蔽高4位位(列线列线),检测低检测低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)linecode=12;/第四行有键闭合,行号第四行有键闭合,行号12break;returnlinecode+rowcode;/输出键号输出键号DATE:2024/7/14PAGE:10一、键盘接口技术一、键盘接口技术voidwait_key_release()/等待按键松开等待按键松开while(1)KEYPORT=0 x0f;/低低4位置位置1,高,高4位置位置0if(KEYPORT&0 x0f)=0 x0f)/如果行线全为高电平如果行线全为高电平break;/没有键闭合没有键闭合,即键盘已经松开即键盘已经松开DATE:2024/7/14PAGE:11一、键盘接口技术一、键盘接口技术voiddisplay(ucharn)/键盘处理程序键盘处理程序if(n8)P0=ledn;P1=0 xff;elseP0=0 xff;P1=ledn-8;DATE:2024/7/14PAGE:12一、键盘接口技术一、键盘接口技术intmain(void)ucharkeycode;/用于保存识别的键号:用于保存识别的键号:015unsignedinti;while(1)while(!iskeyinput();/如果没有键按下,则等待如果没有键按下,则等待for(i=0;i500;i+);/去除键抖动去除键抖动if(iskeyinput()/检测当前是否有按键检测当前是否有按键keycode=key_identify();/识别键号识别键号wait_key_release();/等待按键松开后,该函数才退出等待按键松开后,该函数才退出display(keycode);/显示按键状态显示按键状态DATE:2024/7/14PAGE:13二、数码管接口技术二、数码管接口技术数码管接口技术 4数 码 管 (又 称 LED,即 发 光 二 极 管 显 示 器,light emitting diode),是单片机系统中最常用的显示器件。通常数码管是由8个发光二级管组合而成,当发光二级管的阳极为高电平,阴极为低电平时,发光二级管可以导通发光。控制LED中各二极管亮灭,可以显示不同的字形。DATE:2024/7/14PAGE:14二、数码管接口技术二、数码管接口技术4数码管分为共阴极和共阳极两种结构形式,如图所示。共阴极指所有发光二级管的阳极相互独立,而把所有的阴极连接起来形成公共端,公共端通常需要接地。共阳极指所有发光二极管的阴极相互独立,而把所有的阳极连接起来形成公共端,公共端通常需要接电源。DATE:2024/7/14PAGE:15二、数码管接口技术二、数码管接口技术4通常将数码管的公共端称为位选控制端,将其余8个发光二级管独立的一端称为段选控制端。4为了能够在数码管上显示某一个字符,需要在它的段选控制端输入不同的电平组合,该电平组合为8位数据,通常称为字型码或者段选码,格式如表7-1所示。DATE:2024/7/14PAGE:16二、数码管接口技术二、数码管接口技术4字符的字型码都不同,即使是同一个字符,对于共阴极结构和共阳极结构的LED,字型码也不同,如表7-2所示。DATE:2024/7/14PAGE:17二、数码管接口技术二、数码管接口技术数码管的显示方式有静态显示方式和动态显示方式两种。DATE:2024/7/14PAGE:18(1)静态显示 硬件连线上,每个数码管的公共端都直接接地(共阴极数码管)或接电源(共阳极数码管),各个段选端分别与一个8位的并行I/O端口连接。显示字符时,将各个字符的字型码分别送入相应的I/O端口,使各数码管同时显示不同的字符。二、数码管接口技术二、数码管接口技术4例7-2 图7-6是采取静态显示方式,单片机的P0口和P1口分别连接两个共阳极7段数码管。编写控制程序,实现P0口上数码管从0到9循环显示,P1口上数码管从9到1循环显示。DATE:2024/7/14PAGE:19二、数码管接口技术二、数码管接口技术#includevoiddelay(unsignedcharn);intmain(void)unsignedcharled=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/0-9的字型码的字型码unsignedchari;while(1)for(i=0;i10;i+)P0=ledi;P2=led9-i;delay(200);/延时延时DATE:2024/7/14PAGE:20void delay(unsigned char n)/延时子函数;unsigned char i,j;for(i=0;in;i+)for(j=0;jn;j+);二、数码管接口技术二、数码管接口技术(2)动态显示只利用一个用于段选的单片机8位I/O端口循环点亮各数码管,当间隔时间较短时,由于人眼的视觉暂留现象,效果与各数码管静态显示相同。在硬件连线上,将所有的数码管的段选端并联,与一个8位的并行I/O端口连接,每个数码管的位选端分别与另一个I/O端口中的某位连接,轮流输出高电平使各数码管循环点亮。DATE:2024/7/14PAGE:21二、数码管接口技术二、数码管接口技术4例7-3 如图7-7所示,2个共阳极数码管采取动态显示方式与单片机的相连接。P0口为段选端,P2.6和P2.7分别与三极管基极相连做位选端。要求编写控制程序,实现2个数码管能够分别显示“1”和“2”。DATE:2024/7/14PAGE:22二、数码管接口技术二、数码管接口技术#includeunsignedcharled=0 xf9,0 xa4;/存储共阳极存储共阳极1和和2的字型码的字型码unsignedcharsegment=0 x7f,0 xbf;/存储存储2个数码管的位选码个数码管的位选码unsignedchark=0;/全局变量,用于标识显示器位置全局变量,用于标识显示器位置intmain(void)TMOD=0 x00;/设定工作方式设定工作方式0TL0=(8192-2000)%32;/低低5位赋值位赋值(满值满值-定时时间定时时间/机器周期机器周期)%32TH0=(8192-2000)/32;/高高8位赋值位赋值(满值满值-定时时间定时时间/机器周期机器周期)/32TR0=1;EA=1;ET0=1;/开放中断开放中断while(1);DATE:2024/7/14PAGE:23二、数码管接口技术二、数码管接口技术voidT0_timer(void)interrupt1/中断服务程序中断服务程序P0=ledk;/段选赋值段选赋值P2=segmentk;/位选赋值位选赋值k+;/下一个数码管下一个数码管if(k=2)k=0;/显示完最后一个数码管,重新从头开始。显示完最后一个数码管,重新从头开始。TL0=(8192-2000)%32;TH0=(8192-2000)/32;/重新写入初始值重新写入初始值,即重新定时即重新定时DATE:2024/7/14PAGE:24三、三、LCDLCD液晶接口技术液晶接口技术4液晶显示器(Liquid Crystal Display,简称LCD)可以显示数字、字母、汉字、以及图形图像等丰富的内容,应用非常广泛。液晶显示器由液晶显示部分和控制器两部分组成,控制器通过控制液晶显示区的电压,实现字符的显示。LCD可分为段型、字符型和点阵型三种。其中1602字符型液晶是应用最广泛的液晶显示器之一。41602液晶的控制器是采用日立公司的HD44780集成电路,只需将待显字符的ASCII码放入其数据存储器,字符就会自动在液晶显示器上显示。该显示器每屏最多可显示2行,每行16个字符,共32个字符。DATE:2024/7/14PAGE: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:2024/7/14PAGE:26三、三、LCDLCD液晶接口技术液晶接口技术3、控制引脚:引脚3(VL)是反视度调整引脚,通常接地。引脚4(RS)是寄存器选择引脚,当RS=1时选择数据寄存器,当RS=0时,选择指令寄存器。引脚5(R/W)是读写选择引脚,当R/W=1时读,当R/W=0时写。引脚6(E)是模块使能信号,当E上为高电平时,可以读出数据或指令;当E上电平正跳变时,开始写入数据或指令;当E上电平负跳变时,开始执行指令。DATE:2024/7/14PAGE:27三、三、LCDLCD液晶接口技术液晶接口技术42、显示及读写控制指令在给命令前应先检查LCD的忙碌状态。1602型LCD设了一个忙碌标志位BF,连接在8位双向数据线的DB7位上。当BF状态为1时,则表示LCD忙碌,需要等待,当BF状态为0时,则表示LCD空闲,可以接受命令和数据。当模块使能信号E上为高电平时,可以读出数据或指令;当E上电平正跳变时,开始写入数据或指令;当E上电平负跳变时,开始执行指令。表7-3是LCD的读写设置。DATE:2024/7/14PAGE:28三、三、LCDLCD液晶接口技术液晶接口技术为使字符能正确显示,需要进行显示模式的设置。显示模式的设置通过控制指令实现,如表7-4所示。各指令设置意义如下:显示设置指令用于显示方式的设置,当DL=1/0时是8位/4位数据接口;当N=1/0时是两行/一行显示;当F=1/0时,是510/57点阵字符。清屏指令用于清除显示内容。归零指令用于光标回归原点DATE:2024/7/14PAGE: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:2024/7/14PAGE:30三、三、LCDLCD液晶接口技术液晶接口技术4 例7-4 要将1602型液晶显示模式设置为162显示,510点阵,8位数据接口,且要求液晶开显示、光标不闪烁,请给出应写入的控制指令。解:完成题意要求需要设置显示设置指令和显示开关指令。根据表7-4,可知需要设定N=1、F=1、DL=1,因此显示设置指令应为:0011 1100B 即3CH;需要设定D=1,C=1和B=0,因此显示开关指令应为00001110B,即0EH。DATE:2024/7/14PAGE:31三、三、LCDLCD液晶接口技术液晶接口技术43、字符显示编程过程 实现字符的显示要经过以下几个过程:1)初始化:在使用之前首先应对显示模式进行初始化,即写入显示方式设置指令、输入方式指令、显示开关指令、清屏指令等;2)进行忙检测,如果空闲,写入显示地址;3)进行忙检测,如果空闲,将数据写入显示存储器,系统自动将数据显示在液晶屏上。DATE:2024/7/14PAGE:32三、三、LCDLCD液晶接口技术液晶接口技术44、写操作时序 为使数据或指令能够被LCD正确接收,在写数据或指令时要遵守一定的时序要求,1602型LCD的写操作应按照以下几个过程进行:1)设置RS,当RS=0时,读写指令;当RS=1时,读写数据;2)设置读写控制端RW,当RW=0时,写数据或指令,当RW=1时,读数据或指令;3)将数据或指令送至数据线;4)给使能端E正跳变,开始传送数据或指令;5)给使能端E负跳变,开始显示数据或执行指令。4DATE:2024/7/14PAGE:33三、三、LCDLCD液晶接口技术液晶接口技术4例7-5:根据图7-11电路,编程实现LCD在第一行显示“HELLO WORLD”,第二行显示数字“1 2 3 4 5 6”。DATE:2024/7/14PAGE:34三、三、LCDLCD液晶接口技术液晶接口技术#include/包含单片机寄存器的头文件包含单片机寄存器的头文件#include/包含包含_nop_()函数定义的头文件函数定义的头文件#defineucharunsignedcharsbitRS=P22;sbitRW=P21;sbitE=P20;ucharcodedis1=HELLOWWORLD;ucharcodedis2=123456;voiddelay(ucharms)/延时延时ms时间时间uchari;while(ms-)for(i=0;i250;i+)_nop_();_nop_();_nop_();_nop_();/延时延时4个机器周期个机器周期DATE:2024/7/14PAGE:35三、三、LCDLCD液晶接口技术液晶接口技术bitbusy()/检查是否忙碌检查是否忙碌bitresult;RS=0;RW=1;E=1;/RS=0、RW=1、E=1时,才允许读时,才允许读_nop_();_nop_();_nop_();_nop_();/延时延时4个机器周期个机器周期result=(bit)(P1&0 x80);/检测忙状态检测忙状态E=0;returnresult;DATE:2024/7/14PAGE:36三、三、LCDLCD液晶接口技术液晶接口技术voidwcmd(ucharcmd)/写命令写命令while(busy();/判断判断LCD是否忙碌是否忙碌RS=0;RW=0;/RS和和R/W同时为低电平时,可以写入指令同时为低电平时,可以写入指令E=0;/为使为使E正跳变,先置低电平正跳变,先置低电平_nop_();_nop_();P1=cmd;/将命令送入将命令送入P1口口_nop_();_nop_();_nop_();_nop_();E=1;/E置高电平,产生正跳变,将指令写入液晶模块置高电平,产生正跳变,将指令写入液晶模块_nop_();_nop_();_nop_();_nop_();E=0;DATE:2024/7/14PAGE:37三、三、LCDLCD液晶接口技术液晶接口技术voidpos(uchary,ucharx)/设置显示位置设置显示位置y行行x列列y&=0 x1;/最多两行,限制最多两行,限制y范围范围01x&=0 xF;/每行最多每行最多16个字符,限制个字符,限制x范围范围015if(y=1)x|=0 xc0;/当要显示第二行时地址码当要显示第二行时地址码+0 xc0;if(y=0)x|=0 x80;/当要显示第一行时地址码当要显示第一行时地址码+0 x80;wcmd(x);/发送地址码发送地址码;DATE:2024/7/14PAGE:38三、三、LCDLCD液晶接口技术液晶接口技术voidwdat(uchardat)/写要显示的内容写要显示的内容while(busy();/判断判断LCD是否忙碌是否忙碌RS=1;RW=0;E=0;P1=dat;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;DATE:2024/7/14PAGE:39三、三、LCDLCD液晶接口技术液晶接口技术voidinit()/初始化初始化wcmd(0 x3c);/显示模式:显示模式:162显示,显示,510点阵,点阵,8位数据接口位数据接口delay(1);wcmd(0 x0e);/显示光标动设置:显示开,有光标,光标不闪烁显示光标动设置:显示开,有光标,光标不闪烁delay(1);wcmd(0 x06);/显示光标移动设置:光标右移,字符不移显示光标移动设置:光标右移,字符不移delay(1);wcmd(0 x01);/清屏清屏delay(1);DATE:2024/7/14PAGE:40三、三、LCDLCD液晶接口技术液晶接口技术voidmain(void)uchari;init();/初始化初始化LCDdelay(10);pos(0,0);/设置显示初始位置为第一行第设置显示初始位置为第一行第0位位i=0;while(dis1i!=0)wdat(dis1i);/显示字符显示字符i+;pos(1,0);/设置显示初始位置为第二行第设置显示初始位置为第二行第0位位i=0;while(dis2i!=0)wdat(dis2i);/显示字符显示字符i+;while(1);DATE:2024/7/14PAGE:41
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!