ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:658.07KB ,
资源ID:5705351      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5705351.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(万年历课程设计论文.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

万年历课程设计论文.docx

1、万年历课程设计论文单片机课程设计题目名称: 电子万年历 姓 名: 学 号: 201130095031 系 别: 电子信息工程系 班 级: 电子信息工程(1)班 指导老师: 完成时间: 2013年1月2日 目录一、摘要*3 二、设计要求和目的*3 三、课程设计任务*3四、DS1302模块*3-7五、51单片机最小系统模块*7-9六、显示器12864模块*9-14七、电子万年历的电路图和PCB图*15八、电子万年历的功能介绍*15-16九、系统软件设计*16-21十、个人感想*21一、摘要随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。为了在观测时间的同时,能够了解

2、其它与人类密切相关的信息,比如温度、星期、日期等,电子万年历诞生了,它集时间、日期、星期和温度功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 该电子万年历主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、LED动态扫描显示屏显示。AT89C51单片机是由Atmel公司推出的,功耗小,电压可选用46V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小

3、;数字显示是采用的LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。此外,该电子万年历还具有时间校准等功能。 关键词:时钟电路; 时钟芯片DS1302;LED动态扫描; 单片机AT89C51;MAX7219;二、设计要求和目的要求:利用51单片机芯片和DS1302芯片设计电子万年历目的:1. 注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。2. 了解所选择的51单片机芯片各个引脚功能,按键识别的相关原理,并巩固学习单片机的相关内容知识。3. 通过软硬件设计实现利用51单片机芯片完成电子万年历的显示 三、课程设

4、计任务1. 查阅相关文献资料,熟悉所选51单片机芯片;2. 总体设计方案规划,通过按键输入调整,在LCD液晶模块上能显示期、时、分、秒和阴历月、日,在显示农历时间时,能标明是否为闰年。3. 系统硬件设计,熟悉单片机最小系统构建,DS1302时钟芯片工作原理。4. 系统软件设计,用C语言编程实现年、月、日、星期、时、分、秒显示功能。5. 设计心得体会及总结。四、DS1302模块 DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可以自

5、动调制,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。2、DS1302引脚分布及含义图10-1 DS1302引脚图 X1,X2:32.768KHz晶振引脚。GND:共地端。RST:复位。I/O:数据输入/输出。SCLK:串行时钟。VCC1:电池引脚。VCC2:主电源引脚。 DS1302的内部结构如图所示,主要组成部分为:移

6、位寄存器、控制逻辑、振荡器、实时时钟以及RAM。虽然数据分为两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。图10-2 DS1302内部结构图 DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。不过对我们目前而言,最需要熟悉的是和时钟相关的部分功能,对于其他参数请参阅数据手册。3、DS1302工作原理 DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在

7、之后的时钟周期,读操作时输出数据,写操作时输入数据。时钟脉冲的个数在单字节方式下为88 (8位地址8位数据),在多字节方式下为8加最多可达248的数据。4、DS1302的寄存器和控制命令 对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表所示。表10-1 日历、时钟寄存器与控制字对照表寄存器名称bit7bit6bit5bit

8、4bit3bit2bit1bit01RAM/CK*A4A3A2A1A0RD/WR*秒寄存器1000000X分寄存器1000001X小时寄存器1000010X日寄存器1000011X月寄存器1000100X星期寄存器1000101X年寄存器1000110X写保护寄存器1000111X慢充电寄存器1001000X时钟突发寄存器1011111X表10-2 内部主要寄存器分布表最后一位RD/WR*为“0”时表示进行写操作,为“1”时表示读操作。DS1302内部寄存器列表如下表所示。 DS1302内部的RAM分为两类:一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为C0HFDH,

9、其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)和FFH(读)。 接下来讨论如何通过外部接口来访问控制寄存器和RAM。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表10-1所示,最高位Bit7固定为1,Bit6决定操作是针对RAM还是时钟寄存器,接着的5个Bit是RAM或时钟寄存器在DS1302的内部地址,最后一个Bit表示这次操作是读操作或是写操作。 物理上,DS1302的通讯接口由3个口线组成,即

10、RST,SCLK,I/O。其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O口是数据线。具体的读写时序参考图10-3,注意的是,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般输入写入有效是在上升沿,读出有效是在下降沿(DS1302也是如此),如果不是特别确定,则把程序设计成如下:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。图10-3 单个字节的读写时序图DS1302的连接电路图如下图五、51单片机最小系统模块电路图如下图下面着重介绍时钟电路和

11、复位电路。1)时钟电路单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振的取值范围一般为024MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。一些新型的单片机还可以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用2030pF的瓷片电容。外部时

12、钟方式则是在单片机XTAL1引脚上外接一个稳定的时钟信号源,它一般适用于多片单片机同时工作的情况,使用同一时钟信号可以保证单片机的工作同步。时序是单片机在执行指令时CPU发出的控制信号在时间上的先后顺序。AT89C51单片机的时序概念有4个,可用定时单位来说明,包括振荡周期、时钟周期、机器周期和指令周期。 振荡周期:是片内振荡电路或片外为单片机提供的脉冲信号的周期。时序中1个振荡周期定义为1个节拍,用P表示。 时钟周期:振荡脉冲送入内部时钟电路,由时钟电路对其二分频后输出的时钟脉冲周期称为时钟周期。时钟周期为振荡周期的2倍。时序中1个时钟周期定义为1个状态,用S表示。每个状态包括2个节拍,用P

