论简易数字时钟设计

2013-08-21 07:46韩刘宇
武夷学院学报 2013年2期
关键词:闹铃蜂鸣器低电平

韩刘宇

(天津工业大学 电子与信息工程学院通信工程专业 300384)

1 设计要求

基本设计要求

(1)单片机控制日历时钟芯片实现年份、月份、日期、星期、时间信息的获取。

(2)在LCD上对年份、月份、日期、星期、时间信息进行显示。

(3)可以对年份、月份、日期、星期、时间进行修改。

(4)具有掉电后时间信息不丢失的功能。

发挥部分

(1)具有闹钟功能。可设置闹铃时间,当闹铃时间到时,进行闹铃。通过按键可解除闹铃。

(2)具有整点报时功能。

(3)程序固化到单片机中,并且可直接进行程序下载和更新。

2 总体设计

2.1 系统组成及工作原理

本电子钟由单片机、定时、显示、按键、定时提醒、ISP在线编程6部分组成。产品以AT89S52单片机、DS12C887时钟芯片为核心,显示部分采用LCD1602,使用4个按键和1蜂鸣器,加上ISP在线编程模块。DS12C887时钟芯片产生时钟信号和存放闹铃数据,其精度和可靠性高,在单片机掉电状态下能正确走时、保存闹铃数据长达10年,故能实现停电重起后定时设计不变的关键设计指标。AT89S52单片机实时获取DS12C887的时间和闹铃数据,驱动LCD和蜂鸣器。显示部分的LCD有高亮度,低成本等诸多优点。蜂鸣器作闹铃提示切合实际、直观。按键方面采用软件消抖,减少硬件电路的同时增加了可靠性。本产品完全达到设计要求,辅助的ISP在线编程让产品具有强大的扩展功能,使其不仅仅是一个电子钟,更是一个单片机试验平台。

2.2 DS12C887时钟芯片原理

DS12C887时钟芯片能够产生世纪、年、月、日、时、分、秒等信息,同时 DS12C887时钟芯片中自带有锂电池,外部掉电时,通过锂电池的作用其内部时间信息还能够保持相当长的时间;时间记录分为十二小时制和二十四小时制两种方式。在十二小时制模式中,AM和PM用来分别表示上午和下午;时间的表示方法也有两种,利用二进制数表示或利用BCD码表示;DS12C887时钟芯片带有 128字节的 RAM,其中有113字节通用 RAM用来给用户使用,11字节的RAM是用来存储时间信息的,4字节 RAM是用来存储 DS12C887的控制信息的,被我们称之为控制寄存器。

3 硬件设计

3.1 硬件组成

3.2 单片机核心模块

3.2.1 主要特性

单片机AT89S52是ATMEL公司生产的低电压、高性能COMS 8位单片机,它有128Byte RAM、8KByte可编程FLASH ROM,指令系统与MCS-51系列兼容。采用KEILC51编译软件,PROTUES仿真平台,能方便实现程序的仿真。ISP在线编程,能方便的更新程序。可对选用的单片机特点进行描述,可画出单片机最小系统并描述电路连接。

3.2.2 单片机引脚说明

AT89S52是采用40个引脚封装的双列直接 DIP结构,40个引脚中,外置石英振荡器的时钟线有两根,正电源和地线有两根,还有32个 I/O口,中断口线与P3口线是复用的。我们对引脚的功能加以说明:

·Pin20:是接地脚。

·Pin40:是正电源脚,接+5V电源,用来正常工作或对片内EPROM烧写程序时。

·Pin19:是时钟XTAL1脚,为片内振荡电路输入端。

·Pin18:是时钟XTAL2脚,为片内振荡电路输出端。时钟有两种方式,方式一为片内时钟振荡方式,但需在18和19两个引脚外接石英晶体和振荡电容。方式二为外部时钟方式,即将XTAL1接地,将外部时钟的信号从XTAL2脚输入。

·输入输出 (I/O)Pin32-Pin39引脚是 P0.0-P0.7的输入输出脚,Pin1-Pin8引脚是 P1.0-P1.7的输入输出脚,Pin21-Pin28引脚为 P2.0-P2.7输入输出脚,Pin10-Pin17引脚为P3.0-P3.7输入输出脚,上述的输入输出脚的功能是:

P3口(10脚~17脚):为8位准双向 I/O口,由于高阻状态不能在这种接口输出中产生,输入也不能锁存,故不是真正的双向 I/O口。 P3口能驱动 (吸收或输出电流)4个TTL负载。P除了作为一般的准双向通用I/O口使用外,p3口每个引脚还有第二功能。P3口的八条线都被我们定义有第二功能[6],如表4.1所列。

P2口(21脚~28脚):为8位准双向 I/O口。当我们访问外部存储器时,它可以被我们作为高8位地址总线 送出高8位地址。P2可以驱动(吸收或输出电流)4个TTL的负载。

P1口(1脚~8脚):为 8位准双向 I/O口。P1口能驱动4个TTL负载。

P0口(32脚~39脚):不同于其他的三个端口,它为双向8位三态I/O口,外接存储器与地址总线的低八位及数据的总线进行复用,8个TTL负载能以吸收电流的方式被驱动。

P3引脚第二功能:3.0 RXD(串行口的输入端)

3.1 TXD(串行口的输出端)

3.2 INT0(外部中断0请求输入端,低电平的时候有效)

3.3 INT1(外部中断0请求输入端,低电平的时候有效)

3.4 T0(定时器/计数器0的技数脉冲输入端)

3.5 T1(定时器/计数器0的技数脉冲输入端)

3.6 WR(片外数据存储器写选通信号输出端,低电平的时候有效)

3.7 RD(片外数据存储器写选通信号输出端,低电平的时候有效)

