单片机原理及应用——电子时钟.doc

上传人:laozhun 文档编号:4147268 上传时间:2023-04-07 格式:DOC 页数:22 大小:1.17MB
返回 下载 相关 举报
单片机原理及应用——电子时钟.doc_第1页
第1页 / 共22页
单片机原理及应用——电子时钟.doc_第2页
第2页 / 共22页
单片机原理及应用——电子时钟.doc_第3页
第3页 / 共22页
单片机原理及应用——电子时钟.doc_第4页
第4页 / 共22页
单片机原理及应用——电子时钟.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机原理及应用——电子时钟.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用——电子时钟.doc(22页珍藏版)》请在三一办公上搜索。

1、 单片机原理及应用电子时钟 课程设计报告 学院:信息工程学院 专业班级:通信工程10-1班 姓名:牛爱 刘欢 焦航 指导教师:葛振 目 录1. 设计题目.1 1.1课题研究背景.1 1.2课题主要内容.12. 设计任务.13. 设计思路.2 3.1系统框图设计.2 3.2系统电路原理设计.34. 硬件原理图和连接图.4 4.1总原理图.4 4.2AT89C51.4 4.3复位电路.7 4.4按键电路.7 4.5LED显示电路.85. 程序流程图.9 5.1主程序.9 5.2数码管显示.9 5.3定时器/计数器T0中断服务程序.9 5.4按键处理程序.116. 程序清单.127. 实验总结.17

2、8. 设计心得.189. 参考资料.191.设计题目 1.1课题研究背景 电子时钟有着很长的历史,在1957年,Ventura发明了世界上的第一块电子表后,他就奠定了电子时钟的基础,电子时钟开始迅速地发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒为一分钟进一,满六十分为一小时进一,满二十四小时清零,从而达到计时的功能。基于51单片的电子时钟,外围电路简单易于实现,性价比高,是实现电子时钟的不错选择。 1.2课题主要内容本次课程设计基于单片机内部资源设计出的一款性价比高的电子时钟系统,主要涉及到以下几个研究方向: (1

3、) 熟悉MCS-51单片机内部定时器的工作方式; (2) 掌握单片机内部中断系统的工作模式; (3) 了解MCS-51单片机外部电路的一般设计方法; (4) 熟悉汇编语言的编写规则;(5) 掌握单片机内部ram地址分配方法; (6) 掌握特殊功能寄存器的用法; (7) 熟悉Proteus ISIS及Keil uVision2软件的使用。 2.设计任务我们采用应用广泛的AT89C51作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。在六位数码显示器上显示时,分,秒。选用定时器每隔0.125秒产生一次中断,在内存中设定四个单元,存放0.125秒,秒,分,时,每隔0.125秒对这

4、些单元中的内容进行必要的修改。存放时分秒及0.125秒的数值的四个单元选用片内RAM:(50H) 0.125秒的个数(51H) 秒(BCD码)(52H) 分(BCD码)(53H) 时(BCD码)晶振频率为6MHz,使用方式1定时0.125秒,则定时器的初始值为0BDCH。可每中断8次更新一次时间显示,每隔两次中断(0.25秒)进行一次键盘检查。此外还要实现对时间的调整功能,89C51的P1.0、P1.1、P1.2外接三个独立按键,当有键按下时,分别使秒单元清零,时,分内容加一。3.设计思路 3.1系统框图设计 根据电子时钟能够实现的功能,采用单片机内部资源,设计出了系统原理框图,如图3-1所示

5、: 图3-1 在单片机内部构建三个模块:控制模块、译码模块、定时模块,用以实现自动计数、译码显示功能。单片机外部构建三个电路:复位电路、外部按钮电路、显示电路,用以实现对单片机内部计数控制以及译码输出的正确显示。该电子时钟是将秒、分、时显示在人的视觉器官面前的一种计时装置。故将计时周期设置为24小时,当显示满刻度是23时59分59秒时,数码管显示为0。为了确保时间正常校对,在系统中设有校对按钮,用以实现对数码管显示的正确调整。 3.2系统电路原理设计在本次的设计中对6MHZ的系统时钟进行定时计数,初值设为0BDCH。形成定时时间为0.125s。用片内RAM的50H单元对0.125s计数,计8次

6、1秒钟到,然后对秒计数器51H单元加1,秒计数器加到60后就向分进位,则分计数器52H单元加1而秒计数器51H单元清零;分计数器加到60后又向时进位,则时计数器53H单元加1而分计数器52H单元清零;时计数器加到24则时计数器清零。然后把秒、分、时计数器分成十位和个位放到6个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位、分十位、分个位、秒十位、秒个位。4. 硬件原理图和连接图 4.1总原理图根据电路原理框图设计出电路原理图如图4-1所示,由6MHz的晶振给单片机提供固定的时钟频率,通过k0、k1、k2可以对显示电路时间进行位设定。 图4-1 4.2AT89C51 AT8

