基于51单片机的电子钟方案设计书.docx
- 文档编号:7065106
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:19
- 大小:279.01KB
基于51单片机的电子钟方案设计书.docx
《基于51单片机的电子钟方案设计书.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子钟方案设计书.docx(19页珍藏版)》请在冰豆网上搜索。
基于51单片机的电子钟方案设计书
题目:
基于51单片机的电子钟设计
院(系):
信息与通信学院
专业:
电子信息工程专业
学生姓名:
学号:
**********
指导教师:
职称:
2011年12月11日
摘要
本次的课程设计基于单片机技术原理,以美国ATMEL公司开发的AT89S52芯片作为核心控制器。
通过硬件电路的制作及软件程序的编制,设计制作了一种具有复位、校时功能的数字时钟系统。
利用1602液晶同时显示提示信息和时间信息,用户可通过系统上的按键对时间进行调整,实现实时的时钟显示。
本次设计的硬件由主控模块、复位模块以及显示模块构成。
复位模块主要由电阻、电容、按键和发光二极管组成而显示模块则由1602字符液晶构成,用于显示提示信息和实时时钟。
关键词:
AT89S52;LCD1602。
实时时钟
Abstract
ThecurriculumdesignisbasedontheprinciplesofmicrocomputertechnologyandhasadaptedtheAT89S52chipdevelopedbytheATMELcompanyofAmericanasthecorecontroller.Adigitalclocksystemwiththefunctionsofbothresetandtimeadjustmentisrealisedbythehardwarecircuitboardmakingandthesoftwareprogramming.LCD1602isusedtodisplaythepromptandtimeinformation.Theuserscanadjusttimethroughthebuttonsonthesystemwiththepurposeofthereal-timedisplaying.Theresetmoduleismadeupoftheresistance,capacitance,smallbuttonandlight-emittingdiodewhilethedisplaymoduleismainlyrealizedthroughtheLCD1602todisplaytherelativeinformationincludingpromptandreal-timeclockmessage.
Keywords:
AT89S52,LCD1602,Real-timeclock
引言
单片机是一种采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU,随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等集成到一块硅片上构成一个小而完善计算机系统的集成电路芯片。
目前单片机已经渗透到我们生活的各个领域,几乎很难找到某个领域没有单片机的踪迹了。
自导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,到广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
单片机,“麻雀虽小,五脏俱全”,在科技高速发展的今天,由单片机自由发挥的舞台更加宽广,现已明显的朝着巨型化,单片化和网络化方向发展。
因此在大学阶段打好基础,为今后真正学会并灵活运用好单片机做好充分的准备,是我们每一个电子信息类专业大学生义不容辞的责任。
本着学以致用的原则,本次课程设计我从实际生活出发,结合单片机原理和技术理论的学习,设计制作了一个电子时钟,通过液晶显示时间,希望经过简单电子制作的程序,在实际动手做板和软件编程过程中,体会单片机强大功能的同时提高自己动手的能力。
一系统功能设计
1.1系统概述
根据所学过的有关电子电路和单片机方面的相关知识,以AT89S52单片机芯片为核心控制器件,采用LCD1602字符液晶显示时间。
在单片机外围设置四个按键,其中三个用于调整时间还有一个用于完成复位操作。
整个系统功能设计利用单片机内部16位定时/计数器实现定时,每经过1秒的时间,单片机会控制秒变量加1,加到60秒时,分变量加1,分变量加到60时,时变量加1,时变量加到24时,返回00继续计时,从而实现了电子时钟的基本走时功能。
用AT89S52单片机芯片作为主控制器,使用其内部16位定时器的定时功能和其可位寻址的IO端口控制各个输入输出设备,用晶振作为单片机时钟脉冲的输入电路。
LCD1602字符液晶作为输出设备,显示所有的时钟和用户在编程时所设置的初始提示信息。
按键作为输入设备,用于输入和修改时钟信息。
电路的基本工作原理是:
晶振为单片机提供走时所需要的时钟脉冲,使其能够逐条地执行内存中的程序。
16位定时器提供时间的累加,并将这种累加的效果通过字符型液晶1602显示出来,从而最终实现了一个电子钟系统的设计。
1.2单元电路设计概述
(1)复位电路
电路实现上电自动复位和人工复位,对于51单片机而言,只要复位电路接高电平超过两个时钟周期(12M晶振约2us),即可产生复位操作,用10pF电容和10K电阻构成充放电电路,其时间常数超过2us,可实现复位,当按键按下时,RESET处产生2us的高电平,从而实现复位功能。
(2)时钟电路
8051内部已有振荡电路,只需在XTAL1和XTAL2两个管脚处接一个石英晶振即可。
(3)液晶显示电路
用于显示时间信息。
二系统方案设计及各模块原理
本电子钟系统直接采用AT89S52单片机芯片控制时钟,外围电路简单,同时该芯片为用户提供了良好的编程环境。
外围电路设计包括两大部分,分别是液晶显示部分和按键控制部分。
在设计过程中采用了一个复位和三个对时间进行调整的按键。
复位按键用于对时钟走时进行复位,调时按键用于调整时间。
设计的整个过程都采用数字电路,保证了系统工作的可靠性与稳定性。
单片机本身使得设置和调时操作更加准确,综上所述,整体的电路设计思路如下图1-1所示。
图1-1系统整体原理图
2.1AT89S52核心模块
本次课程设计的核心控制器件是美国ATMEL公司生产的AT89S52单片机芯片,它是一种低功耗、高效能CMOS8位微控制器,具有在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得该芯片可以为众多的嵌入式控制应用系统提供了高灵活、超有效的解决方案。
2.1.1AT89S52单片机简介
其引脚结构如下图2-1-1所示:
图2-1-1AT89S52引脚结构图
引脚功能说明:
VCC:
电源
GND:
接地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对其写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也作为低8位地址/数据复用。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器
能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为AT89S52特殊功能使用,如下所示。
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
在flash编程和校验时,P3口也接收一些控制信号。
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
PSEN:
外部程序存储器选通信号,当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.1.2AT89S52主要性能
--与MCS-51单片机产品兼容
--8K字节在系统可编程Flash存储器
--1000次擦写周期
--全静态操作:
0Hz~33Hz
--三级加密程序存储器
--32个可编程I/O口线
--三个16位定时器/计数器
--八个中断源
--全双工UART串行通道
--低功耗空闲和掉电模式
--掉电后中断可唤醒
--看门狗定时器
--双数据指针
--掉电标志位
2.2复位模块
对单片机电路而言,复位操作主要是完成单片机内电路的初始化,使其能够从一种确定的状态开始运行。
根据应用的要求,复位操作通常有两种基本形式:
上电复位和开关复位。
上电复位要求接通电源后,自动实现复位操作。
而开关复位则要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使得单片机复位。
2.2.1复位电路组成
本次电子钟系统的电路设计中,所使用的复位电路如下图2-2-1所示:
图2-2-1复位电路
由上图可知,本系统的复位电路主要由一个10K的电阻、一个10uF的电解电容、一个按键和一个发光二极管组成,完成上电和开关复位的功能。
2.2.2复位电路分析
由单片机原理的基本知识可知,当单片机的复位引脚RST出现5ms以上的高电平时,就完成了复位操作,但如果RST持续为高电平,单片机就会处于循环复位状态而无法执行程序,因此就要求单片机复位后能够脱离复位状态。
本次课程设计所用的上电且开关复位电路即为常用的复位电路,上电后,由于电容充电,使得RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使得RST持续一段时间的高电平,从而实现了上电且开关复位的操作。
2.3显示模块
本设计中的显示模块主要由1602字符型液晶显示模块电路组成,主要用来显示一行提示信息和时间状况。
2.3.11602液晶简介
1602液晶是工业字符型液晶,能够同时显示16*2即32个字符(16列2行),LCD字符液晶以及在时钟系统钟的显示电路分别如下图2-3-1、2-3-所示:
图2-3-1LCD字符液晶实物图
图2-3-2复位电路
2.3.21602引脚说明
1602字符型LCD通常有14或16条引脚线,多出来的2条是背光电源线,VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其各引脚功能如下:
VCC:
接电源;
V0:
液晶显示器对比度调整,接正电源时对比度最弱,接地时对比度最高,经常在使用时配合一个10K的电位器,通过调整以期达到最佳的效果;
RS:
寄存器选择,接高电平时选择数据寄存器,低电平时选择指令寄存器;
R/W:
读写信号线,高电平时进行读操作,低电平时进行写操作;
E:
使能端,下降沿有效;
DB0-DB7:
双向数据线;
BLA:
背光电源正极;
BLK:
背光电源负极。
三系统程序设计
软件设计在整个课程设计的过程中起着举足轻重的作用,通过查阅各种文献资料,联系自己所学过的相关知识,将目标分解成一个个子程序模块,完成了整个程序的编写,在编程之前,构思好流程图能达到事半功倍的效果。
整个程序的流程图如下图3-1-1所示:
图3-1-1流程图
四印制电路板的设计与制作
4.1印刷电路板的布线设计
此过程是用AltiumDesignerWinter9.0来完成的。
布线的一般流程如下:
新建一个工程—画电路原理图—生成网络表—画PCB图,进行布线,生成.PCBDoc文件。
布线注意事项:
(1)在摆放元件时先按原理图摆放,再细调位置。
(2)所用的为单面板,故应在底层上布线。
(3)两根线之间的距离不能太小,在线拐弯处不能用成直角,一般用45度角为宜。
(4)线宽设置在0.6—0.8毫M,在一些拐角的地方还可以适当地补线,以防止腐蚀的时候将线腐蚀掉或是因为线太细而对电路造成不良影响。
(5)焊盘的半径设为1.0毫M,便于焊接。
4.2印刷电路板的制作
印制电路板制作的一般过程为:
把PCB打印出来后,先用砂纸除去铜板外层的氧化铜,在预热熨斗后,把PCB放到板上,把线熨至铜板上。
待铜板冷却后再将PCB纸从铜板撕下,检查铜板上有没有断线的地方,若有少量,则用油性笔把线给补上!
然后,把熨好的铜板放到氯化铁溶液中。
腐蚀完后先进行打孔,再把铜线上的墨去掉。
最后,按照PCB图安插元件,在此过程中要注意有正负极性之分的元器件,比如发光二极管、电解电容等,安装完器件后进行焊接。
五电路板的调试
调试是电路板制作过程中一个至关重要的环节,通过调试可以及时发现存在的问题并进行相应的应答措施,从而达到预定的效果。
在本次课程设计中,调试工作可以分为硬件调试和软件调试,硬件主要是检查电路连线是否有错误,以及在焊接过程中有无虚焊现象,而软件则是通过将编写好的程序经过编译后生成的后缀为.HEX的文件烧录到单片机芯片中,根据现象适当的修改程序。
六总结
经过几个星期紧张有序的查找资料与实际动手制作电路板的过程,本次的课程设计至此终于将近尾声。
俗话说:
“好的开始是成功的一半”,虽然经过整个课设,所掌握的东西并不是特别多,但却实实在在经历了一个实物制作的整个流程,将日常生活中习以为常的小物体自己动手做出来与买来的感觉是全然不同的。
结果在某种意义上是重要的,但相对而言,过程才是做任何事情的关键,通过本次课设,我觉得自己在某些方面的能力得到了一定程度的提高,主要包括以下几个方面:
一、单片机学习方面
单片机是一门应用与实践性都很强的学科,很多人都在学习它。
但是,学好并不是一件容易的事,对刚刚接触单片机的我们来说,想尽快掌握并灵活运用更是难上加难,因此,精通单片机对于很多人来说似乎都是一个遥不可及的神话。
但是经过本次的课程设计,通过单片机实现一个电子钟的功能,让我对学好单片机看到了希望。
课程设计虽然结束了,但是从中获得的很多宝贵经验在今后无论生活还是学习中都是值得借鉴的。
二、学习态度上
科学研究最重要的品质是认真严谨踏实,对今后打算通过考研投身科研工作的我来说,在大学阶段有意识的培养这种严谨的学习态度就显得至关重要。
刚开始可以什么都不懂,但是一定要学会借助一切可以利用的资源去弄懂它,在当今科技高速发展的时代,图书馆、网络、报刊杂志都是我们身边宝贵的资源,我们应该学会好好的利用。
当遇到模棱两可的问题时,一定要想办法去寻找可能的解决方案。
三、为人处事上
“众人拾柴火焰高”的习语道出了团结合作的重要性,在当今社会,团队精神具备与否对一个人成长的影响更加突出,当遇到不懂的问题时,通过主动查阅资料或者寻求同学帮助都是不错的选择,一个人的精力是有限的,只有学会团队合作,取长补短,才能够在有限的时间内达到最高的做事效率,取得最佳的结果。
除了上述几点之外,最后,我觉得无论做什么事,只要你有足够的决心与挑战困难的勇气,就没有什么办不到的。
我希望在本次课程设计的基础上,在大学生活最后的一年多时间里,多动手实践,上机编程、仿真与调试,争取在今后的某个阶段,能够真正学好单片机,使得这次的课程设计成为我单片机学习道路上的启蒙课程。
谢辞
经过努力,至此,终于完成了本次的课程设计!
在此首先要感谢指导老师给了我们一个自由选题的空间,从而让我有了一个验证心中想法的机会。
我觉得一个人正是在一次次小小实践的过程中逐步成长起来的。
因此,我想在此向韦老师致以衷心的感谢!
另外本次的课程设计也得到了本年级同学覃祖枢、梁芝铭以及学长吴子勇等的热心帮助与指导,他们在给予我很大帮助和启示的同时,也让我对所学的电路以及单片机C语言编程知识有了更深层次的认识与理解。
最后,还要将感谢致以二院科协,感谢它给我们提供了各种做板过程中所需要的一切设备和测试仪器!
参考文献
[1]ISBN7-81082-496-1/TP·181·戴胜华蒋大明等编著·《单片机原理与运用》·清华大学出版社·2006年6月
[2]ISBN978-7-115-17326-3/TP·张义和王敏男等编著·《例说51单片机(C语言版)》·人民邮电出版社·2009年7月
[3]ISBN978-7-81124-448-9·刘同法编著·《单片机C语言编程基础与实践》·北京航空航天大学出版社·2009年2月
附录
(1)电路原理图
(2)PCB图
(3)完整程序代码
/*******************************************************************/
/*基于51单片机的电子钟设计程序*/
/*功能:
在1602字符液晶上显示时间*/
/*作者:
李燕*/
/*编写时间:
2011年12月*/
/*******************************************************************/
#include
sbitRS=P2^5。
//寄存器选择位,将RS位定义为P2.5引脚
sbitRW=P2^6。
//读写选择位,将RW位定义为P2.6引脚
sbitE=P2^7。
//使能信号位,将E位定义为P2.7引脚
sbitS1=P2^2。
sbitS2=P2^1。
sbitS3=P2^0。
unsignedcharcodedigit[]={"0123456789"}。
//定义字符数组显示数字
unsignedcharcodestring[]={"BeijingTime"}。
//定义字符数组显示提示信息
unsignedcharcount。
//定义变量,统计中断累计次数
unsignedchars,m,h。
//定义变量储存秒、分钟和小时
/*****************************************************/
函数功能:
延时若干毫秒
入口参数:
n
******************************************************/
voiddelay(unsignedcharn)
{
unsignedchari,j。
for(i=0。
i<100。
i++)
for(j=0。
j j++)。 } /***************************************************** 函数功能: 将模式设置指令或显示地址写入液晶模块 入口参数: dictate ***************************************************/ voidWriteInstruction(unsignedchardictate) { RS=0。 //根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0。 E=0。 //E置低电平,让其从0到1发生正跳变,所以应先置"0" P0=dictate。 //将数据送入P0口,即写入指令或地址 E=1。 //E置高电平 E=0。 //当E由高电平跳变成低电平时,液晶模块开始执行命令 } /************************************************** 函数功能: 指定字符显示的实际地址 入口参数: x ***************************************************/ voidWriteAddress(unsignedcharx) { WriteInstruction(x|0x80)。 //显示位置的确定方法规定为"80H+地址码x" } /***************************************************** 函数功能: 将数据(字符的标准ASCII码)写入液晶模块 入口参数: y(为字符常量) ***************************************************/ voidWriteData(unsignedchary) { RS=1。 //RS为高电平,RW为低电平时,可以写入数据 RW=0。 E=0。 //E置低电平让其从0到1发生正跳变,所以应先置"0" P0=y。 //将数据送入P0口,即将数据写入液晶模块 E=1。 //E置高电平 E=0。 //当E由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能: 对LCD的显示模式进行初始化设置 ***************************************************/ voidLcdInitiate(void) { delay(15)。 //延时一段时间,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38)。 //显示模式设置: 16×2显示,5×7点阵,8位数据接口 delay(5)。 //延时一段时间,给硬件一点反应时间 WriteInstruction(0x38)。 delay(5)。 WriteInstruction(0x38)。 //连续三次,确保初始化成功 delay(5)。 WriteInstruction(0x0c)。 //显示模式设置: 显示开,无光标,光标不闪烁 delay(5)。 WriteInstruction(0x06)。 //显
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子钟 方案设计
![提示](https://static.bdocx.com/images/bang_tan.gif)