基于89C51单片机的数字钟设计Word文档格式.docx
《基于89C51单片机的数字钟设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于89C51单片机的数字钟设计Word文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
附录3系统器件清单22
1作品的背景及意义
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
数字钟已成为人们日常生活中:
必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时自动报时及自动控制的领域
LED,对于许多的用户而言可能是一个并不算新鲜的名词了,不过这种技术存在的历史可能远远超过了我们的想像---早在19世纪末,奥地利植物学家就发现了液晶,即液态的晶体,也就是说一种物质同时具备了液体的流动性和类似晶体的某种排列特性。
现在的时代其实还是模拟时代,而未来的时代从目前的发展趋势来看是数字时代。
显示器智能化操作,数字控制、数码显示是未来显示器的必要条件。
2功能指标设计
本设计准备实现的功能:
(1)显示公历日期功能(年、月、日、时、分、秒以及星期)。
(2)可通过按键切换年、月、日及时、分、秒的显示状态。
(3)可随时调校年、月、日或时、分、秒。
(4)可动态完整显示年份,实现真正的万年历显示。
(5)可实现闹钟功能。
3作品方案设计
3.1总体方案的选择
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机有丰富的中断源准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。
I/O口功能也比较强大,方便使用。
这些都方便对设计进行扩展,使设计更加完善。
成本也相对低一些。
但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高,而且就需要完成万年历这个不太复杂的设计可以用单片机来完成,采用单片机既能够实现既定功能,成本也不高。
单片机经过1、2、3,三代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。
综合考虑最后选择用单片机来作为中心控制器件。
3.2控制方案的选择
89C51是一个8位单片机,片内ROM全部采用FLASHROM技术,晶振时钟为12MHz。
89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。
第31引脚需要接高电位使单片机选用内部程序存储器;
第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS引脚之间接0.1μF高频滤波电容。
89C51采用寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;
程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;
提供的库包含许多标准子程序,具有较强的数据处理能力;
由于具有方便的模块化编程技术,使已编好程序容易移植。
通过对C51单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。
89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
C51单片机功能框图如下:
3.3显示方案的选择
本实验中的C51单片机上采用8位8段LED数码管显示,数码管引脚如下:
LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别用字母a,b,c,d,e,f,g,dp表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的2个8数码管字样了。
如:
显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。
LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。
小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
4硬件设计
4.1模块设计
4.1.1晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。
不管是指针式的电子钟还是数字显示的电子钟都使用了晶体荡器电路。
4.1.2分频器电路
分频器电路将高频方波信号经分频后得到1Hz的方波信号供秒计数器进行计数,分频器实际上也就是计数器。
4.1.3时间计数器电路
时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器而根据设计要求,时个位和时十位计数器为24进制计数器。
4.1.4内部时钟电路
内部时钟电路是单片机的心脏,它控制着单片机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能的。
内部时钟的产生方式是利用单片机内部的振荡器,然后在引脚XTAL1(19脚)和XTAL2(18脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;
这两个电容对频率有微调的作用,晶振的频率范围可0-24MHz之间选择。
为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。
4.1.5复位电路
MCS-51单片机的复位是由外部的复位电路来实现的。
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位方式有上电复位和按键手动复位两种方式。
上电复位:
上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。
上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。
为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。
下图为复位电
路RC。
手动复位:
通过接通按钮开关,使单片进入复位状态。
复位电路虽简单,但很重要。
一个单片机系统能否正常运行,首先要检查是否能复位成功。
初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路阻容值进行实验。
4.1.6按键部分
它是整个系统中最简单的部分,根据功能要求,本系统共需五类按键:
功能移位键、功能切换键、定闹键、光标定位键、数字选择键。
并采用独立式按键。
整个按键功能选定在4*4矩阵键盘完成。
前三行前三列为数字选择键,分别代表1,2,3,4,5,6,7,8,9。
第一行第四列为功能切换键,第二行第四列为光标定位键,第三行第四列为定闹键,第四行第三四列为功能移位键,分别代表左移和右移。
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形成一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。
为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。
本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。
4.2原理电路图
功能:
1)开机时,显示00:
00:
00的时间开始计时;
2)按功能切换键,切换到年月日,按光标定位键和功能移位键,即可以修改年月日。
3)按功能切换键,切换到时分秒,按光标定位键和功能移位键,即可以修改时分秒。
4)有5个闹表可供选择,按定闹键,切换到指定闹表并设置具体时间。
4.3工作环境
硬件:
C51单片机一片,计算机一台,通讯电缆一根,数据线一根。
软件:
WindowsXP操作系统、KeilC51软件。
5软件设计
5.1主程序流程图
5.2显示模块流程图
闹铃调整模式:
秒表模式:
(分钟时钟与秒表框图相似)
6系统测试
6.1测试环境
6.2测试步骤
6.2.1硬件测试
先检测单片机与计算机的连接问题,将单片机设置为可控制状态;
由于我们拿到的是现成的C51单片机,只需检测器外部显示即可,也就是首先编先一段程序检测LED数码管是否完好。
6.2.2软件测试
软件程序的调式一般可将重点放在分模块调式上,统调式最后环节。
本次课题,通过Keil软件来调式程序。
(1)测试数字钟的基本功能:
按照原理电路图,按S1键,设置现在时间功能,按一下S8,进入时间设置,此时按S15,S16移动光标,按S1--S3,S5--S7,S9--S11设置时间。
设置完成后按S4走时。
(2)测试数字钟的闹钟功能:
S12键设置闹铃1,此时按S1--S3,S5--S7,S9--S11设置闹铃。
设置完成后按S12进入设置闹铃2;
同前一样设置,按S12进入闹铃3,同前一样设置,再按S12进入闹铃4,同前一样设置,再按S12进入闹铃5,同前一样设置,最后按S4结束设置。
(3)测试数字钟的万年历功能:
S4键进入万年历设置,此时按S15,S16移动光标,按S1--S3,S5--S7,S9--S11设置年月日。
7实验总结
通过这次的电子系统综合设计课程使我们认识到自己对单片机方面的知识了解得很少,而单片机又是生产生活中所必须的;
这次的实验本身要求不是很难,只是要在有限的时间去学习完单片机的有关只是,还要将其灵活运用在实验中是有一定难度的。
本次的设计使我们从中学到了许多东西,比如如何快速的学习一门新的知识,如何从理论到实践的转化。
通过这次课程设计我发现,只有理论水平提高了;
才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个课程设计十分有意义,我获得宝贵经验。
我们会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,并且在查找资料的过程中学到了许多,同时在协作过程中增进同学间的友谊,这次电子综合实验让我们收获颇丰。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。
自己今后将会更加的把理论知识和实际应用结合起来,提高自己的能力。
8发展前景
虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高。
随着科技的发展,数字钟不但可以显示当前的时间,而且可以显示日期、星期、世界时、室温等,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播芯片自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到了广泛的应用。
另外值得一提的是,单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
因而基于单片机的多功能数字电子钟必将成为市场的新宠儿。
参考文献:
[1]李朝青.单片机原理及接口技术(第三版)[M].北京航空航天大学出版社.2005-10.
[2]阎石.数字电子技术基础[M].高等教育出版社.2006-5.
[3]《单片机课程设计实例指导》李光才楼然笛北京北京航空航天大学出版社2004.
[4]陈正义.单片机控制实习.北京:
人民邮电出版社,2006.
[5]杨将新等.单片机程序设计及应用.北京:
电子工业出版社,2006.
[6]汪道辉.单片机系统设计与实践.北京:
[7]楼然苗等.单片机课程设计指导.北京:
北京航空航天大学出版社,2008.
[8]祁伟,杨婷.单片机C51程序设计教程与实验.北京航空航天大学出版社.2006-1.
附录1系统电路图
附录2系统软件代码
LED_SELEQU0FBFFH;
规定:
1为开,0为关
LED_SEGEQU0FAFFH
KEYEQU0F8FFH
AL1_SEDEQU48H
AL1_MINEQU49H
AL1_HOUREQU4AH
AL1_DAYEQU4BH
AL1_MONEQU4CH
AL1_YR1EQU4DH
AL1_YR2EQU4EH
AL2_SEDEQU50H
AL2_MINEQU51H
AL2_HOUREQU52H
AL2_DAYEQU53H
AL2_MONEQU54H
AL2_YR1EQU55H
AL2_YR2EQU56H
AL3_SEDEQU58H
AL3_MINEQU59H
AL3_HOUREQU5AH
AL3_DAYEQU5BH
AL3_MONEQU5CH
AL3_YR1EQU5DH
AL3_YR2EQU5EH
AL4_SEDEQU60H
AL4_MINEQU61H
AL4_HOUREQU62H
AL4_DAYEQU63H
AL4_MONEQU64H
AL4_YR1EQU65H
AL4_YR2EQU66H
AL5_SEDEQU68H
AL5_MINEQU69H
AL5_HOUREQU6AH
AL5_DAYEQU6BH
AL5_MONEQU6CH
AL5_YR1EQU6DH
AL5_YR2EQU6EH
SEDEQU40H
MINEQU41H
HOUREQU42H
DAYEQU43H
MONEQU44H
YR1EQU45H
YR2EQU46H
SHW0EQU38H
SHW1EQU39H
SHW2EQU3AH
SHW3EQU3BH
SHW4EQU3CH
SHW5EQU3DH
SHW6EQU3EH
SHW7EQU3FH
LED0EQU30H
LED1EQU31H
LED2EQU32H
LED3EQU33H
LED4EQU34H
LED5EQU35H
LED6EQU36H
LED7EQU37H
LED_FLASHEQU25H
LED_STATEEQU28H;
;
0—7每位对应LED每个灯,(1为亮,0为灭)
LED_BTONBIT20H.0
REP_LDSTEQU79H
LED_SUMEQU7AH
FLASH_PLACEEQU7BH
LED_MIDEQU7CH
DT_SUMEQU47H
DTEQU4FH
ROWEQU57H
LINEEQU5FH
R_LEQU67H
IEQU70H
INTER1EQU29H
INTER2EQU71H
DLY1EQU72H
DLY2EQU73H
LEAP_YRBIT20H.1
KEY_ABLEBIT20H.2
KEY_STATEBIT20H.4
K_SWITCHBIT22H.0
K_SETBIT22H.1
K_AL_MODEBIT22H.2
K_AL_BTONBIT22H.3
K_RLBIT22H.4
K_RRBIT22H.5
AL1BIT23H.0
AL2BIT23H.1
AL3BIT23H.2
AL4BIT23H.3
AL5BIT23H.4
ALARMEQU23H
KEY_VALUEEQU6FH
SW_FLASHBIT20H.3
CR1EQU74H
CR2EQU75H
TNEQU76H
TN_MODEBIT20H.4
ANEQU77H
SSTEQU24H
AL_MODEBIT24H.0
AL_SHOWBIT24H.1
DT_MODEBIT24H.2
SET_MODEBIT24H.3
DATEEQU78H
DT_ABLEBIT20H.5
AT_POINTBIT20H.6
ORG0000H
JMPMAIN
ORG000BH
JMPEXT0
ORG001BH
JMPEXT1
ORG0030H
MAIN:
ACALLINIT_DATA
ACALLINIT_T
LOOP1:
MOVA,CR1
CJNEA,#20,LOOP2
MOVCR1,#0
ACALL_1S_FLASH
ACALLJUG_ALARM
MOV22H,#0
LOOP2:
JNBKEY_ABLE,LOOP3
CLRKEY_ABLE
ACALLANSWER_KEY
ACALLON_K_SWITCH
ACALLON_K_SET
ACALLON_K_AL_MODE
ACALLON_K_AL_BTON
ACALLON_K_RL
ACALLON_K_RR
ACALLON_KEYVALUE
LOOP3:
JNBAL_SHOW,LOOP3_1
CLRSW_FLASH
ACALLALARM_IN
JMPLOOP4
LOOP3_1:
ACALLTIME_IN
LOOP4:
ACALLRDP_POINT
ACALLSHOW
JMPLOOP1
RDP_POINT:
JNBAT_POINT,OUT_RDP
MOVP1,#0
RET
OUT_RDP:
MOVP1,#0FFH
ON_K_SWITCH:
JNBK_SWITCH,OUT_SWH
CLRK_SWITCH
CLRAT_POINT
CPLDT_MODE
CLRSET_MODE
CLRSW_FLASH
JNBAL_SHOW,OUT_SWH
CLRAL_SHOW
CLRDT_MODE
JBDT_MODE,OUT_SWH
MOVA,FLASH_PLACE
OUT_SWH:
RET
ON_K_SET:
JNBK_SET,OUT_SHOW
CLRK_SET
CLRAT_POINT
CPLSET_MODE
JNBAL_SHOW,SET_NEXT
SET_NEXT:
JNBSET_MODE,SET_NEXT1
MOVLED_FLASH,#0FEH
MOVFLASH_PLACE,#0
SETBSW_FLASH
JMPOUT_SHOW
SET_NEXT1:
CLRSW_FLASH
OUT_SHOW:
ON_K_AL_MODE:
JNBK_AL_MODE,OUT_AL
CLRK_AL_MODE
CPLAL_MODE
JNB