基于单片机的电子万历的设计论文.doc
《基于单片机的电子万历的设计论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子万历的设计论文.doc(25页珍藏版)》请在三一办公上搜索。
1、江西科技师范大学通信与电子学院单片机应用技术实训报告实训题目: 电子万年历设计 小组成员: 班 级: 12电子信息工程职教本科1班 指导老师: 一、 实训选题内容、要求 电子万年历 要求:1、使用DS1302芯片,电路能使用液晶显示日期、时间、星期;2、电路能更改当前时间和日期;3、系统能设定闹钟,设定时间到了后用LED闪烁表示;二、实训计划和人员安排在这次单片机实训中,我们做的是万年历加闹钟电路。在这次实训中我们小组进行分工完成此次单片机实训。具体分工情况如下:4月15号4月16 整个小组进行讨论分析,确定如何完成这次实训。每个人开始在网上查找有关万年历有关的资料4月18 号4月19号 大家
2、将各自找好的资料进行分析,确定大概思路4月20号 4月22号 整理思路,写出大概的框架,以及流程图4月23号-4月24号 画出仿真电路4月25号4月27号 根据仿真电路写出单片机程序4月28号-4月30号 采购电路元件以及焊接电路板5月1号 5月3号 进行电路板的调试,直至达到选题要求具体人员安排王文博: 程序设计以及焊接电路板陈红英: 硬件部分设计及元件采购刘玉婷:PPT制作及实训报告兰小玲: 视屏录制 三、实训选题分析(主要完成对选题的功能分析,注重原理阐述;如何细化功能模块,软、硬件电路设计的设计思路)功能分析:电子万年历加闹钟就是实用单片机加上一个时钟芯片DS1302和几个与门芯片构成
3、一个可调节年月日时分秒,以及能够读取当前时间的一个电路和闹钟功能。实现我们日常生活中的日历的作用。硬件设计 由于电路程序复杂,本电路采用89c52单片机作为控制核心,它具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒等进行计时,具有闰年补偿功能,工作电压为2.5V-5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个用于临时存放数据的RAM寄存器。可产生年、月、日、时、分、。以及通过与门芯片和按键开关来实现年月日时分秒可调
4、。具体框架结构图如下:开关单 片 机 LCD显示与门芯片 DS1302芯片四、方案设计(最少要提出两种不同的方案,并比较两种方案在设计、实现细节方面的差异和优劣,确定实训最终选定方案)方案一:采用AT89C51芯片作为硬件核心,内部具有4KB ROM存储空间,能于3V的超低电压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术。显示部分 采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机相连接时,占用的单片机口线少,但所需要的数码管数量太多,焊接困难极易出错,所以不采用LED数码管作为显示。直接采用单片机定
5、时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒技术,调节部分使用与门芯片和按键开关进行调节。实现对年月日时分秒的调节与设定。方案二: 采用STC89C52芯片,它能以3V的超低电压工作,同时也与MCS-51系列单片机完全兼容,该芯片内部存储器为8KB ROM存储空间,同时具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或程序的新增功能需要烧入程序时,不需要对芯片进行多次插拔,所以不会对芯片造成损坏.采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见。采用DS1302时钟芯片实现时钟,DS1302芯片是一
6、种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V-5.5V范围内,2.5V时耗电小于300Ma。调节部分使用与门芯片和按键开关进行调节。实现对年月日时分秒的调节与设定。最后,我们采用方案二STC89C52单片机 实时时钟芯片DS1302 显示使用LCD1602液晶显示屏,并设置了5个按键,每个按键分别标号为KEY1,KEY2,KEY3,KEY4.KEY5.按下KEY1,选择调节的对象,key2,key3键为加减键,key4为确定键,key5键为闹钟设置键。五、方案实现(根据选定的方案,给出每一功能模块具体的实
7、现细节,所选用的具体芯片介绍,得到的硬件电路和相应的函数模块) 单片机芯片的选择和方案论证采用AT89C52芯片,它能以3V的超低电压工作,同时也与MCS-51系列单片机完全兼容,该芯片内部存储器为8KB ROM存储空间,同时具有89C51的功能,且具有在线编程可擦除技术,。P1口有两个作用,一个接上DS1302的AD0-AD7(双向地址/数据复用总线),控制着DS1302的8位并行数据的地址和数据的传输,另接上液晶的DB0-DB7(数据总线)控制着向液晶发送8位并行数据。P1.1接上DS1302的单数据线,发送并接受数据,地址的操作。P3.0到P3.3作为独立按键口。P2.4口为液晶的数据/
8、命令选择端,1为数据,二为命令,P2.1口控制液晶读/写选择端,1为读命令,0为写操作,P2.0口控制液晶使能信号。对DS1302:P2.0口控制DS1302的片选信号的输入(CS),P2.1口控制地址选通输入(AS),P2.2口为读写输入(R/W),P1.7接入闹钟,到设置时间到了,led灯闪烁。 时钟电路模块的设计图示为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源,在主电源关闭的情况下,也能保持时钟的连续运行,DS1302由VCC1或VCC2两者中的较大者供电,当VCC2大于VCC1+0.2V时,VCC2给DS1302供电,当VCC2小于VCC1时候VCC1供电。X1和
9、X2是振荡源,外接32.768KHz晶振,RST是复位片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段,当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作,如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态,上电运行时,在VCC大于等于2.5V之前,RST必须保持低电平,中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端,SCLK始终是输入端。工作原理如下:(1) 时钟芯片DS1302的工
10、作原理: 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时
11、,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。(2) DS1302的控制字节DS1302的控制字如表1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出表1 DS1302的控制字格式 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR (3) 数据输入输出(I/O)在控制指
12、令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如图5所示: 图5 DS1302读/写时序图 闹钟模块对时间进行设定,时间到了。Led灯闪烁。闹钟模块的接线如图所示,3.2.5 按键部分按键部分如上图所示,本设计总的用了5个按扭开关作为键盘,其中一个是闹钟确定键,另4个中的其中两个是调整时间增加、减少的键,第一个是切换年、月、日及时、分、秒的显示状态并在所切换的显示状态下配合加减两个键调整时间,另外一个是确定键。液晶显示部分液晶显示模块如上
13、图所示,字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。六、仿真电路图 七、程序设计过程(介绍程序设计的算法思想、并介绍主要模块的功能及实现,用自顶向下的设计思路完成程序功能的分解)1基于DS1302的电子万年历设计系统主程序设计该系统的主程序包含了液晶模块初始化、DS1302时钟控制模块初始化、定时器T0初始化、时钟程序和中断程序。2液晶模块初始化程序首先产生一个让LCD复位的低电平脉冲,复位后再使能LCD。初始化中主要设置LCD模式、偏置电压、显示模式和清屏。3.DS1302时钟控制模块初始化程D1302时
14、钟模块的初始化主要是往DS1302中写数据定时器T0初始化程序定时器T0的初始化主要设置定时器的操作模式、启动方式。设置定时器的值及采用中断方式。设置完成后,启动定时器工作。4时钟程序和中断程序钟程序主要包含了键盘控制程序和时钟显示程序液晶显示模块液晶显示主要显示四行,第一行采用显示当前日期,格式为年月日星期。第二行显示闹钟的时间,格式为时:分:秒。闹钟部分采用了led灯闪烁来显示闹钟的到来。程序如下: #include #include #include#define uchar unsigned char#define uint unsigned intsbit SDA=P10;/ DS1
15、302数据线sbit CLK=P11;/DS1302时钟线sbit RST=P12; /DS1302复位线sbit RS=P20;sbit RW=P21;sbit EN=P22;sbit K1=P34; / 选择sbit K2=P35; / 加sbit K3=P36; / 减sbit K4=P37; / 确定sbit K5=P30; / 闹钟确定sbit K6=P30; / 闹钟设置sbit beep=P17;void Display_LCD_String(uchar p,uchar *s);uchar tCount=0;/一年中每个月的天数,2月的天数由年份决定uchar MonthsDay
16、s=0,31,0,31,30,31,30,31,31,30,31,30,31;uchar *WEEK=SUN,MON,TUS,WEN,THU,FRI,SAT;/周日,周一到周六uchar LCD_DSY_BUFFER1=Date 00-00-00 ; /LCD显示缓冲uchar LCD_DSY_BUFFER2=Time 00-00-00 ;uchar ALARM_TIME_BUFFER= ;/闹钟时分位保存uchar DateTime7; /所读取的日期时间char Adjust_Index=-1; /当前调节的时间:秒,分,时,日,uchar Change_Flag=-MHDM-Y; uch
17、ar Read_LCD_State(); void LCD_Busy_Wait(); void Write_LCD_Data(uchar dat); void Write_LCD_Command(uchar cmd); void Init_LCD(); void Set_LCD_POS(uchar p); void DelayMS(uint x) uchar i;while(x-) for(i=0;i120;i+); uchar Read_LCD_State() uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN=0;DelayMS(1);ret
18、urn state; void LCD_Busy_Wait()while(Read_LCD_State()&0x08)=0x80);DelayMS(5);void Write_LCD_Data(uchar dat) /写数据LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;void Write_LCD_Command(uchar cmd)/写命令LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;void Init_LCD()/LCD初始化Write_LCD_C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子 万历 设计 论文
链接地址:https://www.31ppt.com/p-4148738.html