13、1、P2表示。 机器周期:机器周期是单片机完成一个基本操作所需要的时间。一条指令的执行需要一个或几个机器周期。一个机器周期固定的由6个状态S1S6组成。指令周期:执行一条指令所需要的时间称为指令周期。一般用指令执行所需机器周期数表示。AT89C51单片机多数指令的执行需要1个或2个机器周期,只有乘除两条指令的执行需要4个机器周期。 了解了以上几个时序的概念后,我们就可以很快的计算出执行一条指令所需要的时间。例如:若单片机使用12MHz的晶振频率,则振荡周期=1/(12MHz)=1/12us,时钟周期=1/6us,机器周期=1us,执行一条单周期指令只需要1us,执行一条双周期指令则需要2us。

14、2)复位电路无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。单片机的复位条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。上电复位电路中,利用电容充电来实现复位。在电源接通瞬间,RST引脚上的电位是高电平(Vcc),电源接通后对电容进行快速充电,随着充电的进行,RST引脚上的电位也会逐渐下降为低电平。只要保证RST引脚上高电平出现的时间大于两个机器周期,便可以实现正常复位。按键复位电路中,当按键没有按下时,电路同上电复位电路。如在单片机运行过程中,按下RESET键,已经充好电的电

15、容会快速通过1K电阻的回路放电,从而使得RST引脚上的电位快速变为高电平,此高电平会维持到按键释放,从而满足单片机复位的条件实现按键复位。 单片机复位后各特殊功能寄存器的复位值见下表 单片机特殊功能寄存器复位值寄存器 复位值 寄存器 复位值 寄存器 复位值PC 0000H SBUF 不确定 TMOD 00HB 00H SCON 00H TCON 00HACC 00H TH1 00H PCON 0*0000BPSW 00H TH0 00H DPTR 0000HIP *00000B TL1 00H SP 07HIE 0*00000B TL0 00H P0P3 FFH注:*表示无关位。 六、显示器1

16、2864模块管脚号管脚名称电平管脚功能描述1GND0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH

17、/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19BLAVDD背光源正端(+5V)(见注释3)20BLKKVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。指令说明:模块控制芯片提供两套控制命令,基本指令和扩充指令如下:指令表1:(RE=0:基本指令)指

18、 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满20H,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ON B=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容

19、 功能 设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作 设定CGRAM 地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址 设定DDRAM 地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数

20、据从内部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM)指令表2:(RE=1:扩充指令)指 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0 待命模式0000000001进入待命模式,执行其他指令都棵终止待命模式卷动地址开关开启000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM和CGRAM地址 反白 选择00000001R1R0选择2行中的任一行作反白显示,并可决定反白与否。初始值R1R000,第一次设定为反白显示,再次设定变回正常 睡眠 模式0000001SLXXSL=0:进入睡眠模式SL=1:脱离睡眠模式 扩充 功能 设定0000

21、1CLXREG0CL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作G=1/0:绘图开关 设定绘图RAM 地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0设定绘图RAM先设定垂直(列)地址AC6AC5AC0再设定水平(行)地址AC3AC2AC1AC0将以上16位地址连续写入即可 备注;当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。读写时序图数据传输过程8

22、位和4位数据线的传输过程串口数据线模式数据传输过程时序图 MPU写资料到ST7920(8位数据线模式) MPU 从ST7920读资料(8位数据线模式)串口读写时序: 七、电子万年历的电路图和PCB图电路图如下图: PCB图如下图 八、电子万年历的功能介绍电子万年历的功能主要是由51单片机和DS1302芯片实现的,并且在显示屏12864上显示。同时,万年历的年、月、日、星期、时、分、秒还有农历,而且,还具有闹钟提醒、整点报时的功能,同时,它还能通过按键调整年、月、日、星期、时、分、秒,起到调整的作用,给我们带来了极大地方便。如上图K1键:是设置按键,主要是用来选择需要调节的年、月、日、星期、时、

23、分、秒K2键:是确认和返回键。K3键:是加键,用来调节年、月、日、星期、时、分、秒K4键:是减键,用来调整年、月、日、星期、时、分、秒K5键:是闹钟的开启和关闭键。 九、系统软件设计时间控制流程图主要的部分代码介绍:#include #include #include LCD12864.h#include DS1302.h#include nongli.h#include displaytime.h#include bell.h#include delay.h#define uint unsigned int#define uchar unsigned char/*-定义按键-*/sbit K

24、1 = P10; /K1-设置sbit K2 = P11; /K2-确认、返回sbit K3 = P12; /K3-加sbit K4 = P13; /K4-减sbit K5 = P15; /按键K5-闹钟的打开与关闭sbit led = P20;/led灯/K5=P14,K5-控制闹钟的打开与关闭,在hw.h中定义/*-函数声明-*/ void ds_w0(void);void ds_w(void);void Conver_week(bit c,uchar year,uchar month,uchar day);/*-定义全局变量-*/bit w=0; /调时标志位unsigned char

25、yy,mo,dd,xq,hh,mm,ss,month_moon,day_moon,week,tiangan,dizhi,moontemp1,moontemp2;/定义时间映射全局变量(专用寄存器)signed char address,item,item0,max,mini;unsigned char clk_ala2=0x00,0x00;/闹钟数据存放初,始值为00:00unsigned char hour,minute,time;/用于闹铃的设置/*-日期、时间设置函数-*/void tiaozheng(void) yy = read_clock(0x8d);/调用1302时钟数据中的年数据,从地址0x8d中 mo = read_clock(0x89);/调用1302时钟数据中的月数据,从地址0x89中 dd = read_clock(0x87);/从1302芯片中读取日数据,从地址0x87中 week = read_clock(0x8b);/从1302芯片中读取星期数据,从地址0x8b中 /- lcm_w_test(0,0x80); lcm_w_word(20);/显示内容字符20 lcm_w_test(1,(yy/16)+0x30);/函数参数1,代表本行写数据,YY/16+0X30得出年十位数字的显示码地址,送显示 lcm_w_test(1,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1