基于日历时钟芯片的作息时间控制器的设计

上传人:飞*** 文档编号:32696826 上传时间:2018-02-12 格式:DOC 页数:30 大小:552.50KB
返回 下载 相关 举报
基于日历时钟芯片的作息时间控制器的设计_第1页
第1页 / 共30页
基于日历时钟芯片的作息时间控制器的设计_第2页
第2页 / 共30页
基于日历时钟芯片的作息时间控制器的设计_第3页
第3页 / 共30页
基于日历时钟芯片的作息时间控制器的设计_第4页
第4页 / 共30页
基于日历时钟芯片的作息时间控制器的设计_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于日历时钟芯片的作息时间控制器的设计》由会员分享,可在线阅读,更多相关《基于日历时钟芯片的作息时间控制器的设计(30页珍藏版)》请在金锄头文库上搜索。

1、1第 1 章 系统方案介绍系统以 AT89S52单片机作为核心控制器件,外围主要有实时时钟芯片DS1307和 LCD128*64液晶显示器,通过 C语言编写程序来实现对校园作息时间进行控制。系统结构框图 1所示。1.1 单片机选型当今单片机厂商琳琅满目,产品性能各异。常用的单片机有很多种:Intel8051系列、Motorola 和 M68HC系列、Atmel 的 AT89系列、台湾Winbond(华邦)W78 系列、荷兰 Pilips的 PCF80C51系列、Microchip 公司的PIC系列、Zilog 的 Z86系列、Atmel 的 AT90S系列、韩国三星公司的 KS57C系列 4位

2、单片机、台湾义隆的 EM-78系列等。我们最终选用了 ATMEL公司的AT89C52单片机。AT89C52 是美国 ATMEL公司生产的低电压,高性能 CMOS8位单片机,片内含 8Kbytes的可反复擦写的只读程序存储器(PEROM)和 256bytes的随机存取数据存储器(RAM) ,器件采用 ATMEL公司的高密度、非易失性存储技术生产,与标准 MCS-51指令系统及 8052产品引脚兼容,片内置通用 8位中央处理器(CPU)和 FLASH存储单元,功能强大 AT89C52单片机适用于许多较为复杂控制应用场合。21.2. 时钟芯片选型DS1307是美国 DALLAS公司推出的一种高性能、

3、低功耗的实时时钟芯片,它是一款 总线接口的时钟日历芯片,采用两线与 CPU 进行通信,片内含有CI8个特殊功能寄存器和 56bit的 SRAM。DS1307 的备用电源,以便在没有主电源的情况下能够保存时间信息和一些重要的数据;两个电阻为 总线的上拉电CI阻。与其它型号的芯片比较更加适合本次设计。1.3 显示器选型系统中采用 LCD128*64作为显示器件输出信息。与传统的 LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD128*64 可以显示 4行 8个汉字,并行工作时具有

4、8位数据总线 D0-D7,和 RS、R/W、E 三个控制端口,串行工作时只有 CS,SID,CLK 三个通信口,本次设计就是采用串行通信,可以节省单片机 IO口的使用,工作电压为 5V,并且带有字符对比度调节和背光设置。1.4 作息时间表根据学校实际情况对上下课打铃在一天内的控制时间列表如下:表 1-1 作息时间表上午 下午时间 事件 时间 事件6:50 起床铃 1:20 第五节课预备铃8:20 第一节课预备铃 1:30 第五节上课铃8:30 第一节上课铃 2:15 第五节下课铃9:15 第一节下课铃 2:25 第六节上课铃9:25 第二节上课铃 3:10 第六节下课铃10:10 第二节下课铃

5、 3:30 第七节上课铃10:30 第三节上课铃 4:15 第七节上课铃11:15 第三节下课铃 4:25 第八节上课铃11:25 第四节上课铃 5:10 第八节下课铃12:10 第四节下课铃3第 2 章 系统的硬件介绍2.1 单片机模块2.1.1 单片机芯片图 2-1 芯片 AT89S52 外部管脚图如图 2-1所示 AT89S52引脚与功能1) 引脚信号介绍:P00P 07 P0口 8位双向口线;P 10P 17 P0口 8位双向口线;P20P 27 P0口 8位双向口线;P 30P 37 P0口 8位双向口线,ALE地址锁存控制信号在系统扩展时,ALE 用于控制把 P0口输出低 8位地址

6、送锁存器锁存起来,以实现低位地址和数据的隔离。此外由于 ALE是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲作用。/PSEN 外部程序储器读选取通信号在读外部 ROM时/PSEN 有效(低电平) ,以实现外部 ROM单元的读操作。/EA访问程序存储器控制信号:当/EA 信号为低电平时,对 ROM的读操作限定在外部程序存储器;而当/EA信号为高电平时,则对 ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。RST 复位信号:4当输入的复位信号延续 2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。XTAL1和 XTAL2外接晶体引线端:当使用

7、芯片内部时钟时,此二引线端用于外接石英晶体和微调电空;当使用外部时钟时,用于拉外部的时钟脉冲信号。GND:地线VCC:+5V 电源2)信号引脚的第二功能:由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如 MCS51系列把芯片引脚数目限定为 40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了需要与可能的矛盾。因此,给一些信号引脚赋以双重功能。2.1.2 单片机主控模块系统采用 AT89S52 单片机作为控制核心。AT89S52 单片机与 MCS_51 系列单片机产品兼容,采用了 Flash 存储器结构,可以在线下载程序,易于日后的升级。它主要负责各个模块的初始化工作;

