图书馆还书日期及闭馆时间提示牌.docx

上传人:b****6 文档编号:12668631 上传时间:2023-06-07 格式:DOCX 页数:14 大小:253.20KB
下载 相关 举报
图书馆还书日期及闭馆时间提示牌.docx_第1页
第1页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第2页
第2页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第3页
第3页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第4页
第4页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第5页
第5页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第6页
第6页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第7页
第7页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第8页
第8页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第9页
第9页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第10页
第10页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第11页
第11页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第12页
第12页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第13页
第13页 / 共14页
图书馆还书日期及闭馆时间提示牌.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

图书馆还书日期及闭馆时间提示牌.docx

《图书馆还书日期及闭馆时间提示牌.docx》由会员分享,可在线阅读,更多相关《图书馆还书日期及闭馆时间提示牌.docx(14页珍藏版)》请在冰点文库上搜索。

图书馆还书日期及闭馆时间提示牌.docx

图书馆还书日期及闭馆时间提示牌

图书馆还书提示牌及闭馆声音提示

摘要:

针对于图书馆的还书日期提示牌为每天手动更换带来的不便这一问题,设计出了这一图书馆还书日期电子提示牌。

利用单片机AT89S51、日历时钟芯片DS12C887、显示驱动MAX7219和LED设计制作,功能强大,可显示还书日期,当前时间日期和两次闭馆声音提示,另外显示日期时间和声音提示都可手动更改,方便实用。

关键词:

在现在这个紧张忙碌的社会,时间是人们十分注意的事情。

在图书馆各还书处,都有一个当天所借书应还日期的最后期限的提示牌,但此牌须每天由工作人员手动更换,较麻烦。

我组的设计正是迎合了这一需求,采用单片机AT89S52和时钟日历芯片DS12C887设计、制作的“图书馆还书日期及闭馆时间提示牌”,不但能自动提示每天还书日期,而且显示当前时间(即电子钟)及闭馆自动提示。

另外此设计可以用按键更改时间及日期,调电不丢数据上电后正常运行的特点。

传统的日历电子钟元器件多、维修麻烦、不便于技术更新。

而此设计可很方便的由软件编程进行功能的调整或增加,具有技术更新周期短、成本低、开放灵活等优点。

1.总体方案

利用AT89S52单片机作为控制单元,从时钟芯片DS12C887中读出时间、日历信息,单片机只须SPI三线接口就可以将相关的指令写入MAX7219的内部控制和数据寄存器中,将两片MAX7219级联,这样驱动16个共阴极数码管。

这些数码管显示应还书日期和当前月份、日期、小时、分钟、秒,当按下开关键时,数码管显示两次闭馆声音提示的起止时间,如11:

00至11:

10,5:

20至5:

30。

另外用中断控制按键(“设置”键和“加”键),可修改显示的任何信息,如闭馆声音提示时间、还书日期、当前时间。

2.系统硬件设计:

硬件分为五大模块:

单片机控制模块、日历时钟模块、显示驱动模块、电源模块、显示模块,定时提示模块。

原理框图如图1:

下面分模块介绍。

单片机模块

2.1.1单片机AT89S52简介

AT89S52是一种低功耗.高性能CMOS8位单片机,片内含8KBISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。

该器件采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS一51指令系统及80C51引脚结构。

片内集成了通用的8位CPU和ISPF1ash存储单元。

可为众多嵌入式控制应用系统提供高灵活、高性价比的解决方案。

AT89S52具有如下特点:

40个引脚;8KBFlash片内程序存储器.256Bytes的随机存储数据存储器(RAM).32个外部双向输入/输出(i/o)口;1个6向量2级中断结构:

3个16位可编程定时计数器;2个全双工串行通信口;看门狗(WDT)电路和片内时钟振荡器。

此外.AT89S52设计和配置了振荡频率可为OHz并可通

图1系统原理框图

过软件设置的省电模式。

在空闲模式下,CPU暂停工作.而RAM、定时计数器、串行口、外中断系统可继续工作。

掉电模式冻结振荡器而保存RAM的数据.禁止电路的其他功能直至外中断激活或硬件复位。

同时该电路还具有PDIP、TQF1P和PLCC等封装形式,以适应不同产品的设计需求。

