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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电子数字闹钟课程设计.docx

1、电子数字闹钟课程设计摘 要随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。为了在观测时间的同时,能够了解其它与人类密切相关的信息,比如温度、星期、日期等,电子数字钟诞生了,它集时间、日期、星期和温度功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。该电子万年历主要采用AT89S51单片机作为主控核心,由DS1302时钟芯片提供时钟、LED动态扫描显示屏显示。AT89S51单片机是由Atmel公司推出的,功耗小,电压可选用46V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电

2、功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。此外,该电子万年历还具有时间校准等功能。关键词:时钟电路;LED动态扫描;单片机AT89S51前 言电子技术和微型计算机的迅速发展促进微型计算机测量和控制技术的迅速发展和广泛应用,单片微型计算机就是将中央处理单元、存储器、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。单片机由硬件系统

3、与软件系统组成。硬件系统是指构成微机系统的实体与装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。软件系统是微机系统所使用的各种程序的总称,人们通过它对微机进行控制并与微机系统进行信息交换,使微机按照人的意图完成预定的任务。软件系统与硬件系统共同构成完整的单片微型计算机系统,两者相辅相成,缺一不可。数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来

4、了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。一、设计目的1.培养设计能力和解决实际问题的能力,增强自学能力,2.通过设计完整的 单片机系统初步掌握组成系统、编程、调试等能力;3.通过本电子钟的设计初步了解单片机应用开发研制过程,软件和硬件设计的方法。二、设计要求及基本功能:本电子定时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有电子时钟、日期显示、定时闹铃等多种功能

5、,本设计产品性能卓越,功能丰富,采用LED显示更加直观,是一个比较实用的电子产品。主要功能:1.可以显示24小时制“时时-分分-秒秒”,LED显示;2.可以显示日期,具有万年历功能;3.可以方便的设定定时时间,修改定时时间,整点报时,闹铃功能,预设定时时间到将发出闹铃声,还可停止闹铃;4.能够修改时钟时间的时分秒,能够修改日期的年月日。三、数字钟的系统总体方案与说明设计方案按照系统设计功能的要求,初步确定系统由主控模块、显示驱动及显示模块和键盘接口模块共3个模块组成,电路系统构成框图如图所示。 主控芯片使用51系列AT89S51单片机,显示驱动采用MAX7219,MAX7219 是微处理器和共

6、阴极八段八位LED 数码管显示、图条/柱图显示或64 点阵显示接口的小型串行输入/输出芯片。片内包括BCD 译码器、多路扫描控制器、字和位驱动器和88 静态RAM。外部只需要一个电阻设置所有LED 显示器字段电流。MAX7219 和微处理器只需三根导线连接,每位显示数字有一个地址由微处理器写入。允许使用者选择每位是BCD 译码或不译码。显示模块采用普通的共阴极四位一体八段LED数码管。四、数字钟的硬件设计 4.1系统结构框图与电路图的设计接口电路逻辑图图3 8255与89S51的连接图5 键盘与数码管利用8255并行控制开关量图6 拨动开关、按钮与发光二极管的控制4.2 各单元硬件设计说明本次

7、课程设计的硬件系统主要器件有:89S51单片机,8255A芯片,8个数码管,按键开关,拨键开关,发光二极管,蜂鸣器,以及其他相关器件。本系统中,89C51与两片8255A相连,51单片机程序的运行控制8255A的各端口输入输出、电平的高低进行控制以便更有效地对数码管、发光二极管、开关以及其他外部电路器件进行更有效和合理的控制。4.2.1 AT89S51单片机的简介AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制

8、造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。兼容标准MCS-51指令系统的AT89S51单片机是一个低功耗、高性能CHMOS的单片机,片内含4KB在线可编程Flash存储器的单片机。它与通用80C51系列单片机的指令系统和引脚兼容。AT89S51单片机片内的Flash可允许在线重新编程,也可用通用非易失性存储编程器编程;片内数据存储器内含128字节的RAM;有40个引脚,32个外部双向输入/输出(I/O)端口;具有两个16位可编程定时器;中

9、断系统是具有6个中断源、5个中断矢量、2级中断优先级的中断结构;震荡器频率0到33MHZ,因此我们在此选用12MHZ的晶振是比较合理的;具有片内看门狗定时器;具有断电标志POF等等。P3口除了通用I/O口功能外,还有替代功能,如表5.3所示表5.3 P3口的替代功能引脚符号说明P3.0RXD串行口输入P3.1TXD串行口输出P3.2/INT0外部中断0P3.3/INT1外部中断1P3.4T0T0定时器的外部的计数输入P3.5T1T1定时器的外部的计数输入P3.6/WR外部数据存储器的写选通P3.7/RD外部数据存储器的读选通RST:复位端。当振荡器工作时,此引脚上出现两个机器周期的高电平将系统