7、9C51是一种带4K字节FLASH存储器的低电压、高性能CMOS的8位微处理器,俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。如图4-2所示: 图4-2 由于电路原理中只用到单片机的p0、p1、p2口,所示下面对这三个端口进行详细介绍。 1)、P0口:P00P07统称为P0口,在不接片外存储器与不扩展I/O接口时,作为准

8、双向输入/输出接口。在接有片外存储器或扩展I/O接口时,P0口分时复用为低8位地址总线和双向数据总线。P0口是一个三态双向口,由一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成。在输入数据时,应人为地先向P0口写“1”,定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 2)、P1口:P10P17统称为P1口,可作为准双向I/O接口使用。P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4LSTTL门电流。P1口管脚写入“1

9、”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 3)、P2口:P20 P27口统称为P2口,一般可以作为准双向I/O接口使用,在接有片外存储器或扩展I/O接口且寻址范围超过256字节时,P2口用作高8位地址总线。P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利

10、用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 4.3复位电路计算机在启动运行时都需要复位,复位时使中央处理器CPU和内部其他部件处于一个确定的初始状态,从这个状态开始工作。 AT89C51单片机有一个复位引脚RST,高电平有效。在时钟电路工作以后,当外部电路使得RST端出现两个机器周期(24个时钟周期)以上的高电平,系统内部复位。复位有两种方式:上电复位和按钮复位。在此次的设计中,我采用按键复位,如图4-3所示: 图4-3只要RST保持高电平,AT89C51单片机将循环复位。复位期间,ALE

11、、PSEN输出高电平。RST从高电平变为低电平后,PC指针变为0000H,使单片机从程序存储器地址为0000H的单元开始执行程序。当单片机执行程序出错或进入死循环时,可按复位按钮重新启动。 4.4按键电路独立式键盘是各按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线的按键是不会影响其他的I/O接口线。在本次设计中,按键为K0、K1、K2,他们分别与单片机P1.0、P1.1、P1.2接口线相接。通过按键控制显示器的显示。图4-4所示: 图4-4 4.5 LED显示电路在本次的设计中,采用的8位的数码管显示器。数码管如果按照段数分可为七段数码管和八段数码管,八段数码管比七段数码管多一个

12、发光二极管单元,也就是多了一个小数点的显示;如果按能够显示多少个“8”分类的话,也可以可分为1位、2位、4位等数码管。 如果按照发光二极管单元的连接方式又可以分为共阳极数码管和共阴极数码管。共阳极的数码管是将所有发光二极管的阳极接到一起后就形成公共阳极(COM)的数码管,共阳极数码管在应用时要将公共极(COM)接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴极数码管是将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴极数码管在应用时应将公共极(COM)接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字

13、段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。如图4-5所示: 图4-55.程序流程图 5.1主程序 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。 5.2数码管显示 本设计有8个数码管,从右到左为妙、分、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。 5.3定时器/计数器T0中断服务程序 T0用于计时,选中方式一,重复定时,定时时间设为0.

14、125s,定时时间到则中断,在中断服务程序中用一个计数器对0.125s计数,计8次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。流程图如下: 设置初始值,启动下一个0.125s是开始T0为方式1设中断次数为8,清计时单元允许T0中断调用显示子程序进入功能程序按下键否开始中断返回0.125s计数器加一秒单元加1,125ms计数器清0分单元加1,秒单元清0时单元加1,分单元清0时单元清0125ms计数器=8?秒单元=60?分单元=6

15、0?时单元=24?主程序流程图T0中断服务程序NONONONO 5.4按键处理程序按键设置为:如果没有按键,则时钟正常走时。当按下K0键时,时钟复位,从零开始计数;按K1键时,秒清零;按K1键时,分清零,再按时实现加一功能;按K2键时,时清零,再按时实现加一功能。6. 程序清单 ORG 0000H LJMP TIM ORG 000BH ;中断服务程序入口 T0 LJMP LOOP2 ORG 0030H ;主程序入口TIM: MOV SP, #2FH MOV TMOD, #01H ;设置T0定时为方1 MOV IE, #0 SETB ET0 SETB EA ;打开T0中断 MOV TH0, #0

