基于单片机的万年历设计课程设计报告毕业设计(论文).doc

基于单片机的万年历设计课程设计报告毕业设计(论文).doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计报告 姓名: 吴新旺 学号: 0815241048 班级: 08电子C班 设计题目:多功能万年历 实现功能: 显示年月日,时分秒,星期与温度 年月日,时分秒均可调,具备自动调节闰年的功能 具有闹钟功能,且开关控制闹钟的开启与关闭 具有整点报时功能 三、系统的硬件设计与实现RAM的实时时钟芯片,具有掉电自动保存功能。可自动对秒、分、时、日、周、月、年进行计数,具有闰年补偿功能,而且精度高位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。显示模块采用LCD1602显示屏,它内置192种字符,可显示32个符号或数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。其工作电压为5v。温度采集模块采用温度传感器18b20。 3、各单元电路设计: 3.1 单片机主控制模块的设计 一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成。最小系统电路原理图如图1所示。 图1 3.2 时钟电路模块设计 DS1302内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。图中VCC1为后备电源,VCC2为主电源。DS1302由VCC1或VCC2两者中的较大者供电。所以在主电源关闭的情况下,也能保持时钟的连续运行。X1和X2是振荡源,外接32.768KHz晶振用来为芯片提供计时脉冲。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。DS1302 的硬件接线图如图2所示: 图2 3.3 温度传感采集模块设计 如图-3所示。采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点。 图3 3.4 独立按键设计 电路由三个独立按键开关组成,分别与单片机的I/O相连,控制调整电路的加、减以及确定。 3.4 电路原理及说明 总得流程图如下: (1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先 把SCLK端置 “0”,接着把RST端置“1”,最后才给予 SCLK脉冲;读/写时序如下图4所示。图5为DS1302的 控制字,此控制字的位7必须置1,若为0则不能把对 DS1302进行读写数据。对于位6,若对程序进行读/写时 RAM=1,对时间进行读/写时,CK=0。位1至位5指操作 单元的地址。位0是读/写操作位,进行读操作时,该位 为1;该位为0则表示进行的是写操作。控制字节总是 从最低位开始输入/输出的。表6为DS1302的日历、时 间寄存器内容:“CH”是时钟暂停标志位,当该位为1时, 时钟振荡器停止,DS1302处于低功耗状态;当该位为0时, 时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM 的写操作之前,WP必须为0。当“WP”为1时,写保护位防 止对任一寄存器的写操作。 DS1302的有关程序如下: void write_byte(uchar dat)//写一个字节 { ACC=dat; RST=1; for(a=8;a0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC1; } } uchar read_byte()//读一个字节 { RST=1; for(a=8;a0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC1; } return (ACC); } //---------------------------------------- void write_1302(uchar add,uchar dat)//向1302芯片写函数,指定写入地址,数据 { RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0; } uchar read_1302(uchar add)//从1302读数据函数,指定读取数据来源地址 { uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp); } uchar BCD_Decimal(uchar bcd)//BCD码转十进制函数,输入BCD,返回十进制 { uchar Decimal; Decimal=bcd4; return(Decimal=Decimal*10+(bcd=0x0F)); } //----------

文档评论(0)

2749166188 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档