10、复位。 4.2.2 LED数码显示器采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样、清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。综上所述,所以采用了LED数码管作为显示。4.2.3键盘控制电路按照键盘与CPU的连接方式可以分为查询按键和矩阵式键盘。查询式按

11、键及其接口查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂。故这种形式适用于按键数量较少的场合。本设计除了时间设置时,设数值电路外都采用查询式独立按键。矩阵式键盘及其接口矩阵式键盘又称行列式键盘,有n个行线和m个列线,经限流电阻接+5V电源上,按键跨接在行线和列线上,nm行列结构可构成mn个按键,组成一个键盘。与独立式按键相比,mn个按键只占用m+n根I/O口线,因此适用于按键较多的场合。在

12、时间数值设置采用矩阵式键盘。当无键闭合时,相应的I/O之间开路。当有键闭合时,与闭合键相连接的两条I/O口线之间短路。判断有无键按下的方法是:第一步,置列线相关I/O口为输入态,从行线相对应的I/O口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,置行线相关I/O口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等待近按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。按键开关去抖动问题按键开关在电路中的连接如图所示。按键未按下时,A点电位为高电

13、平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图2-11b所示,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。键操作和键抖动消除抖动的不良后果的方法有硬、软件两种。为了节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。根据抖动特性,在第一次检测到按键按下后,执行一段延时510ms让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态

14、电平,则确认真正有键按下。当检测到按键释放后,也要给510ms的延时,待后延抖动消失后才转入该键处理程序。五、数字钟的软件设计5.1地址空间及端口分配地址空间作用20H赋值循环次数30H存放键盘扫描结果40H存放时的十位和个位41H存放分的十位和个位42H存放秒的十位和个位43H存放闹铃的时的十位和个位44H存放闹铃的分的十位和个位45H存放闹铃的秒的十位和个位67H-6EH日期显示缓存区77H-7EH时间显示缓存区端口用途P3.2定义蜂鸣器实现闹钟PA(8255I)数码管显示控制PB(8255I)数码管选择显示控制PC(8255I)44矩阵键盘接口PA(8255II)8个发光二极管接口PB(

15、8255II)8个独立键盘接口PC(8255II)8个拨钮接口5.2 软件整体架构分析5.2.1总体架构说明:程序总体框图:总体软件设计说明:在计时开始时各存储器上的内容会随着程序的运行而改变,所以只要对各存储器上的内容进行调用和显示就可以实现时间显示,闹钟显示以及日期的显示。由于数码管的显示特点,在进行调用显示之前,须将各存储器的内容进行转化,即数据的高低位分离,高四位和第四位的数值分别存放在不同的显示缓冲区内,进而进行显示调用。5.2.2主程序功能描述及分析、主程序流程图主程序启动定时后,检测按键,并进行时间显示,循环检测按键。第一片8255(连接发光二极管与开关)的端口取为PA口:FD0

16、0H,PB口:FD01H,PC口:FD02H,控制口:FD03H。控制字应使得PA口输出,PB、PC口输出,为89H。第二片8255(连接数码管)的端口地址取为FE00HFE03H,为用PC口控制键盘,控制字取为81H.PA口用于送字段码,PB口用于送字位码。5.2.3各子程序功能描述及子程序入口出口、各程序流程图1.显示时间子程序:显示程序又包含三个隐含的子程序:延时子程序、拆字子程序、显示子程序。存在时间寄存器中的数值是一个16进制数,需要经过DIV语句,进行拆数,再分别送至数码管数据缓存区。12在数码管中显示为横杆,用来作为时分秒的分隔符。延时子程序:该子程序是为了实现八个七段数码管显示

17、的顺序显示选通时间,2ms的显示时间频率是的显示效果稳定,同时作为按键开关扫描判断去抖动拆字子程序:将空间51h、52h、53h内的秒时分拆成高低字节分配到,30h、31h、33h、34h、36h、37h实现时分秒的显示。显示子程序:将拆分好的高低位时分秒拆分码放入相对应的数码管,调用tab选通相应的七段数码显示时分秒当前数字。2.计时子程序:该程序功能是使得秒程序走动,走到59后进位分,后变00从新开始计时,分走到59后进位时,分从新开始00计时,时走到23,分走到59,秒走到59后进入重新日期周期计时。3.显示日期子程序:当时每向天增1,都要进行大小月天数判断,当月根据算法计满向年增14.

