电子钟设计方案xin.docx
- 文档编号:906231
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:76.72KB
电子钟设计方案xin.docx
《电子钟设计方案xin.docx》由会员分享,可在线阅读,更多相关《电子钟设计方案xin.docx(13页珍藏版)》请在冰点文库上搜索。
电子钟设计方案xin
数字电子钟设计报告
题目:
设计数字电子钟
专业:
物理与电子工程学院
姓名:
肖剑浩,
周嘉辉,
董瑞烽,
学号:
0711030073,
0711010010,
0711030045
一、背景描述:
随着科学技术的不断发展,人们对时间计量的精度要求越来越高。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;
二是指系统的标准定时时钟,即定时时间。
数字电子钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,运运超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
二、功能概述:
2.1基本功能特点:
1、能够正确显示时、分、秒、日、月、星期、闹钟开关状态,并且可以设置。
2、具有5个闹钟,其中闹钟1可以设为整点报时。
3、带背光开关。
4、倒计时功能,精确到秒。
5、四个按键完成全部设定及功能。
6、具有备忘闹铃,能设定闹铃时间间隔。
7、具有掉电不失。
2.2发挥功能:
1、可调节背光亮度。
2、实现24小时制和12小时制的可交替转换。
3、测试,显示周围温度。
2.3构思其他功能:
1、实现秒表功能,精确到毫秒。
2、带双时钟功能,秒同步。
3、实现与国际标准时间同步,尽量减小误差。
4、选择闹铃音乐。
5、尽量降低能耗,降低生产成本。
三、系统总体设计
3.1、系统工作过程
系统上电自检后,实时实现小时、分钟、秒以及日历的显示和闹钟开关等指示信息的显示,通过按键可实现校对时间、设置闹钟时间等功能。
当闹钟时间到时,单片机通过晶体管、蜂鸣器来实现提醒。
3.2、系统框图
3.3硬件设计:
电路原图:
四、方案论证与选择
4.1.1总体方案论证与选择
方案一:
纯硬件电路系统,各功能采用分离的硬件电路模块实现。
用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。
但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。
方案二:
采用AT89C52单片机作为系统的控制核心。
时钟功能采用单片集成的时钟芯片DS1302来实现,可以使用液晶显示时间、日历及闹铃,有着智能化的人机界面。
由于使用了单片机,整个系统可编程,系统的灵活性大大增加了。
DS1302的精度可达到一天只差一秒,(当然在常温下,其精度取决于你的晶振的精度。
)而DS18B20的测温精度是0.0625度。
所以整个系统的精度还是很高的。
另外,本方案可以方便的实现其他功能的扩展。
经过以上的比较论证,选用方案二来完成项目设计的要求。
4.2.1时钟模块
方案一:
由单片机实现时钟功能
单片机内部具有定时器,可方便实现定时功能。
通过计算可知,使定时器每25ms产生一次中断,当产生40次中断后秒单元将加一,以此类推,从而实现时、分、秒的走时,并加以显示。
但由于系统晶振误差、温漂、中断响应时间的不确定性及定时器重新装载时间常数所带来的误差,决定它不能用来作为时钟的时间基准。
方案二:
专用时钟芯片
目前市场上已有很多实时时钟芯片。
如DS12887、DS1302、DS1307、PCF8563、X1227等,芯片内都集成了时钟/日历功能,给时钟系统设计带来很多方便。
因此计时功能以选专用时钟芯片为宜,时钟模块采用方案二来实现。
4.2.2按键模块
方案一:
采用独立式按键电路
每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
但是当按键较多时占用单片机的I/O数目较多。
方案二:
采用阵列式键盘
此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。
由于本系统所使用的按键不多(4个按键足以满足设置要求)因此采用1*4键盘,采用独立式按键电路。
4.2.3显示模块
方案一:
使用多个数码管LED显示。
LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。
但是由于它工作电流较大、不能显示汉字,显示的信息量有限,若在此题目中应用就会受到很大的限制。
方案二:
采用液晶显示。
液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。
而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。
系统采用方案二,设计选用1062液晶板。
4.3.1系统运行流程图
4.3.2程序源代码(部分源代码):
#include
#include
//#include"LCD1602.h"
//#include"DS1302.h"
#defineuintunsignedint
#defineucharunsignedchar
sbitDS1302_CLK=P1^7;//实时时钟时钟线引脚
sbitDS1302_IO=P1^6;//实时时钟数据线引脚
sbitDS1302_RST=P1^5;//实时时钟复位线引脚
sbitwireless_1=P3^0;
sbitwireless_2=P3^1;
sbitwireless_3=P3^2;
sbitwireless_4=P3^3;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
charhide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;//秒,分,时到日,月,年位闪的计数
sbitSet=P2^0;//模式切换键
sbitUp=P2^1;//加法按钮
sbitDown=P2^2;//减法按钮
sbitout=P2^3;//立刻跳出调整模式按钮
sbitDQ=P1^0;//温度传送数据IO口
chardone,count,temp,flag,up_flag,down_flag;
uchartemp_value;//温度值
ucharTempBuffer[5],week_value[2];
//PortDefinitions**********************************************************
sbitLcdRs=P2^5;
sbitLcdRw=P2^6;
sbitLcdEn=P2^7;
sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
//向LCD写入命令或数据************************************************************
#defineLCD_COMMAND0//Command
#defineLCD_DATA1//Data
#defineLCD_CLEAR_SCREEN0x01//清屏
#defineLCD_HOMING0x02//光标返回原点
voidLCD_Write(bitstyle,unsignedcharinput)
{
LcdEn=0;
LcdRs=style;
LcdRw=0;_nop_();
DBPort=input;_nop_();
LcdEn=1;_nop_();
LcdEn=0;_nop_();
LCD_Wait();
}
//设置显示模式************************************************************
#defineLCD_SHOW0x04//显示开
#defineLCD_HIDE0x00//显示关
#defineLCD_CURSOR0x02//显示光标
#defineLCD_NO_CURSOR0x00//无光标
#defineLCD_FLASH0x01//光标闪动
#defineLCD_NO_FLASH0x00//光标不闪动
voidLCD_SetDisplay(unsignedcharDisplayMode)
{
LCD_Write(LCD_COMMAND,0x08|DisplayMode);
}
//设置输入模式************************************************************
#defineLCD_AC_UP0x02
#defineLCD_AC_DOWN0x00//default
#defineLCD_MOVE0x01//画面可平移
#defineLCD_NO_MOVE0x00//default
voidLCD_SetInput(unsignedcharInputMode)
{
LCD_Write(LCD_COMMAND,0x04|InputMode);
}
//初始化LCD************************************************************
voidLCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC递增,画面不动
}
//液晶字符输入的位置************************
voidGotoXY(unsignedcharx,unsignedchary)
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
//将字符输出到液晶显示
voidPrint(unsignedchar*str)
{
while(*str!
='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
}
}
/***********DS1302时钟部分子程序******************/
typedefstruct__SYSTEMTIME__
{
unsignedcharSecond;
unsignedcharMinute;
unsignedcharHour;
unsignedcharWeek;
unsignedcharDay;
unsignedcharMonth;
unsignedcharYear;
unsignedcharDateString[11];
unsignedcharTimeString[9];
}SYSTEMTIME;//定义的时间类型
SYSTEMTIMECurrentTime;
#defineAM(X)X
#definePM(X)(X+12)
#defineDS1302_SECOND0x80
#defineDS1302_MINUTE0x82
#defineDS1302_HOUR0x84
#defineDS1302_WEEK0x8A
#defineDS1302_DAY0x86
#defineDS1302_MONTH0x88
#defineDS1302_YEAR0x8C
voidDS1302InputByte(unsignedchard)//实时时钟写入一字节(内部函数)
{
unsignedchari;
ACC=d;
for(i=8;i>0;i--)
{
DS1302_IO=ACC0;
DS1302_CLK=1;
DS1302_CLK=0;
ACC=ACC>>1;
}
}
五:
进度估计(大概):
第一阶段:
构思,编写程序
第二阶段:
硬件设计
第三阶段:
系统测试
第四阶段:
作品跟进,研究,改进。
2008-8-1——2008-8-20
第五阶段:
实现焊接,作品基本完成。
2008-8-21——2008-9-15
第六阶段:
完成最后的总结。
六、经费预算:
暂时难以估计。
要待作品完成后才总结出来。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子钟 设计方案 xin