多功能数字钟c语言单片机PPT,基于STC89C52单片机的多功能数字钟的设计

本文详述了一款基于STC89C52单片机的多功能数字钟设计,涵盖了时间显示、日期显示、跑表、闹钟、温度和湿度显示等功能。采用DS12C887时钟芯片和DS18820、HS1101传感器来实现相应功能,并通过C语言编写程序下载到单片机进行调试。硬件设计包括了ATC89C52芯片、液晶显示电路以及温度和湿度检测电路等。
摘要由CSDN通过智能技术生成

2010年第35期。本刊重稿。科技信囊

基于STC89C52单片机的多功能数字钟的设计

张开碧王浩曾勇斌

(重庆邮电大学自动化学院中国重庆400065)

I摘要】本文主要介绍了数字钟的功能以及相应的硬件电路的设计,并且用C语言缩写了相应的程序下栽到单片机上进行调试,让其结合硬件电路实现对应的功能:时间显示、日期显示、跑表、闹铃、温度显示和湿度显示。本文着重地介绍了多功能数字钟的硬件制作。

【关键词】数字钟;STC89C52单片机;硬件设计

m嫡四ofMulfifhnctlonalⅨgitaDigitalClockBasedOIIsTC89C52

ZHANGKai-biWANGHaoZENGYong-bin

(CollegeofAutomation,ChongqingUniversityofPostsandTeleconmaunications.Chongqing,400065.CMna)【Abstract]This

article

paper

describesthefunction

ofthe

digitalclockand

the

design

ofthecorrespondinghardware

circuit.Atcombinehumidity

thethe

w哪time,

functions

thecorrespondingprogramispreparatedwiththeClanguagewhichisdownloadedtotheMCUonthedebugginghardwaretothecorrespondingcircuit.Thesefunctionsincludethetimedisplay,datedisplay,stopwatch,alarm,temperaturedisplayand

paper,themulti-function

of

display.In

this

clockhardwareproductionisintroducedemphatically.

[KeywordslDigitalClock;STC89C52;Hardwaredesign

digital

0前言

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表腻先的报时功能。数字钟是一种用数字电路技术实现时、分、秒计时的装鼍.与机械式时钟相比具有更高的准确性和直观性.且无机械装蔑.具有更长的使用寿命.已得到广泛的使用。数宁钟的设计方法有许多种.町用中小规模集成电路组成电子钟:也可以利用专用的电子钟芯片配以最示电路及其所需要的外围电路组成电子钟:还可以利用单片机来实现电子钟。

1功能

本设计中选择s1℃89C52单片机来进行设计,主要由于其体积小、成本低.功能丰富并且实用方便。配合时钟芯片来实现时钟、跑表、闹铃、日历能功能,用温湿度传感器分别检测工作环境的温度和湿度。通过按不同的键在1602液晶显示器上显示对应的数值。数字钟的基本功能如下:

计时及校时:数字钟的最基本功能既是显示和调整时间.本设计可以让数字钟24小时制或12小时制显示。可以通过设置进行转换

1.1

2.2.2时钟电路

DSl2C887时钟芯片的电路图如图2所示。它是通过对应的靖口与单片机相连接的。

等。

1.2跑表:本数字钟还具备跑表的功能,跑表功能包括跑表的启动、停止、保持显示、清除等。1.3闹钟:可以通过键盘设定闹钟时间.在设置的时问进行闹钟提示,每一次响5秒。每隔5秒响一次,如果不人为的进行于涉闹钟会一直响60分钟。

1.4日历:让数字钟可以显示日期(包括年、月、日),并且可以显示星期几。

1.5温度、湿度等的显示:通过传感器等相关硬件配合相应的电路将测试到的温度和湿度数据转换为数字在时钟液晶显示屏上显出来。

2系统硬件的设计

2.1硬件的选择

本设计选ATC89C52单片机作为主芯片以外.还要用的其他各种元件来实现相应的功能,因此还要对其他电子元件傲一个合理的选择和安排。在设计过程中结合实际情况对相关硬件傲j,如下选择:时钟电路中将用到DSl2C887时钟芯片,温度检测电路_I}j的是温度传感器DSl8820.湿度检测电路用到的是HSll01湿度传感器.闹钟以及按键提示均用到蜂鸣器。这样的硬件选择既可以实现散字钟的一系列功能,又是一个简洁的选择结果.而且成本低。较容易人手。2.2硬件的电路设计2.2.1ATC89C52芯片

