




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计说明书 第 51 页1 绪论万年历就是记录一定时间范围内的具体阳历与阴历的日期的年历,方便有需要的人查询使用。随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。电子万年历的出现带来了钟表计时业界跨跃性的进步。近年来,电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的计时功能,希望出现一些新的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值。由于数字集成电路技术的发展和采用了先进的石英技术,现代电子钟具有走时准确、性能稳定、制作简单等优点,弥补了传统钟表的许多不足之处。我们利用单片机技术设计制作的电子万年历,可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有其他的功能。如设定闹钟、语单报时、阴阳历的转换、二十四节气的显示等,有一定的新颖性和实用性,同时体积小,携带方便,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点,具备一定的市场前景。以基于单片机的万年历作为设计课题,因为它具有很好的开放性和可发挥性,要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机的扩展的应用。另外液晶显示的万年历已经越来越流行,具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多钟功能。所以,电子万年历作设计课题很有价值。2 系统设计方案2.1 方案选择和论证2.1.1 单片机芯片的选择方案和论证方案一: 采用89c51芯片作为硬件核心,采用flash rom,内部具有4kb rom 存储空间,能于3v的超低压工作,而且与mcs-51系列单片机完全兼容,但是运用于电路设计中时由于不具备isp在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案三:采用stc12c5a60s2单片机,定时器与传统8051完全兼容,是标准的5v工作电压,内部程序存储器为60k存储空间,不需要外扩存储器。同样具有89c51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。stc12c5a60s2的灌电流是20ma,驱动能力超强,驱动大电流时不容易烧坏。相比之下,stc12c5a60s2单片机具有在线编程可擦除技术和大容量存储空间,利于设计及调试,所以选择采用stc12c5a60s2单片机作为主控制系统。2.1.2 时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用ds1302时钟芯片来实现时钟,ds1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的ram做为数据暂存区,工作电压2.5v5.5v范围内,2.5v时耗电小于300na.相比单片机定时计数器,ds1302芯片可自动计数且精度更高,所以选择采用ds1302作为时钟芯片。2.1.3 显示模块的选择方案和论证方案一:采用led数码管动态扫描,led数码管价格适中,对于显示数字最合适。采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但电路中的线路相对多,电路过于庞大。方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三:采用lcd液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见, 虽然价格贵,但却免了一些线路的麻烦,外观优美,且可以显示内容多。相比方案一和方案二,方案三可显示大量内容,且线路简单,所以采用了lcd液晶显示屏作为显示。2.1.4 温度传感器的选择方案和论证方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行a/d转换。此设计方案需用a/d转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器ds18b20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除a/d模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。相比方案一,方案二不需要a/d,可简化电路,精度更高,所以采用了ds18b20作为温度传感器。2.2 系统最终方案综上各方案所述,对此次设计的方案选定: 采用stc12c5a60s2单片机作为主控制系统; ds1302提供时钟;采用数字式温度传感器ds18b20;lcd液晶显示屏动态扫描作为显示。3 系统的硬件和软件设计3.1 系统的硬件设计3.1.1 系统设计框图图3-1 系统框图3.1.2 硬件概述本电路是由stc12c5a60s52单片机为控制核心,具有在线编程功能,低功耗,能在3v超低压工作;时钟电路由ds1302提供,它是一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个31*8的用于临时性存放数据的ram寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由ds18b20构成;显示部份由lcd液晶显示屏显示。3.1.3 单元电路的设计3.1.3.1 单片机主控模块设计单片机控制系统及其外围电路设计采用由stc12c5a60s2单片机为控制核心。stc12c5a60s2单片机是宏晶科技生产的单时钟单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,具有60k的可编程flash存储器,指令代码完全兼容传统8051,但速度快8-12倍。片上flash允许程序存储器在线编程,亦适于常规编程器。stc12c5a60s2具有以下标准功能:60k字节flash,1280字节ram,36/40/44个i/o口线,看门狗定时器,4个16位定时器,片内晶振及时钟电路。(1)单片机控制系统复位电路如图1所示。图3-2 复位电路设计(2)本次设计单片机采用dip封装,晶振为12mhz。其中p3.0-p3.1为isp下载程序使用,其最小系统电路如图3-3所示。18引脚和19引脚接时钟电路,xtal1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,xtal2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后形成电复位电路,20引脚为接地端,40引脚为电源端。图3-3 单片机主控模块3.1.3.2时钟电路模块设计时钟芯片采用ds1302,晶振使用32.768khz。ds1302 是 dallas 公司推出的涓流充电时钟芯片 内含有一个实时时钟/日历和31字节静态 ram 通过简单的串行接口与单片机进行通信 实时时钟/日历电路提供年、月、日、时、分、秒、星期的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过 am/pm 指示决定采用24或12小时格式。ds1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线: res复位、 i/o 数据线和sclk串行时钟。时钟ram 的读写数据以一个字节或多达31个字节的字符组方式通信。ds1302 工作时功耗很低,保持数据和时钟信息时功率小于1mw。图3-4显示出ds1302的引脚排列,其中vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc1+0.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。x1和x2是振荡源,外接32.768 khz晶振。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。上电动行时,在vcc大于等于2.5v之前,rst必须保持低电平。在sclk 为低电平时,才能将rst置为高电平。i/o为串行数据输入端(双向)。sclk始终是输入端。图3-4 时钟电路模块3.1.3.3 显示电路模块设计kny12864m是一种图形点阵液晶显示器,它主要由行驱动器、列驱动器及12864全点阵液晶显示器组成。可完成图形显示,也可以显示84个(1616点阵)汉字。与外部cpu接口可采用串行或并行方式控制。其显示分辨率为12864,内置8192个中文汉字(1616点阵)、128个字符(168点阵)及64x256点阵显示ram(gdram)。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。其与单片机的接口电路如图3-5所示。图3-5 显示电路模块3.1.3.4 温度采集模块设计温度采集采用dallas半导体公司的数字化温度传感器ds18b20,ds18b20是单总线器件,线路简单,体积小的特点,具有9-12为可编程分辨率,精度为0.5。声音功能采用5v蜂鸣器作为声音报警器件,通过三极管进行放大输出特定声音。图3-6 温度采集模块3.1.3.5 双电源供电电路设计系统采用双电源,可以使用外接电源,也可直接使用usb 5v电源,由自锁开关切换输入。电源电路如图3-7所示。图3-7 双电源模块3.1.3.6 rs-232电路设计stc12c5a60s2单片机具有在线编程可擦除技术,连接串口,通过电脑端的stc-isp软件控制下载用户程序到stc单片机,即可实现程序的烧写。如图3-8所示即为rs-232转换电路。图3-8 rs-232转换电路3.1.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时,写保护位防止对任一寄存器的写操作。(2)ds1302的控制字节ds1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入ds1302中,位6如果0,则表示存取日历时钟数据,为1表示存取ram数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。表3-1 ds1302的控制字格式 ram rd 1 /ck a4 a3 a2 a1 a0 /wr(3)数据输入输出(i/o)在控制指令字输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个sclk脉冲的下降沿读出ds1302的数据,读出数据时从低位0位到高位7。如下图3-9所示图3-9 ds1302读/写时序图(4)ds1302的寄存器ds1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为bcd码形式,其日历、时间寄存器及其控制字见表3-2。表3-2 ds1302的日历、时间寄存器写寄存器读寄存器bit7bit6bit5bit4bit3bit2bit1bit080h81hch10秒秒82h83h10分分84h85h12/24010时时am/pm86h87h0010日日88h89h00010月月8ah8bh00000星期8ch8dh10 年年8eh8fhwp0000000此外,ds1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与ram相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 ds1302与ram相关的寄存器分为两类:一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为c0hfdh,其中奇数为读操作,偶数为写操作;另一类为突发方式下的ram寄存器,此方式下可一次性读写所有的ram的31个字节,命令控制字为feh(写)、ffh(读)。 3.2 系统软件设计程序开始时先对系统初始化,并设置好各种中断。首先要给时钟芯片设置初值,时钟芯片便自行计数。此时检测是否有按键按下,按键是为了调整时钟。有按键按下则执行按键处理程序,没有按键按下则执行下一步的操作,即取时钟芯片中的时钟值,然后送显示。程序流程图如下。noyes图3-10 程序流程图此处省略nnnnnnnnnnnn字。如需要完整说明书和设计图纸等.请联系在线扣扣:二五一一三三四零八 另提供全套机械毕业设计下载!结论至此,关于毕业设计的所有内容就介绍完了,进行这次毕业设计一切都是从头开始,从最简单的查资料、了解各个元件的功能起步,再确定设计方案、画流程图,编写程序到最后进行调试,在我的个人角度下,这次毕业设计可以说是成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点。在整个设计过程中,充分发挥了主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了许多问题,经过静下心来思考,并请教了同学,理清了思路,才完成了对程序的编写。但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些基本的功能,还有许多不足之处和可以扩展的地方,例如实现闹钟报时等,这些有待以后来弥补,还望各位老师予以指正和修改。致谢经过这么长时间的设计,从选题、设计到现在的终稿完成;由于所设计的课题涉及到专业领域较广,要用到很多陌生的知识,在整个过程中,得到许多老师和同学们的帮助。在这两个月来的设计过程中我请教了系中的老师,特别是我的导师蔡超峰老师,他对我的毕业设计提供了很多条件,同时也有许多同学帮我收集了大量的资料,在设计上给予我很大的帮助,尤其是软件上。现在设计已结束,在这里一并向这些老师和同学们表示感谢。同时感谢关心我的和我关心的人。 再次,我要感谢一直陪我走完大学四年求学之路的同宿舍的姐妹位,和其他在我学习和生活中帮助过我的人,谢谢他们平时对我无微不致的照顾和关心。我很兴能生活在这样一个充满活力的集体中,从他们的身上我学到了很多,看到了自己的不足,在不断的发现和改正错误中成长,同时他们给我的大学生活留下了许多美好的回忆,让我受益终生。 鉴于本人水平有限,难免存在一些错误和漏洞,望各位老师、同学不吝赐教,在此再次向大家表示衷心的感谢。参考文献1 王法能 单片机原理及应用 科学出版社 20042 张毅刚 单片机原理及应用 高等教育出版社 20063 李宗吾.中国万年历.北京:中国科学技术出版社.2006:115-1914 夏墨英.中国天文年历.北京:科学出版社.1984:1256-25815 周慈航.单片机应用程序设计技术h.北京:北京航空航天大学出版社,19926 anastasios alexiadis,ioannis refanidis.defining a tasks temporal domain for intelligent calendar applications7 余永权.atmel89系列单片机原理及应用m.西安:电子工业出版社,1999.8 王毅平. mcs-51单片机原理及应用h.北京:人民邮电出版社,19999 陈坚,李昕,黄樱.chen jian.li xin.huan ying 51单片机最小化应用系统的proteus仿真-电脑知识与技术.2008,2(18)10 陈正振 电子电路设计与制作 广西交通职业技术学院信息工程系 200711 窦振中 单片机外围器件实用手册存储器分册 北京航空航天大学出版社 200612 joe tullio,elizabeth d.mynatt.use and implications of a shared,forecasting calendar.13 王威,刘佳,张志雄等.基于proteus 和keil的单片机虚拟仿真平台的设计-上海电力学院学报.2009,25(6).14 闫小坤编 数字电路 吉林大学出版社 200415 朱定华,戴汝平.单片机微机原理与应用m.北京:北京交通大学出版社,2003.16 ashraf khalil,kay connelly.improving cell phone awareness by using calendar information.17 51单片机c语言应用开发技术大全 龙脉工作室 刘坤 宁戈 赵红波 张宪栋 人民邮电出版社 2008年9月 附录a原理图附录b程序清单#include #include #include #define uchar unsigned char#define uint unsigned intbit w = 0; /调时标志位 sbit acc0 = acc0;sbit acc7 = acc7;unsigned char year,month,date,week,hr,min,sec,sec100;/ds1302子程序sbit ds1302_clk = p35; sbit ds1302_io = p36; sbit ds1302_rst = p37; void ds1302inputbyte(uchar d) uchar i; acc = d; for(i=8; i0; i-) ds1302_io = acc0; ds1302_clk = 1; ds1302_clk = 0; acc = acc 1; uchar ds1302outputbyte(void) uchar i; for(i=8; i0; i-) acc = acc 1; acc7 = ds1302_io; ds1302_clk = 1; ds1302_clk = 0; return(acc); void write1302(uchar ucaddr, uchar ucda) ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr); / 地址,命令 ds1302inputbyte(ucda);/ 写1byte数据 ds1302_clk = 1; ds1302_rst = 0; uchar read1302(uchar ucaddr)/读取某地址的数据 uchar ucdata; ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr); ucdata = ds1302outputbyte(); ds1302_clk = 1; ds1302_rst = 0; return(ucdata);void init1302(void) /设置1302的初始时间 uchar cctt; cctt=read1302(0x80); if(cctt&0x80) write1302(0x8e,0x00);/允许写操作write1302(0x8c,0x0b);/年write1302(0x8a,0x01);/星期write1302(0x88,0x06);/月write1302(0x86,0x06);/日write1302(0x84,0x00);/小时write1302(0x82,0x00);/分钟write1302(0x80,0x00);/秒write1302(0x8e,0x80);/禁止写操作 /*温度*/#define skip_rom 0xf0#define convert_t 0x44#define read_scratchpad 0xbesbit dq = p24;/ds18b20信号线定义uchar tph;uchar tpl;void delayt(int num)/延时函数while(num-);unsigned init_ds18b20(void)/初始化ds1820uint answer_flag; dq = 0; /单片机将dq拉低delayt(480); dq = 1; delayt(15);answer_flag=dq; delayt(240);delayt(180);return(answer_flag);uchar readbit(void)bit s;dq=1;_nop_();dq=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();dq=1;s=dq;delayt(60);return(s);uchar readbyte(void)/读一个字节uchar i,j;uchar dat = 0;for (i=1;i=8;i+)j=readbit();dat=(j1);return(dat);void writebyte(uchar dat)/写一个字节uint i;bit n;for (i=1; i1;if(n)/写1dq=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();dq=1;delayt(60);else/写0dq=0;delayt(90);dq=1;_nop_();_nop_();_nop_();_nop_();void convert(void)/温度转换init_ds18b20();if(init_ds18b20()delayt(100);writebyte(skip_rom);writebyte(convert_t);uint readtemp(void)/读取温度uint t=0;float tt=0;convert();delayt(100000);init_ds18b20();if(init_ds18b20()delayt(100);writebyte(0xcc);writebyte(0xbe);tpl=readbyte();tph=readbyte();t=tph;t=8;t=t|tpl;tt=t*0.0625;t= tt*10+0.5; /放大10倍输出并四舍五入return(t);/*12864*/#define lcd p0sbit lcdrs=p12;sbit lcden=p10;sbit lcdpsb=p27;sbit lcdwr=p11;sbit beep=p25;unsigned char code dis_char=电子万年历 *welcome !* ;void delay(uchar z) /延时uchar x,y;for(x=0;xz;x+)for(y=0;y110;y+);void writecom(uchar com)/写控制字delay(100);lcdrs=0;lcdwr=0;lcd=com;lcden=1;_nop_();lcden=0;void writedat(uchar dat)/写数据delay(100);lcdrs=1;lcdwr=0;lcd=dat;lcden=1;_nop_();lcden=0;void initlcd()/初始化lcden=0;lcdpsb=1;writecom(0x30);writecom(0x0f);writecom(0x01);writecom(0x06);writecom(0x02);void clrlcd(void)/清屏 writecom(0x30); writecom(0x01); delay (100);void display(uchar code *chn) uchar i,j;writecom(0x30); writecom(0x80); for (j=0;j4;j+) for (i=0;i16;i+) writedat(chnj*16+i); /向lcm发送一个字符串,长度64字符之内。/应用:lcm_writestring(您好!); void writestring(uchar *str)while(*str != 0) writedat(*str+); *str = 0;void delaym(unsigned int a) /延时函数 1ms/次unsigned char i;while( -a != 0) for(i = 0; i = 0x04 & hr = 0x06 & hr = 0x08 &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市级语文教研组年度工作计划
- 新外研版五年级上册英语学习反馈计划
- 工业车间离心式排风机施工方案及技术措施
- 交通运输质量保证技术措施
- 七年级英语下册作文范例与解析范文
- 荒山造林项目施工安全质量保证措施
- 幼儿园教科研工作绩效考核计划
- 绿色护理服务推广计划
- 部编版二年级下册语文园地四写话思维训练范文
- 小学班主任学科教学培训心得体会他
- T/CACEM 25-2023高速公路限速标志设置规范
- 医院感染暴发报告流程及处置预案
- 八年级英语下学期期末考试(广州专用)(解析版)
- 台州市椒江区通达金属表面处理有限公司年表面处理加工3000吨铝件、铁件、不锈钢、铜件、线路板等建设项目环境保护设施竣工验收监测报告
- 南京二模 南京市2025届高三年级第二次模拟考试 数学试卷
- 向父母借款买房合同协议
- 广东深圳2025年公开招聘农村(村务)工作者笔试题带答案分析
- 建筑工地安全应急预案
- 25春国家开放大学《中级财务会计(二)》形考任务1-4参考答案
- 针刺伤试题及答案
- 电脑硬件及产品供应计划策略
评论
0/150
提交评论