单片机课程设计报告电子时钟完结篇Word下载.docx
- 文档编号:16645552
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:21
- 大小:301.17KB
单片机课程设计报告电子时钟完结篇Word下载.docx
《单片机课程设计报告电子时钟完结篇Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告电子时钟完结篇Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
该课程设计是利用AT89C51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。
(1)设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。
(2)用定时/计数器T0,工作于定时,采用方式1,对12MHz的系统时钟进行定时计数,初值设为3CB0H。
形成定时时间为50ms。
(3)用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
三、总体方案及硬件设计
简易电子钟硬件系统的设计,关键是其键盘、显示器接口电路的设计,本设计采用直接利用单片机AT89C52的并行I/O口构成电子钟的键盘、显示接口电路,其硬件系统原理框图如图3-1所示,主要包括单片机、时钟电路。
复位电路。
键盘及显示接口电路。
四、AT89C51单片机系统简介
AT89C51有40个引脚,按引脚功能大致可分为4个种类:
电源、时钟、控制和I/O引脚。
1、电源引脚
⑴
-芯片电源,接+5V;
⑵GND-接地端;
注:
用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。
但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速
度没这么快而已,在某一个瞬间单片机引脚电压
图4-1AT89C51引脚图
仍保持在0或者5v。
2、时钟引脚
XTAL1、XTAL2-当使用芯片内部时钟时,此二引线用于外界石英晶体振荡器和电容。
当使用外部时钟时,用于接外部时钟脉冲信号。
3、控制引脚
控制线共有4根
(1)ALE/PROG:
地址锁存允许/片内EPROM编程脉冲。
1)ALE功能:
用来锁存P0口送出的低8位地址。
2)PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此
引脚输入编程脉冲。
(2)PSEN:
外ROM读选通信号。
(3)RST/VPD:
复位/备用电源。
1)RST(Reset)功能:
复位信号输入端。
2)VPD功能:
在Vcc掉电情况下,接备用电源。
(4)EA/Vpp:
内外ROM选择/片内EPROM编程电源。
1)EA功能:
内外ROM选择端。
2)Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
4、I/O引脚
AT89C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
(1)P0口:
它是一个8位双向I/O口,作为通用I/O口使用时,需外接上拉电阻在系统扩展时,作低8位地址总线/数据总线使用。
(2)P1口:
内部具有上拉电阻的8位准双向I/O口。
(3)P2口:
内部具有上拉电阻的8位准双向I/O口,在系统扩展时,作高8位地址总线。
(4)P3口:
P3口还有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
五、时钟与复位电路设计与器件选择
1、时钟电路设计
单片机工作的时间基准是有时钟电路提供的。
在单片机的XTAL1和XTAL2两个引脚间,接一只晶振及两只电容就构成了单片机的时钟电路,如图5-1a所示。
电路中的期间选择可以通过计算和实验确定,也可以参考一些典型电路的参数。
电路中,电容器C1和C2对振荡频率有微调作用,通常的取值范围30
10pF;
石英晶体选择6MHz或12MHz都可以。
其结果知识机器周期时间不同,影响计数器的计数初值。
2、复位电路的设计
单片机的RST引脚为主机提供一个外部复位信号输入端口。
复位信号是高电平有效,高电平有效的持续时间应为两个机械周期以上。
复位以后,单片机内各部件恢复到初始状态,单片机从ROM和0000H开始执行程序。
单片机的复位方式有上电自动复位和手动复位两种,图5-1b是51系列单片机常用的上电复位和手动复位组合电路,只有
上升时间不超过1ms,它们都能很好的工作。
阻容器件的参考值如图中所示,即R1=200Ω,R2=1kΩ,C3=22
。
S5按键可以选择专门的复位按键,也可以选择轻触开关。
六、AT89C51单片机内部定时器/计数器、中断系统简介
1、定时器/计数器
表1
用于T1控制
用于T0控制
D7D6D5D4
D3D2D1D0
GATE
C/T
M1
M0
M1
1)
C/T,定时功能或计数功能选择位。
C/T=0,为定时功能;
C/T=1为计数功能。
2)M1和M0,工作方式选择位。
3)GATE,门控位。
定时器/计数器是单片机中重要的功能模块之一,在检测,控制和智能仪器等设备中经常用它来定时。
AT89C51系列中51子系列有2个16位的可编程定时/计数器:
T0和T1;
每个定时计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。
T0有4种工作方式,T1有3种工作方式,T2有3种工作方式,可通过编程设定。
每个定时/计数器计数事件到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
定时器/计数器T0用于时间计时。
选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;
分单元加到60则对时单元加1,同时分单元清0;
时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把它们的值放到存储单元的指定位置。
2、中断系统简介
(1)AT89C51单片机提供5个硬件中断源:
2个外部中断源INT0(P3.2)和INT1(P3.3),2个定时/计数器T0和T1的溢出中断TF0和TF1;
1个串行口发送TI和接收RI中断。
中断方式对外设的管理采用当外设需要CPU服务时,向CPU提出请求,CPU在接到外设的请求信号后,根据现场条件作出判断,决定是否为外设服务,如果中断允许,外设会即刻得到CPU服务。
当外设没有服务请求,CPU没有接到外设发出的中断请求信号时,CPU可以不对外设作任何操作,而作一些其他的处理。
计算机中引入中断技术后可以充分发挥CPU的速度优势,避免采用查询方式时,CPU时间的大量浪费,从而大大提高了CPU的效率。
图5-2中断系统功能框图
(2)中断允许寄存器IE(A8H)
表2
IE
D7
D6
D5
D4
D3
D2
D1
D0
A8H
EA
----
ES
ET1
EX1
ET0
EX0
IE是可位寻址的特殊功能寄存器。
EX0:
允许/禁止外部中断0申请中断
EX1:
允许/禁止外部中断1申请中断
ET0:
允许/禁止定时器T0申请中断
ET1:
允许/禁止定时器T1申请中断
ES:
允许/禁止串口申请中断
EA:
中断总控位=1,允许中断=0,禁止任何中断
七、键盘和LED数码管显示器简介
1、按键消抖处理
完成一次按键操作得到电路的一次通断是利用机械触点的合、断实现的,经常机械触点在闭合及断开瞬间由于弹性作用的影响,会有一个从不稳定闭合到稳定闭合,再由不稳定闭合到断开的短暂过渡期,这一在闭合及断开瞬间接触不稳定期称为抖动。
为了保证对按键的一次操作,CPU仅作一次按键输入处理,在单片机应用系统中必须设法消除抖动影响。
通常,消除抖动影响的方法有两种,一种是硬件的方法,另一种是软件的方法。
此处采用软件的方法。
在CPU检测到有键按下后,并不里脊确认该键按下有效,而是先执行一个10ms左右的延时程序,然后在此检测该键电平是否仍保持闭合状态电平,若仍保持为闭合状态电平,则确认该键处于闭合状态,是一次有效的按键,从而消除了抖动影响。
由于单片机应用系统采用的是非编码键盘,每个案件只完成通断动作,所以必须要通过软件的方法,确认是否有键被按下,如有键被按下要确认该键的键值,执行响应的键处理程序,实现一次键的功能。
键处理程序一般包括两部分内容,即键的确认及键的功能实现。
键的确认部分应包括哟抖动的消除及取得键值,键的功能程序是保证完成该键预定的某种具体操作。
从流程图7-2可见,当确认有键按下后,执行延时消除抖动程序,然后再次检测按键,如按键无效则返回,如按键早按下有效则进入下一步。
取得该键的键值,然后等待该键呗释放,当检测到该键已被释放后,里脊按照已取得的键值执行相应的键功能程序,从而完成一次键处理程序。
2、LED数码管显示
(1)共阳极接法把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。
当阴极端输入低电平时,段发光二极管就导通点亮,而输入高电平时则不点亮(如图7-2d)。
(2)共阴极接法。
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。
每个发光二极管的阳极通过电阻与输入端相连。
当阳极端输入高电平时,段发光二极管就导通点亮,而输入低电平时则不点亮(如图7-2c)。
LED数码显示有两种方法,一种是静态显示方式,一种是动态显示方式。
多联LED数码显示器一般用于动态扫描显示方式。
因此本系统采用动态显示方式。
在动态显示方式中,各LED数码显示器轮流工作,为了防止产生闪烁现象,每个LED数码管刷新频率必须大于25Hz,即相邻两次点亮的时间间隔要小于40ms,对于具有N个LED数码管的动态显示电路来说,如果刷新频率为f,那么显示周期为1/f,则每一位的显示时间为1/(f×
N)秒。
显然,显示的位数越多,每一位的显示时间越短,在驱动电流一定的情况下,亮度越低(正因如此,在动态LED显示电路中,要适当增大驱动电流,一般取20mA~35mA,以抵消因显示时间短造成亮度下降)。
为了保证一定的亮度,实验表明:
在驱动电流取30mA的情况下,每位显示时间不能小于1ms。
八、硬件电路设计
九、软件程序流程及代码
1、T0中断服务程序流程图
2、主程序流程图
3、系统资源占用分配
表3计数缓冲区单元占用
类别
占用RAM单元地址
0.05s计数单元(BUF)
6EH
秒计数单元(SUF)
6FH
分计数单元(MUF)
70H
时计数单元(HUF)
71H
表4显示缓冲区单元占用
分个位显示缓冲单元(FGW)
76H
分十位显示缓冲资源(FSW)
77H
时个位显示缓冲单元(SGW)
78H
时十位显示缓冲单元(SSW)
79H
为使时后面的小数点每隔0.5s亮一次,表示秒信号,特设一个0.5s标志。
表5标志位设置
0.5标志(B05)
00H
表6输入/输出口占用
用途
占用资源
输出显示段码dp、g、f、e、d、c、b、a
P1.0~P1.7
输出显示位码LED4~LED1
P2.4~P2.7
按键S1(SS1):
调时
P3.0
按键S2(SS2):
调分
P3.1
4、程序清单如下
;
============================================================
预定义部分:
BUFEQU6EH
SBFEQU6FH
MBFEQU70H
HBFEQU71H
FGWEQU76H
FSWEQU77H
SGWEQU78H
SSWEQU79H
B05BIT00H;
0.5s标志
SS2BITP3.1
SS1BITP3.0
初始化及主程序
ORG0000
LJMPMAIN
ORG000BH
LJMPTOCLOCK;
0.05s中断服务程序
MAIN:
MOVSP,#30H;
堆栈指针
MOV20H,#00H;
清标志
CLRA;
A=00H
MOVBUF,A;
BUF清0
MOVSBF,A;
SBF清0
MOVMBF,A;
MBF清0
MOVHBF,#0CH;
初始时钟显示12:
00
MOVTMOD,#01H;
定时器T0工作在方式1
MOVTH0,#3CH;
T0用于时钟定时,0.05s定时初值
MOVTL0,#0B0H
SETBPT0;
T0高级优先
ACALLPUTD_PRG;
调用向显示缓冲区放数子程序
ACALLDISP_PRG;
调用显示子程序
LCALLYS20MS
SETBEA;
开中断
SETBET0
SETBTR0;
启动定时
NOP
NOP
LOO_1:
ACALLPUTD_PRG;
调向显示缓冲区放数子程序
ACALLDISP_PRG;
调用显示子程序
ACALLJPCL_PRG;
调键盘扫描处理子程序
SJMPLOO_1
T0中断服务程序
TOCLOCK:
MOVTH0,#3CH
MOVTL0,#0B7H
PUSHPSW
PUSHACC
INCBUF
MOVA,BUF
CJNEA,#10,CLOCK_1
SETBB05;
置位0.5s标志
CLOCK_1:
CJNEA,#20,DK13;
累计20次为1s
CLRB05;
清除0.5s标志
MOVBUF,#00H
MOVA,SBF;
修改秒计数单元
INCA
MOVSBF,A
CJNEA,#60,DK13;
不到60,返回
MOVSBF,#00H;
等于60,计数单元清0
MOVA,MBF;
修改分计数单元
INCA
MOVMBF,A
CJNEA,#60,DK13
MOVMBF,00H
MOVA,HBF;
修改时计数单元
MOVHBF,A
CJNEA,#24,DK13
MOVHBF,#00H
SJMPDK13
DK13:
POPACC
POPPSW
RETI
向显示缓冲区放数子程序
PUTD_PRG:
PUSHPSW;
保护现场,(RS1,RS0)
PUSHB
PUSHACC
PUTD2:
MOVA,MBF;
MBF中内容送入A
ACALLCHU10;
调用除10程序
MOVFGW,B;
分个位送显缓76H
MOVFSW,A;
分十位送显缓77H
PUTD5:
MOVA,HBF;
HBF中内容送入A
MOVSSW,A;
时十位送显缓79H
PUTD10:
MOVSGW,B;
时个位送显缓78H
PUTD9:
POPB;
恢复现场
POPPSW;
恢复(RS1,RS0)
RET;
子程序返回
除10子程序
CHU10:
MOVB,#0AH
DIVAB
RET
显示子程序(须将显缓中十进制数转换成七段码,再送数码显示器)
DISP_PRG:
SETBRS0;
转工作寄存器组1
CLRRS1
PUSHACC;
保护现场
MOVA,P2
ORLA,#0F0H;
高4位置1
MOVP2,A;
关闭显示
MOVR0,#FGW
MOVDPTR,#TABD
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
CLRP2.4;
点亮1位
LCALLYS20MS
INCR0
MOVDPTR,#TABD
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
SETBP2.4
CLRP2.5;
点亮2位
CALLYS20MS
INCR0
MOVDPTR,#TABD
MOVA,@R0
MOVCA,@A+DPTR
JNBB05,DISP_1
ANLA,#7FH;
点亮小数点
DISP_1:
MOVP0,A
SETBP2.5
CLRP2.6;
点亮3位
LCALLYS20MS
INCR0
MOVA,@R0
CJNEA,#00H,DISP_2
MOVA,#0AH;
最高位为0,显示灭
DISP_2:
MOVCA,@A+DPTR
MOVP0,A
SETBP2.6
CLRP2.7;
点亮4位
LCALLYS20MS
SETBP2.7
POPACC;
恢复现场
POPPSW;
返回工作寄存器组
RET;
TABD:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
键扫描处理子程序
JPCL_PRG:
JBSS1,JP_1;
S1未按下转查S2
ACALLDELY10;
延时消抖
JBSS1,JP_1
JP_2:
ACALLPUTD_PRG
ACALLDISP_PRG
JNBSS1,JP_2;
等待S1键释放
MOVA,HBF;
修改时计数缓冲单元
ADDA,#1
CJNEA,#24,JP_3;
是否等于24
CLRA;
等于24时单元清0
JP_3:
MOVHBF,A;
保存结果
RET;
返回
JP_1:
JBSS2,JP_4;
S2未按下转返回
ACALLDELY10
JBSS2,JP_4
JP_5:
ACALLPUTD_PRG
ACALLDISP_PRG
JNBSS2,JP_5
MOVA,MBF
ADDA,#1
CJNEA,#60,JP_6
CLRA
JP_6:
MOVMBF,A
JP_4:
延时子程序
==========================================================
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 电子 时钟 完结