·Pin9:RESET/Vpd为复位信号复用脚,单片机通电时,时钟电路就开始工作,在RESET引脚上产生24个时钟周期以上的高电平,则系统即会初始复位。初始化后,程序计数器 PC会指向 0000H,P0-P3输出口都为高电平时,则堆栈指钟就会写入 07H,而其它专用的寄存器被清“0”。当RESET从高电平下降为低电平后,系统就会从 0000H开始执行程序。然而,初始复位并不使RAM(包括工作寄存器R0-R7)的状态发生变化,当单片机复位后它的状态为:

·P0~P3=FFH,各口可用于输出,也可用于输入;

·SP=07H,第一个入栈内容将写入08H单元;

·IP、IE和 PCON的有效位为 0,各中断源处于低优先级且均被关断,串行通讯的波特率不加倍;

·PSW=00H,当前工作寄存器为0组。

·Pin30:ALE/PROG是访问外部程序器时,ALE输出的用来锁存地址的低位字节。当访问内部程序存储器的时候,ALE端将会有个 以1/6时钟频率为周期的正脉冲信号,此信号是用于识别单片机工作与否的,我们也可以把它当作一个时钟向外输出。还有一个特点就是,当我们访问外部程序存储器,ALE会自动跳过一 个脉冲。而如果单片机是EPROM的话 ,在其编程的时候,PROG会用于输入编程的脉冲。

·Pin29:PESN是访问外部程序存储器时,输出负脉冲选通信号的引脚,PC其16位的地址数据会出现在P0和P2中,外部程序存储器会把其指令数据放到P0口的上面,而CPU负责读入执行。

·Pin31:EA/Vpp是程序存储器内外部选通线,8051和8751单片机中,其内部有 4kB的程序存储器,当EA是高电平而且程序地址不大于4kB时,读取的就是内部程序存储器的指令数据,而超过4kB地址则读取的就是外部指令的数据。但是如果EA是低电平,不管地址的大小,都是读取外部程序存储器的指令。显而易见,对于内部没有程序存储器 8031,EA端就必须要接地。

?

3.3 晶振电路

振荡器是数字钟的核心。振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。石英晶体振荡器的作用是产生时间标准信号。

3.4 显示电路

本电路采用1602LCD,由于数码管只能显示数字数码管显示内容单一,液晶则比较丰富,而这个实验中,要求功能较多,为了使电路显示的更清晰明了,本实验最终决定采用1602LCD 显示。且液晶显示已占居社会主流,优势明显。

模块引脚功能表:

3.5 时钟电路

3.6 独立按键电路

鉴于使用中断电路会增加硬件电路的复杂度,本电路采用独立按键的方法,只需在程序中加入扫描程序即可。其中P1.4接按键1,P1.5接按键2,P1.6接按键3,P1.7接按键4。其中按键1为选择键,通过按键1可以将光标移动到要调节的选项;按键2为加键,通过按键2可以调整时间和闹钟的各项数值加一;按键3为减键,通过按键3可以调整时间和闹钟的各项数值减一;按键4为闹钟,通过按键4可以调节闹钟。

3.7 蜂鸣器电路

3.8 ISP下载口电路

4程序设计

4.1 主程序设计

void main()//主函数

{

init();//调用初始化函数

while(1)

{

keyscan();//按键扫描

if(flag_ri==1)//当闹钟中断时进入这里

{

di();

delay(100);

di();

delay(500);

}

if(flag==0&&flag1==0)//正常工作时进入这里

{

keyscan();//按键扫描

year=read_ds(9);//读取12C887数据

month=read_ds(8);

day=read_ds(7);

//week=read_ds(6);

shi=read_ds(4);

fen=read_ds(2);

miao=read_ds(0);

if(fen/10==0&&fen%10==0&&miao/10==0&&miao%10==0)di();

week=GetWeekFromDay(year,month,day);

write_sfm(10,miao);//送液晶显示

write_sfm(7,fen);

write_sfm(4,shi);

write_week(week);

write_nyr(3,year);

write_nyr(6,month);

write_nyr(9,day);

}

}

}

4.2 程序流程图

5 调试及结果

本数字时钟采用ISP下载线进行下载和供电。首先将程序下载到AT89S52芯片中。打开开关将看到开机初始画面,左侧四个按键依次设为 K1、K2、K3、K4,按K1键,将会看到光标依次挪动到秒、分、时、日、月、年,当光标移动到某个选项,例如“分”选项:按下K2,该项数值则加一,按下K3,该项数值则减一;若调节年月日选项时,调节完毕后会自动计算出该日为星期几,并且显示在LCD屏幕上。当时钟处于正常运行状态时,按下K4键,界面将转到闹铃调节界面,此时按照时钟的调节方法,设定闹铃。每当有按键按下时,蜂鸣器将会伴随响声,当时中达到整点时,蜂鸣器也将会有提示音(整点报时功能),当时钟的时间到达设定的闹铃时间,蜂鸣器将会发出连续的鸣叫声,直至按下任意键来解除此闹铃。实物效果图:

整体电路图:

[1] 倪云峰.单片机原理与应用【M】.西安:西安电子科技大学出版社,2009.

[2] 梁洁婷.单片机原理与应用【M】.北京:高等教育出版社,2002.

[3] 林国清,李见为,王崇文.一种新型日历时钟芯片[J].国外电子元器件,2002(3):61-62.

猜你喜欢
闹铃蜂鸣器低电平
电动自行车产品车速提示音检测现状和整改技术研究(2)
日出
掌控板制作简易钢琴
开闹钟的老人
单片机驱动蜂鸣器的程序设计
开闹钟的老人
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
浅谈物理电路与数字电路
丰田凯美瑞240V车间隙警告蜂鸣器异常鸣响
15-MeV电子直线加速器的低电平系统