《单片机系统设计及应用》-学习情境三_第1页
《单片机系统设计及应用》-学习情境三_第2页
《单片机系统设计及应用》-学习情境三_第3页
《单片机系统设计及应用》-学习情境三_第4页
《单片机系统设计及应用》-学习情境三_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

学习情境三计数器学习情境概要

按键和数码管是单片机应用系统最常用的输入输出设备。计数器就是基于按键和数码管的单片机应用系统开设的学习情境。本情境强化单片机引脚的应用能力和程序设计思维。本学习情境可以直接焊接电路也可以采用Proteus仿真系统进行仿真。学习目标1.知识目标①了解按键及矩阵键盘结构原理。②了解数码管结构及显示原理。③了解单片机应用系统常见输入输出设备。④熟悉单片机I/O口的输入输出功用。上一页下一页返回学习情境三计数器2.技能目标①能采用软件方式对按键去除抖动。②熟练编写程序使数码管显示各种数字、字符等。③熟练编写程序协调单片机各种输入输出设备。3.情感目标①具有良好的思想政治素质、行为规范和职业道德。②具有独立思考和开拓创新能力。③具有较强的计划、组织、协调和团队合作能力。④具有较强的口头与书面表达能力、人际沟通能力。⑤具有良好的安全意识、环保意识和责任意识。教学资源配备装有KELL和PROTEUS的计算机一台上一页下一页返回学习情境三计数器上一页下一页返回学习情境三计数器上一页返回任务3.1按键去抖及接口电路

按键是单片机常用的输入外设。常用按键都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开。如图3.1所示单片机应用系统中常用几种按键。按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。3.1.1按键工作原理按键与单片机的连接方法很简单,如图3.2所示。一个引脚与单片机引脚连接,另一个引脚接地。而在实际焊接电路过程中,由于某些按键有多个引脚,所以我们需要用万用表判断出相连接引脚。当按键按下时,其触点的电压变化如图3.3所示。从图3.3可以看出按键在实际按下和释放的过程中,会有抖动的现象。这个抖动的时间与按键本下一页返回任务3.1按键去抖及接口电路

身的机械特性有关,一般为5~10ms,而按动按键的整个过程至少超过20ms。抖动现象的发生直接影响单片机内部的程序执行,所以在单片机检测按键是否按下时需要增加去抖动操作。一般地,去抖动方法可以从硬件和软件两方面入手,硬件方面有专门的去抖动电路和去抖芯片,但通常采用增加延时程序的方法就可以解决按键抖动问题。具体做法是在单片机键盘检测程序时,在检测按下时加入去抖延时,程序流程图如图3.4所示。3.1.2独立式键盘占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立式键盘的典型应用如图3.5所示。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多上一页下一页返回任务3.1按键去抖及接口电路

时,I/O口线浪费较大,不宜采用。图3.5中按键输入均采用低电平有效,此外,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。独立式按键扫描程序常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。3.1.3矩阵式键盘独立式键盘与单片机连接时,每一个按键都需要单片机的一个I/O口,若单片机应用需要较多按键,就会占用大量I/O口资源,为了节约I/O口,引入矩阵式键盘。所谓矩阵式键盘就是将每个按键的一端连接在一起构成行线,将每个按键的另一端连接成列线,以4×4矩阵键盘为例,4行4列共8根引线连接到单片机8个I/O口上,如图3.6所示。上一页下一页返回任务3.1按键去抖及接口电路

无论是独立式键盘还是矩阵式键盘,单片机检测按键是否按下的依据都是检测该按键对应的I/O口是否为低电平。独立式键盘一端与单片机引脚相连,另一端固定为低电平,检测程序相对简单。矩阵式键盘两端都与单片机I/O口相连,因此在检测过程中需人为的通过单片机引脚送出低电平。具体做法为:先将一列送低电平,其他列为高电平,然后轮流检测各行是否有低电平,如果检测出某一列为低电平,即可根据低电平的列与行定位被按下按键的位置。在单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。上一页下一页返回任务3.1按键去抖及接口电路1.编程扫描方式编程扫描方式是利用CPU完成其他工作的空余调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。键盘扫描程序一般应包括以下内容:(1)判别有无键按下。(2)键盘扫描取得闭合键的行、列值。(3)用计算法或查表法得到键值。(4)判断闭合键是否释放,如没释放则继续等待。(5)将闭合键键号保存,同时转去执行该闭合键的功