18、设置时间子程序使用独立键盘设置,实现增1减1功能。5.报警子程序:把当前时间与设定的闹铃时间比较,当一致时,将p3.2口清零,蜂鸣器报警,直至拨下SW1拨钮,停止响铃6.6键盘设置时间:使用键盘设置数值,需要用键盘扫描子程序。六、调试记录及说明:1、系统操作说明书:拨钮SW0:切换闹铃设置PB0设置时,PB1设置分,PB2设置秒拨钮SW1:切换闹铃停止设置当闹铃时,拨上此拨钮,闹铃停止拨钮SW2:切换时间按键设置PB0增1设置时,PB1增1设置分,PB2增1设置秒,PB3减1设置时,PB4减1设置分,PB5减1设置秒拨钮SW3:切换日期显示拨上此拨钮,显示当前日期拨钮SW4:切换日期设置PB0

19、增1设置年,PB1增1设置月,PB2增1设置日拨钮SW5:切换键盘设置时位按住PB0,可以用键盘设置任意值到时的十位,但是由于小时是24进制的,所以此处只能设置0,1,2,当超过2时,输入的任何数都默认为0。按住PB1,用键盘输入任意的0-9到时的个位。拨钮SW6:切换键盘设置分位按住PB0,可以用键盘设置任意值到分的十位,但是由于分钟是60进制的,所以此处只能设置0-5,当超过5时,输入的任何数都默认为0。按住PB1,用键盘输入任意的0-9到分的个位。拨钮SW7:切换键盘设置秒位按住PB0,可以用键盘设置任意值到秒的十位,但是由于秒是60进制的,所以此处只能设置0-5,当超过5时,输入的任何

20、数都默认为0。按住PB1,用键盘输入任意的0-9到秒的个位。2、调试:用一段实验板测试程序,烧到AT89S51芯片中,可以看到数码管循环电量,发光二极管发光正常等,说明实验板是完好的。默认为走时状态,按24小时制分别显示“时时-分分-秒秒”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。在闹铃设置时,本来想蜂鸣器响5s用一个延时程序来实现5s的定时,声音响五秒可以实现,但是,当进入延时程序后,数码管全灭了。解决:将延时程序改成调用显示程序,响铃的时间为显示程序占用的机器周期。LED数码管的断码错乱,原因出于没有认真看清数码管引脚信息。解决:重新排列LED数码管,即可解决出现在的断码

21、或乱码。烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在返回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。没有考虑到闰年时的情况。解决:首先是将闰年判断程序流程图设计好,之后根据这个流程图编写闰年判断程序,并作为系统程学的一个子程序,在执行主程序时进行调用,最后解决了此问题.程序设计中涉及到大量的运算和子程序调用,地址空间容易产生越界解决:运用合理的调用语句可以解决此问题。总结:这学期开

22、设的单片机课程和此次的设计关联甚大,通过此设计,复习和巩固所学过的知识,可以对所学过的知识进行系统的回顾和总结。但是,在课堂学的只是很基础的指令操作,如何把它联系到实际呢,这就是此次课程设计的目的。课堂的知识是远远满足不了设计的要求的,这就需要我们主动去找寻更多的资料,了解更多的知识,这也在无形的拓展我们的知识面。一个实际的产品,远不如它看起来这么简单,虽然我做的是最简单的数字钟,但是细节的考虑,任何一个功能的实现,都会牵扯出许多的问题,有些是逻辑思维的不严谨,有些是硬件电路的问题,都需要耐心思考,冷静分析。在进行程序调试的时候,由于此次程序相对于平日的联系,算是较长的了,所以要进行分块调试,

23、也是高效的体现。程序在编写的时候,就要进行地址空间的分配,防止程序中的寄存器出现冲突,使系统出现无法预知的错误。即使软件运行是无误的,硬件测试也可能是没有结果的,所以产品的设计,离不开硬件和软件。参考文献:1张国安微机控制实验与课程设计指导书M北京:电子工业出版社,200382李江全,曹卫彬,郑瑶,郑重计算机典型测控与串口通信开发软件应用实践M北京:人民邮电出版社,2008.3李广弟,朱月秀,王秀山.单片机基础M北京:北京航空航天出版社,200174谢维成,杨加国单片机原理与应用及C51程序设计 M.北京:清华大学出版社,20072附件(程序清单) ORG 0000H LJMP MAINMAI

