电子时钟.docx
- 文档编号:14054856
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:55
- 大小:1,009.72KB
电子时钟.docx
《电子时钟.docx》由会员分享,可在线阅读,更多相关《电子时钟.docx(55页珍藏版)》请在冰点文库上搜索。
电子时钟
单片机技术
课程设计说明书
设计课题:
多功能电子台历
专业(系)电气工程系
班级车辆电子091
学生姓名宣雨嘉
指导老师吴海波
完成日期2011.04.30
目录
第1章任务与要求1
1.1任务简介1
2.1任务要求1
第2章方案论证与设计1
2.1整体设计与分析2
2.2各功能模块方案分析2
2.3方案确定3
第3章硬件电路设计4
3.1主题芯片简介.......................................................4
3.2DS1302功能简介7
3.4LCD1602简介11
3.3DS18B20功能简介15
第4章软件设计19
4.1程序流程图19
第5章安装与调试21
第6章使用说明22
第7章心得体会22
参考文献23
附录24
proteus仿真图24
原件清单25
程序26
第1章任务与要求
1.1任务简介
1.多功能电子台历广泛用于单位、会议、电子精品(礼品)屋、赠送朋友、赠送亲人的物品。
摆放于办公桌、书桌、或者车上,给人们的生活带来极大的便捷。
同时多功能电子台历既能显示时间温度,又能作为装饰品,很受人们的欢迎。
本设计的题目是多功能电子台历,本设计论文是以单片机为核心设计的,应用时钟芯片,温度传感芯片和LCD来实现
2.1任务要求
本设计准备实现的功能:
(1)显示公历日期功能(年、月、日、时、分、秒以及星期)
(2)可通过按键切换年、月、日及时、分、秒的显示状态
(3)可随时调校年、月、日或时、分、秒
(4)可每次增减一进行时间调节
(5)可动态完整显示年份,实现真正的万年历显示
第二章方案论证与设计
2.1 整体设计分析
按要求设计本项目,要功能最全,精确度高,方法简洁,经济实惠,节约能源,目前利用我们手中的单片机就能实现。
2.2 各功能模块方案分析
显示部分的方案论证
方案一:
采用8段数码管虽经济实惠,但操作比液晶显示来说略显繁琐。
方案二:
液晶显示方式。
液晶显示效果出众,可以运用菜单项来方便操作,比较简单,所以,最后选择液晶显示方案。
时钟芯片的选择方案和论证:
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:
在以单片机为核心构成的装置中,经常需要一个实时的时钟和日历,以便对一些实时发生事件记录时给予时标,实时时钟芯片便可起到这一作用。
过去多用并行接口的时钟芯片,如MC146818,DS12887等。
它们已能完全满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂、占用地址,数据总线接线多、芯片体积大占用空间多、近年来串行接口的各种芯片在单片机系统中应用愈来愈多,串行接口的实时时钟芯片也出现了不少,DS1302是一个综合性能较好且价格便宜的串行接口实时时钟芯片。
温度传感器的选择方案与论证:
方案一:
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
。
此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
所以选择数字式温度传感器。
2.3 总体方案确定
AT89s51单片机作为控制芯片,LCD1602作为显示模块,DS1302作为时钟芯片,DS18B20作为温度采集芯片,C语言作为编写语言,这样不仅具有编程灵活,程序较简洁,,精度较高,而且可将其用于实时控制系统,从而应用到实际工作与生产中去。
该万年历可以显示年、月、时、分、秒,星期,温度。
可以设置年、月、时、分;其中计时控制电路由AT89S51单片机控制,按键电路用于时间设置及复位;温度采集由DS18B20完成,显示由LCD1602完成;
第3章硬件电路设计
3.1主芯片简介
AT89S51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。
芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对程序存储器重复编程。
AT89S51(以下简称89C51)将具有多种功能的8位CPU与FPEROM结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比较高。
(2).AT89S51单片机控制单元
1】.89S51性能及特点
89S51的主要性能包括:
(1)与MCS-51微控制器产品系列兼容。
(2)片内有4KB可在线重复编程的快闪擦写存储器(FlashMemory)。
(3)存储器可循环写入/擦除1000次。
(4)存储数据保存时间为10年。
(5)宽工作电压范围:
Vcc可为2.7V~6V。
(6)全静态工作:
可从0Hz至16MHz。
(7)程序存储器具有3级加密保护。
(8)128×8位内部RAM。
(9)32条可编程I/O线。
(10)两个16位定时器/计数器。
(11)中断结构具有5个中断源和2个优先级。
(12)可编程全双工串行通道。
(13)空闲状态维持低功耗和掉电状态保存存储内容。
图3-1AT89S51引脚图
(3).AT89S51控制电路
图3-2AT89S51控制电路图
此电路包含复位部分、选择部分、显示部分,并且P1口和DS18B20的数据口直接相连。
有四个选择按钮可供使用。
3.2. 时钟芯片DS1302功能简介
(1)、DS1302的使用介绍
DS1302是DALLAS(达拉斯)公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、日期、月年的信息,还包括每月的天数和闰年自动校正功能。
时钟运行可以采用24小时制或带AM/PM12制。
DS1302采用三线接口与单片机进行同步串行的方式通信。
(2).DS1302的性能特性
1》实时时钟(RTC)计秒、分、时、日期、月、星期和年,并且带闰年;
2》有效补偿到2100年;
3》31字节、电池备份的、非易失性(NV)RAM来存储数据;
4》串行I/O使得引脚数量最少;
5》宽范围工作电压,2.0~5.5V;
6》在2.0V时,功耗小于300nA;
7》在时钟/RAM中读/写连续地址的方式为脉冲串式。
8》8引脚DIP或可选的8引脚SOIC用于表面安装。
9》简单的3线接口。
10》TTL兼容(Vcc=5V)。
图7-3DS1302的引脚图
11》可选工业级温度范围:
40℃~+85℃
(3)DS1302的引脚介绍
1》X1、X2是32.768KHz晶振的引脚;
2》VCC2是电源供电引脚,VCC1是3V纽扣电池的供电引脚
3》SCLK为与单片机串行通信的时钟引脚;
4》I/O为与单片机传送数据的引脚;
5》RST是DS1302的复位引脚,低电平有效。
DS1302读/写时序图
DS1302的日历、时间寄存器
(4)DS1302电路图和操作流程图
(5)DS1302操作流程图
3.3LCD1602功能简介
1、LCD1602是一个应用广泛的显示芯片,它以其低廉的价格赢得了广大用户的青睐,它之所以起名为1602,是因为它一行可以显示8个字节,总共有两行,一共有16个字节,但是1602也有其局限性,它只可以显示数字,字母,但是不可以显示汉字,但是因为我们这个项目只需显示数字,所以我们就选择了这一款经济实惠的显示屏。
实物图正面
实物图反面
2、引脚作用
3、LCD1602控制电路图
4、LCD1602操作
】RS
R/W
操作
0
0
写命令操作(初始化、光标定位等)
0
1
读状态操作(读忙标志)
1
0
写数据操作(要显示的内容)
1
1
读数据操作(可以把显示存储区中的数据反读出来)
RS:
数据和指令选择控制端,RS=0:
命令/状态;RS=1:
数据
R/W:
读写控制线,R/W=0:
写操作;R/W=1:
读操作
E:
数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机之间将进行一次数据交换
3.4,温度传感芯片DS18B20功能简介
1》DS18B20这一个温度传感芯片适用于冷冻库,粮仓,电讯机房,电力机房,电缆线槽,汽车空调,工业设备测温等测温和控制领域。
应用相当广。
2》其工作原理是利用其的温度检测与数字数据输出全集成与一个芯片上,抗干扰性更强,其中一个工作周期可以分为两部分,温度检测和数据处理。
管状式贴片式
工业用插孔式
命令功能
指令代码
功能说明
读ROM
33H
读DS1820中的64位光刻ROM序列号
启动转换
44H
启动温度转换,结果输入内部高速暂存器RAM中
写温限值
4EH
向内部字节地址2和3中写入上下限温度值
匹配ROM
55H
发出命令后,还发送64位ROM序列号寻找对应号码的18B20
读供电
B4H
读电源供给方式:
18B20发0为寄生供电,1为外接供电
读取温度
BEH
读取温度寄存器等9字节的内容
跳过ROM
CCH
单片18B20时,跳过读序列号操作,直接发温度转换
报警搜索
ECH
执行后,当温度超过上下限值时18B20才作响应
搜索ROM
FOH
搜索同一条线上挂接有几个18B20,识别ROM
DS18B20操作指令集
初始化时序
写“0”和“1”时序
第4章软件设计
4.1程序流程图
温度流程图
显示流程图
第5章安装与调试
一、硬件
检查硬件连接,安装正确,这里主要是对比硬件原理图,检查各个模块的电路安装,整体电路的连接。
二、系统调试
完成了单片机应用系统的硬件、软件设计的硬件组装之后还需要进行单片机应用系统的调试。
系统调试包括硬件调试、软件调试及软件硬件联调。
本设计主要行软件调试,其调试方法为:
通过对用户系统的源程序进行编译、连接、汇编来发现程序中是否存在错误,若有错误加以排除;若没有错误,则将生成的*.HEX文件烧制到单片机中,再进行软件硬件联调。
第6章使用说明
此时钟可以显示年月日星期温度时间,并能调节,按S1蜂鸣器响,灯1亮,进入调节模式,再按S1光标移动,进入到要调节的位置,依次移动末位再按依次调节结束。
按S2灯3亮,蜂鸣器响,调节位置数值递增,按S3灯1、2同时亮,蜂鸣器响,调节位置数
值递减。
温度是实时采集环境温度。
第7章心得体会
这个任务的完成,是对整个单片机课程知识的总结和升华,对以前的知识有了更深刻的理解,更学会了怎么样去运用。
对C语言有了更深刻的体会,设计出这个庞大的程序,使我感到成就感,对C语言又有了更深厚的兴趣。
此外,在这个任务的完成过程中,使我更加体会到团队协作的重要性,一个人的力量是有限的,从购买元器件,焊接电路板,再到软件的设计,这些不是一个个体能在有限的时间里能完成的,我作为这组的组长,对任务作了分工,而又让队员相互协作,最后圆满完成任务,这离不开所有队员的努力。
电子时钟设计到此成功完成,经过这次任务的磨练,我们对单片机计术更有了深刻的体会和了解。
在这个任务的完成过程中,所有的知识是我们自己学习,自己研究,自己独立查找资料,这使我们独立学习的能力得到提高,对大学学习生活更有了深刻体会。
虽然单片机课程到此结束,但是我对单片机的热情更深,对C语言的兴趣更浓,在以后的时间里,我会深入去学习单片机,坚持不懈,我相信我会成为一名嵌入式工程师,以后也一定会设计出利国利民的好产品,为祖国经济建设贡献自己的专业力量,我相信我有这个实力。
路漫漫其修远兮,吾将上下而求索!
参考文献
[1]李移伦等.单片机原理及应用.中南大学出版社,2006
[2]王静霞等.单片机应用技术.北京:
电子工业版社,2009
[3]候芳等.教你PROTEUS.XX文库,2007
[4]刘光玉等.模拟电路基础.成都:
电子科技大学出版2004
[5]陆坤等.电子设计技术.成都:
电子科技大学出版1998
[6]方勤等.模拟电子技术基础.高等教育出版社,2003
[7]参考网站资料:
附录
Proteus仿真图
元件清单
元件名称
型号及规格
数量
单片机开发板
AT89S51
1
温度传感器
DS18B20
1
时钟芯片
DS1302
1
液晶显示屏
LCD1602
1
电阻
4.7K
3
电容
104
2
晶振
32.768kHz
1
程序代码:
#include
#include"intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};
#defineer0x80+0x40
#defineyh0x80
unsignedchardatatemp_data[2]={0x00,0x00};
unsignedchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};
unsignedcharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
ucharmiao,shi,fen,ri,yue,nian,week,key1n,temp;
bitpresence;
sbitDQ=P3^6;
sbitP1_7=P1^7;
sbitP1_0=P1^0;
sbitRS=P2^7;
sbitRW=P2^6;
sbitEN=P2^5;
sbitsck=P1^6;/*实时时钟时钟线引脚*/
sbitrst=P1^4;/*实时时钟复位线引脚*/
sbitio=P1^5;/*实时时钟数据线引脚*/
sbitACC0=ACC^0;
sbitACC7=ACC^7;
sbitkey1=P3^0;//设置键
sbitkey2=P3^1;//加键
sbitkey3=P3^2;//减键
sbitbuzzer=P3^5;//蜂鸣器
voidwrite_1602com(ucharcom);
voidwrite_1602data(ucharcom);
voiddelay1ms(unsignedintms);
voidinit_1602(void);
voiddelay1(intms);
voidlcd_1602init();
voidDelay(unsignedintnum);
Init_DS18B20(void);
ucharReadOneChar(void);
voidWriteOneChar(unsignedchardat);
voidRead_Temperature(void);
Disp_Temperature();
voidlcd_pos(ucharpos);
voidwrite_1302_byte(uchardat);
ucharread_1302_byte();
voidwrite_1302(ucharadd,uchardat);
voiddelay_1302(uintxms);
voidds1302_init(void);
ucharBCD_Decimal(ucharbcd);
voidwrite_sfm(ucharadd,uchardat);
voidwrite_nyr(ucharadd,uchardat);
voidwrite_week(ucharweek);
voidinit();
voidDisp();
voidKeyscan();
voidmain()
{
ds1302_init();
init_1602();
Init_DS18B20();
while
(1)
{Keyscan();
Disp();
Read_Temperature();
Disp_Temperature();
}
}/***********************************************
1602模块
*********************************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{
unsignedinti,j;
for(i=0;i for(j=0;j<100;j++); } voidinit_1602(void) { delay1ms(15); write_1602com(0x38); delay1ms(5); write_1602com(0x38); delay1ms(5); write_1602com(0x38); delay1ms(5); write_1602com(0x08); delay1ms(5); write_1602com(0x01); delay1ms(5); write_1602com(0x06); delay1ms(5); write_1602com(0x0c); delay1ms(5); } voidwrite_1602com(ucharcom)//写指令// { delay1ms (1); RS=0; RW=0; EN=0; P0=com; delay1ms (1); EN=1; delay1ms (1); EN=0; } voidwrite_1602data(uchardat)//写数据// { delay1ms (1);; RS=1; RW=0; EN=0; P0=dat; delay1ms (1); EN=1; delay1ms (1); EN=0; } /**********ds18b20初始化函数**********************/ voiddelay1(intms) { unsignedchary; while(ms--) { for(y=0;y<250;y++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } /*LCD初始化设定*/ /*******************************************************************/ voidlcd_1602init() { delay1(15); write_1602com(0x01);//清除LCD的显示内容 write_1602com(0x38);//16*2显示,5*7点阵,8位数据 delay1(5); write_1602com(0x38); delay1(5); write_1602com(0x38); delay1(5); write_1602com(0x0c);//显示开,关光标 delay1(5); write_1602com(0x06);//移动光标 delay1(5); write_1602com(0x01);//清除LCD的显示内容 delay1(5); } /*设定显示位置*/ /*******************************************************************/ voidlcd_pos(ucharpos) { write_1602com(pos|0x80);//数据指针=80+地址变量 } /*us级延时函数*/ /*******************************************************************/ voidDelay(unsignedintnum) { while(--num); } /*初始化ds1820*/ /*******************************************************************/ Init_DS18B20(void) { DQ=1;//DQ复位 Delay(8);//稍做延时 DQ=0;//单片机将DQ拉低 Delay(90);//精确延时大于480us DQ=1;//拉高总线 Delay(8); presence=DQ;//如果=0则初始化成功=1则初始化失败 Delay(100); DQ=1; return(presence);//返回信号,0=presence,1=nopresence } /*读一个字节*/ /*******************************************************************/ ucharReadOneChar(void) { unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; Delay
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟
![提示](https://static.bingdoc.com/images/bang_tan.gif)