2.定时扫描方式定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在上一页下一页返回任务3.1按键去抖及接口电路

有键按下时识别出该键,再执行该键的功能程序。定时扫描方式的硬件电路与编程扫描方式相同。

3.中断扫描方式采用上述两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态,为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。上一页返回任务3.2数码管及接口电路

数码管是单片机常用的输出外设。常见数码管有单位数码管、双位数码管和四位数码管,如图3.7所示。3.2..1数码管结构

数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示,每一段都是一个发光二极管,如图3.8所示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。假设“0”为点亮状态,“1”为熄灭状态,且a段接单片机P1.0,b接P1.1……依此类推,g段接P1.6,dp段接P1.7,显示数字“2”,则需要在P口输入10100100B,即0A4H。那么,到底是输入低电平点亮指定段,还是输入高电平点亮指定段呢?这需要根据所选择的数码管型号决定。数码管有共阴极数码管和共阳极数码管之分。所谓共阳极数码管是指八段数码管的八个发光下一页返回任务3.2数码管及接口电路

二极管的阳极都连在一起,而阴极对应的各段可分别控制。共阴极数码管则是八个发光二极管的阴极都连在一起,结构如图3.9所示。以共阳极极数码管为例,其阳极连接在一起,阴极独立,通常在设计电路时把阳极接高电平,当给某一阴极送低电平时,相对应的发光二极管就点亮了。当数码管引脚连接到单片机P0口时,令其P0.0接a,P0.1接b,……P0.6接g,P0.7接dp。共阳极数码管显示数字的编码如表3.1所示。除了单位数码管之外,还有二位一体数码管、四位一体数码管等,当多位一体时,他们内部的公共端是独立的,负责哪一位数码管点亮;各位数码管中的段全部连接在一起,负责显示数字字形。因此,通常把公共端称为“位选线”,连接在一起的段线称为“段选线”,通过位选线和段选线来控制多位数码管显示的数字。4位一体数码管内部结构及引脚连线图如图3.10、图3.11所示。上一页下一页返回任务3.2数码管及接口电路

对于单位数码管,生产商为了封装统一,封装了10个引脚,其中第3脚和第8脚是连通的,为公共端;二位数码管也是10个引脚,其中两个是位选线,其余为段选线;四位数码管是12个引脚,其中4个位选线,8个段选线。例3.1:共阳极数码管与单片机P0口相连,如图3.12所示。试根据如下接线图编写程序,使数码管从0到9循环显示。方法一(顺序显示):

ORG0000HMAIN:MOVP0,#0C0H;给数码管送字形“0”

ACALLDELAY1S;调用延时1s程序

MOVP0,#0F9H;给数码管送字形“1"ACALLDELAY1S;调用延时1s程序

MOVP0,#0A4H;给数码管送字形“2"ACALLDELAY1S;调用延时1s程序上一页下一页返回任务3.2数码管及接口电路MOVP0,#0B0H;给数码管送字形“3"ACALLDELAY1S;调用延时1s程序MOVP0,#99H;给数码管送字形“4"ACALLDELAY1S;调用延时1s程序MOVP0,#92H;给数码管送字形“5"ACALLDELAY1S;调用延时1s程序MOVP0,#82H;给数码管送字形“6"ACALLDELAY1S;调用延时1s程序MOVP0,#0F8H;给数码管送字形“7”ACALLDELAY1S;调用延时1s程序MOVP0,#80H;给数码管送字形“g;ACALLDELAY1S;调用延时1s程序MOVP0,#90H;给数码管送字形“9"上一页下一页返回任务3.2数码管及接口电路ACALLDELAY1S;调用延时1s程序JMPMAIN;重复显示DELAY1S:MOVR0,#100;延时1s程序D2:MOVR1,#20;D1:MOVR2,#248;DJNPR2,$;DJNPR1,D1;DJNPR0,D2;