如图2是本系统的单片机控制电路。

2.1.2电路分析

单片机控制模块由单片机AT89S52、复位电路、时钟电路、按键电路组成。

复位采用上电复位方式,由C1和R11、R12组成,电容和电阻的合理选择是上电时可靠复位的关键。

时钟电路采用12M晶振,C4、C5用于稳定晶振。

按键电路由按键S1、S2及上拉电阻R12、R11组成。

S1为“设置”键,S2为“加”键。

按下键时给单片机一个低电平,使单片机中断,以响应按键。

图2单片机控制电路

日历时钟模块

2.2.1日历时钟芯片DS12C887简介

DS12C887实时时钟芯片功能丰富.可以用来直接代替IBMPC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。

由于Ds12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持1O年之久;对于一天内的时间记录,有l2小时制和24小时制两种模式在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种是用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM.其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息.称为控制寄存器,113字节通用RAM供用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。

如图3是本系统的时钟芯片的连接电路图。

2.2.2电路分析

DS12C887与单片机AT89S52的连接如图3,DS12C887的AD0至AD7引脚分别与单片机的AD0至AD7相连,这是因为DS12C887采用地址总线与数据总线复用方式;MOT引脚接地,即DS12C887选择了INTEL时序。

DS12C887的复位引脚接VCC,不让它复位。

片选

接地,这样可随时访问DS12C887的总线周期。

数据写信号引脚

接单片机的RW引脚,地址所存信号引脚AS接单片机的ALE引脚,数据读信号引脚DS接单片机的RD脚。

图3时钟芯片连接电路图

显示驱动模块

2.3.1MAX7219芯片介绍

MAX7219是串行输出共阴极显示驱动芯片,每片可驱动8个LED,具有级联功能可控制更多的LED。

MAX7219为24引脚芯片,除与LED显示相连的线外,与微控制器只需3根连线相接:

芯片端管脚分别为CLK.DIN.LOAD,其中CLK为时钟输入端,DIN为数据输入端,LOAD为锁存信号。

MAX7219的工作时序为:

时钟的上升沿MAX7219把DIN引脚数据移入内部移位寄存器,在时钟下降沿MAX7219把数据移向DOUT端,而LOAD的上升沿则锁存最后移入的16位串行数据。

对MAX7219的控制操作很方便,其片内具有8个位寄存器和6个控制寄存器.位寄存器对应LED的具体内容,控制寄存器决定LED的工作方式。

控制寄存器分别为:

不工作方式寄存器、译码方式寄存器、亮度控制寄存器、扫描个数寄存器、关闭寄存器.显示测试寄存器.寄存器的操作格式为2字节的串行数据,第一个字节为寄存器地址,第二个字节为控制命令或待显示数据。

寄存器的地址分配及功能如下所示:

不工作寄存器(0x00):

用于MAX7219级联控制。

位寄存器(0x01-0x08):

8位LED待显示内容。

译码方式寄存器(0x09):

决定译码方式,分B码和不译码两种。

亮度控制寄存器(0x0A):

LED段电流控制.

扫描个数寄存器(0x0B):

决定显示多少个U。

关闭寄存器(0x0C):

决定正常工作方式或关闭LED显示。

显示测试寄存器(0x0D):

决定正常工作方式或显示测试.

注意:

寄存器的地址高4位可选为任意电平,这里全部取低电平。

如图4为显示驱动芯片MAX7219的电路连接图。

2.3.2电路分析

两个MAX7219级联,串行数据输入端DIN接单片机脚,串行数据输出端

接单片机的数据锁存脉冲输入端LOAD引脚接单片机AT89S52的脚。

芯片1的显示器控制位DIG0至DIG7接数码管L1至L8的阴极,芯片2的显示器控制位DIG0至DIG7接数码管L9至L16的阴极。

芯片的7段段码和小数点输出端SEGA至SEGG,DP接至数码管的a至g7段和小数点dp。

芯片的引脚ISET通过一个10K的电阻接到VCC.

如图4显示驱动芯片的电路连接图

电源模块

在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,我组所作的这一电子日历时钟也不例外,需要直流5V电源。

稳压电源的主要任务是将50Hz的电网电压转换成稳定的直流电压和电流,从而满足负载的需要,直流稳压电源一般由整流、滤波、稳压等环节组成。

