基于80C51单片机的倒计时器doc.docx
《基于80C51单片机的倒计时器doc.docx》由会员分享,可在线阅读,更多相关《基于80C51单片机的倒计时器doc.docx(13页珍藏版)》请在冰豆网上搜索。
基于80C51单片机的倒计时器doc
《单片机原理及外围电路》课程论文
《基于80C51单片机的倒计时器》
姓名:
杨蓉玲
学号:
5021212128
班级:
通信工程16-1
基于80C51单片机的倒计时器
【摘要】
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着统控制检测日新月异的更新。
由于单片机具有体积小、易于产品化、面向控制、集成度高、功能强、可靠性高、价格低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领中得到了广泛的应用。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个心部件来使用。
但是仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应对象特点的软件结合,以作完善。
本论文针对倒计时系统的设计的需求,介绍了MCS-51单片机的部分基本原理,如51单片机的接口功能、中断、定时器等等。
倒计时系统需要用到锁存器、矩阵键盘、LED数码显示器等主要模块,通过不同的模块之间相互作用,完成倒时的初步硬件结构。
对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即采用Keil uVision3软件程序进行译码。
本次设计采用C语言编程,通过倒计时子程序模块、矩阵键盘扫描模块、中断等子程序的正确调用,完成了可以随时设置初值的基于51单片机控制的99秒倒计时系统。
【关键词】倒计时器单片机矩阵键盘Keil2 LED数码显示器80C51
1.1、设计要求
①以MCS-51系统单片机为核心器件,组成一个9999秒以内任意秒数的倒计时系统,即初值为9999秒以内任意秒数,以一秒的速度进行倒计时。
②系统有8个LED数码管显示器,选择低四位分别显示千位、百位、十位、个位,而高四位设置为一直是暗的,没有任何显示。
③此倒计时设计能够通过矩阵键盘对倒计时器设定任何不大于9999秒的初值,同时设置有开始键、复位键,以达到可以重新设置初值的目的。
1.2、方案说明
本设计的倒计时功能主要通过中央处理模块SST89E516RD、锁存器、矩阵键盘、LED数码显示器四个模块的硬件共同实现,本系统首先通过中中央处理模块(SST89E516RD)对整个系统的状态进行判断(如定时器、中断等),它的输入输出口是双向接口,所以要通过锁存器来赋给不同的硬件接口不同的值。
然后通过键盘扫描原理对键盘进行扫描,返回扫描值,判断是否有键按下,如果有键按下,判断是哪个键被按下。
如果是KC 键被按下,则进入初值设置阶段,等待初值设置;如果键盘扫描判断到KF 键按下,则表示开始倒计时。
所有的设置初值、等待状况和倒计时状态都要通过LED 数码显示器显示出来,体现本倒计时系统的功能。
由于数码管的段选、位选和4*4 的矩阵键盘的输入输出都是接到P0.0~P0.3口,以需要锁存器来锁存不同时刻不同模块需要的P0.0~P0.3 的值。
本系统由于数码显示器的8个二极管和位的选择的状态均由SST89E516RD的P0.0~P0.7来决定,所以需要锁存器在需要的时候为其锁定相应的值,从而使显示器正确显示倒计时,如果没有锁存器则会出现很多错误并且不能实现功能.同理,锁存器的功能也是一样的,判断矩阵键盘的输出值从而判断按下的键,实现键盘扫描原理的功能。
2.1、80C51 单片机结构
单片机通常是指芯片本身,它是有芯片制造商生产的,在它上面集成的是一些作为基本组成部分的运算器电路、控制器电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等。
但一个单片机芯片并不能把计算机的全部电路都集成到其中,例如组成谐振电路和复位电路的石英晶体、电阻、电容等,这些元件在单片机系统中只能以散件的形式出现。
此外,在实际的控制应用中,常常需要扩展外围电路和外围芯片。
从中可以看到单片机和单片机统的差别:
单片机只是一块芯片,而单片机系统则是在单片机芯片的基础上扩展其它电路或芯片构成的具有一定应用功能的计算机系统。
通常所说的单片机系统都是为实现某一控制应用需要由用户设计的,是一个围绕单片机芯片而组建的计算机应用系统。
在单片机系统中,片机处于核心地位,是构成单片机系统的硬件和软件基础。
不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。
其中8051主要包括算术/逻辑部件ALU、累加器A、只读存储器ROM、随机存储器RAM、程序计数器PC、定时器/计数器、I/O接口电路等,还有堆栈寄存器SP等部件。
这些部件集成在一块芯片上,通过内部总线连接,构成完整的微型计算机。
2.2、80C51芯片介绍
80C51的原生产厂商是Intel公司,最早推出80C51芯片的也是Intel公司,并且作为MCS-51的一部分,按原MCS-51芯片的规则命名,如80C31、80C51、87C51和89C51,这样我们就能很容易地认识80C51的系列芯片。
但后来愈来愈多的厂商生产80C51的系列芯片,例如PHILIPS,ATMEL,LG,华邦等公司。
这些芯片都是以80C51为核心并与MCS-51芯片兼容,但它们又各具特点。
然而由于生产厂家多,芯片的类型也很多,使芯片的命名无法再遵循统一规律,造成我们辨认上的困难。
目前这些80C51的兼容芯片已开始在我国使用,其中尤其是PHILIPS公司的同名芯片80C51及其派生产品最受欢迎,而ATMEL公司的闪速存储器型单片机芯片AT89C51等.更是后来居上,大有取代传统EPROM型芯片之势。
80C51芯片内部集成了CPU、RAM、ROM、定时/计数器和I/O口等各功能部件,并由内部总线把这些部件连接在一起。
80C51单片机内部包含以下一些功能部件:
①一个8位CPU;②一个片内振荡器和时钟电路;③4KBROMM(80C51有4KB掩膜ROM,87C51有4KBEPROM,80C31片内有无ROM);④128B内RAM;⑤可寻址64KB的外ROM和外RAM控制电路;⑥两个16位定时/计数器;⑦21个特许功能寄存器;⑧4个8位并行I/O口,共32条可编程I/O端线;⑨一个可编程全双工串行口;⑩5个中断源,可设成2个优先级。
3.1、 80C51单片机的引脚功能
MCS-51系列单片机芯片均为40条引脚,HMOS工艺制造的芯片用双列直插(DIP)方式封装,各引脚功能说明如下:
Vcc(40脚):
接+5V电源正端。
Vss(20脚):
接+5V电源地端。
P0口(39-32):
P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流;P1口(1-8):
P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和出4个TTL门电流;P2口(21-28):
P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流;P3口(10-17):
P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口;P3口各口线与专用功能:
P3.0——RXD:
串行口输入端;P3.1——TXD:
串行口输出端;P3.2——INT0:
外部中断0请求输入端;P3.3——INT1:
外部中断1请求输入端P3.4——T0:
定时/计数器0外部信号输入端;P3.5——T1;定时/计数器1外部信号输入端;P3.6——WR:
外RAM写选通信输出端;P3.7——RD:
外RAM读选通信号输出端。
上述4个I/O口,各有各的用途。
在不并行扩展外存储器\时,4个I/O口都可作为双向I/O口用。
在并行扩展外存储器(包括并行扩展/O口)时,P0口专用于分时传送低8位地址信号和8位数据信号,P2口专用于传送高8位地址信号。
P3口根据需常用于第二功能,可提供给用户使用的I/O口是P1口和一部分未用作第二功能的P3口端线。
3.2、80C51单片机的中断
80C51的中断系统有5个中断源(8052有6个),2个优先级,可实现二级中断嵌套。
4个用于中断控制的寄存器IE、IP、TCON和SCON——用于控制中断的类型、中断的开/关和各种中断源的优先级别。
5个中断源有两个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序的嵌套。
3.2.1、8051单片机的5个中断源包括:
INT0、INT1引脚输入的外部中断源,三个内部中断源(定时器T0、T1 的一处中断源和串行口的发送/接受中断源)。
(1)、IT0(TCON.0)外部中断0(INT0)触发方式控制位。
IT0=0时,外部中断0程控为电平触发方式;IT0=1时外部中断0为边沿触发方式。
当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
(2)IT1(TCON.2)外部中断1(INT1)请求类型控制位。
IT1=0时,外部中断1程控为电平触发方式;IT1=1时外部中断1为边沿触发方式。
当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。
(3)、TF0(TCON.5)片内定时/计数器T0溢出中断申请位,TF0实际上是T0中断触发的一个输出端。
T0被允许计数以后,从初值开始加1计数,当产生溢出时置TF0=1,向CPU
请求中断,直到CPU响应该中断时才由硬件清0。
(4)、TF1(TCON.7)片内定时/计数器T1溢出中断申请位。
定时器T1被允许计数后,初值开始加1计数,当产生溢出时置TF1=1,向CPU请求中断,直到CPU响应该中断时才由硬件清0。
(5)、RI(SCON.0)或TI(SCON.1)串行口中断请求标志位。
当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
4.1.、硬件设计
4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。
显示按键信息,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。
并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键。
矩阵式键盘简介:
矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。
在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为N*N个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,计就采用这个键盘模式。
4.2、硬件电路设计及电路图
硬件电路设计图如下图所示。
把单片机的P1.0-P1.7端口通过8联拨动拨码开关连接到“4*4行列式键盘”,其中P1.0-P1.3作为列线,P1.4-P1.7作为行线,把单片机的P0.0-P0.6端口连接到共阴极“静态数码显示模块”区域中对应的a-g端口上;系统首先通过CPU对全部键盘进行扫描,即把第一根行线置为“0”状态,其余行线置于“1”状态,读入输入缓冲器的状态,若其状态全为“1”表明该行无键按下,再将第二根行线置为“0”状态,同样读入输入缓冲器的状态,如其状态也全为“ 1”则置第一根行线置为“0”状态,以此类推[5]。
如读入输入缓冲器的状态不全为“1确定哪一根列线为“0”状态,当某个键的行线和列线都为“0”状态时,表明该键按下。
最后通过显示程序将该键的序号显示出来。
4.3、LED 数码显示器的结构
LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。
它使用了8个LED发光二极管,其中7个用于显示字符,剩下的一个用于显示小数点,故通常称之为7段发光二极管数码器。
在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;若将二极管的阴极连在一起,称为共阴极数码管。
当发光二极管导通时,它就会发光。
每个二极管就是一个笔画,若干个二极管发光时,就构成了一个显示字符。
若将单片机的I/O口与数码管的a——g及h相连,高电平的位对应的发光二极管亮,即I/O输出不同的代码,就可以控制数码管显示不同的字符。
例如:
当I/O输出得代码为0011 1111时,数码管显示的字符为0。
这样形成的显示字符的代码为显示代码或者段选码。
本次设计的实验板用的共阴LED显示器。
4.3.1、LED 数码管显示方式
LED显示器工作方式有两种:
静态显示方式和动态显示方式。
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。
当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
这种方法的优点是占用CPU时间少,显示便于监测和控制。
缺点是硬件电路比较复杂,成本较高。
本次设计采用的是动态显示方式。
动态显示的特点是将所有位数码管的段选线并
联在一起,由位选线控制是哪一位数码管有效。
选亮数码管采用动态扫描显示。
所谓
动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人
眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态
显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
流程图:
总体接线图:
【总结】
本文主要介绍了本次设计需要用到的MCS-51单片机的部分基本原理。
第一,单片机的概述,介绍了单片机的定义和历史;第二,以80C51为例,大致的介绍了单片机的基本组成原理;第三,介绍了单片机的40条引脚功能,特别对输入输出接口进行了详细的介绍;第四,介绍了单片机的一个重要部分:
中断。
首先对中断进行了阐述,然后对中断系统结构和中断响应条件进行了介绍。
第五,比较简单的介绍了定时器。
在对单片机的基本原理介绍的基础上,接下来就是对倒计时系统的设计与调试,以完成本次设计。
【参考文献】
[1]张毅坤.单片微型计算机原理及应用西安电子科技大学出版社,1998.
[2]余锡存曹国华.单片机原理及接口技术.西安电子科技大学出版社,2005.
[3]吴黎明,王桂棠,洪添胜,等.单片机原理及应用技术.科学出版社,2005.
[4]韩克,柳秀山,等.电子技能与EDA技术.暨南大学出版社,2004.
[5]周润景.张丽娜.基PROTEUS的电路及单片机系统设计与仿真.航空航天大学出版社, 2012.
[6]张毅坤.单片微型计算机原理及应用.西安电子科技大学出版社,1998
[7]李俊谟.单片机中级教程.北京航空航天大学出版社,2009.
[8]胡宴如.模拟电子技术.高等教育出版社,2004
[9]李朝青.单片机原理及接口技术(修订版).北京:
北京航空航天大学出版社,1998.
[10]李广弟.单片机基础.北京:
北京航空航天大学出版社,1992.
[11]何立民.单片机应用技术大全.北京:
北京航空航天大学出版社,2000.
[12]V.Yu.Teplov,A.V.Anisimov.ThermostattingSystemUsingaSingle-ChipMicrocomputerandThermoelectricModulesBasedonthePeltierEffect[J],2002
[13]YeagerBrent.Howtotroubleshootyourelectronicscale[J]..PowderandBulkEngineering.1995
[14]MeehanJoanne,MuirLindsey.SCMinMerseysideSMEs:
Benefitsandbarriers[J]..TQMJournal.2008
附件
1 程序
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP INT_0
ORG 0013H
LJMP INT_1
ORG 040H
MAIN:
MOV P0,#00H
MOV P1,#00H
MOV R0,#00H
MOV R4,#00H
MOV TCON,#05H
MOV IE,#85H
SETB PX1
START:
MOV P2,#0F0H
MOVA,P2
ORL A,#0FH
CJNE A,#0FFH,K0
SJMP START
K0:
MOV P2,#0FEH
MOV A,P2
ORL A,#0F0H
CJNE A,#0F0H,KEYS0
K1:
MOV P2,#0FDH
MOV A,P2
ORL A,#0F0H
CJNE A,#0F0H,KEYS1
K2:
MOV P2,#0FBH
MOV A,P2
ORL A,#0F0H
CJNE A,#0F0H,KEYS2
K3:
MOV P2,#0F7H
MOV A,P2
ORL A,#0F0H
CJNE A,#0F0H,KEYS3
SJMP START
KEYS0:
JNB P2.4,KEY0
JNB P2.5,KEY1
JNB P2.6,KEY2
JNB P2.7,KEY3
LJMP K1
KEYS1:
JNB P2.4,KEY4
JNB P2.5,KEY5
JNB P2.6,KEY6
JNB P2.7,KEY7
LJMP K2
KEYS2:
JNB P2.4,KEY8
JNB P2.5,KEY9
JNB P2.6,KEY10
JNB P2.7,KEY11
LJMP K3
KEYS3:
JNB P2.4,KEY12
JNB P2.5,KEY13
LJMP K0
KEY0:
MOV A,#0
ACALL SQR
LJMP K0
KEY1:
MOV A,#1
ACALL SQR
LJMP K0
KEY2:
MOV A,#2
ACALL SQR
LJMP K0
KEY3:
MOV A,#3
ACALL SQR
LJMP K0
KEY4:
MOV A,#4
ACALL SQR
LJMP K0
KEY5:
MOV A,#5
ACALL SQR
LJMP K0
KEY6:
MOV A,#6
ACALL SQR
LJMP K0
KEY7:
MOV A,#7
ACALL SQR
LJMP K0
KEY8:
MOV A,#8
ACALL SQR
LJMP K0
KEY9:
MOV A,#9
ACALL SQR
LJMP K0
KEY10:
SETB P3.0
LJMP MAIN
KEY11:
ACALL SECOND
LJMP START
KEY12:
LJMP K0
KEY13:
LJMP K0
SQR:
INC R0
CJNE R0,#01H,SQ1
MOV R2,A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
SJMP SQ2
SQ1:
CJNE R0,#02H,SQ2
MOV R1,A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
SQ2:
RET
SECOND:
NEXT1:
MOV DPTR,#TABLE
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
MOV DPTR,#TABLE
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
DEC R1
CJNE R1,#0FFH,NEXT1
CJNE
R2,#00H,NEXT2
SJMP NEXT4
NEXT2:
DEC R2
MOV R3,#09H
NEXT3:
MOV DPTR,#TABLE
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
MOV DPTR,#TABLE
MOV A,R3
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
DEC R3
CJNE R3,#0FFH,NEXT3
CJNE R2,#00H,NEXT2
NEXT4:
RET
INT_0:
CJNE R4,#01H,$
MOV R4,#00H
RETI
INT_1:
INC R4
RETI
DELAY:
MOV R7,#10
LOOP3:
MOV R6,#100
LOOP2:
MOV R