基于51单片机电子时钟的设计本科学位论文.docx
《基于51单片机电子时钟的设计本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于51单片机电子时钟的设计本科学位论文.docx(9页珍藏版)》请在冰豆网上搜索。
基于51单片机电子时钟的设计本科学位论文
单片机综合实验报告
项目(03):
数字电子时钟(LCD显示)
学号:
姓名:
2016年4月30日
目录
设计要求3
设计原理4
一.软件介绍4
1.1Proteus简介4
1.2Keil简介5
二、设计电路图5
2.1AT89C51单片机:
6
2.1.1.单片机的引脚功能6
三.DS1302实时模块6
3.1时钟芯片DS1302的工作原理6
四.实时时钟电路设计7
五.程序设计8
5.1DS1302时钟程序流程8
5.2LCD显示程序流程8
六.Proteus仿真电路图9
七,部分源程序10
八.设计总结12
设计要求
以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:
使用字符型LCD显示器显示当前时间。
显示格式为“时时:
分分:
秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
*K1—进入设置现在的时间。
*K2—设置小时。
*K3—设置分钟。
*K4—确认完成设置。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:
00:
00”,然后开始计时。
设计原理
题目难点在于键盘的指令输入,由于每个按键都具有相应的一种或多种功能,程序中需要大量使用do{}while或while{}循环结构,以检测是否有按键按下。
电子时钟一共有4个按键,一个进入调时模式的按键、一个选择调整时间的位置的键、一个加、一个减。
进入调时模式时时间不在走动可以调整日期时间和星期。
电路原理设计是基于小系统包括电源电路、复位电路、按键电路、时钟电路、输出控制电路。
一.软件介绍
1.1Proteus简介
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
1.2Keil简介
2009年月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
二、设计电路图
硬件控制电路主要用了AT89C51芯片处理器、1602LCD显示器、DS1302实时时钟。
根据各自芯片的功能互相连接成电子时钟的控制电路。
2.1AT89C51单片机:
本系统采用的是美国ATMEL公司生产的AT89C51单片机,首先我们来熟悉一下AT89C51单片机的外部引脚和内部结构。
2.1.1.单片机的引脚功能
AT89C51单片机有40个引脚。
●Vcc:
电源电压+5V
●GND:
接地
●P0、P1、P2、P3口
三.DS1302实时模块
3.1时钟芯片DS1302的工作原理
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图所示。
为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。
对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。
位1至位5指操作单元的地址。
位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。
控制字节总是从最低位开始输入/输出的。
表-1DS1302的控制字格式
RAMRD
1A4A3A2A1A0
/CK/WR
3数据输入输出(I/O):
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
四.实时时钟电路设计
DS1302与单片机的连接,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
五.程序设计
5.1DS1302时钟程序流程
流程图分析:
DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的时间数据送入液晶显示。
这时若有设置键按下,进行时间修改,完成后将时间数据送入1302芯片,若没有按键按下,直接送入EPROM中,送入液晶显示。
5.2LCD显示程序流程
流程图分析如下:
首先对1602显示屏进行初始化(初始化大约
持续10ms),然后检查忙信号,若BF=0,则获得显示RAM地址,写入相应的数据显示。
若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。
六.Proteus仿真电路图
Proteus运行图:
七,部分源程序
#include
#defineuintunsignedint
#defineucharunsignedchar
uchara,miao,shi,fen,ri,yue,nian,week,key1n,temp;
#defineyh0x80
#defineer0x80+0x40
sbitrs=P2^6;
sbiten=P2^7;
sbitrw=P2^5;
sbitIO=P3^4;
sbitSCLK=P3^6;
sbitRST=P3^5;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
sbitkey1=P2^0;
sbitkey2=P2^1;
sbitkey3=P2^2;
ucharcodetab1[]={"20--"};
ucharcodetab2[]={":
:
"};
voiddelay(uintxms)
{
uintx,y;
for(x=xms;x>0;x--)
for(y=120;y>0;y--);
}
voidwrite_1602com(ucharcom)
{
rs=0;
rw=0;
P0=com;
delay
(1);
en=1;
delay
(1);
en=0;
}
voidwrite_1602dat(uchardat)
{
rs=1;
rw=0;
P0=dat;
delay
(1);
en=1;
delay
(1);
en=0;
八.设计总结
经过几天不懈的努力终于完成了设计。
通过这次单片机课程设计,使我在理论课程的基础上对单片机有了更进一步的了解。
虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节。
有了老师在实验室给我们的讲解和平时每次的作业练习使我有了一定的基础来完成本次设计。
刚开始时我在整体思路模糊的情况下,不知道从什么地方入手。
通过在网上查找资源有了初步的构想。
随着知识的积累,我对电子时钟的设计方案已经慢慢酝酿而成。
有了方向和不少知识储备后,就开始了我的设计。
设计单元电路阶段,这个阶段可以说是考察数电书本知识的阶段。
所有的设计方法还有步骤在数字电路书上都有,而且还有例题。
这个阶段遇到的主要问题就是以前的知识忘记不少,所以做设计的时候要常随手翻阅课本,等于是做了几道电路作业题。
这个阶段的难度虽然不是很大,但是要有耐心,要心细。
仿真阶段可以说是这次设计中最重要的部分,因为以前的只是理论而不是真正的实体。
所以说它是最重要的。
在设计中出现了不少问题通过和同学交流和借助于资料书的帮助很快就解决了问题。
本次设计是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,学习到了不少的专业知识。
各个模块可以在软件或者硬件上实现。
在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。
在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面。
两周时间的课程设计结束了,在两周的努力学习和老师的精心指导下,我顺利地完成了课程设计任务。
在课设的进行中,在自己一步一步的实践和仿真中,这让我学会了很多,学到了许多书本上没有的东西,同时也帮助自己温习了数字电路和电子软件的知识。
在设计制作过程中遇到困难时,可以向同学和老师求救经过和同学和老师的探讨可以解决不少的问题。
参考文献:
[1]李朝青.单片机原理及接口技术[M],北京:
北京航天航空大学出版社,2005
[2]李广弟.单片机基础[M],北京:
北京航空航天大学出版社,2000
[3]万光毅.单片机实验与实践教程[M],北京:
北京航空航天大学出版社,2003
[4]唐亚平、李移伦.单片机原理实训与学习指导[M],长沙:
中南大学出版社,2006
[5]刘军.单片机原理与接口技术[M],华东理工大学出版社,2006
[6]谢自美.电子线路设计、实验、测试[M],武汉:
华中理工大学出版社,2000