24、N: LCALL DEL MOV DPTR,#0FE03H ;开片选端 MOV A,#89H MOVX DPTR,A MOV DPTR,#0FD03H ;开片选端 MOV A,#8BH MOVX DPTR,A MOV 45H,#10 ; MOV 44H,#0 ;设置初始值 MOV 43H,#0 MOV 6EH,#2 ;预先设置显示缓冲区 MOV 6DH,#0 MOV 6CH,#1 MOV 6BH,#0 MOV 6AH,#0 MOV 69H,#6 MOV 68H,#2 MOV 67H,#8 MOV TMOD,#01H ;设置中断方式 MOV 20H,#28H ;设置中断次数 MOV 40H,#2

25、3 ;闹铃缓冲区预先设置时 MOV 41H,#59 ;分 MOV 42H,#56 ;秒 SETB ET0 MOV TH0,#0B0H ; 置初值 MOV TL0,#03CH SETB TR0HERE: JNB TF0,HERE ;判断1秒时间是否来到 CLR TF0 LCALL XIANSHI ;调用显示时间子程序 LCALL IT0P ;调用时间增1子程序 LCALL CHANGE1 ;是否进入设置时间子程序 LCALL CHANGE2 ;是否进入显示日期子程序 LCALL CHANGE3 ;是否进入设置日期子程序 LCALL NAOLIN ;设置闹铃时间子程序 LCALL WARNING

26、;调用是否警报子程序 LCALL STOP ;调用是否停止响铃子程序 LCALL BAOSHI LCALL JIANPAN1;是否使用键盘输入数据LCALL JIANPAN2LCALL JIANPAN3 SJMP HERE*计数子程序:*IT0P: PUSH PSW ;进堆栈 PUSH ACC MOV TH0,#0B0H ;重新赋初值 MOV TL0,#03CH DJNZ 20H,RETURN ;循环次数不为0则返回 MOV 20H,#28H ;重新赋值循环次数 MOV A,#01H ;准备增 ADD A,42H ;让秒单元增1 MOV 42H,A ;秒增1 CJNE A,#60,RETURN

27、;秒不超过60则返回 MOV 42H,#00H ;把秒单元清零 MOV A,#01H ;准备增1 ADD A,41H ;让分单元增1 MOV 41H,A ; 分增1 CJNE A,#60,RETURN; 分不超过60则返回 MOV 41H,#00H ;分单元清零 MOV A,#01H ;准备增1 ADD A,40H ; 让时单元增1 MOV 40H,A ;时增1 CJNE A,#24,RETURN ; 时不超过24返回 MOV 40H,#00H ;时清零 MOV A,67H ; 准备让天单元增1 INC A MOV 67H,A ;天增1 AJMP RETURN RETURN:POP ACC ;

28、出堆栈 POP PSW RET *显示时间子程序:*XIANSHI:MOV A,42H ;显示时间子程序 MOV B,#10 ;赋值除数10给B DIV AB MOV 77H,B ;将秒的个位存入77H单元 MOV 78H,A ;将秒的十位存入78H单元 MOV A,41H ;分离分单元的个位和十位 MOV B,#10 ;赋值除数10 DIV AB MOV 07AH,B ;将分的个位存入7AH单元 MOV 07BH,A ;将分的十位存入7BH单元 MOV A,40H ;分离时单元的个位和十位 MOV B,#10 ;赋值除数10 DIV AB MOV 7DH,B ;将时的个位存入7DH单元 MO

29、V 7EH,A ;将时的十位存入7EH单元 MOV 79H,#10 ;赋值12给剩下的数码管让它显示- MOV 7CH,#10LP2: MOV R0,#77H ;用数码管显示77H7EH里的数值子程序 MOV R3,#01HLP3: MOV A,R0 MOV DPTR,#TBL MOVC A,A+DPTR MOV DPTR,#0FE00H MOVX DPTR,A ;送位码 MOV DPTR,#0FE01H MOV A,R3 MOVX DPTR,A ;送段码 INC R0 MOV A,R3 RL A MOV R3,A LCALL DELAY JNB ACC.0,LP3 ;控制循环让数码管都显示一遍 RET*设置时间子程序:*CHANGE1:MOV DPTR,#0FD02H ;判断是否进入设置时间子程序 MOVX A,DPTR MOV DPTR,#0FD00H MOVX DPTR,AFD1: JNB ACC.2,FD0 ;当拨码盘的第三位为1时进入设置,否则跳出 MOV DPTR,#0FD01H MOVX A,DPTR JNB ACC.2,MIAO ;当按键的第3位按下时进入秒增1子程序 JNB ACC.1,FEN ;当按键的第2位按下时进入分增1子程序 JNB ACC.0,SHI ;当按键的第1位按下时进入时增1子程序

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

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