其方框图如图5所示。

变压器:

将交流电源(220V)变换成符合整流电路所需要的交流电压。

整流电路:

利用具有单方向导电性能的整流器件,将交流电压整流成单方向脉动的直流电压。

滤波电路:

滤去单向脉动直流电压中的交流成分,保留直流分量,尽可能供给负载平滑的直流电压。

稳压电路:

是一种自动调节电路,在交流电源电压波动或负载变化时,通过此电路使直流输出电压稳定。

图5直流稳压电源方框图

显示模块

如图6是十六位数码管连接电路图。

显示模块是用四个四位一组的共阴极数码管组成的,它是由显示驱动芯片驱动的。

芯片1的显示器控制位DIG0至DIG7接数码管L1至L8的阴极,芯片2的显示器控制位DIG0至DIG7接数码管L9至L16的阴极。

芯片的7段段码和小数点输出端SEGA至SEGG,DP接至数码管的a至g7段和小数点dp。

这些数码管显示应还书日期和当前月份、日期、小时、分钟、秒,当按下锁键时,数码管显示两次闭馆声音提示的起止时间。

图6数码管的显示电路图

3软件设计及调试

结合硬件电路及系统功能编制程序,可大致将程序分为三大模块:

主程序、子程序、和中断程序。

主程序(main):

主要完成调用子程序。

主程序流程图如图7所示:

子程序:

①系统上电反应子程序(Powerup):

让脚所接的放光二极管闪烁及蜂鸣器鸣叫;

②系统上电初始化子程序(InitMain):

开中断;

③MAX7219初始化子程序(InitDis):

设置扫描界限、译码模式、电源工作模式和测试数码管是否好用,让所有数码管亮;

④读时钟子程序(Read_calendar):

设置时钟芯片的寄存器B为06H,当寄存器A的D7位UIP为1时,更新即将开始,这是不准对时钟、日历和闹钟信息寄存器进行读写操作;当它为0时,表示在至少44us内芯片不会更新,此时时钟、日历信息通过读写相应的字节获得和设置;

⑤亮度与定时反应子程序(Display_calendar_set):

当时间为上午8点到下午4点时亮度寄存器等于0AH,数码管变亮,其他时间为07H;判断此时是否为定时时间,若到了,蜂鸣器响;

⑥显示调整时间子程序(Display_calendar):

让十六个数码管显示还书日期、当前日期、时间;另外与中断按键有关,当按下相应的“设置”键或“加”键时这里显示相应得数码管闪烁或数字增加,数字增加到一定数值时会自动变为有效最小值,如秒超过59时变为0;

⑦显示调整定时时间子程序(Display_dingshi):

当脚的锁键按下时,数码管显示定时时间界面,另外也与中断按键有关,当按下相应的“设置”键或“加”键时相应得数码管闪烁或数字增加,数字增加到一定数值时会自动变为有效最小值,如秒超过59时变为0;

中断子程序:

中断0程序:

其流程图如图8所示。

主要完成当按下与脚相接的按键时,将IntBuffer0加1,进行数码管的位选择,然后在转为主程序时,会使相应得数码管闪烁,另外当IntBuffer0加到大于16时,会清0;这样会有16个数码管都可选中,另外还有一个状态IntBuffer0为0时16个数码管都不亮;

中断1程序:

其流程图如图9所示。

主要完成当按下与脚相接的按键时,将IntBuffer1置1,然后转为主程序,在主程序中会使中断0选中的数码管的数值加1,当大于有效值值会自动转为0,例如当小时大于12时显示为0;

图7主程序流程图

 

图8中断0流程图

 

图8中断1流程图

为了测试实验结果,我们通过编译器将程序编译下载到单片机中。

接通电源后发光二极管亮,蜂鸣器鸣叫,然后是所有数码管都亮,说明系统正常工作。

每当时间为早八点到晚四点时,数码管会变亮,其他时刻变暗。

说明亮度可调运行正常。

接着我们看到第一排八个数码管分别显示当前时间和还书时间,第二排八个数码管的显示为当前时分秒。

关闭开关,第一排数码管的显示为中午闭馆提示定时的起止时间,第二排数码管的显示为晚上闭馆提示定时的起止时间。

