多功能万年历.docx
《多功能万年历.docx》由会员分享,可在线阅读,更多相关《多功能万年历.docx(12页珍藏版)》请在冰豆网上搜索。
![多功能万年历.docx](https://file1.bdocx.com/fileroot1/2023-1/3/47fec8ce-e982-4f17-bf2a-1a163e0e36f7/47fec8ce-e982-4f17-bf2a-1a163e0e36f71.gif)
多功能万年历
多功能万年历
各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢
篇一:
多功能万年历毕业设计(终稿)
目录
引言......................................................................1
1系统功能与方案论证......................................................2
系统功能...........................................................2
系统基本方案选择和论证............................................2
单片机芯片的选择方案和论证...................................2
显示模块选择方案和论证.......................................3
时钟芯片的选择方案和论证.....................................3
温度传感器的选择方案与论证...................................3
电路设计最终方案决定..............................................4
2系统的硬件设计与实现....................................................4
电路设计框图......................................................4
系统硬件概述......................................................4
各系统电路及工作原理..............................................5
AT89S52单片机最小系统设计...................................5
时钟电路模块的设计...........................................6
温度采集电路的设计...........................................8
LCD1602液晶显示模块设计.....................................8
电源电路....................................................10
闹钟电路设计................................................10
键盘输入电路................................................11
3软件设计...............................................................11
主程序框图...........................................................12
DS1302时间处理...................................................12
环境温度采集.....................................................15
键盘扫描.........................................................15
音乐播放.........................................................15
公历转农历.......................................................15
结束语...................................................................17
参考文献.................................................................18
附录.....................................................................19
附录A程序...........................................................19
附录B原理图.........................................................41
致谢.....................................................................41
多功能万年历的设计
摘要:
本设计采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,使人机交互简便易行,此外还结合音乐闹铃电路、温度采集电路和供电电路。
本方案设计出的万年历可以显示日期、时间、温度、农历,并且设置了音乐闹铃功能。
该万年历可以应用于一般的生活和工作中,也可以通过改装,提高性能,增添新功能,从而给人们的生活和工作带来方便。
关键词:
万年历;AT89S52;LCD1602;时钟日历芯片DS1302;音乐闹钟
TheMulti-functionalCalendarDesign
naAbstract:
Thisdesignhasadoptedbytheextensiveuseofsinglechipmicrocomputerasthecore.HardwareandsoftwarecombinationmakethehardwarepartsgreatlysimplifiedandimprovethestabilityoftheuseofLCDdisplaycircuit,keyboardcircuitmakestheinformationexchangesimple.Inaddition,thedesigniscombinedwithmusicalarmcircuit,temperatureacquisitioncircuitandpowersupplycircuit.Itcanshowacalendardate,time,temperature,thelunarandsetupmusicalarmfunction.Ononehangthecalendarcanbeappliedtogenerallifeandwork,ontheotherhang,itcanimproveperformancebymodificationtoaddnewfunctions,sothatitcanbringmoreconveniencetopeople’slifeandwork.Keywords:
calendar;AT89S52;LCD1602;clockcalendarchipDS1302;musicalarmclock.
引言
电子万年历是实现对年、月、日、时、分、秒数字显示的计时装置,广泛用于个人、家庭、车站、码头、办公室、银行大厅等场所,成为人们日常生活中的必需品。
数字集
成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。
钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子万年历精度高,功能易于扩展,可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯等电路。
因此,研究电子万年历及扩大其应用有着非常现实的意义。
1系统功能与方案论证
系统功能
·LCD显示年、月、日、时、分、秒、星期、温度、农历等信息
·手动调整年、月、日、时、分、星期、温度上限、闹铃时间
·温度报警
·闹铃播放音乐
·日历时间掉电保护
·公历与农历自动关联
·闹铃可选择关闭、每天循环或只响应一次三种模式
·可选用USB、直流12V或5V电源或交流9V电源对电路进行供电
系统基本方案选择和论证
由于现在市面上的电子万年历的种类比较多,因此到底选择什么样的方案在设计中是至关重要的。
正确地选择方案就可以使产品更加人性化,并且可以减小开发的难度,缩短开发的周期,降低产品的成本等等,因此就会被人们普遍接受,并且能够更快地将产品推向市场实现其自身的价值。
单片机芯片的选择方案和论证
方案一:
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,在烧写程序时需要专门的下载器。
方案二:
采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51
系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能时,烧写程序方面,再加上本系统程序较大,需要较大的存储空间,因此选择采用AT89S52作为主控制系统。
显示模块选择方案和论证
方案一:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
但所需数码管太多,布线和焊接困难极易出错,因此不采用LED数码管作为显示。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,显示多样,清晰可见,但是价格贵,需要的接口线多,本设计所需显示的内容较多。
所以在此设计中采用LCD1602液晶显示屏。
时钟芯片的选择方案和论证
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,31×8位的RAM做为数据暂存区,工作电压~范围内,时耗电小于300nA。
温度传感器的选择方案与论证
方案一:
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89S52作为主控制系统;DS1302实现时钟;数字式温度传感器;LCD1602字符液晶显示屏作为显示。
2系统的硬件设计与实现
电路设计框图
图1系统框图
系统硬件概述
本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片显示公历的年、月、日、星期、时、分、秒和农历的月、日,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示器显示出来。
键盘输入由四个按键来实现,用这四个按键可以对日期、时间、星期、温度报警上限进行调整,并可以对闹铃的开关和闹铃的
篇二:
(多功能电子万年历开题报告)
西北民族大学
毕业论文(设计)开题报告
论文(设计)名称多功能电子万年历论文(设计)起止时间—月日姓名丁永亮学号学院电气工程学院专业班级09自动化
(2)班指导教师王涛
说明:
1.本报告必须由承担毕业论文(设计)课程任务的学生在正式开始做论文(设计)前独立撰写完成,交指导教师审阅、学院审查。
2.每篇毕业论文(设计)课题撰写本报告一份,作为指导教师、学院审查学生能否承担该毕业论文(设计)课题任务的依据,并接受学校的抽查。
篇三:
下面是一个多功能的电子万年历的程序
/************************************************
下面是一个多功能的电子万年历的程序。
主要功能:
1、显示当前的日期及标准北京时间
2、实时检测当前温度并通过1602显示出来
3、具有可调的闹钟功能,通过按键调整闹钟的起
闹时间
4、通过按键实现画面的切换
************************************************/
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodedigit={“0123456789”};//定义字符数组显示数字
ucharcodeError=“Error!
Check!
”;//说明没有检测到DS18B20
ucharcodetable=“AlarmClock”;
ucharcodetable1=“0123456789”;
ucharcodetable2=“WEEK”;
ucharcodetable3=“Todayisfine!
”;
ucharcodetable4=“HELLO!
”;
ucharcodetable5=“Madebyxiaoyou”;
ucharcodetable6=“Happynewyear!
!
”;//
ucharcodetable7=“Valentine’sDay”;//
/*ucharcodetable8=“QingMingjie!
”;//
ucharcodetable9=“HappyLaborDay!
”;//
ucharcodetable10=“DuanWujie!
”;//
ucharcodetable11=“Armyday!
”;//
ucharcodetable12=“Teacher’sDay!
”;//
ucharcodetable13=“NationalDay!
”;//
/*******************************************************************************
以下是对液晶模块的操作程序
*******************************************************************************/
sbitRS=P0_;//寄存器选择位,将RS位定义为引脚
sbitRW=P0_;//读写选择位,将RW3;
sbitACC0=ACC_;
sbitACC7=ACC_;
uchartime;//设置全局变量,专门用于严格延时
staticucharx=0x08,y=30;
uchart_sec,sec1,sec2;
uchart_min,min1,min2;
uchart_hour,hour1,hour2;
uchart_mon,mon1,mon2;
uchart_day,day1,day2;
uchart_year,year1,year2;
ucharweek,week1;
ucharcom,inf;
voidtixing(unsignedcharmm,unsigneddd);
voidshow();
voiddelay1(uchart)
{
uchara,b;
for(a=t;a>0;a--)
for(b=110;b>0;b--);
}
/*****************************************************
函数功能:
延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
voiddelay1ms()
{
uchari,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:
延时若干毫秒
入口参数:
n
***************************************************/
voiddelaynms(ucharn)
{
uchari;
for(i=0;i delay1ms();
}
/*****************************************************
函数功能:
判断液晶模块的忙碌状态
返回值:
result。
result=1,忙碌;result=0,不忙
***************************************************/
bitBusyTest(void)
{
bitresult;
RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1;//E=1,才允许读写
_nop_();//空操作
_nop_();
_nop_();
_nop_();//空操作四个机器周期,给硬件反应时间
//将忙碌标志电平赋给result
E=0;//将E恢复低电平
returnresult;
}
/*****************************************************
函数功能:
将模式设置指令或显示地址写入液晶模块
入口参数:
dictate
***************************************************/
voidWriteInstruction(uchardictate)
{
while(BusyTest()==1);//如果忙就等待
RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;
E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,_nop_();
_nop_();
_nop_();//就是让E从0到1发生正跳变,所以应先置”0”_nop_();
_nop_();//空操作两个机器周期,给硬件反应时间P2=dictate;//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:
指定字符显示的实际地址
入口参数:
x
***************************************************/
voidWriteAddress(unsignedcharx)
{
WriteInstruction(x|0x80);//显示位置的确定方法规定为”80H+地址码x”
}
/*****************************************************
函数功能:
将数据(字符的标准ASCII码)写入液晶模块
入口参数:
y(为字符常量)
***************************************************/
voidWriteData(uchary)
{
while(BusyTest()==1);
RS=1;//RS为高电平,RW为低电平时,可以写入数据
RW=0;
E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,
//就是让E从0到1发生正跳变,所以应先置”0”
P2=y;//将数据送入P0口,即将数据写入液晶模块
_nop_();
_nop_();
_nop_();
_nop_();//空操作四个机器周期,给硬件反应时间
E=1;//E置高电平
_nop_();
_nop_();
_nop_();
_nop_();//空操作四个机器周期,给硬件反应时间
E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}
/*****************************************************
函数功能:
对LCD的显示模式进行初始化设置
*******