基于51单片机电子闹钟的设计
基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。
本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。
51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。
本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。
本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。
接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。
将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。
软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。
本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。
通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。
2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。
它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。
51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。
51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。
其存储器分为程序存储器(ROM)和数据存储器(RAM)。
程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。
51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。
51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。
基于51单片机的电子时钟设计

基于51单片机的电子时钟设计
摘要:本文论述了基于51单片机的电子时钟设计,包括硬件设计与软件编程。
其中,硬件设计包括基本指示灯、DS1302时钟芯片等的选择与连接,时钟电路、晶振电路的设计等。
软件编程包括时钟显示的实现,时钟校准、闹钟等功能的实现等。
本设计具有精度高、操作简便、易于实现等特点,可广泛应用于各种场合。
关键词:51单片机;电子时钟;硬件设计;软件编程
前言
随着人们生活水平的提高,电子时钟已经成为人们生活中必不可少的物品,目前市场上各种类型的电子时钟层出不穷。
本文以51单片机为基础,设计了一款高精度、易于操作的电子时钟,采用DS1302时钟芯片作为时钟驱动芯片,实现了时钟的准确显示、校准、闹钟等功能。
硬件设计
硬件设计主要包括控制器、时钟驱动、显示装置以及电源。
本设计采用了AT89C51单片机作为控制器,一块DS1302时钟芯片作为时钟驱动,LED数字管作为显示装置。
同时,本设计采用了USB供电方式,其电源电压为5V。
软件编程
软件编程主要包括时钟显示、时钟校准、闹钟功能的实现等。
时钟显示采用了动态显示方式,实现了时间的精确定位。
同时,本设计还具有时钟校准功能,在程序接通时,可自动对时钟进行校准,保证时钟的精确度。
此外,本设计还具有设置闹钟的功能,用户可在指定时间响起闹钟。
结论本文以51单片机为基础,设计了一款高精度、易于操作的电子时钟。
通过对硬件设计、软件编程的设计与实现,使得该产品能够准确显示时间,保证了时钟的稳定性,满足了时间的要求,目前已
得到广泛应用。
基于51单片机的电子时钟设计

基于51单片机的电子时钟设计51单片机是一种广泛应用于嵌入式系统的微控制器,由于其性能稳定、易于编程和成本相对较低的特点,被广泛应用于各种电子设备中。
在现代社会,电子时钟已经成为人们日常生活中不可或缺的工具。
随着科技的不断发展,电子时钟在功能和外观上都得到了极大的提升,如今的电子时钟不仅可以显示时间,还能设置闹钟、定时、显示温湿度等功能。
本文通过对51单片机的应用和实践,设计了一款功能丰富的电子时钟,旨在探讨如何利用51单片机实现电子时钟的设计与制作过程。
首先,我们将介绍51单片机的基本原理和特点。
51单片机是一种8位微控制器,由Intel公司于1980年推出,至今已有数十年的历史。
它采用哈佛结构,具有较高的工作速度和稳定性,适合用于各种嵌入式系统。
51单片机的指令系统简单,易于学习和掌握,因此被广泛用于各种嵌入式应用中。
除此之外,51单片机的外围设备丰富,可以通过外部扩展模块实现各种功能,如串口通信、定时器、数模转换等,这也为我们设计电子时钟提供了便利。
其次,我们将详细介绍基于51单片机的电子时钟的设计和实现过程。
电子时钟主要由时钟模块、显示模块、闹钟模块等部分组成,通过合理的接线和程序设计实现各种功能。
首先,我们设计时钟模块,通过外部晶振产生时钟信号,并利用51单片机的定时器模块实现时间的精确计算和显示。
同时,我们还设计了显示模块,采用数码管或液晶屏显示时间和日期信息,通过数字或字符的组合,使信息直观清晰。
此外,闹钟模块也是电子时钟的重要功能之一,我们可以设置闹钟时间,并在设定时间触发闹钟功能,提醒用户。
通过合理的程序设计,我们可以实现电子时钟的各种功能,并提升用户体验。
最后,我们将讨论基于51单片机的电子时钟在实际生活中的应用前景和发展趋势。
随着智能家居的快速发展,电子时钟作为家庭必备的电子设备,其功能和外观需求也在不断提升。
未来,基于51单片机的电子时钟将会更加智能化,可以与手机、电视等智能设备联动,实现更多个性化的功能。
基于51单片机的电子时钟