RET;END;上一页下一页返回任务3.2数码管及接口电路方法二(查表法):ORG0000HMAIN:MOVDPTR,#TAB;将表首地址送DPTRMOVR7,#10;将10赋值R7START:MOVA,#0MOVCA,@A+DPTR;将字形“0”编码送AMOVP0,A;P0显示字形“0"ACALLDELAY1S;调用延时1SINCDPTR;DPTR内地址加1DJNZR7,START;逐一显示TAB中字形LJMPMAIN;重复显示DELAYIS:MOVR0,#100;延时1S程序D2:MOVR1,#20;D1:MOVR2,#248;

上一页下一页返回任务3.2数码管及接口电路DJNZR2,$;DJNZR1,D1;DJNZRO,D2;RET;TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;END3.2.2数码管静态显示采用多位一体数码管作为单片机应用系统的显示器时,“位选”是可以独立控制的,而且“段选”是连接在一起的。通过位选信号选通某几位数码管使其点亮,同时由于段选信号是连在一起的,所以送入选通数码管的段选信号是相同的,它们显示的数字也必定一致,这种数码管的显示方法叫做静态显示上一页下一页返回任务3.2数码管及接口电路

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示数字,直到送入新的信号为止。这种显示方法的优点是CPU时间占用少,便于监控。缺点是硬件电路复杂,成本较高。例3.2:单片机与两位共阳极数码管连接如图3.13所示。编写程序使单片机P0口和P2分别驱动两个数码管循环显示0~59。

SecondEQU30HORG0START:MOVSecond,#00H;送00给second单元

NEXT:MOVA,Second;second单元内容送AMOVB,#10;10送人BDIVAB;A/B,商送A,余数送BMOVDPTR,#TABLE;数据表首地址送DPTRMOVCA,@A+DPTR;MOVP0,A;十位数送P0MOVA,BMOVCA,@A+DPTR上一页下一页返回任务3.2数码管及接口电路MOVP2,A;个位数送P2LCALLDELY1S;调用1S延时

INCSecond;秒数加1MOVA,SecondCJNEA,#60,NEXT;显示下一个字形组

LJMPSTART;重复显示DELY1S:MOVRS,#100;延时1S程序D2:MOVR6,#20;D1:MOVR7,#248;DJNZR7,$;DJNZR6,D1;DJNZRS,D2;RET;TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;END上一页下一页返回任务3.2数码管及接口电路

由于每个数码管分别由一个8位I/O口控制显示字形,故数码管能稳定独立的显示字符,编程也比较简单。但是占用I/O口过多,造成硬件资源的浪费。3.2.3数码管动态显示数码管动态显示即轮流点亮每一位数码管,在某一瞬间只有一个数码管处于点亮状态,利用人眼的视觉暂留效应和发光二极管熄灭时的余辉,制造多个字符同时点亮的效果。通常情况下,把所有数码管的段选线并联在一起,由单片机的一个8位I/O口控制,将位选线分别连接相应I/O口,实现各数码管的分时选通。动态显示也称扫描显示方式。例3.3:如图3.14所示,AT89S51单片机P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。上一页下一页返回任务3.2数码管及接口电路程序流程图如图3.15所示。参考程序:

ORG00HSTART:JBP1.7,DIR1;判断按键是否按下

MOVDPTR,#TABLEI;有按键按下时将TABLE1首地址送

DPTRSJMPDIR;转向DIRDIR1:MOVDPTR,#TABLE2;无按键按下将TABLE2首地址送DPTRDIR:MOVR0,#00H;置偏移量

MOVR1,#01H;置位选代码NEXT:MOVA,R0;送偏移量如AMOVCA,@A+DPTR;查表送显示

MOVP0,A;MOVA,R1;上一页下一页返回任务3.2数码管及接口电路MOVP2,A;LCALLDELAY;调用延时

INCR0;偏移量加1RLA;左移位选代码

MOVR1,A;CJNER1,#0DFH,NEXT;SJMPSTART;重复判断DELAY:MOVR6,#4;延时程序D1:MOVR7,#248;DJNZR7,$;DJNZR6,D1;RET;TARTE1:DB06H,SBH,4FH,66H,6DHTABLE2:DB78H,79H,38H,38H,3FHEND上一页下一页返回任务3.2数码管及接口电路3.2.4其他显示设备单片机应用系统中常用的显示设备除了发光二极管和数码管之外,还有点阵LED、液晶屏等。