s1℃89c52是一种低功耗、高性能CMOS8位傲控嗣器.具有8K在系统可编程F1船h存储器。根据实际搭建电路图画出芯片的电路图如图l所示.端u接的其他设备在后面分别介绍一。

DSl2C887实时时钟芯片功能丰富.可以用来直接代替IBMPC:

上的时钟日历芯片DSl2887。同时它的管脚也和MCl46818B、DSl2887相兼容。

2.2-3液晶显示电路

液晶1002与单片机的电路图如图3.它是通过对应的端口与单片机的连接的。其中:

①l。2端为电源:15,16为背光电源;为防止直接加5V电压烧坏

背光灯.在15脚串接一个lOn电阻用于限泷。

②液晶3端为液晶对比度调节端.通过一个10kQ电位器接地来调节液晶显示对比度。首次使用时.在液晶上电状态下.调节至液晶上面一行显示出黑色小格为止。

③液晶4端为向液晶控锚器写敷据,写命令选择螭。接单片机的

P13口。

④液晶5嫱为读,写选择端,因为我们不从液晶读取任何数据,只

向其写人命令和显示教据。因此此端始终选择为写状态。即低电平接

1-229-png_6_0_0_401_403_297_163_753_1099.5-414-0-1874-414.jpg

1-158-png_6_0_0_456_643_167_113_753_1099.5-232-0-2108-232.jpg

地。

12

基于51单片机多功能数字钟 片段代码: #include<reg51.h> #include "lcd1602.h" #include "ds1302.h" #include "button.c" sbit buzzer=P1^7; char time_h=0,time_m=0; void scankey(); void main() { uchar t=0,i=0,j=0; buzzer=0; LCD_Initial(); //Init_DS1302(); //仿真不需加 buzzer=0; //LCD_Write(0,0x0d);LCD_Write(0,0x04); while(1) { j=0; scankey(); if(!k_flag0 || flag_xx) //键没未按or设置闹钟 { if(flag_xx) //闹钟 { j=1; if(!t)LCD_Write(0,0x01); else t=1; t++; L1602_string(1,1,"Seting Alarm:"); if(!time_h)time_h=hour; if(!time_m)time_m=minute; Set_Alarm(2,1,time_h,time_m); //LCD_Write(0,0x0d); goto_XY(count_y,count_x); if(count_x==1) { if((shi>0&&(time_h/10!=2)) || (shi<0 &&(time_h/10!=0)))time_h+=shi*10; } else if(count_x==2) { if((ge>0&&(time_h!=9)) || (ge<0 &&(time_h!=0)))time_h+=ge; } else if(count_x==4) { if((shi>0&&(time_m/10!=5)) || (shi<0 &&(time_m/10!=0)))time_m+=shi*10; } else if(count_x==5) { if((ge>0&&(time_m!=9)) || (ge<0 &&(time_m!=0)))time_m+=ge; } //L1602_char(2,7,'0'+time_h/10); //L1602_char(2,11,0x30+count_x); //L1602_char(2,14,0x30+flag_xx); if(count_x>5)count_x=1; shi=ge=0; set_time[0]=time_h;set_time[1]=time_m; } else //正常显示 { j=2;t=0; (void)ReadTemperature(); diaplay_Temperature(2,9,integer_value,fraction_value); diaplay_calendar(1,1,2,1); if(hour==set_time[0]&&minute==set_time[1])buzzer=1; else buzzer=0; } } else //时间设置 { LCD_Write(0,0x0f); // goto_XY(count_y,count_x); t=0; if(count_x==1)L1602_char(count_y,count_x,0x30+hour/10); else if(count_x==2)L1602_char(count_y,count_x,0x30+hour); else if(count_x==4)L1602_char(count_y,count_x,0x30+minute/10); else if(count_x==5)L1602_char(count_y,count_x,0x30+minute); else if(count_x==6)L1602_char(count_y,count_x,0x30+mouth/10); else if(count_x==7)L1602_char(count_y,count_x,0x30+mouth); else if(count_x==9)L1602_char(count_y,count_x,0x30+day/10); else if(count_x==10)L1602_char(count_y,count_x,0x30+day); shi=ge=0; if(k_flag3) //时间设定完成、各值恢复原值。 { k_flag0=0;k_flag3=0; count_x=0;count_y=2; LCD_Write(0,0x0c); DS1302_reset(mouth,day,hour,minute);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值