闹钟提醒电路
本次设计是通过蜂鸣器来完成闹钟提醒的功能的,蜂鸣器与芯片的P2.0相连。
按键控制电路
键盘是最常用的输入设备,是实现人机对话的纽带,具体来说键盘接口应完成以下操作功能: (1)键盘扫描,以判定是否有键被按下; (2)键识别,以确定闭合键的位置; (3)排除多建、复键及去抖。 以上这些功能通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完成。
键盘显示方案
AT89C52的P0口和P1口外接八个LED数码管(LED7~LED0)构成显示 器 , 用 P0 口 LED 的 段 码 输 出 口 , P1 口 做 八 个 LED 数 码 管 的 位 选 输 出 口 , P3.0~P3.2外接三个按键K1、K2、K3构成键盘电路。
硬件电路
显示电路
void time() interrupt 1
//定时器中断
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==20)
{ tt=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
write_n_sfm(n_shi,n_fen,n_miao);
else
write_sfm(shi,fen,miao);
if(n_shi==shi&&n_fen==fen)
基于51单片机的简易电子钟设计

基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。
二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。
1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。
以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。
同时,根据用户按键的操作,可以调整时间的设定。
2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。
可以显示当前时间和设置的闹钟时间。
初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。
3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。
通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。
4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。
同时可以添加外部中断用于响应用户按键操作。
三、主要功能和实现步骤1.系统初始化。
2.设置定时器,每1秒产生一次中断。
3.初始化LCD显示屏,显示初始时间00:00:00。
4.查询键盘状态,判断是否有按键按下。
5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。
-数字键:根据键入的数字进行时间的调整和闹钟设定。
6.根据定时器的中断,更新时间的显示。
7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。
8.循环执行步骤4-7,实现连续的时间显示和按键操作。
四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。
但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。
基于MCS51单片机的闹钟提醒器设计报告

题目:基于MCS51单片机的闹钟提醒器设计报告目录一、设计方案选定: (3)1.1 前言 (3)1.2 实验目的 (3)1.3总体设计要求 (3)1.3.1、基本要求 (3)1.3.2、自由发挥部分 (4)1.4 方案选定 (4)二、硬件电路设计 (4)2.1 AT89C52 (4)2.2 复位电路 (5)2.3 晶振电路 (5)2.4 时钟显示 (6)2.4.1 LCD1602 (6)2.4.2 DS1302: (6)2.5 程序框图 (7)2.6 基本电路及工作原理 (8)三、软件设计和仿真 (8)3.1 软件设计 (9)3.2 Proteus仿真 (25)四、课程设计体会 (27)参考文献 (28)基于MCS51单片机的闹钟提醒器学生:陈浩敏指导教师:张水锋电气信息工程学院电子信息工程专业一、设计方案选定:1.1 前言:单片计算机即单片微型计算机,(Single-Chip Microcomputer)。
是集CPU ,RAM ,ROM,定时,计数和多种接口于一体的微控制器。
他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。
而51单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
基于单片机的定时和控制装置在许多行业有着广泛的应用。
而数字定时闹钟是其中最基本,也是最有代表性的一个实例。
数字定时闹钟的设计方法有许多种,例如,可以用中小规模集成电路组成数字定时闹钟,也可以利用专用的时钟芯片配以显示电路及其所需要的外围电路组成数字定时闹钟,还可以利用单片机来实现数字定时闹钟。
这些方法都各有其特点,其中,利用单片机来实现数字定时闹钟具有编程灵活、精度高等特点,便于数字定时闹钟功能的扩充,同时还可以用该数字定时闹钟发出各种控制信号。
1.2 实验目的:1、熟悉集成电路的引脚安排。
2、掌握各芯片的逻辑功能及使用方法。
3、充分认识单片机设计。
基于51单片机的多功能电子钟设计
基于51单片机的多功能电子钟设计主程序:#include#include#includeCharmiao,shi,fen,day=24,month=12,year1=20,year2=14,cmiao,c shi,cfen,cday,cmonth,cy ear1,cyear2;char jhmiao,jmiao,jfen;uint s1num,s4num,s6num;uchar count,count1,count2;uint a1,b1,c1,d1,e1,f1,g1;uint su,tt,mm,m,n,flag=0,flag2=0,flag3=0,flag4=0;uchar buff[4];char code dis[]={" mode "};char code dis1[]={" time "};char code dis2[]={" date "};char code dis3[]={" stopwatch "};char code dis6[]={"1234567"};charcodedis4[]={*************"};unsigned char pDat[7],pDat1[7];sbit s1=P1^7; //选择位sbit s2=P1^0; //数值加sbit s3=P1^4; //数值减sbit s4=P1^2; // 闹钟设置sbit s5=P1^5; // 凤鸣器sbit s6=P1^6; // 模式选择sbit s7=P1^3; //闹钟停止鸣叫sbit s8=P1^1; //启动sbit s9=P3^6; //温度报警void main(){uint i;s5=1;s8=1;m=0;n=0;init();EX0=1;//init_com(); //包含了对定时器0的设定while(s8) //初始模式设置{moshi();lcd_pos(0x00);for(i=0;i<15;i++){write_date(dis[i]);}lcd_pos(0x40);/* for(i=0;i<15;i++){write_date(dis1[i]);}*/}jhmiao=0;jmiao=0;jfen=0;miao=0;shi=0;fen=0;while(1){lcd_pos(0x02); write_date(0X2e); lcd_pos(0x04); write_date(0Xdf); lcd_pos(0x05); write_date(0X43); if(flag3==1){lcd_pos(0x06);for(i=0;i<10;i++) {write_date(dis1[i]); }write_sfm(10,miao); if(miao%2==0) {lcd_pos(0x46); write_date(0X20); lcd_pos(0x49); write_date(0X20); }else{lcd_pos(0x46); write_date(0X3a); lcd_pos(0x49); write_date(0X3a);}write_sfm(7,fen); write_sfm(4,shi);if(tt>310){s9=0;}if(tt<310)s9=1;}if(flag3==2){lcd_pos(0x40);for(i=0;i<15;i++) {write_date(dis2[i]);}lcd_pos(0x0a);write_date(0X2f);lcd_pos(0x0d);write_date(0X2f); write_sfm2(14,day); write_sfm2(11,month); write_sfm2(6,year1); write_sfm2(8,year2); if(tt>310) {s9=0;} else s9=1;}if(flag3==3){lcd_pos(0x0a);write_date(0X2f);lcd_pos(0x0d);write_date(0X2f);count2=(dis4[month-1]+2+day)%7;lcd_pos(0x4e);write_date(dis6[count2]);if(dis6[count2]=='6'||dis6[count2]=='7') { lcd_pos(0x4d);write_date(0X57);}else{lcd_pos(0x4d);write_date(0X20);}if(month==12&&day==24) {lcd_pos(0x4c);write_date(0X56);}else{lcd_pos(0x4c);write_date(0X20);}write_sfm(10,miao);if(miao%2==0){lcd_pos(0x46);write_date(0X20);lcd_pos(0x49);}else{lcd_pos(0x46);write_date(0X3a);lcd_pos(0x49);write_date(0X3a);}write_sfm(7,fen);write_sfm(4,shi);write_sfm2(14,day);write_sfm2(11,month); write_sfm2(6,year1);write_sfm2(8,year2); naozhong();if(tt>310) {s9=0;} else s9=1; }if(flag3==4){lcd_pos(0x06);for(i=0;i<10;i++){write_date(dis3[i]);}lcd_pos(0x46);write_date(0X3a);lcd_pos(0x49);write_date(0X3a);write_sfm(10,jhmiao); write_sfm(7,jmiao);if(s7==0){delay(5);if(s7==0){flag4++;while(!s7);if(flag4==1) while(1){TR0=0;if(s7==0){delay(5);if(s7==0)while(!s7); break;}}flag4=0;TR0=1;}}}dis_temp(tt);// dis_temp1(mm); keyscan();}}void int_0() interrupt 0{EA=0;IRcvStr(0xa0,n,&pDat1[0],8);//mm=pDat1[0];//mm<<=8; //两个字节组合为1个字 //mm=mm|pDat1[1]; mm=pDat1[0]*100+pDat1[1]*10+pDat1[2];pDat1[0]=0;pDat1[1]=0;pDat1[2]=0;n=n+8;EA=1;}void moshi(){if(s6==0){delay(5);if(s6==0){s6num++;while(!s6);if(s6num==1){flag3 = 1;lcd_pos(0x41);write_date(0X31);}if(s6num==2){flag3 = 2;lcd_pos(0x41);write_date(0X32);}if(s6num==3){flag3 = 3;lcd_pos(0x41);write_date(0X33);}if(s6num==4){flag3=4;lcd_pos(0x41);write_date(0X34);}if(s6num==5){s6num=0;lcd_pos(0x41);write_date(0X35);}}}}void naozhong(){if(miao==cmiao&&fen==cfen&&cshi==shi&&cday==day &&cmonth==month) {flag2++;if(flag2>1){flag2 = 0;s5 =0;lcd_pos(0x40); write_date(0X20); }}if(s7==0){delay(5);if(s7==0)s5=1;}if(s4 == 0){delay(5);if(s4 == 0){s4num ++; while(!s4);if(s4num==1) {TR0=0;a1 = miao;b1 = fen;c1 = shi;d1 = day;e1 = month;f1 = year2;g1 = year1;flag = 1;lcd_pos(0x40);write_date(0Xfc); keyscan();}if(s4num == 2){lcd_pos(0x40);write_date(0X21);cmiao = miao;cfen = fen;cshi = shi;cday = day;cmonth = month;cyear1 = year1;cyear2 = year2; miao = a1; fen = b1;shi = c1;day = d1;month = e1;year2 = f1;year1 = g1;TR0=1;flag=0;s1num=0;s4num=0;}}}}void keyscan(){if(s1==0){delay(5);if(s1==0){ s1num++;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+10); write_com(0x0f);lcd_pos(0x4f);write_date(0X73);}}if(s1num==2){write_com(0x80+0x40+7); lcd_pos(0x4f);write_date(0X6d);}if(s1num==3){write_com(0x80+0x40+4); lcd_pos(0x4f);write_date(0X68);}if(s1num==4){write_com(0x80+14); lcd_pos(0x4f);write_date(0X64); } if(s1num==5){write_com(0x80+11); lcd_pos(0x4f);write_date(0X4d); } if(s1num==6){write_com(0x80+9); lcd_pos(0x4f);write_date(0X79); } if(s1num==7){write_com(0x80+7); lcd_pos(0x4f);write_date(0X59); } if(flag==0){if(s1num==8){s1num=0;write_com(0x0c); lcd_pos(0x4f);write_date(0X38); TR0=1;}}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);//指针回原位}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);//指针回原位} if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);//指针回原位} if(s1num==4){day++;if(day==31)day=0;write_sfm1(14,day);write_com(0x80+14);//指针回原位}if(s1num==5){month++;if(month==13)month=0;write_sfm1(11,month);write_com(0x80+11);//指针回原位}if(s1num==6){year2++;if(year2==100)year2=0;write_sfm1(9,year1);write_com(0x80+9);//指针回原位}if(s1num==7){year1++;if(year1==100)year1=0;write_sfm1(7,year1);write_com(0x80+7);//指针回原位}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10); }if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7); }if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4); } if(s1num==4){day--;if(day==-1)day=30;write_sfm1(14,shi);write_com(0x80+14);}if(s1num==5){month--;if(month==-1)month=12;write_sfm1(11,shi);write_com(0x80+11);}if(s1num==6){year2--;if(year2==-1)year2=99;write_sfm1(9,shi);write_com(0x80+9);}if(s1num==7){year1--;if(year1==-1)year1=99;write_sfm(7,shi);write_com(0x80+7);}}}}}void timer0() interrupt 1。
51单片机的电子时钟设计
51单片机的电子时钟设计一、引言随着科技的发展和人们对时间的准确度的要求日益提高,电子时钟成为了人们生活中不可缺少的一部分。
本文将介绍一种基于51单片机的电子时钟设计。
二、硬件设计1.主控部分本设计使用了51单片机作为主控芯片,51单片机具有丰富的接口资源和强大的处理能力,非常适合用于电子时钟的设计。
2.显示部分采用了数码管显示屏作为显示部分。
为了提高显示的清晰度,我们选用了共阳数码管。
使用4位数码管即可显示时、分和秒。
3.时钟部分时钟部分由振荡器和RTC电路构成。
振荡器提供时钟脉冲信号,RTC 电路实现对时钟的准确计时。
4.按键部分按键部分采用矩阵按键,以实现对时间的设置和调整。
三、软件设计1.系统初始化在系统初始化阶段,需要对硬件进行初始化设置。
包括对I/O口的配置,定时器的初始化等。
2.时间设置用户可以通过按键设置当前的时间。
通过矩阵按键扫描,检测到用户按下了设置键后,进入时间设置模式。
通过按下加减键,可以增加或减少时、分、秒。
通过按下确认键,将设置的时间保存下来。
3.时间显示在正常运行模式下,系统将会不断检测当前的时间,并将其显示在数码管上。
通过对时钟模块的调用,可以获取当前的时、分、秒并将其显示出来。
4.闹钟功能在时间设置模式下,用户还可以设置提醒闹钟的功能。
在设定时间到来时,系统会发出蜂鸣器的声音,提醒用户。
四、测试与验证完成软硬件设计后,进行测试与验证是必不可少的一步。
通过对硬件的连线接触检查和软件的功能测试,可以确保整个设计的正确性和可靠性。
五、总结通过本次设计,我对51单片机的使用和原理有了更清晰的认识,同时也对电子时钟的设计和制作有了更深入的了解。
电子时钟作为一种常见的电子产品,在我们的日常生活中发挥了重要的作用。
这次设计过程中,我遇到了许多问题,但通过查阅资料并与同学一起探讨,最终解决了问题。
相信通过不断的学习和实践,我可以在未来的设计中取得更好的成果。
基于51单片机的电子时钟的设计与实现综述
基于51单片机的电子时钟的设计与实现综述基于51单片机的电子时钟是一种常见的嵌入式系统设计项目。
它通过使用51单片机作为核心处理器,结合外部电路和显示设备,实现了时间的计时和显示功能。
本文将对基于51单片机的电子时钟的设计和实现进行综述,包括硬件设计和软件设计两个部分。
一、硬件设计1.时钟电路时钟电路是电子时钟的核心部分,它提供稳定的时钟信号供给单片机进行计时。
常用的时钟电路有晶振电路和RTC电路两种。
晶振电路通过外接晶体振荡器来提供时钟信号,具有较高的精度和稳定性;RTC电路则是通过实时时钟芯片来提供时钟信号,具有较高的时钟精度和长期稳定性。
2.显示电路显示电路用于将时钟系统计算得到的时间信息转换为人们可以直接观察到的显示结果。
常用的显示器有数码管、液晶显示屏、LED显示屏等。
显示电路还需要与单片机进行通讯,将计时的结果传输到显示器上显示出来。
3.按键电路按键电路用于实现对电子时钟进行设置和调节的功能。
通过设置按键可以实现修改时间、调节闹钟等功能。
按键电路需要与单片机进行接口连接,通过读取按键的输入信号来实现对时钟的操作。
4.供电电路供电电路为电子时钟提供电源,通常使用直流电源。
供电电路需要满足单片机和其他电路的电源需求,同时还需要考虑电源的稳定性和保护措施等。
二、软件设计1.系统初始化系统初始化主要包括对单片机进行外设初始化、时钟初始化和状态变量初始化等。
通过初始化将各个外设配置为适合电子时钟功能运行的状态,并设置系统初始时间、闹钟时间等。
2.计时功能计时功能是电子时钟的核心功能,通过使用定时器和中断技术来实现。
通过设置一个固定时间间隔的定时器中断,单片机在每次定时器中断时对计时寄存器进行增加,实现时间的累加。
同时可以将计时结果转化为小时、分钟、秒等形式。
3.显示功能显示功能通过将计时结果传输到显示器上,实现时间信息的显示。
通过设置显示器的控制信号,将时间信息依次发送到各个显示单元上,实现数字或字符的显示功能。
基于51单片机的多功能电子钟的设计
B-1 多功能电子钟设计报告组员:彭希灵、冯旭鑫、张正鹏完成时间:2016年5月9日目录1.摘要 (4)2.设计任务 (4)2.1基本要求 (4)2.2发挥部分 (4)3.方案论证与比较 (5)3.1显示部分 (5)3.2时钟部分 (5)3.3闹铃部分 (6)3.4温度采集部分 (6)4.总体方案 (6)4.1工作原理 (6)4.2总体设计 (6)5.系统硬件设计 (7)5.1 STC89C51单片机最小系统 (7)5.2时钟模块 (8)5.3 LCD液晶显示模块 (9)5.4闹钟响铃模块 (10)5.5温度测量模块 (10)6.系统软件设计 (11)6.1 main模块 (11)6.2 ds1302模块 (11)6.3 lcd12864模块 (12)6.4 key模块 (12)6.5 ringlock模块 (13)6.6 menu模块和DS18B20模块 (13)7.测试与结果分析 (13)8.总结 (14)参考文献 (14)附录一 (15)附录二 (16)1.摘要本设计采用LCD12864液晶屏幕显示系统,以STC89C52单片机为核心,由铃声响铃模块、DS1302时钟控制模块、LCD12864显示模块、键盘控制模块、菜单模块和DS18B20温度模块等功能模块组成。
基于题目的基本要求,本系统对时间显示、闹钟的设定和控制以及时间日期的设定进行了重点设计。
此外,还扩展了掉电存储、红外遥控、温度采集等功能。
本系统大部分功能由软件来实现。
在该设计中不仅成功的实现了题中的基本要求,多数发挥部分也得到了实现,而且还具有一定的创新功能。
2.设计任务2.1基本要求(1)准确计时,以数字形式显示年月、日、时、分、秒。
(2)小时以24小时计时形式,分秒计时为60进位,日期平年和闰年将自行更换。
(3)采用矩阵按键和4个独立按键对电子表进行控制,可进行闹钟设定、控制及时间日期的设定。
(4)闹钟功能:可任意设定闹钟时间,一旦走时到该时间,能以蜂鸣器发声、LED发光的形式告警提示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理与接口技术课程设计题目:多功能电子闹钟院系:电气与电子工程系专业:电气工程及其自动化班级:电气工程1503姓名:学号:指导教师:二零一七年十二月多功能电子闹钟摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
而51单片机是各单片机中最为典型和最有代表性的一种。
本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。
在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED 采用的是动态扫描显示,使用74LS245芯片进行驱动。
通过LED能够较为准确地显示时、分、秒。
四个简单的按键实现对时间的调整。
软件方面采用C语言编程。
整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。
选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。
介绍并使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。
关键词:单片机定时器中断闹钟LED目录第1章方案的选择和论证 (1)1.1单片机型号的选择 (1)1.2按键的选择 (1)1.3显示器的选择 (1)1.4计时部分的选择 (1)1.5发音部分的设计 (2)1.6显示器驱动电路 (2)1.7电源的选择 (2)第2章数字电子钟的设计原理和方法 (3)2.1设计原理 (3)2.2硬件电路的设计 (3)2.2.1 AT89C51单片机简介 (3)2.2.2 键盘电路的设计 (3)2.2.3 段码驱动电路 (4)2.2.4 蜂鸣器驱动电路 (4)2.3软件部分的设计 (5)2.3.1 主程序部分的设计 (5)2.3.2 中断定时器的设置 (5)2.3.3 闹钟子函数 (6)2.3.4 计时函数 (7)2.3.5 键盘扫描函数 (8)2.3.6 时间和闹钟的设置 (8)第3章实验结果 (10)总结 (11)致谢 (12)参考文献 (13)附录 (14)第1章方案的选择和论证1.1 单片机型号的选择通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程序存储器和1000次擦写循环,数据保留时间为10年,是最好的选择。
1.2 按键的选择方案一:4×4矩阵式键盘。
如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。
方案二:独立式按键。
如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,因此,此方案适用于按键较少的情况。
如果选择此方案,由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通过加或减完成,稍为麻烦一些,但其程序简单。
由于并不需要经常修改时间和设置闹铃时间,而且方案二的程序简单,按键少、成本低,因此,选择方案二。
1.3 显示器的选择方案一:液晶显示器。
如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。
但液晶显示器的驱动电路复杂,使用起来有一定的难度。
方案二:用数码管作为显示器。
数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。
其缺点是功耗较大。
由于数码管使用起来较为方便,在夜间看时间也很方便,因此我选择了方案二。
1.4 计时部分的选择如果使用时钟芯片,系统就不怕掉电且时间精确。
但这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片。
1.5 发音部分的设计通过三极管放大后驱动蜂鸣器工作,再通过软件这时产生等时时间方波驱动蜂鸣器发出间断嘀声,这样就可以省去硬件振荡电路,降低成本。
1.6 显示器驱动电路由于通过数码管公共及的电流较大且避免过多地使用分立元件,采用了一片74LS245来驱动段码,用P3口作位码驱动。
1.7 电源的选择如果是用电池供电,就比较方便携带,但是本系统,采用了数码管作为显示器,功耗较大,需要经常更换电池。
况且,本系统的体积较大,即使使用电池供电也不能随身携带,因此,用电池供电不大合适,所以用5V外部稳压电源来供电。
第2章数字电子钟的设计原理和方法2.1 设计原理系统原理图图2-1 系统原理图2.2 硬件电路的设计2.2.1 AT89C51单片机简介AT89C51是一款单片封装的微控制器,适合于许多要求高集成度、低成本的场合。
可以满足多方面的性能要求。
AT89C51采用了高性能的处理器结构,指令执行时间只需2到4个时钟周期。
6倍于标准51单片机器件。
AT89C51集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积并降低系统的成本。
AT89C51单片机内部主要有以下部件:8031CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、并行I/O接口、定时器和串行I/O接口。
图2-2 AT89C51单片机2.2.2 键盘电路的设计键盘采用4个独立按键配以4个上拉电阻实现对时钟和闹钟的设定及修改。
图2-3 独立按键图2-4 键盘输入电路2.2.3 段码驱动电路由于通过数码管公共及的电流较大且避免过多地使用分立元件,采用了一片74LS245来驱动段码,用P3口作位码驱动。
图2-5 段码驱动器74LS2452.2.4 蜂鸣器驱动电路发音部分是通过三极管放大驱动蜂鸣器工作,再通过软件这时产生等时时间方波驱动蜂鸣器发出间断嘀声,这样就可以省去硬件振荡电路,降低成本。
图2-6 蜂鸣器驱动电路2.3 软件部分的设计2.3.1 主程序部分的设计程序部分主要采用了程序结构的模块化设计,避免了一些函数的不必要的重复书写,使程序变得单间易懂。
程序在执行时,主程序要须通过调用子函数就可完成相应的功能 。
主程序流程图如下图2-7。
图2-7 主程序流程图2.3.2 中断定时器的设置数字电子钟设计中主要使用定时器T0中断ET0,利用ET0中断进行计时时间的自增,从而实现计时功能。
AT89C51有两个通用定时/计数器。
两者均可配置为定时器或事件计数器。
另外增加了定时器T0/T1,溢出时T0/T1脚自动翻转的功能选项。
用作“定时器”功能时,每经过一个机器周期,寄存器值加1。
用作“计数器”功能时,寄存器在对应的外部输入管脚T0/T1上每发生一次1到0的跳变时加1。
使用该功能时,外部输入每个机器周期被采样一次。
图2-8 定时器工作原理[1]设计中采用了中断方式1作为定时中断,其定时计数初值的设置可由以下公式计算得到,中断服务流程图如下图2-9。
cyT t X -=162T:机器周期[1]X:计数初值t:定时时间cy图2-9 中断服务流程图2.3.3 闹钟子函数闹钟时间的判别主要是通过设定时间与实时时间对逐位对比确定是否进行闹铃。
其工作流程图如下图2-10。
图2-10 闹铃判断流程图2.3.4 计时函数计时函数部分,主要是通过单片机定时中断来计时,每产生一次中断标志位flag加1,当flag加满20次为1秒,然后把flag清0把秒存储单元加1。
然后再依次判断分、时。
其流程图如下图2-11。
图2-11 计时流程图2.3.5 键盘扫描函数这些函数主要是判断是否有按键按下,并根据相应按键按下的情况调用相关函数执行,其相关流程图如下图2-12。
图2-12 键盘扫描流程图2.3.6 时间和闹钟的设置此部分主要是通过判断cnt在不同值时通过调用加1、减1子函数对时间和闹钟的时、分、秒进行设置。
在闹钟设置时,判断按键S4按下情况后,进行闹钟的开启与关闭,相关流程图如下图2-13。
图2-13 时间/闹钟设置流程图第3章实验结果此电子闹钟设计是利用Proteus仿真软件进行仿真,基本上实现了课程设计要求实现的功能。
硬件部分设置了的三个按键S1、S2、S3、S4。
当按键S1第一次按下时,停止计时进入闹钟1的秒设置,当按键S1第二、第三次按下时,分别进入闹钟1的分设置和时设置,当按S1第四、第五、第六次按下时分别进入闹钟2的秒、分、时设置,当按S1第七、第八、第九次按下时分别进入闹钟3的秒、分、时设置,当按S1第十、第十一、第十二次按下时分别进入时间的秒、分、时设置,在S1按下的各阶段,可用按键S2、S3进行时间和闹铃时间的时、分、秒进行加减设置;当按键S1第十三次按下时恢复到时间显示功能。
当显示的时间和定时设置的时间一致时,蜂鸣器发出等时间断蜂鸣声,闹铃时间设置为60秒。
在各个闹钟设置阶段,如果有S4按下,则相应闹钟功能关闭或开启;如在闹铃时有S4按下则提前停止闹铃。
图2-14 运行仿真图通过自己的不懈努力,我终于完成了毕业设计任务书上的任务要求。
功能上基本达标:时钟的显示,调时功能、校时功能、闹铃功能、闹钟设置功能。
其精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷;校时功能保证了时钟准确和可靠性,闹钟响铃还有扩展成音乐闹钟的余地。
硬件设施合乎要求,软件设计可以配合硬件实现要求的功能。
但是由于时间比较短,前期设计出现部分不足:如位选闪烁功能不能实现、闹钟的开启与关闭、间断蜂鸣声等。
这些只是软件设计时相应功能部分还不完善造成。
不过经仔细思考和程序的完善,最终将软件设计改进,并完全可以很好实现所有要求的功能。
可见技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的数字时钟。
数字时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。
无可否认机械时代已经过去,电子时代已经到来。
做为新时代的我们,更应该提高自身能力,适应新时代的发展。
知识来自实践,多去生活中探询所需要的。
对于上述所提到的研究课题,我们应尽量考虑到人的因素,增强时钟的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生活氛围。
所以,在设计的时候,应该从多方面、多角度去考虑问题,而且应该进一步提高时钟的质量。
另外,在本次设计的过程中,我发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编程的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。