8、设置定时器、寄存器的初值;读取并处理时间、温度等信息;处理按键响应;控制液晶实时显示等。硬件电路连接如图 2-2 所示。系统采用 12M 晶振; P2.0,P2.1,P2.2 口为单片机与液晶显示器连接的控制和通信的数据端口;C_RESET 和 R_RESET 组成系统上电复位电路; P2.6 和 P2.7 为单片机与时钟芯片 DS1307 通信的端口; P2.3 为闹铃的控制端口;P1.6 为单片机与温度传感器 DS18B20 的通信端口;P1.0,P1.1 为按键模块的接口。5图 2-2 单片机主控电路2.2实时时钟日历模块2.2.1 DS1307 实时时钟芯片介绍Y2为 32.768kH

9、z的晶振,为时钟芯片提供计时脉冲;Vbat 为 DS1307的备用电源,以便在没有主电源的情况下能够保存时间信息和一些重要的数据;两个电阻为 总线的上拉电阻。DS1307 是美国 DALLAS公司推出的一种高性能、CI低功耗的实时时钟芯片,它是一款 总线接口的时钟日历芯片,采用两线与CICPU进行通信,片内含有 8个特殊功能寄存器和 56bit的 SRAM。2.2.2 DS1307 的引脚功能和主要技术性能指标具有秒、分、时、日、星期、月、年的计数功能,并且具有 12小时制和24小时制的计数模式,可自动调整每月的天数,具有闰年调整的功能,具有自动掉电保护和上电复位的功能。DS1307的引脚图如

10、图 2-3所示,采用 8引脚双列直插 dip封装,芯片内部结构图如图 2-4所示。各个引脚功能如下:Vcc:主电源;Vbat:备份电源。当 VbatVcc+0.2V时,由 Vcc2向 DS1307供电,当 Vbat /定义库函数#define uint unsigned int /定义函数#define uchar unsigned charuchar st,mt,ht, stg, sts,mtg, mts,htg,hts ,j,i; /定义变量uchar pm11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /定义出一个显示

11、数组sbit k1=P33; /定义位函数sbit k2=P34;sbit P1_7=P17;sbit P1_5=P15;/*延时子程序*/delay (uint v)while(v!=0) v-;/*中断处理程序*/pint0()interrupt 1 using 2 /采用中断 0方式TH0=0x3c; /设置计数初值TL0=0xb0;if(j!=0) /查询计数次数是否满 20次j-; /不满减 1else j=20; /重新设置计数次数 st+; /秒加 1if(st=60) /查询秒是否等于 60st=0; /等于 60秒,秒清 0mt+; /分加 1if(mt=60) /查询分是否

12、等于 60mt=0; /等于 60分,分清 0ht+; /时加 1if(ht=24) /查询时是否等于 24ht=0; /等于 24,时清 0/*显示程序*/xscl()int a,b; /定义变量P2=0xfe; /设置数码管显示位,即秒个位19P0=pmstg; /秒个位显示值delay(300);/延时a=P27;P2=a|b;P0=pmsts;/秒十位显示值delay(300);/延时a=P27;P2=a|b;P0=pm10; /无用位显示delay(300);/延时a=P27;P2=a|b;P0=pmmtg;/分个位显示值delay(300);/延时a=P27;P2=a|b;P0=p

13、mmts; /分十位显示值delay(300); /延时a=P27;P2=a|b;P0=pm10; /无用位显示delay(300); /延时a=P27;P2=a|b;P0=pmhtg; /时个位显示值delay(300); /延时a=P27;P2=a|b;P0=pmhts; /时十位显示值delay(300); /延时a=P27;P2=a|b;20/*显示处理程序*/xs()sts=st/10; stg=st%10; /把秒缓冲值处理,分别给秒个位和十位mts=mt/10; mtg=mt%10; /把分缓冲值处理,分别给分个位和十位hts=ht/10; htg=ht%10; /把时缓冲值处理

14、,分别给时个位和十位xscl(); /显示子程序/*按键处理程序,即时间调整程序*/key()if(k1=0) /判断 k1是否为 0,即判断 S1是否按下xs(); xs(); /调显示程序,即延时if(k1=0) /去抖动xs(); while(1) xs();if(k1=1)break;/判断键释放TR0=0; /释放则关中断while(1) /调时间xs(); /调显示程序if(k2=0) /判断 k2是否为 0,即判断 S2是否按下xs();xs();/调显示程序,即延时if(k2=0) /去抖动st+; /秒加 1if(st=60) /查询秒是否等于 60st=0; /等于 60,

15、秒清 0if(k3=0) /判断 k3是否为 0,即判断 S3是否按下xs(); xs();/调显示程序,即延时if(k2=0) /去抖动mt+; /分加 1if(mt=60)/查询分是否等于 60mt=0; /等于 60,分清 0if(k4=0) /判断 k2是否为 0,即判断 S4是否按下xs();xs();/调显示程序,即延时if(k4=0) /去抖动 ht+; /时加 1if(ht=24)/查询时是否等于 24ht=0; /等于 24,时清 0if(k1=0) /判断 k2是否为 0,即判断 S6是否按下xs();xs();/调显示程序,即延时21if(k1=0) /去抖动xs();while(1) xs();if(k1=1)break;/判断键释放break ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号