DS128历时钟课程设计汇总.docx
《DS128历时钟课程设计汇总.docx》由会员分享,可在线阅读,更多相关《DS128历时钟课程设计汇总.docx(37页珍藏版)》请在冰豆网上搜索。
DS128历时钟课程设计汇总
单片机
课程设计报告
课程名称
单片机课程设计
专业
电气工程及其自动化
班级
姓名
学号
指导教师
2012年3月9日
DS12887日历时钟课程设计
目录
一前言..............................................................................................
4
1.1设计任务及要求........................................................................
4
1.2设计应用意义............................................................................
4
二方案的论证.................................................................................
4
三总体设计.....................................................................................
4
3.1基本工作原理..................................................................................
4
3.2、硬件总体设计...............................................................................
5
3.3、软件总体设计..............................................................................
5
四硬件设计...................................................................................
5
4.1DS12887的功能介绍...............................................................
6
4.1.1引脚功能...............................................................................
6
4.2LCD1602..................................................................................
7
4.2.1LCD1602液晶介绍...................................................................
7
4.3STC89C52...................................................................................
8
4.3.1芯片介绍................................................................................
8
4.3.2管脚说明...............................................................................
9
五软件设计.....................................................................................
10
5.1时钟设置...................................................................................
10
六系统操作说明..............................................................................
11
七结束语.........................................................................................
12
八参考文献...................................................................................
12
附录:
12
1、系统原理图13
2、程序:
(1)液晶显示的程序13
(2)总的程序14
一、前言
用单片机控制时间的读取并显示在液晶屏幕上面,并可通过按键实现对时间的修改。
文中详细论述了电子日历钟设计原理、使用的各芯片的介绍,阐明了本实例所使用的设计方案、详细的电路图以及电子程序.
1.1设计任务及要求
DS12887芯片具有低功耗、外围接口简单、精度高、工作稳定可靠等优点。
采用DS12887芯片设计的时钟电路无需任何外围电路和器件,并具有良好的微机接口,广泛用于各种需要精度较高的实时时钟系统中。
设计内容包括DS12887芯片的时钟电路硬件设计,软件设计,画出Protel原理图、PCB版图、写出元件清单,验收后方可焊接电路板并调试。
设计实现如下目标:
利用DS12887和STC8952单片机设计一个时钟和日历,时间以24小时为一个周期;显示当前时、分、秒;有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;可以实现基本的调时定时日期的修改。
1.2本设计的应用意义
此电子日历钟小巧便捷利于携带,界面清爽,一目了然,方便您知晓当前时间,并可对时间做出修改,实在是居家旅行日常生活之必备用品!
2、方案的论证
本系统
3、总体设计
3.1基本工作原理
利用DS12887实时时钟电路芯片来读取系统中的日期以及时间信息,并利用P0端口将相关信息传送至STC89C51主芯片之中,利用P2端口使之显示于LCD1602液晶显示屏上,四个按键分别置于P1口的1、2、3、4端口可以对时间进行控制修改。
相关说明:
点击确定按键可以进入LCD屏上方显示的主菜单,点击返回按键可以退出菜单,在时间修改菜单中点击修改“小时”按键可以修改时间中的小时数,点击修改“分钟”按键可以修改时间中的分钟数。
3.2硬件总体设计
STC89C52
LCD1602
电源
按键
DS12887
3.3软件总体设计
主程序主要包括:
系统初始化、获取串口数据、设置日历时钟芯片、获取时钟芯片的时间信息和时钟校正、显示等子程序。
初始化子程序主要包括设置单片机的串口和定时器的初始化,日历时钟芯片初始参数和驱动芯片的初始化等。
主程序流程图如图6所示。
4、硬件设计
4.1DS12887的功能介绍
DS12887是美国DALLAS半导体公司最新推出的8位串行接口并自带RAM的实时日历时钟芯片,内部有14个时钟控制寄存器,包括10个时标寄存器,4个状态寄存器和114bit作掉电保护用的低功耗RAM。
CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制或BCD码初始化芯片的10个时标寄存器,其4个状态寄存器用来控制和指出DS12887的当前工作状态,114bit非易失性静态RAM可在掉电时保存一些重要数据。
DS12887功能强大,应用广泛。
4.1.1引脚功能:
GND:
接地端
VCC:
直流电源+5V电压。
当5V电压在正常范围内时,数据可读写;当VCC低于4.25V,读写禁止,计时功能仍继续;当VCC下降到3V以下时,RAM和计时器被切换到内部锂电池。
MOT(模式选择):
MOT引脚接到VCC时,选择MOTOROLA时序,当接到GFND时,选择INTEL时序。
SQW(方波信号输出):
SQW引脚能从实时时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
AD0~AD7(双向地址/数据复用线):
总线接口,可与MOTOROLA微机系列和INTEL微机系列接口。
AS(地址选通输入):
用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
DS(数据选通或读输入):
DS/RD有2种操作模式,取决于MOT引脚的电平,当使用MOTOROLA时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总的时刻;在写周期,DS的后沿使DS12887锁存写数据。
选择INTEL时序时,DS称作(RD),RD与典型存储器的允许信号(OE)的定义相同。
R/W(读/写输入):
也有两种操作模式。
选MOTOROLA时序时,是一电平信号,指示当前周期是读或写周期,DSO为高电平时,高电平指示读周期,低电平指示写周期;选INTEL时序,信号是一低电平信号,称为WR。
在此模式下,R/W与通用RAM的写允许信号(WE)的含义相同。
/CS(片选输入):
在访问DS12887的总线周期内,片选信号必须保持为低。
IRQ(中断申请输入):
低电平有效,可作微处理的中断输入。
没有中断条件满足时,IRQ处于高阻态。
IRQ线是漏极开路输入,要求外接上接电阻。
RESET(复位输出):
当保持低电平时间大于200ms,保证DS12887有效复位。
DS12887引脚如下图所示。
DS12887的内部地址分配:
地址00H和03H单元取值范围是00H~3BH(十进制为0~59);04H~05H单元按12小时制取值范围是上午(AM)01H~0CH(十进制为1~12),下午(PM)51H~5CH(十进制为81~92),按24小时制取值范围是00H~17H(十进制为0~23);06H单元的取值范围是01H~07H(十进制为1~7);07H单元取值范围O1H~1FH(十进制为1~31);08H单元取值范围是01H~0CH(十进制为1~12);09H单元取值范围是00H~63H(十进制为0~99)。
4.2LCD1602
4.2.11602液晶模块简介
1602液晶显示模块,是点阵字符型液晶显示模块,可以用来显示字母,符号,数字以及简单的汉字和图案等信息。
“1602”的含义是这类液晶显示模块每行能够显示16个字符,一共可以显示两行。
该液晶显示模块,分为带背光和不带背光两类,两者在应用过程中功能基本类似,只是带背光的模块更厚一些,通常的背光颜色以黄绿色和蓝色为主。
目前,多数602液晶显示模块的生产厂商使用的控制芯片都是日立公司的HD44780,这得单片机对1602液晶显示模块的控制更加统一和方便。
1602液晶显示模块的主要技术参数如下:
(1)显示容量,为16个字符X两行,即每行最多显示32个字符;
(2)模块工作电压,在4.5-5V之间,模块的最佳工作电压为5V;
(3)模块工作电流,再最佳工作电压5V式,工作电流是2mA;
(4)显示字符的大小,每个被显示的字符大小为2.95mmX4.35mm(字符的宽度乘高度)。
4.2.21602液晶模块的管脚介绍
第1脚:
GND为电源地,接GND。
第2脚:
VCC接5V正电源。
第3脚:
VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为指令寄存器或数据寄存器的选择。
高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为读或写操作的使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
BGVCC背光电源正极(+5V)输入引脚。
第16脚:
BGGND背光电源负极,接GND。
4.3STC89C52芯片
4.3.1芯片介绍
STC89C52单片机简介
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
和Atmel的对比:
STC89C52RC单片机具有8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载的特点
而AT89S52单片机则具有8K字节程序存储空间;256字节数据存储空间;没有内带EEPROM存储空间的特点。
STC89C52芯片如下图所示:
4.3.2管脚说明:
VCC:
供电电压。
VSS:
接地端。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为STC89C52的一些特殊功能口:
即P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
同时,P3口也可为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
5、软件设计
系统软件设计包括单片机计算机两部分的编程。
计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。
单片机软件编程主要实现键盘、液晶显示、闹钟等各模块的功能,采用C语言编程。
该系统通过串行口与键盘通信,键盘给单片机发指令实现数据采集及系统控制,并将数据实时传回液晶显示器显示结果。
整个软件系统采用模块化的程序设计方法,共分为时间日期的设定、闹铃设定、LCD显示模块和键盘扫描模块4个部分。
其中主要是闹点的设定与提取。
软件系统的主要特点是整个过程完全在键盘的控制之下,实现了友好的人机交互功能。
主程序通过判断键盘的输入情况调用不同的子程序,子程序的功能实现也是在键盘的配合之下完成的。
主程序流程图,如图6所示。
首先对单片机的串行口及定时器进行初始化,然后进行键盘扫描,如果有键按下,则根据扫描到的键值跳转到相应的入口并执行相应的程序,并根据外部的输入进行相应的操作。
如果没有键按下,则回到初始化状态。
在并行运行的程序中,本设计将调用编写的日历时钟和及LCD液晶显示的程序程序,并将其送入液晶显示器中进行显示。
5.1时钟设置
在使用DS12887时,首先要初始化,主要是打开晶振、对控制寄存器A、B写入控制字以及对日历、时钟各寄存器写入初始值。
除校时外,上电时不用再次初始化。
第一次初始化时,应禁止操作DS12887内部更新周期,即先将寄存器B的SET位置“1”,然后初始化时标寄存器(00H~09H)和状态寄存器A,再通过读寄存器C清除中断标志,读寄存器D将VRT位置“1”,最后将寄存器B的SET位清零,DS12887开始计时。
设置日历时钟,必须保证时钟芯片DS12887处于设置状态,即SET=1,然后向DS12887的专用寄存器写入时间信息,写入完毕后,DS12887恢复正常数据更新状态,即SET=0。
在读取日历时钟芯片DS12887的时钟信息时,必须保证UIP=0,然后读取存储其内部寄存器的时钟信息。
为了能够方便地显示时间和校正时钟,可在单片机中的用户寄存器中开辟特殊的时间地址单元作为显示缓冲区,分别放置“年,月,日,时,分,秒”等值。
此时只要将DS12887中的时间值读入到用户开辟的时间地址中,用户就可以方便控制时间。
六、系统操作说明
利用DS12887实时时钟电路芯片来读取系统中的日期以及时间信息,并利用P0端口将相关信息传送至STC89C51主芯片之中,利用P2端口使之显示于LCD1602液晶显示屏上,四个按键分别置于P1口的1、2、3、4端口可以对时间进行控制修改。
相关说明:
点击确定按键可以进入LCD屏上方显示的主菜单,点击返回按键可以退出菜单,在时间修改菜单中点击修改“小时”按键可以修改时间中的小时数,点击修改“分钟”按键可以修改时间中的分钟数。
七、结束语
做了两周的课程设计,让我感触很深,有关与单片机方面的,但更多的是团队和合作方面的。
我们组共有两个人,在得到实验课题之后,就觉得压力好大。
因为我们平时接触的都是纯粹理论性的东西,做实验也是雾里看花,对硬件的认识也很缺乏。
之后,我们就去图书馆查阅大量的单片机和数字芯片的资料,并带还来仔细研究。
在硬件电路的设计中,由于要涉及软件设计的具体情况,我们又共同讨论研究,最终将原理图设计完成。
在焊电路图的过程中,由于原理图比较复杂,接线及走线也就显得很困难,在具体的调试中遇到的困难也比较多,但在指导老师的帮助下改正了几处问题,虽然最终没有调试成功,但在整个过程中,我收获了很多。
这次课程设计很漫长,特别是编写程序的时候,但我从中学到了很多东西,个人的分析能力对问题的处理能力有了不同程度的提高。
对电路的判断分析和程序的分析特别是对52单片机进一步学习,让我收获颇多。
很感谢学校和老师给我们安排了这次的课程设计,让我真正感受到了合作的重要性很多时候都是组员的讨论和老师的指导中的一句半句启发了我。
这次的课程设计让我知道:
理论知识固然重要,但如果不与实践联系起来,也就如同空白纸一样,毫无用处。
八、参考文献
1.单片机基础(第三版)
2.单片机的C语言应用程序设计(第4版)
3.单片机系统及应用实验教程
4.单片机原理与应用系统设计
5.程序设计基础(C语言)
6.EDA技术基础教程
附录:
原理图、程序
原理图
程序:
1.液晶显示的程序
#include//单片机头文件
#defineucharunsignedchar//定义无符号字符型
#defineuintunsignedint//定义无符号整型
sbitrs=P3^0;//rs的位地址为P3.0
sbitlcden=P3^1;//lcden的位地址为P3.1
sbitfengming=P3^5;//fengming的位地址为P3.5
//ucharcount,s1num;
//charmiao,shi,fen;
ucharcodetable[]="2007-7-30MON";//定义第一行显示的字符
ucharcodetable1[]="00:
00:
00";//定义第二行显示的字符
voiddelay(uintz)//延时子程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_com(ucharcom)//向1602模块写数据
{
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_date(uchardate)
{
rs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidinit()//1602模块的初始化
{
ucharnu