本科生毕业论文(设计) 基于单片机的电子时钟设计
独 创 性 声 明
本人郑重声明:所呈交的毕业设计是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,设计中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在设计中作了明确的说明并表示了谢意。
签名:
年 月 日
授 权 声 明
本人完全了解许昌学院有关保留、使用本科生毕业设计的规定,即:有权保留并向国家有关部门或机构送交毕业设计的复印件和磁盘,允许毕业设计被查阅和借阅。本人授权许昌学院可以将毕业设计的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编设计。
本人设计中有原创性数据需要保密的部分为(如没有,请填写“无”):
签名: 年 月 日 指导教师签名:
年 月 日
摘 要
本文详细介绍了51单片机应用的数据转换显示,动态扫描显示原理,单片机的定时中断原理、从而达到学习,了解单片机相关指令在各方面的应用。电子时钟系统由AT89C51、LCD显示器、按键、二极管等部分构成,能实现日历的功能,能进行时、分、秒的显示,也具有日历计算、显示、校准、定时时间的设定、温度显示,实现三路开关定时输出等功能。
关键词:电子时钟;单片机
ABSTRACT
In this paper,detailed information on the application of 51 single.chip display data conversion, digital display principle,dynamic scan shows the principle of single.chip timing interruption principle,to achieve the learning and understanding of single.chip instruction in all aspects related to the application. Electronic clock system consists of AT89C51,LCD digital tubes, buttons, diodes and other components,to achieve the function of the calendar , can be hours, minutes and seconds display.Also has a calendar calculation, display and clock,a
calendar of the calibration,set the time from time to time、temperature display ,the realization of three.way output functions.
Key words: electronic clock;Single Chip Microcomputer
目 录
1绪 论 .......................................................................................................................................... 1 1.1课题研究的目的和意义 ........................................................................................................... 1 1.2电子时钟发展动态 ................................................................................................................... 1 2电子时钟设计硬件结构 .............................................................................................................. 2 2.1单片机简介 ............................................................................................................................... 2 2.1.1单片机的基本概念 ................................................................................................................ 2 2.1.2单片机的工作原理 ............................................................................................................. 2 2.2 AT89C51简介 .......................................................................................................................... 4 2.3 DS1302简介 ............................................................................................................................. 6 2.4温度传感器DS18B20简介 ..................................................................................................... 6 2.4.1 DS18B20的性能特点 ........................................................................................................... 7 2.4.2 DS18B20与单片机的接口电路 ........................................................................................... 7 2.5 LCD显示 ................................................................................................................................. 7 2.6电子时钟的原理图 ................................................................................................................... 8 3电子时钟软件设计 ...................................................................................................................... 9
3.1程序设计思想和相关指令介绍 ............................................................................................... 9 3.1.1计时功能的实现与中断服务程序 ........................................................................................ 9 3.1.2时钟误差分析 ...................................................................................................................... 10 3.1.3时间控制功能与比较指令 .................................................................................................. 10 3.2程序电路图 ............................................................................................................................. 10 3.2.1程序流程图 .......................................................................................................................... 10 3.2.2定时中断流程图 .................................................................................................................. 11 3.2.3调时功能流程图 .................................................................................................................. 13 4电子时钟软件仿真 ................................................................................................................. 14 4.1Protues介绍 ........................................................................................................................... 14 4.2 Proteus ISIS的仿真步骤 ...................................................................................................... 14 4.3 Keil uVision2调试软件 ......................................................................................................... 15 4.4电子时钟仿真及其结果 ......................................................................................................... 17 总结 ............................................................................................................................................... 20 参考文献 ....................................................................................................................................... 21 附 录 ........................................................................................................................................... 22 致 谢 ........................................................................................................................................... 31
1绪 论
随着现代技术的发展,尤其是数字技术的发展,用数字电路技术实现电子时钟变得越来越重要,而且贴近我们的实际生活。在现代社会各领域中,广泛需要各种不同的定时系统,来完成定时操作功能。用单片机实现定时控制,是当前实时控制的发展方向。而一些定时系统只能满足特定的需要,而定时时间是由研发者根据用户需要输入到系统存储器中的,在使用中用户无法更改。本系统采用通用单片机定时系统,具有很强的通用性,实用性.并且其定时时间可以根据需要,由用户任意更改,并且可以设定多个定时时间,极大地方便了使用者。系统选用单片开发机。具有体积小、电路简单、操作便捷、价格低廉、运用灵活、使用方便等特点。系统中,定时时间到达时将相应的LED灯点亮,此功能也可变为其他功能从而应用到更广泛的领域.例如:定时开启电源、打开阀门自动浇水等。
1.1课题研究的目的和意义
数字电子时钟是一个无处不在的电子产品,经过多年的发展技术已经相当成熟了,目前广泛应用的电子时钟大多用AT89C51单片机为核心部件制作的,可以实现对年、月、日、时、分、秒的数字显示,通过扩展可实现对电子钟所在地点的温度显示和智能闹钟功能,广泛应用于车站、医院、机场等公共场所的时间显示。与机械钟表和3V电源半机械钟表相比,数字电子钟有时间精确、减少汞电池的使用等优点。本课题将通过对市场上的电子时钟的研究,制作一个以AT89C51单片机为核心控制部件的数字式电子时钟,该时钟具有显示年、月、日、时、分、秒,正点报时,温度显示等功能,可以使人们在得到准确时间显示的同时提醒接下来的时间安排,方便人们的生活。
1.2电子时钟发展动态
二十一世纪的今天,最具代表性的计时产品就是电子时钟,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子时钟),从原有传统指针计时的方式发展为人们日常更为熟悉的数字显示方
1
式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求。电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子时钟。在城市的主要营业场所、车站、码头等公共场所使用LCD数字电子钟已经成为一种时尚,但目前市场上各式各样的LCD数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点,因此有必要对数字电子钟进行改进。
2电子时钟设计硬件结构
2.1单片机简介
2.1.1单片机的基本概念
单片机,是集CPU,ROM,RAM,计数和多种接口于一体的微控制器。自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。它体积小、重量轻、抗干扰能力强、环境要求不高,价格低廉、可靠性高、灵话性好、开发较为容易,广泛应用于智能生产和工业自动化上。单片微型计算机(Single-Chip Microcomputer),简称单片机。就是将微处理器(CPU),存储器(存放程序或数据的ROM和RAM),总线,定时器/计数器,输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上的微型计算机。由于单片机的重要应用领域为智能化电子产品。
2.1.2单片机的工作原理
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用命令的形式写下来,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,指令就
2
存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行,单片机的芯片如2-1所示。
图2-1 单片机芯片
单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路是一块大PCB板,但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别,因为单片机的通过你编写的程序可以实现高智能、高效率、以及高可靠性。
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸,对于家用PC的硬盘来讲没什么,可是对于
3
单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。
2.2 AT89C51简介
AT89C51是一种4K字节闪存可编程可擦除只读存储(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C52是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,外形及引脚排列如图2-2所示。
图2-2 AT89C51引脚图
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
4
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下所示: 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口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。采用外部时钟源驱动器件,XTAL2应
5
不接。有余输入至内部时钟信号要通过一个二分频触发器,对外部时钟信号的脉宽无要求,但必须保证脉冲的高低电平要求的宽度。
2.3 DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V,采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。 DS1302的外形及引脚排列如图2-3所示。
图2-3 DS1302引脚图
VCC1: 后备电源。
VCC2:主电源,在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。
X1,X2: 振荡源,外接32.768kHz晶振。
RST: 复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送. RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
I/O: 串行数据输入输出端(双向)。
SCLK: 输入端,只有在SCLK为低电平时,才能将RST置为高电平。
2.4温度传感器DS18B20简介
6
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
2.4.1 DS18B20的性能特点
DS18B20的性能特点:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;无须外部器件可通过数据线供电,电压范围为3.0~5.5V;零待机功耗;温度以9或12位数字量读出;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
2.4.2 DS18B20与单片机的接口电路
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式。本设计采用电源供电方式,如图2-4所示。
VCC 单片机AT89C51 DS18B20 3 3 2 2 1 1 P3.7 图2-4 DS18B20采用电源供电的电路图
2.5 LCD显示
显示电路选用AMPIRE128×64,其显示器LCD的引脚图如2-5所示。
7
图2-5 LCD的引脚图
管脚一共18个。CS1:左半屏片选端,CS2:右半屏片选端; V0:液晶显示驱动电压,通过一个电位器接到VCC;RS:数据指令选择信号,H为数据,L为指令,也叫D/I;R/W:读写选择信号,H为读,L为写;E:LCD使能端,R/W为L时,E信号下降沿锁存DB7-DB0;R/W为H时,E为H,DDRAM数据读到DB7-DB0。DB0-DB7:数据传输端口。RST:复位信号。-VOUT和V0:液晶显示驱动电压。
128×64是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
2.6电子时钟的原理图
本设计主要由单片机、时钟芯片、液晶显示器和温度传感器等几部分组成。其中时钟芯片用于显示日历、定时各种功能的实现。通过温度传感器与单片机的连接从而显示出温度,在确定了选用AT89C51型号的单片机后,就要确定外围电路如时钟输入部分、复位部分、晶振部分、显示部分、定时部分组成,其原理图如图2-6所示。
8
图2-6 电子时钟原理图
3电子时钟软件设计
3.1程序设计思想和相关指令介绍
本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。
3.1.1计时功能的实现与中断服务程序
时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0打开后,进入计时,满100毫秒后,重装定时。中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LCD中显示出来,实现时钟计时功能。累加是用指令INC来实现的。
进入中断服务程序以后,执行PUSH PSW 和PUSH A 将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的保护现场.以保护现场和恢复现场时存取
9
关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循后进先出的原则。
3.1.2时钟误差分析
开启定时器/计数器0,使之开始计时,中断后进入中断程序。自停止计数到计数又开始,中间执行了7条指令,也就是延迟了13个单周期共用时间26us,这样,每个中断的总时间应为为100.026ms,而原来定时是100ms,所以,也就是说每次中断定时多了26us.这样,可改变计数重装值,使每次中断定时时间为99.974ms,加上原来的7 条指令所用的时间,正好100ms.计数10次得1s.这样就可得到较精确的计时秒数,然后根据进率,得到时、分的值。
3.1.3时间控制功能与比较指令
系统的另一功能就是实现对执行设备的定时开关控制 ,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3置低电位,二极管截止 。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其转移条件是累加器A中的值与立即数不等则转移。
3.2程序电路图
本系统的软件设计电路图主要由程序流程图、定时中断流程图、调时功能流程图等组成。
3.2.1程序流程图
程序流程图如图3-1所示。
10
显示/定时判断/开定时中主程序 开始 断 调用程序 条件 中断 与设 按按 T0 定时 SB4? SB0? 同? 进入定时中断 程序(最高级) 中断0 中断1 秒分时日 对应P0.3/ 转换显示 调整时间 设定定时 月年进位 P0.4/P0.5 年月日(3S(改变时(三路定 输出 返回) 间值) 时)
图3-1 程序流程图
3.2.2定时中断流程图
11
定时中断流程图如图3-2所示。
定时中断 重装定时常数 加100ms 整秒 调整秒单元 整分 调整分单元 整时 调整时单元 整日 调整日单元 整月 调整月单元 整年 调整年单元 图3-2 定时中断流程图
12
3.2.3调时功能流程图
调时功能流程图如图3-3所示。
中断开始(SB0) 按键开始扫描 按SB1 按SB3 进入1路调整 调整2路 年单元 单元加1 调整3路 月单元 单元加1 调整年单元 日单元 单元加1 调整月单元 时单元 单元加1 调整日单元 分单元 单元加1 调整时单元 开 关定时 调整分单元 调整秒单元 中断返回 图3-3 调时功能流程图
13
4电子时钟软件仿真
4.1Protues介绍
Protues软件是Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前应用广泛的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者以及从事单片机教学的教师、致力于单片机开发应用的工作者的青睐。Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的设计,是目前世界上将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器,在这次设计使用的是Keil编译器。
4.2 Proteus ISIS的仿真步骤
Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件,对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在KeiluVision2中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。
Proteus ISIS的工作界面是一种标准的Windows界面,仿真界面如下图4-1所示。
14
图4-1 Proteus ISIS仿真界面
打开Proteus程序后,进入软件的主界面。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,如图4-2所示。
图4-2 元件选取界面
4.3 Keil uVision2调试软件
Keil uVision2是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,与汇编相比,C语言在功能上、结构性、可
15
读性、可维护性上有明显的优势。
Keil uVision2软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keil uVision2来开发您的单片机应用程序。
Keil uVision2 的使用流程如下图4-3所示。
打开软件Keil C51 新建工程文件 新建源代码文件类型为.c或.asm 调试、编译并生成.hex文件 图4-3 Keil的基本使用流程
Keil uVision软件的调试界面如下图4-4所示。
图4-4 Keil uVision2 程序调试界面
单片机的类型选取界面如下图4-5所示,本设计选取的是AT89C51单片机。 16
图4-5 单片机类型选取界面
本设计利用软件Keil uVision2,在新建Keil项目时选择AT89C51单片机作为CPU,将源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成.HEX文件,此文件的选取界面如图4-6所示。
图4-6 HEX 文件的选取界面
4.4电子时钟仿真及其结果
当未按下任何按钮时电子时钟的仿真原理图如图4-7所示。
17
图 4-7 电子时钟的仿真原理图
当启动运行后电子时钟的仿真图如图4-8所示。
图4-8 电子时钟显示结果
18
当按下闹铃开关及温度按钮时的仿真图如图4-9所示。
图4-9 电子时钟的闹铃及温度功能显示
19
总结
大学五年的时光我们基本上都在学习理论知识中度过,很少有机会将这些理论知识用于实践中,而这次的毕业设计正好给了我们展示这五年学业成果的好机会。
在整个的设计过程中,实际上是自己对五年学习的总结,它不但加深了自己对理论知识的深化认知,更让自己学会了如何去正确运用理论知识解决实际问题,也就是“从理论中来,到实践中去”,从中也使自己学到和积累了许多经验。
我的设计还具有很大的扩展空间,例如在硬件电路上增加彩灯,在不同的时间有不同的显示,使其更加美观。同时还可以与红外遥控连接,这样就省去了很多麻烦,我们可以利用遥控器对其进行远距离的操作。
通过这次设计使我认识到我对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。本次设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。
20
参考文献
[1] 李全利.单片机原理及应用技术(第二版)[M].北京:高等教育出版社,2000. [2] 韩志军,王振波,沈晋源.单片机应用系统设计[M].北京:机械工业出版社,2006. [3] 李光飞,楼然苗,胡佳文,谢象佐.单片机课程设计实例指导[M].北京:航空 航天大学出版社,2008.
[4] 李朝清.单片机原理与接口技术[M].北京:航空航天大学出版社,2000. [5] 余永权.ATMEL89系列单片机应用技术[M].北京:航空航天大学出版社,2008. [6] 周志敏.周纪海等编.LED驱动电路设计与应用[M].北京:人民邮电出版社,2006. [7] 袁宇正.电子爱好者实用电子制作[M].北京:人民邮电出版社,2007. [8] 华成英,童诗白.模拟电子技术基础[M].北京:高等教育出版社,2004.
[9] 孙育才.MCS-51系列单片机微型计算机及其应用[M].南京:东南大学出版社,2005. [10]杨振江,杜铁军,李群编著.流行单片机实用子程序及应用实例[M].西安:电子科技大学出
版社,2002.
21
附 录
电子时钟的设计程序:
SEC EQU 32H MIN EQU 31H HOUR EQU 30H DAY EQU 35H MON EQU 34H ;--------初始化赋值
MOV YEAR , #02 MOV MON , #05 MOV DAY , #01 MOV HOUR #00 YEAR EQU 33H MIN_1 EQU 41H HOUR_1 EQU 42H DAY_1 EQU 43H MON_1 EQU 44H YEAR_1 EQU 45H
MIN_11 EQU 40H HOUR_11 EQU 46H DAY_11 EQU 47H MON_11 EQU 48H YEAR_11 EQU 49H ;***********************
ORG 0000H LJMP MAIN
ORG 0003H LJMP SHOW
ORG 000BH LJMP TIME ORG 0013H
LJMP CHANGE ;------主程序
ORG 0030H MAIN:
MOV MIN , #00 MOV SEC , #00
CLR 40H CLR 41H CLR 42H CLR 43H CLR 44H CLR 45H CLR 46H CLR 47H CLR 48H CLR 49H ;-------开中断
MOV TMOD , #01H MOV TL0, #0B0H MOV TH0, #3CH CLR P3.0
MOV 20H, #0AH SETB PT0 SETB TR0 SETB ET0 SETB EX0 SETB EX1
22
SETB EA ;------显示、定时器启动判断 LOOP:
MOV R1 , #30H MOV R4, #01H MOV R3, #03H
NEXT:
MOV A , @R1 MOV B , #10 DIV AB SWAP A ORL A, B
MOV P0, A MOV P2 , R4 INC R1 MOV A, R4
RL A MOV R4 , A
LCALL DE5SM DJNZ R3, NEXT
;------判断定时输出(只编写了一路)
CJNE R7, #88H , LOOP
;---------开
MOV A, YEAR
CJNE A, YEAR_1, LOOP_1 MOV A, MON CJNE A, MON_1, LOOP_1 MOV A, DAY
CJNE A DAY_1,LOOP_1 MON_AA:
MOV R5, MON CJNE R5, #11, MON_BB MOV R5, DAY CJNE R5, #31, L5 INC MON MOV DAY , #1
L5: LJMP OUT MON_BB:
MOV R5, DAY CJNE R5 , #32, L6 INC YEAR MOV MON, #1 MOV DAY , #1
L6: LJMP OUT
;-----校对时间、定时调整中断 CHANGE :
PUSH PSW PUSH ACC PUSH B PUSH 00H MOV p2, #00H
SHOW_1:
MOV A , #01H MOV P0, A
MOV P2, #0FFH LCALL READ CJNE A, 01H, SHOW_1 LCALL DE250SM CJNE A, #0FBH,ttT1 LJMP SB3_1
ttT1: CJNE A, #0FEH, SHOW_1
23
AJMP SHOW_2
;-------二组显示 SHOW_2:
MOV A, #02H MOV P0, A MOV P2, #0FFH; LCALL READ
ORL A, B MOV P0, A ; MOV P2, #01H; LCALL READ LCALL DE250SM
CJNE A, 01H, SHOW_4 CJNE A, #0FEH, KEY2_1 CJNE A, 01H, SHOW_2 LCALL DE250SM CJNE A, #0FBH ,T2 LJMP SB3_2
T2: CJNE A, #0FEH, SHOW_2
AJMP SHOW_3 ;_------三组显示 SHOW_3:
MOV A, #03H MOV P0, A
MOV P2, #0FFH LCALL READ
CJNE A, 01H, SHOW_3 LCALL DE250SM CJNE A, #0FBH, T3 LJMP SB3_3
T3: CJNE A, #0FEH, SHOW_3
AJMP SHOW_4 ;------即时年单元调时、显示 SHOW_4:
MOV A , YEAR MOV B, #10 DIV AB SWAP A
AJMP MON_CH KEY2_1:
CJNE A, #0FDH ,SHOW_4 LCALL YEAR_AD AJMP SHOW_4 ;
MON_CH:
MOV A , MON MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #02H; LCALL READ LCALL DE250SM
CJNE A, 01H, MON_CH CJNE A, #0FEH, KEY2_2 LJMP DAY_CH KEY2_2:
CJNE A, #0FDH, MON_CH
LCALL MON_AD LJMP MON_CH
DAY_CH:
MOV A , DAY
24
MOV B, #10 DIV AB SWAP A AJMP HOUR_CH
MIN_CH:
MOV A , MIN ORL A, B MOV P0, A ; MOV P2, #04H LCALL READ LCALL DE250SM
CJNE A, 01H , DAY_CH CJNE A, #0FEH, KEY2_3 LJMP HOUR_CH KEY2_3:
CJNE A, #0FDH, DAY_CH
LCALL DAY_AD LJMP DAY_CH HOUR_CH:
MOV A , HOUR MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #01H; LCALL READ LCALL DE250SM
CJNE A, 01H, HOUR_CH CJNE A, #0FEH, KEY2_4 AJMP MIN_CH KEY2_4:
CJNE A, #0FDH, HOUR_CH
LCALL HOUR_AD
MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ;
MOV P2, #02H;
LCALL READ
LCALL DE250SM CJNE A, 01H, MIN_CH CJNE A, #0FEH, KEY2_5 AJMP SEC_CH KEY2_5:
CJNE A, #0FDH, MIN_CH
LCALL MIN_AD LJMP MIN_CH
SEC_CH:
MOV A , SEC MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A MOV P2, #04H
LCALL READ LCALL DE250SM
CJNE A, 01H, SEC_CH CJNE A, #0FEH, KEY2_6 LJMP OUT_A
25
KEY2_6:
CJNE A, #0FDH, SEC_CH
DIV AB SWAP A
CLR SEC ORL A,B LJMP SEC_CH
;-------按SB2\\定时器年单元1子程序
MOV P0, A MOV P2, # 02H
SB3_2: LJMP SHOW_2 LCALL READ SB3_3: LJMP SHOW_3 LCALL DE250SM SB3_1:
MOV A , YEAR_1 MOV B , #10 DIV AB SWAP A ORL A, B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM CJNE A, 01H, SB3_1
CJNE A, #0FBH, KEY2_7 LJMP MON_111 KEY2_7:
CJNE A, #0FDH, SB3_1
INC YEAR_1 MOV R5, YEAR_1 CJNE R5, #09,SB3_1 MOV YEAR_1 , #00H AJMP SB3_1 ; ;-------月单元加1 子程序 MON_111:
MOV A , MON_1 MOV B , #10
CJNE A, 01H, MON_111
CJNE A, #0FBH, KEY2_8 LJMP DAY_111
KEY2_8:
CJNE A, #0FDH, MON_111
INC MON_1 MOV R5, MON_1
CJNE R5, #13, MON_111 MOV MON_1, #01H
AJMP MON_111 ;_------日单元加1 子程序
DAY_111:
MOV A , DAY_1 MOV B , #10 DIV AB
SWAP A ORL A, B MOV P0, A MOV P2, #04H LCALL READ LCALL DE250SM CJNE A, 01H, DAY_111
CJNE A, #0FBH, KEY2_9 LJMP HOUR_111
26
KEY2_9:
CJNE A, #0FDH, DAY_111
MOV B , #10 DIV AB
INC DAY_1 SWAP A MOV R5, DAY_1
ORL A, B
CJNE R5, #32, DAY_111 MOV P0, A MOV DAY_1 , #01H
MOV P2, #02H
AJMP DAY_111 LCALL READ ;-------按SB2 时单元加1 子程序 HOUR_111:
MOV A , HOUR_1 MOV B , #10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM
CJNE A, 01H, HOUR_111
CJNE A, #0FBH, KEY2_10 LJMP MIN_111 KEY2_10:
CJNE A, #0FDH, HOUR_111 INC HOUR_1 MOV R5, HOUR_1
CJNE R5, #24, HOUR_111 MOV HOUR_1, #00H
AJMP HOUR_111 ;-------分单元加1 子程序 MIN_111:
MOV A , MIN_1 CALL DE250SM
CJNE A, 01H, MIN_111
CJNE A, #0FBH KEY2_11
AJMP OFF_CH KEY2_11:
CJNE A, #0FDH, MIN_111
INC MIN_1 MOV R5, MIN_1
CJNE R5, #60, MIN_111 MOV MIN_1, #00H
AJMP MIN_111 ;------- 年单元调整 OFF_CH:
MOV A , YEAR_11 MOV B , #10 DIV AB SWAP A
ORL A, B MOV P0, A
MOV P2, #01H LCALL READ LCALL DE250SM
CJNE A, 01H, OFF_CH
27
CJNE A, #0FBH, KEY2_F7 DAY_OFF: LJMP MON_OFF KEY2_F7:
CJNE A, #0FDH, OFF_CH
INC YEAR_11 MOV R5,YEAR_11
CJNE R5, #09, OFF_CH MOV A , DAY_1 1 MOV B , #10 DIV AB SWAP A ORL A, B MOV P0, A MOV YEAR_11, #00H AJMP OFF_CH ; ;-------月单元加1 子程序 MON_OFF:
MOV A , MON_11 MOV B , #10 DIV AB SWAP A ORL A, B MOV P0, A MOV P2, #02H LCALL READ LCALL DE250SM
CJNE A, 01H, MON_OFF
CJNE A, #0FBH, KEY2_F8 LJMP DAY_OFF KEY2_F8:
CJNE A, #0FDH, MON_OFF
INC MON_11 MOV R5, MON_11
CJNE R5, #13, MON_OFF MOV MON_11, #01H
AJMP MON_OFF ;_------日单元加1 子程序
MOV P2, #04H LCALL READ LCALL DE250SM
CJNE A, 01H, DAY_OFF
CJNE A, #0FBH KEY2_F9 LJMP HOUR_OFF
KEY2_F9:
CJNE A, #0FDH, DAY_OFF
INC DAY_11 MOV R5, DAY_11 CJNE R5, #32,DAY_OFF
MOV DAY_11, #01H
AJMP DAY_OFF ;-------按SB2 时单元加1 子程序
HOUR_OFF: MOV A , HOUR_11 MOV B , #10 DIV AB SWAP A ORL A, B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM
28
CJNE A, 01H, HOUR_OFF ;-------开、关定时
CJNE A, #0FBH, KEY2_F10 ON_1: LJMP MIN_OFF KEY2_F10:
CJNE A, #0FDH, HOUR_OFF INC HOUR_11 MOV R5, HOUR_11
CJNE A, #0FBH, MIN_OFF K1: MOV A, #88H
MOV R7, A MOV P0, A
MOV P2, #0FFH
CJNE R5, #24,HOUR_OFF MOV HOUR_11, #00H
AJMP HOUR_OFF ;-------分单元加1 子程序 MIN_OFF:
MOV A , MIN_11 MOV B , #10 DIV AB SWAP A ORL A, B MOV P0, A MOV P2, #02H LCALL READ LCALL DE250SM CJNE A, 01H, MIN_OFF
CJNE A, #0FBH, KEY2_F11 LJMP ON_1 KEY2_F11:
CJNE A, #0FDH, MIN_OFF
INC MIN_11 MOV R5, MIN_11
CJNE R5, #60, MIN_OFF MOV MIN_11, #00H
LJMP MIN_OFF LCALL READ LCALL DE250SM
CJNE A, 01H, ON_1 CJNE A, #0FBH, KEY2_12 LJMP OUT_A KEY2_12: CJNE A, #0FDH, K1
k2: MOV A, #00H MOV R7, A MOV P0, A MOV P2, #0FFH; LCALL READ LCALL DE250SM
CJNE A, 01H, K2 CJNE A, #0FBH, KEY2_13
LJMP OUT_A KEY2_13: CJNE A, #0FDH, K2 LJMP K1 OUT_A: POP 00H
POP B POP ACC
POP PSW
29
RETI ;_------读取按键程序
CJNE R6, #60, OU1 MOV MIN , #00
READ:MOV A , P1 OU1: RET
MOV R1, A LCALL DE10MS MOV A, P1 RET ;_----延时程序 DE5SM:
PUSH 01H MOV R1, #0FFH DJNZ R1, $ POP 01H RET DE250SM:
PUSH 02H PUSH 00H
MOV R0, #0FFH DEL: MOV R2, #0FFH
DJNZ R2, $ DJNZ R0, DEL POP 00H POP 02H RET
;_---调整时间进位程序 MIN_AD:
INC MIN MOV R6, MIN
HOUR_AD:
INC HOUR MOV R6 , HOUR CJNE R6 , #25 , OU2 MOV HOUR , #00
OU2: RET DAY_AD:
INC DAY MOV R6, DAY
CJNE R6 , #32, OU3 MOV DAY , # 01H
OU3: RET MON_AD:
INC MON MOV R6, MON
CJNE R6, #13, OU4 MOV MON , #01H
OU4: RET YEAR_AD:
INC YEAR MOV R6, YEAR
CJNE R6, #09, OU5 MOV YEAR ,#00H
OU5: RET END
30
致 谢
在这里首先非常感谢这次我的毕业设计指导老师武老师,在武老师的不遗余力,悉心的指导下使得我的毕业设计按时顺利的完成,在我迷茫的时候给我指明了道路,在我困惑不解的情况下给予及时的帮助和指导。
很感谢和我同组的伙伴们,正是我们大家齐心协力,互相帮助,相互合作,合理的分工才使得我们所作的毕业设计课题有不易到简单并使之顺利的完成,同时因做毕业设计也给我们带来了无穷的快乐和喜悦,使我们共同进步和提高。
从得到题目到查找资料,从对题目的研究设定到电路图的设计,电路图的设计到程序设计,在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它是对我的钻研精神,创新精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做设计的意义所在,和我一样真正投入了身心去做的人也一定会有同样的感触。
毕业设计培养了严肃认真和实事求是的科学态度。而且培养了吃苦耐劳的精神以及相对应的工程意识,同学之间的友谊互助也充分的在毕业设计当中体现出来了。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
最后,再次感谢武老师和我的同组伙伴们在我的设计过程中给予我的指导和帮助!
31
因篇幅问题不能全部显示,请点此查看更多更全内容