单片机与显示器.ppt
《单片机与显示器.ppt》由会员分享,可在线阅读,更多相关《单片机与显示器.ppt(128页珍藏版)》请在课桌文档上搜索。
1、第6章 单片机显示和键盘接口,实训6 简易秒表的制作 6.1 单片机与显示器接口 6.2 单片机与键盘接口 6.3 键盘与显示器综合应用 6.4 可编程键盘/显示器接口Intel 8279 本章小结 习题6,实训6 简易秒表的制作1实训目的(1)利用单片机的定时器中断实现秒定时,进一步掌握中断程序的编程技巧。(2)通过对LED显示程序的调试,熟悉8051与LED的接口技术,熟悉LED动态显示的控制过程。(3)熟悉独立式键盘的接口技术,熟悉键盘中断扫描原理。(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技
2、巧。,2实训设备与器件(1)实训设备:单片机开发系统、微机。(2)实训器件:参见实训电路图6.1(或实训组合教具一套)。3实训步骤与要求(1)要求:利用实训电路板,以2位LED显示秒值,实现秒表计时显示。以3个独立式按键KE0、KE1、KE2分别实现启动、停止、清零等功能。(2)方法:用中断的编程思路使用定时器T0,定时器工作在定时方式,实现1秒定时,每50 ms溢出中断一次,中断20次后就到1秒钟;秒表计时显示用动态显示方式实现;通过键盘扫描方式取得KE0、KE1、KE2的键值,用键盘的中断处理程序实现秒表的启动、停止、清0等功能。,(3)实验线路分析:原理图参见图6.1。2位LED显示的位
3、码由单片机的P2口输出,段码由P0口输出,P2口线与LED之间接有200限流电阻;LED为共阳极数码管,显示方式为动态显示方式;3个按键可以采用独立式键盘,其中两个按键分别连接到外部中断INT0、INT1,第3个按键连接到定时器1的T1端口,以中断方式实现键盘的扫描。(4)软件设计:软件整体设计思路是以动态显示作为主程序,按键查询采用中断方式;秒定时采用定时器T0中断方式进行,定时器T0定时时间为50 ms,定时器50 ms溢出一次,溢出20次后秒值加1;计时的开启与关闭受控于按键处理程序。由上述设计思路可设计出软件流程图如图6.2所示。,图6.1 简易秒表电路连接,图6.2 简易秒表软件流程
4、图,(5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清0”,因按键较少,所以采用独立式按键即可满足条件,其中两个按键分别连接到外部中断接口INT0、INT1,另外一个连接到外部引脚T1,编程时置T1为8位计数方式,初始值设定为0FFH。程序中,INT0、INT1和T1均允许中断,故按键的处理通过各相应中断子程序来完成。2位LED显示的数据由显示缓冲区30H31H单元中的数据决定,顺序是从左至右。动态显示时,每位显示持续时间为1 ms,1 ms延时由软件实现,2位显示约耗时2 ms。1秒定时采用定时器T0方式1中断,每50ms中断一次,用21H(MSEC)作50
5、ms计数单元,每20次为一个循环,计满20次,秒计数单元20H(SEC)加1。20H单元的数据采用十进制计数,该数据被拆成个位和十位两个数据后分别送至显示缓冲区的30H、31H单元。,按照上述思路可编制源程序如下:SECEQU20HMSECEQU21HORG0000H AJMPMAINORG0003HAJMPKE1ORG000BH AJMPCONT ORG0013H AJMPKE0ORG001BH AJMPKE2,;主程序;初始化部分MAIN:MOVTMOD,#61H;置T0方式1定时,T1方;式2计数 MOVTH0,#3CH;T0置初值 MOVTL0,#0B0H MOVTH1,#0FFH;T
6、1置初值 MOVTL1,#0FFH MOVSEC,#00H;60 s计数单元置初值 MOVMSEC,#14H;50 ms计数单元置初值 MOVSP,#3FH;堆栈指针置初值 MOV30H,#00H;显示缓冲区清0 MOV31H,#00H,MOVIE,#8FH;打开中断源 SETBTR1;启动定时器1 CLRA;累加器清0;显示程序部分DISP:MOVR2,#02H;LED待显示位数送R2 MOVR1,#00H;设定显示时间 MOVR4,#01H;选中最右端LED MOVR0,#30H;显示缓冲区首址送R0 MOVA,R0;秒显示个位送ADISP1:MOVDPTR,#TAB;指向字形表首址 MO
7、VCA,A+DPTR;查表取得字形码 MOVP0,A;字形码送P0口 MOVA,R4;取位选字,MOVP2,A;位码送P2口DJNZR1,$;延时0.5 msDJNZR1,$;延时0.5 msRLA;位选字移位MOVR4,A;移位后的位选字送R4INCR0;指向下一位缓冲区地址MOVA,R0;缓冲区数据送A DJNZR2,DISP1;未扫描完,继续循环 SJMP DISPTAB:DB0C0H,F9H,0A4H,0B0H,99H;共阳极LED字型表 DB92H,82H,0F8H,80H,90H,;按键0中断服务程序;功能:启动KE0:SETBTR0;启动定时器0,开始计时RETI;中断返回;按键
8、1中断服务程序;功能:暂停KE1:CLRTR0;关闭定时器0,暂停计时RETI;中断返回;按键2中断服务程序;功能:清0KE2:MOVSEC,#00H;秒清0MOV30H,#00H;显示缓冲区清0MOV31H,#00H;显示缓冲区清0RETI,;定时器0中断服务程序;功能:秒值的刷新CONT:PUSHACC;保护现场 MOVTH0,#3CH;定时器T1重置初值 MOVTL0,#0B0H DJNZMSEC,EXIT;判断是否到1 s?MOVMSEC,#14H;若到1 s,则重置50 ms初始值INCSEC;秒单元加1CJNESEC,#60,CHAI;判断秒是否到60?MOVSEC,#00;到60
9、后,清0CHAI:MOVA,SECMOVB,#10DIVAB;秒单元内容除以10,MOV30H,A;秒的十位送显示缓冲区30HMOV31H,B;秒的个位送显示缓冲区31HEXIT:POPACC;恢复现场RETI;中断返回 END,4实训总结与分析(1)例5.4与本实训相比,二者均是秒表,但差别较大。前者采用发光二极管显示,后者采用7段码LED(俗称数码管)显示,显示效果更直观;前者计时采用软件延时,后者采用定时器中断,后者更准确;前者功能单一,程序一旦开始运行,中间过程无法控制,后者功能齐全,可随时启动、停止、清0,智能化程度更高。综上所述,后者更实用。,(2)设计、调试大型程序时,需先根据要
10、求划分模块,优化结构;再根据各模块的特点确定主程序、子程序、中断服务程序以及相互间的调用关系;再根据各模块的性质和功能将各模块细化,设计出程序流程图;最后才根据各模块的流程图编制具体程序。调试时应先调试主程序,实现最基本、最主要的功能,在此基础上再将各模块功能往主程序上堆砌,直至各模块联调、统调,实现全部功能。本实训将整个程序划分为键盘程序、动态显示程序、秒计时程序三大模块,根据各模块的特点确定动态显示程序为主程序,秒计时程序为定时器中断服务程序,键盘的扫描也用中断来实现。,三大模块之间的关系是:系统上电后,不断运行动态显示子程序,显示初始时间00;无键按下时,一直显示初始值,有键按下时,进入
11、按键的中断服务程序;按键启动定时器后,开始计时,在定时器的中断程序中完成显示时间的刷新;回到主程序继续运行动态显示程序,显示内容不断更新。经上述处理后,三大模块的运行协调一致,既保持了动态显示的稳定性,又保持了键盘的可靠性,还保持了秒计时的准确性,较好地实现了全部功能。,(3)本实训只用到实验线路板的两位LED显示和3个独立式按键,当采用44矩阵式按键和8位动态显示时,其功能还有较大的扩展空间。只要将上述程序稍加改动即可实现秒、分、时、日显示,作为可全方位修改的实时时钟的程序使用。如增加LED显示位数或将显示改为LCD显示模块,可实现年、月、周、日、时、分、秒显示。,1数码管简介1)数码管结构
12、数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可显示数字09、字符AF、H、L、P、R、U、Y、符号“”及小数点“”。数码管的外型结构如图6.4(a)所示。数码管又分为共阴极和共阳极两种结构,分别如图6.4(b)和图6.4(c)所示。,图6.4 数码管结构图(a)外型结构;(b)共阴极;(c)共阳极,2)数码管工作原理共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,
13、还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,通常接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。,例6.1采用共阳极数码管与单片机P1口直接连接,其电路连接如图6.3所示。数码管公共阳极接+5 V电源,其它管脚分别接P1口的8个端口,限流电阻为510,数码管字段导通电流约为6 mA(额定字段导通电流一般为520 mA)。
14、,3)数码管字型编码要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字型编码。对照图6.3,字型码各位定义如下:数据线:D7 D6 D5 D4 D3 D2 D1 D0I/O口线:P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0LED段:dp g f e d c b a 数据线D0与a字段对应,D1字段与b字段对应,依此类推。如使用共阳极数码管,则数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,则相反。,表6.1 数码管字型编码表,例如要显示“0”,共阳极数码管的字型编码应为:11000000B(即C0H);共阴极数码管的字型编码应为:
15、00111111B(即3FH)。依此类推可求得数码管字型编码如表6.1所示。例6.1使用的是共阳极数码管,因此,应采用表6.1中的共阳极字型码。具体实施是通过编程将需要显示的字型码存放在程序存储器的固定区域中,构成显示字型码表。需要显示某字符时,通过查表指令获取该字符所对应的字型码。,6.1 单片机与显示器接口6.1.1 LED静态显示器例6.1 设计一个一位简单秒表的显示电路,显示内容从0开始,每隔1 s显示内容加1,秒值到9后自动清0,依次循环显示。系统采用12 MHz晶振。解:根据题意可设计出硬件电路如图6.3所示。,图6.3 简单秒表显示电路,其源程序可设计如下:ORG0000HALM
16、PMAINORG0030HMAIN:MOVTMOD,#10H;定时器T1工作在方式1MOVTH1,#3CH;T1置50 ms计数初值MOVTL1,#0B0HSATRT:MOVR1,#00H;计数显示初始化 MOVDPTR,#TABDISP:MOVA,R1MOVCA,A+DPTR;查表得显示的字型码MOVP1,A;数码管显示0ACALLDELAY1S;延时1 sINCR1;计数值加1,CJNER1,#10,DISP;秒值不到10,继续;显示;否则清0MOVR1,#00H;计数值清0SJMPDISP TAB:DB 0C0H,0F9H,0A4H;0,1,2DB0B0H,99H,92H;3,4,5DB
17、82H,0F8H,80H;6,7,8DB90H;9;1 s延时子程序DEALY1S:MOV R3,#14H;置50 ms计数循环初值SETBTR1;启动T1LP1:JBCTF1,LP2;查询计数溢出SJMPLP1;未到50 ms继续计数,LP2:MOVTH1,#3CH;重新置定时器初值MOVTL1,#0B0HDJNZR3,LP1;未到1 s继续循环RET;返回主程序 END,图6.5 两位的LED数码管静态显示示意图,2静态显示接口从图6.5可以看出,静态显示方式的特点是各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口地址相连,I/O
18、口只要有段码输出,相应字符即显示出来并保持不变,直到I/O口输出新的段码。采用静态显示方式时,用较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适用于显示位数较少的场合。例6.1就是数码管静态显示方式的一种典型应用,其硬件及软件都非常简单。,6.1.2 LED动态显示器当需要显示的位数较多时,为了节省硬件接口,往往采用动态显示的方式。用8051单片机构建数码管动态显示系统时,其典型应用如图6.6所示。,图6.6 动态显示典型应用,1动态显示概念动态显示是指一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
19、通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或公共阳极)由另外的I/O口线控制。以动态方式显示时,各数码管分时轮流选通。要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示的,但由于人眼存在视觉暂留效应,因此只要每位显示间隔足够短就可以给人以同时显示的感觉。,采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,这会占
20、用CPU较多的时间。在图6.6所表示的单片机动态显示连接图中,数码管采用共阳极LED,单片机的P0口接至数码管的各段,当P0口线输出“0”时,驱动数码管发光。单片机的P2口线经过限流电阻后接至数码管的公共端,当P2口线输出“1”时,选通相应位的数码管发光。,2多位动态显示接口应用采用8051的I/O口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。例6.2 扩展例6.1的功能,用图6.6的电路实现六位显示的秒表,具体要求如下:(1)从左往右每两位LED分别显示小时、分钟和秒,并可正常计数、进位;(2)上电后首先显示00 00 00,表示从0
21、点0分0秒开始计时,当时间显示到23 59 59后,六位显示都清0,从头开始。,解:整体设计思路如下:整体程序主要分为3个部分:主程序、显示子程序和定时器中断程序。主程序主要是初始化部分和不断调用动态显示子程序部分。动态显示子程序完成6位LED的轮流位扫描,它被主程序不断调用,以保证稳定可靠的显示。显示时间的刷新由定时器中断产生,定时器每50 ms中断一次,当中断20次后(即1 s后),对时间单元(秒计数单元、分计数单元、小时计数单元)进行更新,然后通过拆字子程序将时间单元里面的十六进制数拆开为两个BCD码,并送到显示缓冲区。返回主程序后显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也
22、就随之发生变化。,根据硬件设计,由单片机的P2口控制位码输出,P0口控制段码输出。动态显示程序中,在单片机内部RAM中设置待显示数据缓冲区,由查表程序完成显示译码,将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口输出;位码数据由累加器循环左移指令产生,再通过P2口输出。该程序的流程图如图6.7所示。片内RAM的地址分配如表6.2所示。,图6.7 六位数码管动态显示程序流程图,源程序设计如下:MSECEQU20H;50 ms计数单元SECOND EQU21H;秒单元MIN EQU 22H;分单元HOUREQU23H;小时单元;各程序入口ORG0000HLJMPMAINORG 0
23、00BHLJMP CONT;主程序MAIN:MOVSP,#3FHMOV TMOD,#01H;设置定时器0工作方式 MOV TH0,#3CH;设置定时器初始值TH0,MOV TL0,#0B0H;设置定时器初始值TL0 MOV IE,#82H;定时器0中断允许MOV SECOND,#00H;秒单元初始值MOV MIN,#00H;分单元初始值 MOV HOUR,#00H;小时单元初始值 MOVMSEC,#14H;设置定时器溢出次数初始值20MOV 35H,#00H;显示缓冲区清0 MOV 34H,#00H MOV 33H,#00H MOV 32H,#00H MOV 31H,#00H MOV 30H,
24、#00HSETB TR0;启动定时器,START:LCALL DISP;调显示子程序SJMPSTART;跳动START,不断调显示子程序;LED动态显示子程序;功能:动态扫描6个数码管;入口:显示缓冲区30H35H中待显示的6个数据DISP:MOV R0,#30H;显示缓冲区的首地址MOV R7,#00H;设定每位显示延时时间MOV R2,#06H;显示个数MOV R3,#20H;共阳管的位码初始值,从右端;先亮MOV A,R0;取显示缓冲区的一个数据DISP1:MOV DPTR,#TAB;查表首地址送DPTRMOVC A,A+DPTR;查表得到显示字符的字型码,MOVP0,A;将字型码送P0
25、口MOVA,R3;位选码给AMOVP2,A;位码送P2口DJNZR7,$;延时DJNZR7,$;延时RRA;位选码右移,选中下一个LEDMOVR3,A;位选码送回R3INC R0;指向显示缓冲区的下一位MOV A,R0;取显示缓冲区的下一个数据DJNZ R2,DISP1;六个LED轮流显示一遍吗?若;没有则继续查表显示,否则返;回主程序RET;返回主程序TAB:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,;定时器中断子程序;功能:50ms执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区;出口:显示缓冲区30H35H中存放的待显示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 显示器
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-246741.html