基于C51单片机的数字钟设计.docx
《基于C51单片机的数字钟设计.docx》由会员分享,可在线阅读,更多相关《基于C51单片机的数字钟设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于C51单片机的数字钟设计
单位代码
学 号
分类号
密级
基于单片机的数字钟设计
院系:
工学院机械系
专业:
机械设计制造及其自动化
班级:
姓名:
学号:
指导老师:
黄河科技学院课程设计任务书
工学院机械系机械设计制造及其自动化专业11级1班
学号姓名指导教师牛月兰
题目:
基于单片机的数字钟设计
课程:
单片机应用技术课程设计
课程设计时间2014年10月27日至2014年11月10日共2周
课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页)
1.设计要求
利用AT89C51单片机作为微控制器,自动计时,由6位LED显示器显示时、分和秒,具备调整功能,可调节时、分,断电保护。
创新设计:
2.设计任务与要求
2.1系统硬件电路设计
根据该系统设计的功能要求选择所用元器件,设计硬件电路。
要求用Proteus绘制整个系统电路原理图。
2.2软件设计
根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。
2.3Proteus仿真
用Proteus对系统软硬件进行仿真调试并通过。
2.4编写设计说明书
内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于5000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要(用visio2003画图软件)绘制整个系统框图及各部分的软件流程图,列出程序清单,逐条加以注释,并注明各程序功能块的功能。
3.工作计划
序号
设计内容
所用时间
1
布置任务及调研
4天
3
制作与调试
8天
4
撰写设计报告书
2天
合计
14天
4.主要参考资料
单片机课程设计指导书皮大能北京理工大学出版社2012.7
8051单片机实践与应用吴金戎清华大学出版社2003.8
单片机技术基础教程与实践夏路易电子工业出版社 2008.1
单片机原理及应用张毅刚高等教育出版社2012.11
基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社
2007.7
…
指导老师签字:
日期:
基于单片机数字钟设计
摘要
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本文介绍了基于单片机的数字钟的设计,详细讨论了它从软件上实现的过程,重点在时钟调整的方式:
查询和中断的比较,然后,对数字钟的稳定性和精确性作了相关的讨论。
在文章的最后,给出了采用中断方式实现的数字钟的源程序。
关键字:
单片机,数字钟,数据缓冲区,中断
Abstract
Inrecentyears,withcomputersintheinfiltrationandthedevelopmentoflarge-scaleintegratedcircuits. SCMapplicationissteadilydeepening,asithasstrongfunction,smallsize,lowpowerdissipation,lowprices,reliable,easytousefeatures,itisparticularlysuitedtoandcontrolofthesystem,increasinglywidelyusedinautomaticcontrol,intelligentinstruments,gauges,dataacquisition,militaryproductsandhouseholdappliances,andotherareas,isoftenmicrocontrollerasacorecomponenttouse,Inlightofspecifichardwarearchitecture,andapplication-specificsoftwarefeaturesobjectcombinetomakeperfect.
Inthispaper,basedonsingle-chipdigitalclockdesign,discussedindetailfromthesoftwarerealizetheprocess,focusingontheclockadjustintheway:
queriesanddisruptionofcomparison,then,onthedigitalclockmadeofthestabilityandaccuracyrelateddiscussion.Inthelastarticle,givewayusinginterruptedrealizethesourceofthedigitalclock.
Keywords:
MCU,digitalclock,databuffer,interruption,timing
1简单设计思路
1.1课题设计要求
基于单片机电路,设计一个可以显示时、分、秒的数字钟的电路。
要求如下:
(1)能直接显示时、分、秒的数字钟,要求二十四时为一计数周期。
(2)当电路发生走时误差时,要求电路具有校时功能,校时时伴有闪烁
(3)要求电路使用单片机电路。
(4)要求电源电压+5伏。
(5)要求有复位电路
1.2设计基本原理简介
数字钟的设计首先要保证其走时尽可能的准确,其次再设定其功能。
在设计中使用51系列单片机定时来完成走时并用两组输出口控制数码管分别显示时钟的小时、分钟、秒,利用输入端外接复位开关S1和调节时间开关S2来实现数字钟的功能。
该电路的原理框图如图1-1所示:
图1.1数字钟原理图
1.3确定元器件的型号及参数
1.3.1单片机的选择
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。
低电压和低功耗单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。
由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。
这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。
目前,我国生产很多型号的单片机,在此,我们采用型号为AT89C51的单片机AT89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C51是MCS-51系列单片机的典型产品之一。
AT89C51单片机的P口特点:
P0口:
是一个8位漏极开路输出型双向I/O端口。
作为输出端口时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。
此设计用AT89C51单片机。
1.3.2LED数码管显示电路
主芯片使用AT89C51或STC89C52单片机,晶振使用12MHz或11.0592MHz,使用3个2位一体共阴数码管组成6位显示时、分、秒,或者使用4位一体时钟专用数码管。
2整体设计方案
2.1硬件电路设计
系统硬件电路根据课题设计要求,它由以下几个部件组成:
单片机AT89C51、电源、时分秒显示模块。
时分秒显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
显示模块中时分秒显示驱动、校时模块都通过AT89C51的I/O口控制。
显示模块中的复位电路由AT89C51的RESET端控制。
电源部分:
电源部分有二部分组成。
一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由5V的电池供电,以保证停电时正常走时。
正常情况下电池是不提供电能的,以保证电池的寿命。
由此结合单片机课程学习,用Proteus画出电路设计图,如图2.1所示:
图2.1数字钟原理电路图
此电路中的数码管采用的是共阳极电路,使用单片机89C52RC的P0口和P2口控制六段数码管的译码显示时钟的时分秒。
接通电源,显示12:
59:
50。
按S2,小时闪烁可调小时;按S2,分钟闪烁可调分钟;最后按S2即可正常走时。
按一下按钮S1电路复位,又恢复显示显示12:
59:
50。
此电路只可以实现加一调时,记满重新从0:
0:
0开始计时,如此往复。
2.2软件编程
此部分主要介绍显示模块,显示模块是实现数字钟的重要部分,在显示时,首先将时间十进制数据转化为显示段码,然后送往数码管显示。
显示段码采用动态扫描的方式。
在要求改变显示数据的类别时,只须改变@R1(指向数据缓冲区的指针)指向的十进制数据缓冲区即可。
根据要求首先画出流程图,程序设计的基本流程图如图2.2所示:
根据流程图用visio2003软件编程,采用定时器中断T0和T1来实现时钟的显示和调整时间。
具体程序见附录。
2.3单片机的下载
单片机在下载时如的摆放方法如图2.3所示:
图2.3单片机摆放示意图
图2.2数字钟流程图
将USB转串口线与编程器连接好,将单片机放入编程器ZIP1锁紧座上(芯片缺口朝上),打开STC-ISP软件(STC_ISP_V480.exe),选择STC单片机型号,打开要下载的程序文件,设置COM号,点击下载按钮,当出现给MCU上电提示时,插上USB取电线,进行正常下载。
如图2.4所示。
图2.4
在选择COM端口时看设备管理器端口的USB-SERIALCH340显示COM为多少就选择多少。
如图2.5所示。
图2.5COM端口查看示意图
3电路安装与调试
3.1电路的安装
电路的安装要求如下:
(1)列出除元器件清单。
(2)元器件成型:
脚的间距=板上孔距。
元件两边留下的长度一致,弯折不要是直角(即有一定的弧度,防止折断管脚)
(3)插装元件:
插对位置、方向,元件插序由低到高分批。
元件要横平竖直。
(4)焊接:
烙铁预热焊盘和引脚;左手送入焊锡丝;当焊锡溶化时,提起焊锡丝;再提起烙铁;(焊锡应正好把焊盘覆盖,不能太多也不能太少)焊点的要求:
焊点要圆而光滑,不毛刺,不虚焊。
(5)剪脚:
预留1~2mm。
(6)修整:
修整焊点,整理元件。
3.2电路的调试
接上由220V的市电通过变压、整流稳压来得到+5V电压,即可看到如图3.1所示的显现,如不是则出现了故障,需先排除故障再进行调试。
图3.1数字钟成果图
用Proteus软件对设计电路进行仿真,具体仿真步骤、方法、显示如下。
打开仿真界面开始仿真时,“LED”显示如图3.2所示.
图3.2仿真初始界面
按“S2”键松开,第一位数码管闪烁,此时可以设置“时”(0--23),然后按加一键,时可加一;按减一键,时可减一。
仿真图如图3.2所示。
图3.3调“时”仿真图
再按“S2”键松开,第三第四位数码管闪烁,此时可设置“分”(0--59),仿真图如图3.3所示。
图3.3调“分”仿真图
总结
感谢牛老师给我的指导帮助,让我顺利完成了这个设计。
我在这一次数字电子钟的设计过程中,很是受益匪浅。
通过对自己在大学三年时间里所学的知识的回顾,并发挥对所学知识的理解和思考及书面表达能力,自己亲手设计,最终完成目标了。
以前上课都是上一些最基本的东西,而现在却可以将以前学的东西作出有实际价值的东西。
在这个过程中,我的确学得到很多在书本上学不到的东西,如:
如何利用现有的元件组装得到设计要求,如何找到错误的原因,如何利用计算机来画图等等。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个课程设计十分有意义,我获得宝贵经验。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。
自己今后将会更加的把理论知识和实际应用结合起来,提高自己的能力。
参考资料
【1】《单片机课程设计指导书》.皮大能.北京理工大学出版社2012.7
【2】《8051单片机实践与应用》.吴金戎.清华大学出版社2003.8
【3】《单片机技术基础教程与实践》.夏路易.电子工业出版社2008.1
【4】《单片机原理及应用》.张毅刚.高等教育出版社2012.11
【5】《基于Proteus的单片机系统设计与仿真实例》.蒋辉平.机械工业出版社2007.7
附录
单片机程序:
DATA_SEGSEGMENTDATA;定义一个DATA段
STACKSEGMENTIDATA;定义一个堆栈段
BIT_SEGSEGMENTBIT;定义一个位段
bKeyBITP1.0;
IdleConstEQU50
RSEGSTACK
DS10H;16个字节的堆栈
RSEGDATA_SEG;开始DATA_SEG段
buffer:
DS6;6个字节的显示缓冲区
ms50:
DS1;50ms计数
ms250:
DS1;250ms计数
sec:
DS1;秒
min:
DS1;分
hour:
DS1;时
ms50_1:
DS1;存放多少个50ms,用于记录按键时间
SetPos:
DS1;设置位置
SetPos1:
DS1;需要屏蔽的数码管
RSEGBIT_SEG
bIdle:
DBIT1;省电模式
bTwinkle:
DBIT1;当前设置位置闪烁
CSEGAT0;相当于小汇编的ORG
LJMPMAIN
CSEGAT000BH;定时器T0中断处理入口地址
LJMPINT_Timer0
CSEGAT001BH;定时器T1中断处理入口地址
LJMPINT_Timer1
CSEGAT0100H
MAIN:
MOVSP,#STACK-1;堆栈
CLRbIdle
CLRbTwinkle
MOVms50,A;清零ms50
MOVms250,A
MOVhour,#12;设定初值:
12:
59:
50
MOVmin,#59
MOVsec,#50
MOVTH0,#60;定时中断计数器初值
MOVTL0,#176;定时250ns
MOVTMOD,#11H;定时器0,1:
方式一
MOVIE,#8AH;中断初始化,EA=1,ET0=1,ET1=1
SETBTR0;开定时器T0
MOVSetPos,#0FFH;
MAIN1:
ACALLAdjustBuffer;调整显示缓冲区
MAIN2:
ACALLKey;调用键扫描
ACALLDisplay
JNBF0,MAIN2
CLRF0
SJMPMAIN1;需要刷新显示时间
;中断服务程序
INT_Timer0:
MOVTL0,#176+5
MOVTH0,#60
PUSH01H
MOVR1,#ms50
INC@R1;50ms单元加1
CJNE@R1,#5,ExitInt
MOV@R1,#0;恢复初值
INCR1
MOVA,SetPos
CJNEA,#0FFH,INT_Timer0_1
SJMPINT_Timer0_2
INT_Timer0_1:
CPLbTwinkle
SJMPExitInt1
INT_Timer0_2:
INC@R1
CJNE@R1,#4,ExitInt
MOV@R1,#0;恢复初值
INCR1
INC@R1;秒加1
CJNE@R1,#60,ExitInt1
MOV@R1,#0
INCR1
INC@R1;分加1
CJNE@R1,#60,ExitInt1
MOV@R1,#0
INCR1
INC@R1;时加1
CJNE@R1,#24,ExitInt1
MOV@R1,#0
ExitInt1:
SETBF0
ExitInt:
POP01H
RETI
;显示
Display:
JNBbIdle,Display3
RET;省电模式
Display3:
PUSHB
PUSHACC
PUSHDPL
PUSHDPH
PUSH00H
MOVR0,#buffer
MOVB,#0FEH
MOVDPTR,#SEG_TAB
Display1:
MOVA,@R0
MOVCA,@A+DPTR;取段码
MOVP0,A
MOVA,B
JNBbTwinkle,Display4
ORLA,SetPos1
Display4:
MOVP2,A;选种数码管
CALLDelay1ms
MOVA,B
RLA
JNBACC.6,Display2
MOVB,A
INCR0
SJMPDisplay1
Display2:
POP00H
POPDPH
POPDPL
POPACC
POPB
RET
SEG_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;段码
DB080H,90H,88H,83H,0C6H,0A1H,86H,8EH
DB0FFH,0BFH
设置功能
SetFunTab:
AJMPNoSet;不需要调整
AJMPSetHour;调整小时
AJMPSetMin;调整分钟
AJMPSetSec;调整秒钟
NoSet:
CLRbTwinkle
RET;不在设置状态
SetHour:
INChour
MOVA,hour
CJNEA,#24,SetHour1
MOVhour,#0
SetHour1:
SJMPSetFun1
SetMin:
INCmin
MOVA,min
CJNEA,#60,SetMin1
MOVmin,#0
SetMin1:
SJMPSetFun1
SetSec:
INCsec
MOVA,sec
CJNEA,#60,SetFun1
MOVsec,#0
SetFun1:
SETBF0
RET
;调整闪烁位置
SetPosTab:
AJMPNoSetPos
AJMPSetHourPos
AJMPSetMinPos
AJMPSetSecPos
NoSetPos:
MOVSetPos1,#0
RET
SetHourPos:
MOVSetPos1,#30H
RET
SetMinPos:
MOVSetPos1,#0CH
RET
SetSecPos:
MOVSetPos1,#03H
RET
Key:
ACALLDisplay
JNBbKey,Key4
JNBTR1,Key3
CLRTR1
SETBbKey
MOVA,ms50_1
CJNEA,#10,$+3
JNCKey1
调整时间
SetFun:
MOVA,SetPos
INCA
RLA
MOVDPTR,#SetFunTab
JMP@A+DPTR
Key1:
CJNEA,#IdleConst,$+3
JNCKey2
进入设置状态
SetPosFun:
INCSetPos
MOVA,SetPos
CJNEA,#3,SetPosFun1
MOVSetPos,#0FFH;退出设置状态
SetPosFun1:
MOVA,SetPos
INCA
RLA
MOVDPTR,#SetPosTab
JMP@A+DPTR
Key2:
SETBbIdle;进入省电模式
MOVP2,#0FFH
Key3:
RET
Key4:
JNBTR1,Key5
MOVA,ms50_1
CJNEA,#IdleConst,$+3
JNCKey2
RET
Key5:
ACALLDisplay
ACALLDisplay
ACALLDisplay
ACALLDisplay
JNBbKey,Key6
SJMPKey3
Key6:
CLRbIdle
MOVTH1,#60
MOVTL1,#176
SETBTR1
MOVms50_1,#0
RET
END