电子信息专业基于AT89S51单片机的数字万年历毕业设计论文.docx
- 文档编号:11983968
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:21
- 大小:344.70KB
电子信息专业基于AT89S51单片机的数字万年历毕业设计论文.docx
《电子信息专业基于AT89S51单片机的数字万年历毕业设计论文.docx》由会员分享,可在线阅读,更多相关《电子信息专业基于AT89S51单片机的数字万年历毕业设计论文.docx(21页珍藏版)》请在冰豆网上搜索。
电子信息专业基于AT89S51单片机的数字万年历毕业设计论文
基于AT89S51单片机的数字万年历设计
目录
前言0
1设计要求0
2方案论证与设计0
2.1控制器部分方案论证0
2.2显示部分的方案论证1
2.3系统设计2
2.3.1晶体振荡器电路2
2.3.2分频器电路2
2.3.3时间计数器电路2
2.3.4时钟电路3
2.3.5复位电路3
2.3.6复位电路的可靠性设计3
2.3.7按键部分4
2.3.8蜂鸣器电路4
2.3.9根据各模块的功能互相连接成电子万年历的控制电路4
3各硬件介绍5
3.1AT89S51的引脚说明5
3.2发光二极管指示电路设计6
3.3蜂鸣器电路设计6
3.3.1蜂鸣器的介绍6
3.3.2蜂鸣器的结构原理7
3.4LCM1602简介7
3.5DS1302简介8
4系统硬件设计所需的器材9
5系统软件总体设计10
5.1公历与星期的换算方法10
6系统功能介绍11
6.1按键处理11
6.2星期计算12
7主程序流程图13
8安装制作13
9调试与检测安全13
9.1供电安全:
14
9.2测量仪器安全:
14
9.3几个必须记住的安全操作观念:
14
10结束语15
致谢16
前言
电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。
数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。
钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。
可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。
所有这些,都是以钟表数字化为基础的。
因此,研究数字时钟及扩大其应用有着非常现实的意义。
本设计就是数字时钟简单的扩展应用。
1设计要求
本设计准备实现的功能:
(1)显示公历日期功能(年、月、日、时、分、秒以及星期)
(2)可通过按键切换年、月、日及时、分、秒的显示状态
(3)可随时调校年、月、日或时、分、秒
(4)可每次增减一进行时间调节
(5)可动态完整显示年份,实现真正的万年历显示
2方案论证与设计
2.1控制器部分方案论证
方案一:
可采用ALTERA公司的FLEX10K系列PLD器件。
设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。
但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。
从成本上来讲,用可编程逻辑器件来设计也没有什么优势。
方案二:
凌阳16位单片机有丰富的中断源和时基。
它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。
I/O口功能也比较强大,方便使用。
用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。
这些都方便对设计进行扩展,使设计更加完善。
成本也相对低一些。
但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高,而且就需要完成万年历这个不太复杂的设计可以不必用凌阳16位单片机来完成,采用51单片机既能够实现既定功能,成本也不高。
综合考虑最后选择用51单片机来作为中心控制器件。
硬件控制电路主要用了AT89S51芯片处理器、LCD显示器等。
根据各自芯片的功能互相连接成电子万年历的控制电路。
软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及星期显示程序等组成。
主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是电子万年历中比较重要的部分。
时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。
时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。
先给出一般年份的每月天数。
如果是闰年,第二个月天数不为28天,而是29天。
再用公式s=v-1+〔(y-1/4〕-〔(y-1/100〕+〔(y-1/400〕+d计算当前显示日期是星期几,当调节日期时,星期自动的调整过来。
闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。
在我们的这个设计中由于只涉及100年范围内,所以判断是否闰年就只需要用该年份除4来判断就行了。
温度的显示主要是靠ds18b20采集现在的温度数据,CPU读取数据进行显示,当各自的条件得不到满足时,对应的显示器状态就不发生改变,只是在满足条件的情况下,显示器的状态才变化。
图1单片机控制电路
Fig.1SCMControlcircuit
2.2显示部分的方案论证
方案一:
采用8段数码管虽经济实惠,但操作比液晶显示来说略显繁琐。
方案二:
液晶显示方式。
液晶显示效果出众,可以运用菜单项来方便操作,比较简单,所以,最后选择液晶显示方案。
图2液晶显示电路
Fig.2lcm1602circuit
2.3系统设计
2.3.1晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数
字钟的走时准确及稳定。
不管是指针式的电子钟还是数字显示的电子钟都使用了晶体
荡器电路。
图3DS1302电路
Fig.3ds1302circuit
2.3.2分频器电路
分频器电路将高频方波信号经分频后得到1Hz的方波信号供秒计数器进行计数,分频器实际上也就是计数器。
2.3.3时间计数器电路
时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器而根据设计要求,时个位和时十位计数器为12进制计数器。
2.3.4时钟电路
内部时钟电路如图所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。
定时元件通常石英晶体和电容组成的并联谐振回路,晶体振荡器选择12MHZ,电容采用30PF。
图4时钟电路
Fig.4Clockcircuit
2.3.5复位电路
影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:
(1)外因
射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰;
电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。
(2)内因
振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。
2.3.6复位电路的可靠性设计
复位是单片机的初始化操作。
单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式。
但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
2.3.7按键部分
本设计总的用了四个按扭开关作为键盘,其中一个是复位键,另三个中的其中两个是调整时间增加、减少的键,第三个是切换年、月、日及时、分、秒的显示状态并在所切换的显示状态下配合加减两个键调整时间。
图6按键电路
Fig.6Keycircuit
2.3.8蜂鸣器电路
利用AT89S51单片机的IO口控制一个8550的三极管,三极管控制蜂鸣器的电源通断。
从而实现输出声音。
图7蜂鸣器电路
Fig.7Buzzercircuit
2.3.9根据各模块的功能互相连接成电子万年历的控制电路
图8控制模块示意图
Fig.8ControlModuleSketch
3各硬件介绍
3.1AT89S51的引脚说明
AT89S51系列单片机中有PDIP,PLCC,TQFP多种封装形式。
本设计采用的是PDIP封装40管脚的单片机,各引脚如图2-2所示。
图9AT89S51的PDIP封装引脚图
Fig.9AT89S51
40个引脚中,4组8位共32个I/O口,正电源和地线两根,外置石英振荡器的时钟线两根,现在对这些引脚的功能加以说明:
(1)Pin9:
RESET/Vpd复位信号复用脚,当AT89S51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统开始复位。
而RESET由高电平下降为低电平后,系统即从0000H地址单元开始执行程序。
(2)Pin29:
PESN当访问外部程序存储器时,此脚输出负脉冲选通信号,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
(3)Pin30:
ALE/PROG地址锁存允许信号端。
单片机上电后,ALE引脚不断向外输出正脉冲信号,ALE信号可以用作对外输出时钟或定时信号。
(4)Pin31:
EA/Vpp程序存储器的内外部选通线,89S51单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
3.2发光二极管指示电路设计
发光二极管简称为LED。
由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为指示灯,或者组成文字或数字显示。
磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。
它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
不同的半导体材料中电子和空穴所处的能量状态不同。
当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。
常用的是发红光、绿光或黄光的二极管。
设计中,我使用了1个发光二极管作为电源的指示。
为了避免供给发光二极管的电流过大,使用1K的电阻进行限流。
3.3蜂鸣器电路设计
3.3.1蜂鸣器的介绍
1.蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
2.蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
3.蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。
3.3.2蜂鸣器的结构原理
1.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
有的压电式蜂鸣器外壳上还装有发光二极管。
多谐振荡器由晶体管或集成电路构成。
当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。
在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
2.电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。
振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声。
3.4LCM1602简介
图11LCM1602
Fig.11LCM1602
LCM1602采用标准的16脚接口,其中:
第1脚:
VSS为地电源第2脚:
VDD接5V正电源第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RSRW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可读忙信号,当RS为高电平RW为低电平时可以写入数据.第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚
3.5DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302的外部引脚分配如图1所示及内部结构如图2所示。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
图12 DS1302的外部引脚分配
Fig.12DS1302externalpinassignment
图13 DS1302的内部结构
Fig.13TheinternalstructureoftheDS1302
各引脚的功能为:
Vcc1:
主电源;Vcc2:
备份电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 SCLK: 串行时钟,输入; I/O: 三线接口时的双向数据线;CE: 输入信号,在读、写数据期间,必须为高。 该引脚有两个功能: 第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。 4系统硬件设计所需的器材 5V电源3V电源 AT89S51单片机1个 液晶显示器1个 DS13021个 电阻1K的2个、4.7K的2个4.7欧排阻 8550三极管 晶振12M的一个32768K的一个 电容(30P的两个) 蜂鸣器1个 LED二极管1个 22μf电容1个 轻触开关5个 5系统软件总体设计 系统的软件设计采用汇编语言,对单片机进行编程实现各项功能。 程序在WindowsXP环境下采用LCA51软件编写。 软件控制程序主要有主控程序、电子万年历的时间控制程序组成。 主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序和时间控制程序是电子万年历中比较重要的部分。 时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。 时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。 先给出一般年份的每月天数。 如果是闰年,第二个月天数不为28天,而是29天。 闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。 5.1公历与星期的换算方法 在现行公历中,历年的长度365天(平年)或者366天(闰年)都不是七的整数倍,所以日期与星期之间没有明显的对应关系。 一般情况下,不看日历牌就无法知道某月某日是星期几。 不过,它们之间还是有一定规律可循的,只要经过简单计算,或者查找表格,就可以知道与任何日期相对应的星期数。 这里列出两种方法供读者选用。 (1)公式法: 设y麦示公元年数,d表示从1月1日起算的日数。 首先求出1月0日(即上一年12月31日)的星期序数,然后与日数d相加,其和用7除,余数就是答案。 为了推导公式,我们想一想,第一年1月0日的星期序数与第二年1月0日的星期序数有什么关系? 平年365天,等于52个星期零1天,所以第二年1月0日的星期序数比第一年的多l,但这个l已包含在y中了,因为第二年的年数y比第一年大1;闰年366天,等于52个星期零二天,所以第二年1月0日的星期序数等于第一年(闰年)的星期序数加2,除了y中包含的1外,还需加修正值1。 根据这些道理我们可以推得三个公式,将式中S用7除,余数就表示星期几。 从公元1900年1月1日到公元210I年1月1日之间这201年,可用公式: S=y-1900+[(y-1901)/4]+d方括号表示取商的整数部分,对于1900年~1904年这五年方括号值为0。 这个公式是这样来的: 1900年1月0日(即1899年12月31日)是星期天。 这年是平年,以后直到2100年前都是每隔4年一闰,闰年多出的那一天,影响到下一年1月0日的星期序数,并不影响闰年本身,闰年产生的修正值应加到下一年上去,所以〔(y-1901)/4〕中,计算时用190l而不是1900。 例: 求2000年12月31日是星期几? 2000年是闰年,从1月1日算起,12月31日是第366天,所以d=366。 根据公式有: S=2000-1900+〔(2000-1901)/4〕+366 =100+〔99/4〕+366 =l00+24+366 =490 490为7的整数倍,即余数为0,所以2000年12月31日为星期日。 (2)更普遍的公式为: s=v-1+〔(y-1/4〕-〔(y-1/100〕+〔(y-1/400〕+d 对于这个公式,我们不妨这样考虑: 公历400年中有97个闰年,共365x400+97=146.097天,146,097=20,871×7,即正好是7的整数倍。 这表明某年某月某日所对应的星期序数与四百年前同月同日所对应的星期序数完全相同。 前边例中我们已算出公元2001年1月0日(即2000年12月31日)是星期日,那么,公元1601年、1201年……以及公元1年的1月0日都是星期日。 假如每个历年都是365天的话,那么,由于公元1年1月0日是星期日,只要公式S=y-1+d就可以了,但实际上闰年是366天,所以我们必须根据闰年的有关规定进行修正。 〔(y-1)/4〕是四年一闺产生的修正值。 如果只取这一个修正项,就会多修正以至造成错误,这是因为,根据公历的规定,逢百之年虽然能被4整除,却不一定是闰年,所以必须减去多修正的值,它等于〔(y-1/100)〕。 如果逢百之年都是平年,只要这两个修正项也就可以了。 可是,公元年数能被400整除的年(当然也一定能被100整除)仍是闰年,所以还必须加上〔(y-1/400)〕。 这个修正项才行。 方括号中之所以用y-1而不用y,是由于修正值是加到闰年的下一年上去,而不是加到闰年本身上。 6系统功能介绍 6.1按键处理 当系统在正常显示状态下要进行调整时,按一下切换键进入按键处理中断程序,并且此时默认的是调整年,在液晶显示器上显示N,此时按加或减按钮可以进行加减调整,若再按一下切换键,则跳到月上显示Y,同样可以调整加减,同样的道理,进入日(R)、时(S)、分(F)、秒(M)的调整,最后再按一下切换键时退出中断程序,星期系统自动的调整过来。 6.2星期计算 星期计算流程框图 图15星期计算 Fig.15Weeksdiagram 7主程序流程图 图16主流程框图 Fig.16Theprocessflowchart 8安装制作 8.1清理元器件,重点辩别认清电阻器阻值及相应代号,对电阻、电容、发光二极管、三极管、电源变压器等要用万用表一一检测。 8.2安装时,电阻器、整流二极管采用卧式插装,并近贴电路板;瓷介电容器、电解电容器、三极管等采用立式插装,也要近贴电路板。 发光二极管安装时可不讲极性,因为其供电电路为交流电源,其余有极性元件: 如电解电容器、整流二极管、稳压二极管、三极管、集成电路等必须按正确的极性插装,否则电路不会正常工作。 8.3焊完元器件后,在覆铜面剪掉多余元器件的引线,工具最好用斜口钳,可防止因剪线而使覆铜皮损坏。 8.4焊接完后,请认真对照电路原理图、安装图检查电路板上有无漏焊、错焊、短路、断路等错误现象,确认无误后才能通电。 9调试与检测安全 调试与检测过程中,要接触各种电路和仪器设备,特别是各种电源及高压电路,高压大容量电容器等,为保护检测人员安全,防止测试设备和检测线路的损坏,除严格遵守一般安全规程外,还必须注意调试和检测工作中制定的安全措施。 9.1供电安全: 大部分故障检测过程中都必须加电,所以调试检测过的设备仪器,最终都要加电检验。 抓住供电安全就抓住了安全的关键。 (1)调试检测场所应有漏电变化开关和过载保护装置,电源开关,电源线及插头插座必须符合安全用电要求, 任何带电导体不得裸露。 检测场所的总电源开关,应放在明显且易于操作的位置,并设置相应的指示灯。 (2)注意交流调压器的接法。 检测中往往使用交流调压器进行加载和调整试验。 由于普通调压器输入与输出端不隔离,必须正确区分相线与零线的接法,如图一中使用二线插头座,容易接错线,使用三线插头座则不会接错。 (3)在调试检测场所最好装备隔离变压器,一方面可以保证检测人员操作安全,另一方面防止检测设备故障与电网之间相互影响。 隔离变压器之后,再接调压器,则无论如何接线均可保证安全。 9.2测量仪器安全: (1)所用测试仪器要定期检查,仪器外壳及可接触部分不应带电。 凡金属外壳仪器,必须使用三线插头座,并保证外壳良好接地。 电源线一般不超过2米,并具有双重绝缘。 (2)测试仪器通电时若保险丝烧断,应更换同规格熔丝管后再通电,若第二次再烧断则必须停机检查。 (3)功耗较大的仪器(>500W)断电后应冷却一段时间再通电(一般3~10分钟,功耗越大时间越长),避免烧断保险丝或仪器零件。 9.3几个必须记住的安全操作观念: (1)不通电不等于不带电。 对大容量高压电容只有进行放电操作后才可以认为不带电。 (2)断开电源开关不等于断开电源。 可能相关部分仍然带电,只有拔下电源插头才可认为是真正断开电源。 (3)电气设备和材料安全工作的寿命有限。 无论最简单的电气材料,如导线、插头插座,还是复杂的电子仪器,由于材料本身老化变质及自然腐蚀等因素,安全工作的寿命是有限的,决不可无限制使用。 各种电气材料、零部件、设备仪器安全工作的寿命不等,但一般情况下,10年以上的零部件和设备就应该考虑检测更换,特别是与安全关系密切的部位。 10结束语 通过此项设计设计,本系统能完成以下功能 (1)显示公历日期功能(年、月、日、时、分、秒以及星期) (2)可通过按键切换年、月、日及时、分、秒的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子信息 专业 基于 AT89S51 单片机 数字 万年历 毕业设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)