版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习情境导航知识目标1.扩展I/O口接口电路2.扩展I/O口访问3.多个数码管动态显示的接口电路及程序设计4.LED点阵结构与工作原理5.按键开关抖动的影响及软件消抖的万法6.独立式键盘电路及编程7.矩阵键盘电路及编程下一页返回学习情境导航能力目标1.掌握常用简单I/O口扩展接口电路2.掌握常用可编程I/O口扩展接口电路3.能够根据电路编写扩展I/O口地址4.能够使用指令产生访问扩展I/O口的读写信号5.掌握动态显示的接口电路6.能够根据要求设计动态显示固定数字的程序7.根据行扫描、列扫描设计亮条显示程序8.独立式键盘电路连接9.独立式键盘电路程序编写10.矩阵式键盘电路连接11.行列扫描在矩阵式键盘程序编写中的应用下一页返回上一页学习情境导航重点、难点1.I/O口的扩展万法2.数码管的动态显示3.矩阵键盘电路的应用返回上一页5.1键盘控制数码广告牌
一、任务目标
(1)独立式键盘电路连接。
(2)独立式键盘消抖程序编写。
(3)独立式键盘按键按下个数判断程序编写。
(4)独立式键盘的键盘码产生程序编写。
(5)实现根据键盘码采用不同的处理程序。
(6)巩固单片机数码管显示的应用。二、任务要求有8个按键(K0-K7,当按下K0时,数码管显示0;按下K1时,数码管显示1……按下K7键时,数码显示7;如果同时有2个或2个以上的按键按下,则数码管不理会,保持原显示状态。下一页返回5.1键盘控制数码广告牌
三、知识链接
(一)健盘电路键盘是由若十按键组成的开关矩阵,一个按键实际上是一个开关元件,也就是说键盘是一组规则排列的开关。它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。键盘上的每个键都担负一项处理功能,而处理功能是通过软件实现的,所以键盘接口必须与软件配合。为此,键盘上每个键都对应有一个处理程序段,键的功能是通过运行这个程序段实现的。为了在程序中能顺利地分支到键处理程序段,就需要对键进行编码,称为键码,以便能按键码进行程序分支。下一页返回上一页5.1键盘控制数码广告牌
键盘按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键盘码的方法。编码键盘主要是用硬件来实现对键的识别并产生这个按键对应的键盘码,不用单片机去操心。而非编码键盘主要是由单片机的软件来实现按键的识别和键盘码的产生,什么工作都要由单片机来完成。全编码键盘能够由硬件逻辑白动提供与键对应的键盘码,此外,一般还具有去抖动、多键和窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其他工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。下一页返回上一页5.1键盘控制数码广告牌1.按键开关的去抖动问题单片机中组成键盘的按键一般是由机械触点构成的。一个按键构成的键盘电路如图5-1所示。当按键S未被按下时,P1.0输入为高电平,S闭合后,P1.0输入为低电平。单片机通过对P1.0上的电平高低的判断就可以知道按键S是否被按下。由于按键是机械触点,当机械触点闭合、断开时,会有抖动,经过一段时间才会稳定下来。在抖动时,机械触点一会几接触,一会几断开,接触时,P1.0为低,断开时,P1.0为高,所以按1次S键,使得P1.0输入端的波形如图5-2所示。下一页返回上一页5.1键盘控制数码广告牌
这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是微秒级的,而机械抖动的时间至少是毫秒级,对计算机而言,这己是一段“漫长”的时间了。只按一次按键,本来只应该在P1.0上产生一次低电平,但由于抖动,在P1.0上产生了很多次低电平,而单片机是通过对P1.0上的电平高低来判断S键是否被按下的,这就会使得单片机的判断出现错误,引起CPU对一次按键操作进行多次处理。为使CPU能正确地读出P1.0口的状态,对每一次按键只响应一次,就必须考虑如何去除抖动,‘常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法,因此,对于硬件方法本章不介绍。软件法就是在单片机获得P1.0口为低电平的信息后,不是立即认定S1下一页返回上一页5.1键盘控制数码广告牌己被按下,而是延时10ms后再次检测P1.0口,如果仍为低电平,说明S1的确被按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高电平)再延时10ms消除后沿的抖动,然后再对键值处理。不过一般情况下,通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别的,要根据不同的需要来编制处理程序,但以上是消除键抖动的基本原则。
2.独立式键盘(1)电路结构。所谓独立式键盘就是指构成键盘的每个按键占用一根I/O端线,如图5-3所示。下一页返回上一页5.1键盘控制数码广告牌
图5-3中4个按键S0,S1,S2,S3分别接到P1.0,P1.1,P1.2和P1.3这4根I/O管脚上,每个按键占用1条I/O管脚,构成一个四按键的独立式键盘电路。特点:独立式按键每一个键都要占用1根I/O线,而80C51单片机的I/O线资源是有限的,只有32条,所以这种按键方式只适用于按键数量较少的场合,如果按键较多,可以采用管脚利用效率更高的矩阵式键盘,矩阵式键盘将在下一节的任务中详细地进行讲解。
(2)按键按下的判断。单片机通过判断按键所接的I/O管脚上是否为低电平来确定该按键是否被按下了,可以通过指令“JBP1.X标号”或者“JNBP1.X标号”对管脚电平一个一个地进行判断,就可以知道是否有按键被按下,下一页返回上一页5.1键盘控制数码广告牌但是并不要求判断出是哪一个按键被按下了,所以一般采用的方法为:把P1管脚的值送到累加器中,然后用CPL指令对累加器取反,如果没有按键被按下,此时取反的结果一定为0;只要有一个按键被按下,不管是哪个按键,都会使P1的某位一进制数变为0,取反后的结果一定会有一位一进制数变为1,不管是哪一位一进制数变为1,整个结果肯定都大于0,所以只要判断取反后的结果是不是为0,就可以知道有没有按键被按下了,具体实现程序如下。MOVP1,#0FFHMOVA,P1CPLAJNZ标号下一页返回上一页5.1键盘控制数码广告牌
其中“JNZ标号”指令是对累加器中的内容进行判断,为i(表示有按键被按下)时,跳到标号去;为0(表示没有按键被按下)时,顺序执行下面的指令。例如,图5-3中的so和s1两键被按下,此时P1的8个管脚只有P1.0和P1.1为低,P1的输入值11111100,单片机将这个值送入累加器中,取反后的结果为00000011,显然是大于0的,单片机就知道有按键被按下了。
(3)判断有几个按键被按下。假如A的D0位为1表示接在P1.0上按键闭合,为0则表示断开,单片机只要判断一下累加器中为1的位数有几位,就可以知道有几个按键被按下。那么单片机怎样来统计累加器中1的个数呢?可以采用的方法下一页返回上一页5.1键盘控制数码广告牌为:判断累加器的最低位D0位是不是为1,为1的话就将存储器R3中的内容增加1,为0则R3中的内容不变,然后运用"RLA"指令将累加器移位一次,再对D0进行判断,这样判断8次,将累加器中的各位判断完后,R3中所装的值就是累加器中1的个数。这个值也反映了被按下的按键个数,具体程序如下。下一页返回上一页5.1键盘控制数码广告牌(4)判断哪个按键被按下。以图5-3为例来介绍,如果现在只有一个按键被按下,此时将P1口管脚的值取到A中,再经过取反后,累加器中的8位一进制数中只有1位为1,其他都为0,哪一位为1,就是对应的那个按键被按下,然后单片机就产生出该按键的键盘码(键盘的数字名字),每个按键都应该有不同的键盘码,这单规定图5-3中4个按键S0,S1,S2,S3四个按键的键盘码分别0,1,2,3,下面看看单片机是怎样实现当有一个按键被按下后,判断出是哪个按键按下并产生出相应的键盘码的。基本方法是:首先判断累加器中的最低位ACC.0位是不是为1,如果最低位为1,说明按键位就找到了,就是最低位对应的按键S0;如果最低位不为1,说明被按下的按键不是S0按键,就要继续找,怎样继续下一页返回上一页5.1键盘控制数码广告牌呢?用一次“RRA"指令将数据移动一下,然后再判断ACC.0位是不是为1,如果还不是为1,说明对应的S1键也没有被按下,就再向右移动1次,继续判断ACC.0位,此时实际上是判断S2按键是否被按下,这样一直做下去,并A用一个存储器记录下移动的次数(每移动一次,就将这个存储器的内容增加1),看这样向右移动几次,能够使累加器ACC.0位变为1,此时这个存储器中所记录的次数就是被按下按键的编号。通过实例来说明,例如电路图5-3中,假设是S2按键被按下,那么此时P1的值送到A中,再取反后结果如下。下一页返回上一页5.1键盘控制数码广告牌
很明显击要用2次“RRA”指令才可以让D0位变为1,而移动次数“2”就是S2键的键盘码。同理,如果是S3按键被按下,A中得到的值将如下。这个数据需要向右移动3次,ACC.0位才会为1,而这个右移次数3,就是S3键的键盘码。可见,要判断究竞是哪个按键被按下,要得到这个被按下按键的键盘码,这需要看累加器中的这个8位一进制数经过多少次右移指令使得A中的最低位ACC.0为1,这个次数就是被按下的这个按键的键盘码。下一页返回上一页5.1键盘控制数码广告牌如果是S0键被按下,得到键盘码的过程是怎样的呢?具体实现程序如下。下一页返回上一页5.1键盘控制数码广告牌(5)单片机怎样实现按下不同的按键完成不同的处理过程。通过刚才的讲解己经知道,当按下不同的按键时,单片机就会产生不同的键盘码,每个按键都有自己特有的键盘码。前面的内容中讲过“JMP@A+DPTR”指令和跳转表格的概念,即将一个跳转表格的首地址装入DPTR中,然后如果要想跳到不同的程序段去,只需要向A中放入不同的行号就可以了,只要将按键的键盘码作为行号装入A中,运用“JMP@A+DPTR”指令,就可以选择跳转表格中的某行跳转指令来执行,跳到某个程序段去,键盘码不同,所选的跳转表格中的跳转指令就不一样,所执行的程序段就不一样。具体程序如下(假设按键的键盘20码是装在R4中的),其结构参考见表5-1。下一页返回上一页5.1键盘控制数码广告牌下一页返回上一页5.1键盘控制数码广告牌
例如,电路图5-3中的S1键被按下,在R4中键盘码就为1,通过上面这段程序,就会把跳转表格中的第1行指令(注意整个跳转表格是从第0行开始的)“AJMPL1”拿来执行,单片机就会跳到标号L1标出的程序段去。
(二)独立健盘电路的编程方法所谓键盘的编程就是实现当按下某个按键后,单片机能够准确地判断出是哪个按键,并能根据需要执行相应的处理程序。编程方法根据实际应用情况的不同会有很多变化,但还是有一些规律可循,下面总结一下独立式键盘编程的一些规律,键盘编程分为以下几步。下一页返回上一页5.1键盘控制数码广告牌(1)首先单片机要知道是不是有按键被按下。注意,为消除抖动的影响要判断两次,第一次判断按下键后,要延时10ms再次判断,如果还是有按键被按下,此时才能真正确定按键被按下。
(2)判断出确定有按键被按下后,再判断是不是只有1个按键被按下。当然,如果确信在实际应用时不会出现多个按键同时被按下的情况,这个步骤也可以不要。
(3)判断究竞是哪一个按键被按下,并得到这个按键的键盘码。
(4)在根据不同的键盘码值,运用"JMP@A+DPTR”指令和跳转表格,跳到相应的处理程序去。将这几个步骤画成流程图的方式,如图5-4所示。下一页返回上一页5.1键盘控制数码广告牌
四、任务实施
1.跟我做——硬件电路分析电路如图5-5所示,七段数码管U2为共阴极数码管,受P1口的低7位管脚控制。S0-S7共8个按键和8个电阻构成独立键盘电路,可以控制P2口的8个管脚输入的电平高低,按下键,相应管脚输入低电平,不按键,输入高电平。2.跟我做——软件分析通过编程,对8个按键构成的独立键盘电路进行监控,如果发现有目只有一个按键被按下,就产生相应按键的键盘码,然后运用查表指令“MOVCA,@A+DPTR”将键盘码作为行号放入到A中,将相应的字型码取出送给数码管显示。注意,这单也可以采用下一页返回上一页5.1键盘控制数码广告牌"JMP@A+DPTR''指令,让单片机根据不同的键盘码,跳到不同的处理程序段去,显示出不同的数码出来,大家可以自己思考一下该怎么编程。这单定义S0,S1,…,S7的键盘4己分别为0,1,…,7。具体程序如下,程序流程图如图5-6所示下一页返回上一页5.1键盘控制数码广告牌下一页返回上一页5.1键盘控制数码广告牌下一页返回上一页5.1键盘控制数码广告牌3.跟我做——软硬件联调
(1)在Proteus中按图5-5搭接好电路,本任务中所用元件见表5-2。
(2)在伟福软件中编辑程序,进行编译,得到.HEX格式文件。
(3)将所得的.HEX格式文件在Proteus中加载到单片机芯片中。
(4)开始仿真,随意按下8个键盘中的任意一个,看数码管显示有怎样的变化。
(5)在Proteus中运行正常后,用实际硬件搭接电路,通过编程器将.HEX格式文件下载到AT89C51中,通电观看实际效果。返回上一页5.24x4矩阵键盘控制双数码管显示
一、任务目标
(1)矩阵式键盘硬件电路正确连接。
(2)矩阵式键盘电路的软件编程。
(3)巩固了程序的编写方法及调用方法。
(4)巩固单片机数码管动态显示的相关知识。二、任务要求用S0-S15共16个键盘(排列成4行和4列的形式)去控制2个数码管的显示,要求当有一个按键被按下时,就将该按键对应的键盘码在两个数码管上显示出来,规定S0的键盘码为0,S1的键盘码为1,…,S15的键盘码为15。下一页返回5.24x4矩阵键盘控制双数码管显示
三、知识链接
1.矩阵键盘电路在上一节的任务中介绍了独立式键盘,知道了独立式键盘每个按键都要占用1条I/O线,而单片机的管脚是很宝贵的资源(只有32条),如果所使用的键盘电路按键很多,此时再采用独立式键盘电路就显得不太合适,这个时候一般都采用矩阵式键盘。
图5-7是一个由16个按键构成的矩阵式键盘电路的结构图。这16个按键排列成4行X4列的键盘矩阵,每一行或每一列用一根I/O线来控制和监控,这就构成矩阵式键盘电路。16个按键只要8条I/O线就可以,而如果采用独立式键盘电路,要16条I/O线才可以。可见,采用矩阵式键盘可以大大节约I/O线资源,按键越多,效果越明显。下一页返回5.24x4矩阵键盘控制双数码管显示
一般把矩阵式键盘的行线和列线接到单片机的I/O管脚上,图5-8中行线接到P1.0-P1.3,列线接到P3.0-P3.3上。在实际应用中从P1.0-P1.3管脚输出数据到行线,然后将列线对应的数据输入到P3.0-P3.3上。也就是说在使用矩阵式键盘时,连接行线和列线的I/O管脚不能全部用来输出或全部用来输入,必须一个输出,另一个是输入,比如在这个电路中,就是行为输出,列为输入,为什么要这样呢?下面就慢慢给大家介绍。1)怎样判断矩阵式键盘是否有按键被按下(行列扫描法)
分析一下图5-7中的这个矩阵式键盘电路图,现在让单片机从P1.0-P1.3四条I/O脚上输出全0,让这4条行线全部为低电平,此时观察按下一页返回上一页5.24x4矩阵键盘控制双数码管显示下和没按下键对列线电平高低有什么影响?(1)如果此时没有任何一个按键被按下,这4根接地(为0V)的行线是不会将任何一根列线短路接地的,也就是说4条列线不会与4根为0(接地)的行线发生任何的关系,此时4根列线都为高电平,输入到P3.0-P3.3四根管脚的数据就是为1111的4位一进制数。
(2)如果此时有一个按键被按下(假设是S12键),当S12键被按下后,由于此时4根行线输出的全是低电平(接地),其中的第3行行线P1.3(注意是从第0行开始数)经过被按下连通的S12按键,直接与第0列列线P3.0相连,使得这根列线与地(低电平)短路,从而使得P3.0为0,而其他3根列线不会受到影响,此时输入到P3.0-P3.3中的数据为0111。下一页返回上一页5.24x4矩阵键盘控制双数码管显示
类似地,还可以分析出,如果是按下S10键,则行线P1.2输出的接地电平就要经过按下连通的S10键短路第2根列线P3.2,使得输入到P3.0-P3.3中的数据为1101,大家可以自己分析一下,如果是S3按键按下了,输入到P3.0-P3.3中的数据应该为多少?
通过上面的分析,可以发现矩阵式键盘有这样一个规律:当行线输出全0时,此时如果没有按键被按下,则列线输入的数据就全为1;如果有一个按键被按下了,则这个按键对应的列线输入就会变成0。单片机通过对连接到列线的I/O管脚上的输入数据的判断,就可以知道是否有按键被按下,判断的程序段如下。下一页返回上一页5.24x4矩阵键盘控制双数码管显示下一页返回上一页5.24x4矩阵键盘控制双数码管显示
在上面这段程序中,经过延时10ms程序后又判断了一次是否有按键按下,这样做的目的是为了消除抖动,这个内容在前一节的任务中介绍过。经过以上的介绍,大家应该明白行线和列线所接的I/O管脚必须一个为输出,另一个为输入。如果行和列都是输出或输入,单片机是不能够知道有没有按键被按下的。
2)怎样判断是哪一个按键被按下现在,己经知道单片机是怎样判断有没有按键被按下的,那它又是怎样来判断按键所在的行和列的呢?可采用一种名为行列扫描法的方法,下面就来对其进行介绍。
下一页返回上一页5.24x4矩阵键盘控制双数码管显示假设现在被按下的按键是S14,可以看出来S14所在的行是第3行,列是第2列,但是单片机是没有眼睛的,下面就来模拟一下单片机是怎样通过行列扫描法将S14按键的行号和列号找出来的。当按下S14键后,通过上一个知识点的相关程序段,单片机就可以判断出有按键被按下了,然后它应该怎么做呢?(1)单片机先将第0行输出低电平,其他行输出1,即在P1上输出11111110B的数据,开始第0行的检测。很明显,由于被按下的键是S14,第1行的4个按键都没有连通,所以输出的这个第0行的接地低电平不会影响到任何一根列线,而其他3根行线都为高电平1,所以,4根列线的高电平不会受到任何影响,此时,列线输入到P3的数据全为1,单片机发现此时输入进来的列线数据为全1,就知道按键不在第0行。下一页返回上一页5.24x4矩阵键盘控制双数码管显示(2)第0行没找到,单片机又开始检测第1行,单片机让P1.1输出为0,Pl口的其他管脚输出1(P1输出的数据为11111101B),也就是让第1行输出为0,其他行都为1。同样的道理,由于第1行也没有按键按下,该行输出的低电平0不会对列线造成任何影响,此时,列线输入到P3的还是全1,单片机一见到列线输入还是全1,就知道此时第1行没有按键被按下。
(3)第1行还是没找到,单片机又开始检测第2行,方式与检测第1行相同,只不过输出数据变为11111011B。
(4)第2行还是没找到,单片机又开始拾测第3行,单片机让P1.3输出为0,P1曰的其他管脚输出1(P1输出的数据为11110111B),也就是让第3行输出为0,其他行都为1,由于按下了S14键,该键正好处于下一页返回上一页5.24x4矩阵键盘控制双数码管显示第3行,所以此时第3行所输出的低电平0(理解为接地)就要通过接通的S14按键,使得S14按键对应的第2根列线P3.2被低电平短路,由原来的高电平变为低电平,使得列线输入到P3口的数据就不是全1,而是P3=11111011B,单片机只要发现接收进来的列线不是全为1,它就知道被按下的按键就在现在检测的行。可以用一个存储器(比如说R0,让它初值为0,每检测一行,就把它的值加1,这样当检测结束时,这个存储器中的内容就是行号了。在本例中,当单片机检测到第3行时,就把行号确定下来了,此时把行线所接端口P1输出的数据称为行扫描码,把此时列线输入到P3口的数据称为列扫描码,通过刚才的分析知道,对于S14按键被按下时的行扫描4己为P1=11110111B,列扫描4己为P3=11111011B,下一页返回上一页5.24x4矩阵键盘控制双数码管显示单片机现在己经知道按键所在的行,还需要确定按键在哪一列,它是怎么做的呢?下面接着分析。
(5)确定按键在哪一列。单片机怎样确定按键在哪一列呢?大家仔细观察一下刚才说的S14按键对应的列扫描码P3=11111011B,列扫描码中包含了按键所在的列的信息,可以发现列扫描码中0所在的位置就是按键所在的列号,比如现在的列扫描码是D2位为0,则按键所在列就是第2列,所以单片机是怎样判断出按键列所在的位置的?实际上就是去判断列扫描码中的那个0数据在哪一位,可以用上一个任务中介绍的方法来让单片机求出列号,就是将列扫描码取反后,看需要向右移动几次可以将数据1移动到最低位,这就是要求的列号,比如在这个例了中,S14键按下时,列扫描码为P3=11111011B,取反后变为下一页返回上一页5.24x4矩阵键盘控制双数码管显示00000100B,很显然要运用2次RR指令,也就是要向右移动2次,为1的那位数据才会移动到最低位去,所以S14按键的列号为2,它在第2列上(注意列号是从0开始的),具体实现程序如下。下一页返回上一页5.24x4矩阵键盘控制双数码管显示
可见,当有一个按键被按下后,单片机是这样找到这个按键的:它一行一行地扫描,也就一行一行地输出0电平,然后检测列线输入是不是全为1,如果全为1,说明按键不在这一行,继续检测下一行,直到输出某行为0时;列的输入不是全为1,而是某一位为0,说明按键就在正在检测的行,确定出行号,然后再根据列扫描码,求出列号,这样就把按键对应的行列号确定下来了。如果是按键S7被按下,大家自己试试用语言来描述一下单片机通过行列扫描来确定行号和列号的过程。
3)怎样产生键盘码和独立式按键一样,矩阵式键盘的每一个按键都有自己的键盘码,它是怎样产生的呢?对于矩阵式键盘,它的键盘码通常都与它对应的下一页返回上一页5.24x4矩阵键盘控制双数码管显示行列号有固定的运算关系,只要知道行列号,就可以求出按键的键盘码。以图5-7为例,设定S0的键盘码为0,S1的键盘码为1,…,S15的键盘码为15。则键盘码与按键行列号的关系为:键盘码一行号X每行按键数+列号。比如S14键,行号为3,列号为2,每行键盘数为4,所以键盘码=3X4+2=14;再例如S10键,行号为2,列号为2,则S10的键盘码=2X4+2=10。
2.矩阵式键盘电路的编程矩阵式键盘电路的编程基本过程如下。
(1)判断是否有按键被按下(注意要经过延时程序延时10ms并判断两次,以消除抖动的影响)。下一页返回上一页5.24x4矩阵键盘控制双数码管显示(2)通过行列扫描法得到行列扫描码,并确定出行号和列号。
(3)通过行号和列号与键盘码的关系求被按下按键的键盘码。
(4)根据得到的不同的键盘码采用不同的处理程序(可利用"JMP@A+DPTR"指令和跳转表格的相关知识)。
3.子程序的编写在实际的单片机应用系统软件设计中,为了程序结构更加清晰、易于设计、易于修改以及增强程序可读性,基本上都要使用子程序结构。子程序是一个具有独立功能的程序段,编程时需遵循以下原则。(1)了程序的第一条指令必须有标号,明确了程序入口地址,便于主程序调用。(2)以返回指令“RET”结束子程序。下一页返回上一页5.24x4矩阵键盘控制双数码管显示(3)具备较强的通用性,尽可能避免使用具体的内存单元和绝对转移地址等。
(4)注意保护现场和恢复现场。四、任务实施
1.跟我做——硬件电路分析硬件电路如图5-8所示。
(1)矩阵式键盘电路:由S0-S15共16个按键构成,列线为输入,接到P3口(P3.0-P3.3),行线为输出,接到P1口(P1.0-P1.3。注意在这个电路中没有把4条列线通过4个电阻接电源,以保证没有按键被按下时,列线输入全为1,或者让列线于l一么也不接,处于悬空状态,实际上工作原理两者都一样,因为对于单片机的I/O口为输入管脚时,悬空脚下一页返回上一页5.24x4矩阵键盘控制双数码管显示相当于接高电平,等效于4根列线接到了电源Vcc上。
(2)数码管显示电路由两个8段数码管构成,两个数码管为共阴极数码管,公共端由P1.0输出的电平控制,公共端为低时,数码管显示,公共端为高,数码管不显示。字型码由单片机的P2口输出给数码管,本电路中两个数码管采用的是动态显示,电阻RS为上拉电阻。
(3)复位电路只有上电复位,由C3电解电容构成。
2.跟我做——软件分析通过编程,对16个按键构成的矩阵式键盘电路进行监控,如果发现有按键被按下,就通过行列扫描得到行列扫描码,通过行列扫描码得到行号和列号,然后通过行号和列号求得被按下按键的键盘码,然后将这个键盘码转化为两个BCD码,在两个数码管上显示出来,流程图如图5-9所示。下一页返回上一页5.24x4矩阵键盘控制双数码管显示程序代码如下。下一页返回上一页5.24x4矩阵键盘控制双数码管显示下一页返回上一页5.24x4矩阵键盘控制双数码管显示下一页返回上一页5.24x4矩阵键盘控制双数码管显示下一页返回上一页5.24x4矩阵键盘控制双数码管显示
在上述程序中,用到以下几个工作寄存器。
R0.用来装行号;R1.用来装列号;R2.最终的行扫描码装在单面;R3:用来装列扫描码;R4:用来控制循环次数;R5:用来装键盘码。
3.跟我做——软硬件联调
(1)在Porteus中按照图5-8搭接好电路,本任务所用元件见表5-3。
(2)在伟福软件中编辑程序,进行编译,得到.HEX格式文件。
(3)将所得的.HEX格式文件在Proteus中加载到单片机芯片中。
(4)开始仿真,随意按下8个键盘中的任意一个,看数码管显示有怎样的变化。
下一页返回上一页5.24x4矩阵键盘控制双数码管显示(5)在Proteus中的运行正常后,用实际硬件搭接电路,通过编程器将.HEX格式文件下载到AT89C51中。
(6)通电后,防意按下8个键盘中的任意一个,看数码管显示有怎样的变化。返回上一页5.3液晶显示数字广告
一、任务目标通过学习制作液晶显示数字广告,熟悉LCD显示器与单片机的接口原理,掌握单片机控制LCD显示器的数字输出。二、知识链接
1.认识字符放晶显示1602模块液晶显示器是一种广泛使用的输出设备。首先液晶显示器电压功耗比较小,设备体积小,没有电磁辐射,寿命比较长;其次液晶本身不发光,而是靠调制外界光进行显示,是一种被动显示,适合人的视觉习惯,不会使人眼睛疲劳;再者液晶像素小,在相同面积上可容纳更多信息,因此它成为便携式和乎持仪器仪表首选的显示屏慕。液晶显示器可分为笔段型、字符型和点阵图形型3类。笔段型液晶下一页返回5.3液晶显示数字广告显示模块由长条状显示像素组成一位显示,主要用于数字、西文字母或某些字符显示,显示效果与数码管类似。字符型液晶显示模块专门用来显示字母、数字、符号等的点阵型液晶显示模块,在本节任务中使用的就是这种液晶模块。点阵图形型液晶显示模块在一块平板上排列多行和多列,形成矩阵形式的品格点。液晶显示器按控制器的安装方式可分为含有控制器和不含控制器两类。把包含控制器的字符点阵液晶显示器模块简称称为LCM(以下不对LCD和LCM区分)。本节任务所用的1602LCD如图5-10所示。该模块共有16个引脚,各引脚功能见表5-4。下一页返回上一页5.3液晶显示数字广告2.单片机对LCD模块的4种基本操作
LCD模块3个控制引脚RS、和E的不同状态组合确定了LCD模块的4种基本操作,具体见表5-5。从表5-5中可以看出,在进行写命令、写数据和读数据3种操作之前,必须先进行查询忙标志读操作,判断忙标志是否为0。
3.字符型LCD命令的使用用单片机来控制LCD模块,方式十分简单,LCD模块内部可以看成两组寄存器,一组为指令寄存器IR,一组为数据寄存器DR,由RS引脚来控制。所有对指令寄存器或数据寄存器的控制均需通过检查LCD内部的忙碌标志BF来确定,此标志用来告知LCD内部正在工作,不允许接收任何控制命令。字符型LCD的命令字见表5-6。下一页返回上一页5.3液晶显示数字广告
指令1:指令代4己为01H,将DDRAM数据全部填入“空白”的ASCII代4己20H,执行此指令将清除显示器的内容,同时光标移到左上角。指令2:指令代码为02H,地址计数器AC被清0,显示数据存储器DDRAM不变,光标移到左上角。指令3:输入方式设置指令,该指令用于光标,字符移动方式设置,具体情况见表5-7。指令4:指令代码为08H^-OFH,该指令是控制字符、光标及闪烁的开关。状态位D=1开显示,D=0关显示。注意,关显示仅是字符不出现字符,而DDRAM内容不变,这与清屏不同。C=1光标显示,C=0光标消失。B=1,光标闪烁,B=0,光标不闪烁。
下一页返回上一页5.3液晶显示数字广告指令5:S/C=1字符动,S/C=0光标动。R/L=1右移动,R/L=0左移动。指令6:功能设置指令。DL=1表示控制器与计算机接口数据宽度为8位,即D7-D0;D1=0设置数据总线长度为4位,即D8-DS有效,在该方式下代码和数据按照先高4位后低4位顺序价两次传输。N=1为两行字符,N=0为一行字符。F=1为SX10点阵字符,F=0为5X7点阵字符。指令7:该指令将6位的CGRAM地址写入地址指针计数器AC内,随后,单片机对数据操作是对CGRAM的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产线质量管理与持续改进手册
- 医院中医科门诊接诊流程手册(标准版)
- 博物馆讲解员礼仪规范手册
- 医院含氯消毒剂使用标准手册(标准版)
- 教师体罚学生事件应急处置操作手册
- 合作项目付款计划变更说明函3篇
- 交通运输行业智能交通规划与设计实施方案
- 生活用品个性化定制开发报告
- 企业产品质量控制与检验指南
- 催办供应商答复的催办回复函(8篇范文)
- 西方哲学史试题及详解
- 2026年二级建造师继续教育试题库及答案
- 《2026年心肺复苏和心血管急救指南》更新点解读版
- 电子商务法律法规181
- 【地理】 2025-2026学年人教版八年级地理下册期末测试题
- IPA国际汉语教师笔试考试题库2025完整版
- 《视觉营销设计》课件-7.5 直播封面图
- 电视新闻培训课件
- TCMES160052022TCPASEPT0202022超设计使用年限压力容器评估与检验导则
- 保洁5S管理课件
- GB/T 7631.7-2025润滑剂、工业用油和有关产品(L类)的分类第7部分:C组(齿轮)
评论
0/150
提交评论