16、BH ;定时0.125s MOV TL0, #0DCH SETB TR0 ;启动T0 MOV 50H, #0 ;各时间存储单元清零 MOV 51H, #0 MOV 52H, #0 MOV 53H, #0 CLR PSW.5 ;清除键盘调整标志位LOOP1: CALL DISP2 ;调用显示子程序 JBC TF0, LOOP2 JMP LOOP1 ;主程序循环;-LOOP2: MOV TL0, #0DCH MOV TH0, #0BH INC 50H MOV A, 50H CJNE A, #02H, EQ04 SJMP JIANEQ04: CJNE A, #04H, EQ06 SJMP JIANE

17、Q06: CJNE A, #06H, EQ08 SJMP JIANEQ08: CJNE A, #08H, _END_T0 MOV 50H, #0 MOV A, 51H ;秒计数 ADD A, #1 DA A MOV 51H, A CJNE A, #60H, JIAN MOV 51H, #0ADDF: ;分计数 MOV A, 52H ADD A, #1 DA A MOV 52H, A CJNE A, #60H, JIAN MOV 52H, #0 JB PSW.5, _END_T0 ;PSW.5为1,是按键调整,时不变ADDH: ;时计数 MOV A, 53H ADD A, #1 DA A MOV

18、 53H, A CJNE A, #24H, JIAN MOV 53H, #0 JB PSW.5, _END_T0JIAN: JB PSW.5, _END_T0 MOV P1, #0FFH MOV A, P1 ;读取键盘状态 CPL A ANL A, #00000111B JZ _END_T0 ;为0则无键按下 SETB PSW.5 JB ACC.0, CLRS ;为1则是P3.0有键按下 JB ACC.1, ADDF JB ACC.2, ADDHCLRS: MOV 50H, #0 MOV 51H, #0_END_T0: CLR PSW.5 ;清除按键调整标志位 RETI;-DISP2: ;显示

19、子程序,把51H 52H 53H的内容送到LED显示器 CALL FEN_JIE2 CALL DISPLAY RET;-FEN_JIE2: MOV A, 51H ANL A, #0FH MOV 7DH, A MOV A, 51H SWAP A ANL A, #0FH MOV 7CH, A MOV A, 52H ANL A, #0FH MOV 7BH, A MOV A, 52H SWAP A ANL A, #0FH MOV 7AH, A MOV A, 53H ANL A, #0FH MOV 79H, A MOV A, 53H SWAP A ANL A, #0FH MOV 78H, A RET;-

20、DISPLAY: MOV R0, #7DH MOV 7EH, #0FEH MOV 7FH, #6_DP_L: MOV A, R0 MOV DPTR, #_MA_BIAO MOVC A, A+DPTR MOV P0, A ;P0段选 P2位选 MOV P2, 7EH XRL P2, #255 ;取反否则加三极管 MOV A, 7EH RL A MOV 7EH, A DEC R0 LCALL DL1MS MOV P2, #0 ;关闭显示 DJNZ 7FH, _DP_L ;循环显示六个位 RET_MA_BIAO: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H DB 92H, 82H,

21、 0F8H, 80H, 90H DB 88H, 83H, 0C6H, 0A1H, 86H DB 8EHDL1MS:DEL1: MOV R7, #0 DJNZ R7, $ RETEND7. 实验总结在本课题中,采用AT89C51单片机作为主控制器,6MHZ晶振作为振荡源,P0口作为输出字段码,P2口作为输出位选码,采用共阳的LED数码管,P1.0为秒清零按键,P1.1为分加1键,P1.2为时加1键。片内RAM的78H到7DH单元为LED数码管的显示缓冲区51H,52H,53H分别为秒、分、小时计数单元。50H为0.125s计数器。仿真实现如图7: 图78. 设计心得 经过两周的时间以及对整本教材

22、的知识总结,把课程设计分成了硬件和软件两大模块。 总的来说,硬件部分很好入手,电路也比较简单,主要涉及的是简单的按键、电容、电阻和数码管。在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。在整个设计过程中学到了团体精神和独立解决问题的重要性,为以后的求职之路打下了基础。9. 参考资料1 张毅刚 单片机原理与应用.高等教育出版社 20102 李春晖 单片机原理与接口技术实验指导书 20073 林立 单片机原理与应用 电子工业出版社 2009 4 李守中 51单片机开发入门与经典实例 人民邮电出版社 2007 5 胡汉才 单片机原理与接口技术 清华大学出版社 1996 6 杨加国 单片机原理与应用及C51程序设计(第二版) 清华大学出版 2009 7 杜树春 基于Proteus和Keil C51的单片机设计与仿真 电子工业出版社 20128 陈海宴 51单片机原理及应用:基于Keil C与Proteus 北京航空航天大学出版社 2010

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号