电子工程专业上传.docx
《电子工程专业上传.docx》由会员分享,可在线阅读,更多相关《电子工程专业上传.docx(36页珍藏版)》请在冰点文库上搜索。
电子工程专业上传
四川省高等教育自学考试电子工程专业
论文题目_基于AT89C51单片机万年历的设计
指导老师_______________________
学生姓名________________________
准考证号__________________
2011年08月23日
基于AT89C51单片机万年历的设计
电子工程
学生指导老师
摘要:
本文介绍了基于AT89C52单片机的多功能电子万年历的硬件结构和软硬件设计方法。
系统以AT89C52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。
运用单片机实现公历农历之间的转换,电子闹钟,计时器和对指定日期的查询等功能。
万年历采用液晶显示LCD-12864显示,可以同时显示年、月、日、周几、时、分、秒,农历。
综上所述此电子晚年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景
关键字:
AT89C51;电子万年历;公农历转换;电子闹钟
BasedonAT89C51calendardesign
electronicengineering
StudentszengJunqiangguideteacherJiaLaoShi
Abstract:
thispaperintroducestheAT89C52singlechipbasedonthemulti-functionelectroniccalendarthehardwarestructureandsoftwareandhardwaredesignmethod.SystemtothemicrocontrollerofAT89C52controller,inaserialclockcalendarchipDS1302recordcalendarandtime,itcanbetodateandtime,minutesandsecondsaclock,butalsohasaleapyearcompensation,etcDuoZhongfunction.Usingsinglechipmicrocomputer,thelunarcalendarconversionbetweenelectronicalarmclock,timerandtodatespecifiedqueryetc.Function.CalendarliquidcrystaldisplayLCD12864,canalsoshowsthatyear,month,day,week,whenafew,minutesandseconds,thelunarcalendar.
Tosumuptheelectroniclatecalendarhasreadconvenient,directdisplay,functionaldiversity,simplecircuit,lowcost,andmanyotheradvantages,conformtothetrendofthedevelopmentofelectronicinstruments,andhasabroadmarketprospect
Keyword:
AT89C51;Electroniccalendar;Andthelunartransformation;Electronicalarmclock
一、绪论
1.1课题研究的背景
随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
1.2课题的研究目的与意义
二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。
电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。
所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。
1.3课题解决的主要内容
本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:
(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。
(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。
(3)在硬件设计时,结构要尽量简单实用易于实现,使系统电路尽量简单。
(4)根据硬件电路图,在电路板上完成器件的焊接。
(5)根据设计的硬件电路,编写控制AT89C51芯片的单片机程序。
(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。
(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。
(8)软件设计时必须要有完善的思路,要做到程序简单,调试方便。
二、系统的总体设计
单片机电子万年历的制作有多种方法,可供选择的器件和运用的技术也有很多种。
所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单实用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。
2.1系统方案的构想与确定
系统的功能往往决定了系统采用的结构,经过成本,性能,功耗等多方面的考虑决定用液晶显示12864显示器显示,5V直流电源对单片机AT89C51进行供电,时间芯片DS1302连接单片机AT89C51。
从而实现电子万年历的功能。
2.2器件的选用
1、AT89C51单片机
本系统采用的是美国ATMEL公司生产的AT89C51单片机,首先我们来熟悉一下AT89C51单片机的外部引脚和内部结构。
1).单片机的引脚功能
AT89C51单片机有40个引脚。
Vcc:
电源电压+5V
GND:
接地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线服用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。
P1口:
P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
Flash编程和程序校验期间,P1接收低8位地址。
P2口:
P2口是一个带内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程和程序校验期间,P2亦接收低高位地址和其他控制信号。
P3口:
P3口是一组带内部上拉电阻的8位双向I/O,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表2-1所示:
表2-1P3口的第二功能图
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外中断0)
P3.3
INT1(外中断1)
P3.4
T0(定时/计时器0外部输入)
P3.5
T1(定时/计时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使引脚输出高电平,设置SFRAUXR的DISRT0(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过多特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。
PSEN:
程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
Flash存储器编程时,该引脚加上+12V的变成电压Vpp.
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
2、实时时钟芯片DS1302
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
1)、DS1302有下列几组寄存器:
DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如表2-2所示。
表2-2DS1302有关日历、时间的寄存器
读寄存器
写寄存器
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
范围
81h
80h
CH
10秒
秒
00-59
83h
82h
10分
分
00-59
85h
84h
12/24
0
10
时
1-12/0-23
AM/PM
87h
86h
0
0
10日
日
1-31
89h
88h
0
0
0
10月
月
0-12
8Bh
8Ah
0
0
0
0
0
周日
1-7
8Dh
8Ch
10年
年
00-99
8Fh
8Eh
WP
0
0
0
0
0
0
0
-
2)、DS1302有关日历、时间的寄存器
小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。
当为高时,选择12小时模式。
在12小时模式时,位5是,当为1时,表示PM。
在24小时模式时,位5是第二个10小时位。
秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。
当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。
控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。
在任何的对时钟和RAM的写操作之前,WP位必须为0。
当WP位为1时,写保护位防止对任一寄存器的写操作。
3).读写时序说明
DS1302是SPI总线驱动方式。
它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。
要想与DS1302通信,首先要先了解DS1302的控制字。
DS1302的控制字如表2-3:
表2-3DS1302的控制字
1
RAM
A4
A3
A2
A1
A0
RD
CK
WR
控制字(即地址及命令字节)
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:
如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):
指示操作单元的地址;
位0(最低有效位):
如为0,表示要进行写操作,为1表示进行读操作。
控制字总是从最低位开始输出。
在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出的数据也是从最低位到最高位。
2.2.2LCD液晶显示器12864选用及工作原。
FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
1、模块主要硬件构成说明
控制器接口信号说明:
1)、RS,R/W的配合选择决定控制界面的4种模式表2-4:
表2-412864控制界面的4种模式
RS
R/W
功能说明
L
L
MPU写指令到指令暂存器(IR)
L
H
读出忙标志(BF)及地址记数器(AC)的状态
H
L
MPU写入数据到数据暂存器(DR)
H
H
MPU从数据暂存器(DR)中读出数据
2)、功能说明:
●忙标志:
BF
BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态.
●字型产生ROM(CGROM)
字型产生RO(MCGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYON),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DFF的状态是指令DISPLAYON/OFF和RS信号控制的。
●显示数据RAM(DDRAM)
模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。
●字型产生RAM(CGRAM)
字型产生RAM提供图象定义(造字)功能,可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。
●地址计数器AC
地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中。
●光标/闪烁控制电路
此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。
2.2.3公农历转换
实现公历与农历的转换一般采用查表法,按日查表是速度最快的方法,但51单片机寻址能力有限不可能采用按日查表的方法,除按日查外我们可以通过按月查表和按年查表的方法,再通过适当的计算来确定公历日所对应的农历日期,本文采用的是按年查表法最大限度地减少表格所占的程序空间。
对于农历月来说大月为30天小月为29天,这是固定不变的,这样我们就可用1个BIT位来表示大小月信息,农历一年如有闰月为13个月,否则是12个月,所以一年需要用13个BIT。
闰月在农历年中所在的月份并不固定大部分闰月分布在农历28月但也有少量年份在9月以后,所以要表示闰月的信息至少要4个BIT。
计算公历日对应的农历日期的方法,先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数以后只要根据大小月和闰月信息减一月天数,调整一月农历月份即可推算出公历日所对应的农历日期,如公历日不到春节日期农历年要比公历年小一年,农历大小月取前一年的信息,农历月从12月向前推算。
三、系统硬件的设计
3.1系统硬件电路设计
1)、系统硬件框图如图3-1:
图3-1系统硬件框图
AT89C51单片机内部结构
2).Ds1302电路原理图:
电路原理图如图3-2,DS1302与单片机的连接也仅需要3条线:
CE引脚、SCLK串行时钟引脚、I/O串数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。
图3-2Ds1302电路原理图
3)、FYD12864-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。
字符显示是通过将字符显示编码写入该字符显示RAM实现的。
根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。
FYD12864-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。
YD12864-0402B与单片机80C51的一种接口如图3-3:
图3-312864与单片机80C51接口
四、系统的软件设计
电子万年历的功能是在程序控制下实现的。
该系统的软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。
这样有利于程序修改和调试,增强了程序的可移植性。
4.1主程序
1).主程序流程图如图4-1所示:
图4-1主程序流程图
2).从1302中取数据如图4-2:
图4-21302中取数据
3)、按键扫描如图4-3:
图4-3按键扫描
五、仿真图
将在kill中写好的程序编译成.hex格式,再由stc-isp将程序烧入到单片机里面去,烧程序时先打开烧录器,选择你所烧单片机的对应型号,打开程序编译好的hex格式的文件,调整好烧录时的波特率,本单片机设定的是2400hz~15000hz的波特率;点击下载,等待窗口提示上电,程序烧好后单片机正常运行如图5-1:
图5-1调试图片
结论:
通过这次的设计,让我知道了很多有用的东西,首先是人机界面的运用,按键的输入,对参数的设定,再由液晶显示出来,很方便,也很直观,对调试的实现很有用。
还有就是让我首次接触了时钟芯片DS1302也是很方便实用,只需要在初始化后,再不停的取数据就可以用了,而且误差很小,有闰年的补偿,对每月的自动调整,耗电量也很小,相当经济实惠。
在软件设计的过程中,利用了Keil这个软件在程序录入和调试的时候的优越性,让我能够在编写软件的时候很方便的发现软件中的错误,现在已经能够使用Keil对所设计的程序进行调试。
对于PROTEUS这款软件,也能熟练掌握电路设计仿真。
致谢:
经过这几个月的时间,毕业设计都按照预期完成,由于本人的知识水平有限,论文和设计中有遗漏和缺陷的地方恳请指正。
感谢我的导老师给了我很大的帮助,在他悉心的指导和严格的要求下,作品和论文顺利完成。
论文从选题和最终完成,凝结着导师的辛勤的汗水,他不辞劳苦的教导、严谨的作风使我终生受益。
在此毕业设计完成之际,谨向导师和所有帮助过我的老师致以崇高的敬意和衷心的感谢。
还有感谢家人、朋友还有宿舍里所有的室友,是他们给我创造了良好的学习氛围,在学习和生活中给了我支持和帮助。
在以后的学习生活中我会时时敦促自己更加努力,不辜负师长、亲人、朋友对我的期望。
参考文献
[1]赵长德.微型计算机原理与接口技术[M].北京:
机械工业出版社,1999:
98-350.
[2]苏平.单片机的原理与接口技术[M].北京:
电子工业出版社,2006:
1-113.
[3]王忠民.微型计算机原理[M].西安:
西安科技大学出版社,2003:
15-55.
[4]胡戴明.计算机组成原理[M].北京:
经济科学出版社,2005:
43-56.
[5]纪宗南.单片机外围器件使用手册[M].北京:
北京航空航天大学出版社,622-655.
[6]周雪.模拟电子技术[M]西安:
西安电子科技大学出版社,2005:
81-95.
[7]左金生.电子与模拟电子技术[M].北京:
电子工业出版社,2004:
105-131.
[8]尹勇.单片机开发环境μVision2的开发指南[M].北京:
北京航空航天大学出版社,2004:
173-199.
[9]张斌武.单片机系统Proteus设计与仿真[M].北京:
电子工业出版社,2005:
52-89.
附件:
本人公农历知识有限,未完成其转换功能,不过只要你做出了实物(因为protuse里的液晶显示器12864无法仿真)演示出了大多数功能,论文还是很容易过的,关键看他考呢的是什么——无非就是单片机编程的运用,这些足够,所以不用担心你的农历没弄出来,以上文档仅供参考相互学习,想想当初自己做的时候真的是无