1.点阵LED

由许多发光二极管排列成行和列,构成点阵,点亮不同位置的发光二极管即可显示不同的图形或文字符号。以8×8点阵模块为例,它有64个像素,可以显示简单的字符或图形。4块模块拼合成一个16×16的点阵汉字,用过更多的模块拼合可以显示更复杂的图形和更多的汉字。

8×8点阵模块内部结构等效电路如图3.16所示,从图中可以看出,它有8行(Y0~Y7)和8列(X0~X7)。外部引出16个引脚分别对应行线和列线,行线用数字0~7表示,列线用字母A~H表示,其外观图如图3.17所示。上一页下一页返回任务3.2数码管及接口电路

根据行线和列线可以定位想点亮的二极管,将对应的行置为高电平,列置为低电平即可点亮相应二极管。在很短的时间里一次点亮多个发光二极管,利用人眼的暂留效应可以感觉是多个发光二极管同时发光,即可显示数字、字母或图形。例如用单片机的两个I/O口分别控制点阵模块的行线和列线,即可通过程序使显示屏显示特定字符或图形了。

2.液晶屏液晶屏是以一种液晶材料(一种高分子材料)材料为基本组件,在两块平行板之间填充液晶材料,通过电压来改变液晶材料内部分子的排列状况,以达到遮光和透光的目的来显示深浅不一,错落有致的图像,而且只要在两块平板间再加上三原色的滤光层,就可实现显示彩色图像。液晶显示器功耗很低,因此备受工程师青睐,适用于使用电池的电子设备。上一页下一页返回任务3.2数码管及接口电路

液晶屏的各种型号通常是按照显示字符的行数或液晶点阵的行、列数命名的。比如1602型液晶就是每行显示16个字符,共显示两行的液晶显示屏。液晶体积小、功率低、显示操作简单,但其温度适应范围较窄,通常液晶正常工作的温度范围为0℃~+55℃,存储温度在-20℃~+60℃之间,因此,在进行单片机应用系统设计时应考虑液晶屏的环境温度。上一页返回任务3.3计数器系统设计3.3.1计数器接线图设计计数是工业生产中一个重要环节。传统采用人工方式计数工作枯燥,出错率高。现今工厂中计数环节有个更可靠更精确的电子计数器。在没有学习传感器技术之前,本任务中暂且采用手动按键的方式设计一个计数器。计数器功能为通过按键向单片机输入信号,每输入一次数码管显示数字加1直到99后归0。在单片机最小系统的基础上,选取两个共阴数码管与单片机I/O口相连,其公共端通过限流电阻接地;利用单片机P3.7(17脚)引脚的第二功能外部数据存储器读选通信号作为按键信号的输入引脚,由于P3.7脚低电平有效,故按键另外一端接地。接线参考图如图3.18所示。下一页返回任务3.3计数器系统设计3.3.2计数器程序设计根据本任务所选取的共阴极数码管及与单片机管脚连接,列出数码管显示数字的编码表,如表3.2所示。一般情况下,像这种常用数据可以将其以数据表的形式存储在程序存储器中,在程序设计过程中采用查表指令对数据表进行查询调取,将调取的数据传送给相应I/O口,使与之相连的数码管显示相应数字。按键是本任务中唯一的输入设备,为了去除抖动,在程序中还应加上延时10毫秒的程序。按键去抖动程序框图如图3.19所示。解决数码管编码及按键去抖的问题之后,就应该从全局角度分析设计任务了。在明确任务目标之后选取优化的算法,画出程序流程图。最后按照程序流程图编写程序。程序流程图如图3.20所示。上一页下一页返回任务3.3计数器系统设计参考程序:CountEQU30H;SP1BITP3.7;ORG0;START:MOVCount,#00H;计数单元送0NEXT:MOVA,Count;MOVB,#10;DIVAB;A/B,商送A,余数送BMOVDPTR,#TABLE;TABLE首地址送DPTRMOVCA,@A+DPTR;查表显示字形

MOVPO,A;MOVA,B;MOVCA,@A+DPTR;MOVP2,A;WT:JBSP1,WT;等待按键按下上一页下一页返回任务3.3计数器系统设计WAIT:JB

温馨提示

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

评论

0/150

提交评论