进一步验证是否可用中断控制按键修改显示的任何信息,如闭馆声音提示时间、还书日期、当前时间。

我们按一下“设置”键,第一数码管闪烁,再按一下“设置”键,第二个数码管亮,按的次数超过十六时,所有数码管都不亮,然后再按时重新选中了第一个数码管,说明“设置”键工作正常。

按一下“加”键,发现闪烁的数码管的数字加一,继续按“加”键,数字继续增加,当超过有效值后自动转为最小有效值,例如当月份是十二再加一则显示一月。

说明“加”键工作正常。

定时时间也可更改,通过验证当定时时间到了,蜂鸣器会鸣叫,鸣叫时间与设定相符。

定时模块运行正常。

通过全面验证,我们的实验目标完成。

此设计主要完成了显示电子日历时钟,但它与普通电子时钟有多处不同点。

最大的不同点为它可定两个闹钟,定时时间可更改,并且每次蜂鸣器鸣叫时间长短可更改,定好时间以后它都会按时提示,真正完成了图书馆闭馆自动提示。

第二,断电不丢失数据,上电后继续正常工作,当晚上下班后,工作人员可以关掉电源,第二天接通电源后可以正确显示。

第三,由于是采用单片机作为控制单元,可由软件编程进行功能的调整或增加,技术更新快。

此设计实用价值高,成本较低。

此设计还可进一步改进,将蜂鸣器换成固化音乐芯片,另外再增加按键作为“减”键,使操作更加人性化。

参考文献:

[1].王幸之、钟爱琴、王蕾、王闪.AT89系列单片机原理与接口技术.北京:

北京航空航天大学出版社.2004年5月

[2].谢维成、杨加国.单片机原理与应用及C51程序设计.北京.清华大学出版社.2006年8月

[3].

心得体会:

忙碌了两周的时间,最终把我们的作品做出来,心里很欣慰。

这次工程实习将是我们大学里一次有意义的经历。

因为对我们组的每位成员来说,这是我们第一个电子作品,从中我们体验了很多,不仅仅是整个过程中的喜怒哀乐,更是和和同组人一起思考,一起商议,一起努力而获得的收获。

以前学过相关知识,但一直没有多少实践,这次给我们一次很好的锻炼机会,使我们无论是在硬件还是软件上都有了很大的进步。

从选题上我们从图书馆各借书处的还书提示牌得到灵感,经过与老师的商讨,我们最终把选题定下来。

一个好的想法要有一个好的方案作支持。

如果你在一开始就选择错了方向,那么你接下来做的所有努力都是零,都是无用的。

所以我们没有急动手,在开始的时候应该进行充分的调研和论证。

要奋力向前奔跑,但只有当你的道路是正确的时候,你才能到达理想的彼岸。

经过两天的上网查资料和去船舶调研,我们选定了所用芯片的型号和解决问题的方案,另外我们权衡了用C语言还是汇编语言的利弊,最终决定用C语言作为我们的编程语言。

细节决定成败。

有的时候一个很细小的问题就成了一只很麻烦得拦路虎,挡在我们的面前,制作没有进展,心里就会急躁,但我们知道只要坚持,一定会有好办法的。

比如说电路连好以后,我们向芯片里下程序,可是不管怎样就是不好用,数码管没有任何显示,经过耐心查找,我们发现是晶振出了问题,有一个电容的管脚没有接地。

在编写程序时我们遇到的问题最多,一件好东西,从想法变为实际,这个过程比单纯的脑力设计更为“痛苦”,在写中断程序时,往往是充满期待的编译、下载,然后是很失望的看到按键就是不起作用,于是我们再重新思考、编程、调试,最后是有了柳暗花明的进展。

我们都很珍惜这次经历,都感觉自己过得很充实。

很感谢这次的自主创新实践课,通过这个课程,我们对不仅电子制作的整个流程有了大体的了解,而且真正让我们体会到什么是理论与实践结合。

它激发了我们对电子制作的热情,锻炼了我们的动手能力,更让我们认识到自己学识的浅薄和不足,激励我们不断地学习和实践,无论今后我们从事怎样的工作,这次工程训练课带给我们的收获和体会都会让我受益终生。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2