基于单片机的多功能定时器毕业论文 - 图文

更新时间:2024-04-23 15:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科生毕业设计(论文)

题 目:基于单片机的多功能定时器

姓 名:

学 号:

系 别:

专 业:

年 级:

指导教师:

年 月 日

华侨大学厦门工学院 毕业设计(论文)

独创性声明

本毕业设计(论文)是我个人在导师指导下完成的。文中引用他人研究成果的部分已在标注中说明;其他同志对本设计(论文)的启发和贡献均已在谢辞中体现;其它内容及成果为本人独立完成。特此声明。

论文作者签名: 日期:

关于论文使用授权的说明

本人完全了解华侨大学厦门工学院有关保留、使用学位论文的规定,即:学院有权保留送交论文的印刷本、复印件和电子版本,允许论文被查阅和借阅;学院可以公布论文的全部或部分内容,可以采用影印、缩印、数字化或其他复制手段保存论文。保密的论文在解密后应遵守此规定。

论文作者签名: 指导教师签名: 日期:

基于单片机的多功能定时器

基于单片机的多功能定时器

摘要

基于模拟技术的定时器已逐步被淘汰,基于数字技术的新一代产品已取而代之。随着单片机性价比的提高, 随着单片机使用范围的扩大,数字技术定时器不仅可以实现复杂的控制能力,又能够对家用电器进行控制。既有强大的功能,又很容易使用,同时体积有小,在不同的情况下,可以制作出不同功能的微电子产品。

实现定时开关电源插座的关键是如何实现定时,如今定时器得到广泛应用,不少家用电器都安装了定时器来控制开关或工作时间;工业控制中常需要定时的装置,输出和采集信号,还有人们需要合理的定时控制空调来节省有限的电能;如此等等。因此,我们试着从这些方向作进一步的研究。

定时器有机械和电子两种,机械式采用同步电机计时,成本低,但走时精度差、寿命短;电子式采用液晶显示,时间精度高、寿命长,但操作复杂、成本高。特别是精度要求高的控制系统和数据采集系统,更要求精确的定时操作。

本设计采用单片机定时功能应用在插座开关上,主要从单片机和可控开关的进行设计,来实现电源开关定时系统,使其准确显示定时指示灯的亮灭,且能显示时钟精确到时分。该系统简单实用,操作简单,且定时器不工作时可以当普通电源插座用,既具备传统的电源插座的功能,又能达到节省能源、优化资源的目的。以日常生活中所使用的电热水器为例,我们一般都24小时通电,其中很大部分电能将消耗在电热水器的反复加热上,极大的浪费了电资源。如果把电热水器的电源插头连接到自动开关插座上只需用前通电,可实现高效率节电,而且可以使热水在最高温度状态下使用,大大提高了能量使用效率。

关键词: 单片机,定时器,可控开关

I

华侨大学厦门工学院 毕业设计(论文)

Multi function timer based on single chip microcomputer

Abstract

Simulation technology based on the timer has been eliminated gradually, a new generation of digital technology products replace sb. based on. With the increasing use of cost-effective

single-chip microcontroller, range gradually expanded, based on digitaltechnology powerful timer can realize complex control ability, but also be able to homeappliances control. It has powerful functions, at the same time, the volume is small, easy to use, in different situations can be converted into a variety of different functions of theelectronic products.

Key switch power supply socket is how to achieve timing, the timer is widely

used today,many household appliances are installed the timer to control the switch or working time;industrial control often requires a timing device, output and the signal acquisition, andpeople need timing control air conditioning and reasonable to save the limited energy and so on. Therefore, we try to further study the direction.

Timer two mechanical and electrical, mechanical synchronous motor timing, cost is low, but the travel time accuracy, short service life; electronic using liquid crystal display, high precision, long life time, but the operation is complex, high cost. Especially the control system of high precision and data acquisition system, more accurate timing operationrequirements.

This design uses a microcontroller timer function used in the switch socket, mainly carries on the design from the single chip microcomputer and a controllable switch, the power switch to achieve timing system, to accurately display the time the bright lights off, and can display the clock is accurate to the time. The system is simple and practical, simple operation, and the timer does not work when the ordinary power socket, power supply socket which has the function of traditional, but also can save

energy, optimize the resources to. Electric water heater in daily life are used as an example, we have 24 hours of electricity, which is the most power consuming repeated heating in the electric water

heater, which is a great waste of power resources. If the power plug of electric water heateris connected to the automatic switch socket just before electricity, can achieve high efficiency energy saving, but also can make the water used in the high temperature state,greatly improving the efficiency of energy use.

Keywords: single chip microcomputer, a timer, a controllable switch

II

基于单片机的多功能定时器

目 录

第1章 绪论............................................................... 1

1.1定时开关电源插座的系统概述......................................... 1 1.2本设计的方案思路................................................... 1 1.3 研发方向和技术关键 ................................................ 2 1.4 主要技术指标 ...................................................... 3 第2章 总体设计........................................................... 4

2.1可控开关设计的选择................................................. 4

2.1.1 可控硅器件................................................... 4 2.1.2 继电器器件................................................... 5 2.1.3 方案选取..................................................... 5 2.2时钟信号的实现..................................................... 6 2.3译码方案的选取..................................................... 6 第3章 硬件设计........................................................... 7

3.1可控开关电路....................................................... 8 3.2振荡电路........................................................... 9 3.3单片机STC12C5A60S2 ................................................ 9 3.4 DS1302时钟芯片的电路............................................. 10 3.5 LCD1602电路...................................................... 11 第4章 软件设计.......................................................... 13

4.2 主程序流图 ....................................................... 13 4.3中断模块说明...................................................... 14 第5章 制作与调试........................................................ 15

5.1硬件电路制作...................................................... 15 5.2调试.............................................................. 15 结 论................................................................... 16 致 谢.................................................................... 17 参考文献................................................................. 18 附录一 硬件电路实物图.................................................... 19 附录二 硬件电路原理图.................................................... 20 附录三 部分关键源码及解释................................................ 21 附录四 基于单片机的外文文献翻译.......................................... 35

III

基于单片机的多功能定时器

第1章 绪论

1.1定时开关电源插座的系统概述

在这次定时开关电源插座电路系统中,本设计只要利用单片机STC12C5A60S2作为系统主芯片,定时开关的目的是通过外围电路控制可控开关的通断。STC12C5A具有功能强大、体积较小、价格低、运行速度快等优点,对于集成度较高的控制电路此芯片非常适用[1]。通过译码器来实现数码管的显示和键盘键入程序控制可控开关。主板电路包括STC12C5A 、键盘与显示、可控开关和输入与输出口等电路的组成。

1.2本设计的方案思路

本系统设计实现了通过定时电路来控制电源插座开关的通断,和时钟电路的显示为主要目的;以时钟信号的检测,信号的控制和数据的显示为主要设计内容。

定时器的本设计系统中的主要部分,时间控制器既可以通过纯硬件来实现,也可以通过软硬件结合实现,一般有四种形式实现,如下列举。 (1)采用石英钟专用芯片的实现形式

采用的石英钟专用计时芯片实现的电子钟,具有实现较简单、计时精度高的特点[2]。石英计时芯片(简称“机芯”)比较多,常见的有D60400、SM5546A和STP5512F等。现由5512F的2秒输出信号作为秒加法电路的计时脉冲,可实现电子时钟。5512F的引脚如图1-1所示:

1 2 3 4 V+ SC AK SC1 M0 图1-1 5512F引脚图 8 7 6 5 其中,引脚7和8为外接晶振及振荡电路,引脚1接电源正极,电源为1.5伏,引脚3和4原为指针用步进电机线圈的输出驱动端,这里可用3脚作为脉冲输出,频率决定于外接晶振的频率[3]。 (2)用NE555时基电路的形式

采用NE555时基电路或其他震荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或微处理器的外部中断输入信号,才可构成电子时钟。由555构成的秒脉冲发生器电

1

华侨大学厦门工学院 毕业设计(论文)

路如图1-2所示。输出的脉冲信号V0的频率F=1.443/(RA+2RB)×C,可利用调节这3个参数,使输V0的频率为精确的1Hz。但这种定时器精度低,脉冲周期由外接的电容和电阻决定,常用于灯光控制等。

图1-2 基于555的秒脉冲发生器

(3)采用单片机常用的时钟芯片

以前,一般采用并行的实时时钟芯片计时、EEPROM用作存储器,但一些微小型智能控制设备,并行实时时钟芯片封装方式大,加上EEPROM,占用扩展线多,使电路结构复杂无法简化[4]。串行实时时钟芯片DS1302采用实时时钟和静态RAM,使用串行通信,方便单片机接口与地。可以在工业控制中使用,还可以应用到一般的时钟计数上。 (4)用软件来实现定时

通常利用单片机或PLC内部的定时器,编写一定量的源程序来设计,常称为软件定时器。

电子定时器是一般数字电路搭建而成,要用十多片数字电路才能组成一台四位数定时器,电路结构复杂、体积大,并且功能有一定的局限性。在进行定时电路设计时,假设需要定时的时间不是很精确且时间较短,通常采用555定时集成电路来实现。如果,若定时的时间较长(如超过1小时)就采用专用的集成电路定时器会方便一些,而且使用定时器专用集成电路所设计的应用电路更简单,同时调试也容易。本设计的主硬件电路是采用单片机,电路的外围简单,配合软件设计,通过编程来实现定时,译码与时间显示等,使得定时器插座有进一步的功能选择[5]。

1.3 研发方向和技术关键

(1)定时器方案的合理选取,来提高设计的精度; (2)直流交流电压的转换; (3)多路优先译码器的选取及扩展;

(4)与微机连接进行程序的汇编输入,进行定时功能的调试; (5)显示部分的数码管的四位一体共阴接法。

2

基于单片机的多功能定时器

1.4 主要技术指标

(1)具有电子钟功能,显示为四位数

(2) 可设定定时起动(开始)时间与定时结束(关断)时间 (3)定时开始,指示灯亮;定时结束,指示灯灭 (4)定时范围可以选择 (5) 开关次数:≥2次/天 (6) 时钟日差:≤±2秒/天 (7)工作温度范围:-10o~50o (8)工作条件:AC220V

(9)使用范围:家用电源开关等[6]

3

华侨大学厦门工学院 毕业设计(论文)

第2章 总体设计

单片机种类较多,但每片单片机均由控制器、存储器、运算器、输出端口、输入端口等组成,内部结构都相同。不同厂商制成了各种型号的单片机。每一款单片机不论功能如何,都是通过I/O口来作用的[7],可根据所需要的型号来进行选择,引脚从8脚到更多。本设计用体积小的单片机定时器来控制电源开关插座的通电和断电,并还能作为一台数字时钟来显示时间。根据需要选用了一片40条引脚的STC12C5A60S2单片机,属于8051系列单片机,带64KB闪存和1280字节RAM ,内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S)。其设计的几个基本模块如下图2-1,包括:插头插座(孔型),控制开关,单片机系统,键盘输入,显示电路等部分。

可控开关 单片机芯片 LED屏显示 插座 键盘

图2-1 定时开关电源插座的原理框图

2.1可控开关设计的选择

本设计中的定时操作是通过可控开关收到外部电路的控制信号后延时通断的。其中延时实现方式分类一般按常规可分为以下几种:a、通电延时;b、接通延时;c、断电延时;d、断开延时;e、(间隔)定时;f、往复延时;g、星三角启动延时;h、程序式延时[8]。

2.1.1 可控硅器件

选用普通晶闸管又叫可控硅,一种以硅单晶为基本材料P1N1P2N2四层三端器件,由于它特点类似于真空闸流管,所以通称为硅晶体闸流管,简称可控硅T[9]。

在使用性能上,可控硅具有单向导电性、比硅整流元件的可控性更好。它只有导通和关断两种状态,普通可控硅在电路中属于可控整流。经常遇到的二极管整流电路是不可控整流电路。假如把二极管换成可控硅,就成了可控整流电路。

4

基于单片机的多功能定时器

2.1.2 继电器器件

继电器是一种电子控制器件,它具有输入回路和输出回路,一般用在自动控制电路中,事实上它是用小电流去控制大电流的一种“自动开关”[10]。在电路中起着安全保护、自动调节、转换电路等作用。

其中电磁继电器是在输入电路内电流的作用下,由机械部件的相对运动产生预定响应的一种继电器。电磁继电器的工作原理和特性:电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。 继电器一般有两股电路,为低压控制电路和高压工作电路。

磁簧继电器磁簧继电器是以线圈产生磁场将磁簧管作动之继电器, 为一种线圈传感装置。因此磁簧继电器之特征、小型尺寸、轻量、反应速度快、短跳动时间等特性。当整块铁磁金属或者其它导磁物质与之靠近的时候,发生动作,开通或者闭合电路。磁簧继电器结构坚固,触点为密封状态,耐用性高,可以作为机械设备的位置限制开关,也可以用以探测铁制门、窗等是否在指定位置[11]。

还可选用时间继电器,时间继电器是一种利用电磁原理和机械原理实现延时控制的控制电器,一般可分为通电延时型和断电延时型两种类型。断电延时时间继电器里有延时常开接点、延时常闭接点、瞬时常开接点和瞬时常闭接点。 其原理如下: 当断电延时时间继电器的“线圈”断电开接点—时, 延时常开接点——经过设定时间后断开 ;延时常闭接点——经过设定时间后接通;瞬时常开接点——立刻断开; 瞬时常闭接点——立刻接通。

2.1.3 方案选取

可控硅优点如下:阻断电压高,漏电流小,导通时压降小,电流容量大,过载能力强,可以控制过零关断。缺点:静态及动态的过载能力差;容易受干扰而误导通成本高,控制相对复杂,容量小,功耗大,发热严重;继电器优点:技术优等,触点容量大,成本较低,近似零功耗损耗,低发热。缺点:开断涌流,无法用于移向调压类的精细开断电路中。

综合以上方案考虑及优缺点,最后本设计使用电磁继电器进行制作,继电器的结构简单,消耗电能少,价格低,且控制较易。这种继电器制作的电灯电风扇等的定时开关或插座开关都得到了广泛的应用。

5

华侨大学厦门工学院 毕业设计(论文)

2.2时钟信号的实现

在我们使用的单片机RAM中,对于显示缓冲区的设置极为重要,时分秒值就是从里面取出来的,RAM中有4个但愿的显示缓冲区,有7AH、7BH、7CH[12]。此次设计中我们不显示秒。现在我们一共有4位LED来显示时和分的数值,还有时钟的校准部分。并设置码表通过程序,来让要显示的数值通过查表传输到LED上。通过单片机芯片STC12C5A60S2的P3.5,P3.6和P3.7的3个I/0口外接控制开关来对时和分的修改。其中P3.5每按一次时或分数值加1,P3.6每按一次减1,实现对时钟的修改。

时钟的最小单位是秒,若晶振使用6MHz的,最大计时只能达到131ms,所以把每个定时时间设成125ms,溢出8次及1000ms。采用中断方法计8次于1秒的计时设计。

在此设计中的一个主要问题是在计时累加上,秒分时本身是十进制的,秒到分是六十进制的,一天又是24小时,是二十四进制,所以在秒分时的实现方法上是通过软件累加来达到。

2.3译码方案的选取

本设计显示电路分为三部分:键盘电路,输入端译码电路和输出控制端数码显示电路。显示电路端译码通过硬件译码或软件译码都可以实现。本设计在设计思路上优先采用了软件译码来实现。

本设计将三个显示模块和段码均采用软件设计实现。

与硬件译码相比,硬件译码优点是扩展的地址空间连续,有完整空间(64K);缺点是电路的结构相对复杂,需要使用74138等译码器电路[13]。

由于单片机的逻辑控制能力优等,其译码逻辑可以通过编程随意设定,不会受到硬件逻辑的限制,大大的简化了电路结构的复杂程度。因此采用软件译码。

综上所述,本设计LED译码和显示模块采用软件译码实现,通过C语言编写。C语言在结构性、功能性和可移植性都很强,是单片机系统优先选择的变成语言。比起汇编语言,C语言编写程序更符合人的思考方式,开发者可以不接触硬件的情况下,更专注于考虑功能和算法的问题,相对的减少了开发和调试的时间[14]。C语言模块化的程序设计使得在单片机应用系统中,程序段结构更清晰,更容易维护和调试。不同的功能模块,分别对应不同的入口参数和出口参数,为了减少程序代码的长度,将一些重复调用的程序编成函数,增加可读性和移植性。

6

基于单片机的多功能定时器

第3章 硬件设计

本设计的硬件电路包括单片机STC12C5A60S2电路、键盘输入与数码显示输出、可控开关和振荡等电路组成。主要有以下模块:单片机控制数码显示模块,继电器模块,电源模块(如图3-1).电磁继电器接收脉冲电平做出指令吸合断开的判断,从而控制电源的通断。软件编程通过串口输入来实现键盘和LCD显示等模块的功能,本设计使用的是C语言编程,进而控制译码和数码管显示(硬件电路图见图4-2)。

本系统中的核心单片机STC12C5A60S2,和8051指令、管教完全兼容,是新一代的8051单片机,速度上快了8-12倍。工作电压5.5V-3.3V,工作频率0-35MHz,芯片上集成1280字节的RAM[15]。通用I/O口有36、40、44个。STC12C5A60S2芯片具有体积小、功能强、运行快的特点。单片机的P3.7口连接键盘电路可以对参数进行自由的设定,同时通过串口连接4位LCD数码管,分别显示时分。

5V输入 继电器5V输入 模块 P1.7控制信号 单片机控制LCD模块 图3-1本设计的两大模块

图3-2 定时部分硬件电路图

7

华侨大学厦门工学院 毕业设计(论文)

如图3-2,电源模块输出直流5V电压于单片机工作;4个按钮开关和单片机芯片管脚(RST,P3.5,P3.6,P3.7)连接。分别对应复位控制(SW1)、执行加键(SW2)、执行减键(SW3)、操作控制(SW4)。

3.1可控开关电路

图3-3继电器SRD-05VDC-SL-C引脚图

图3-4继电器模块电路图

继电器是一种非机械方式控制的开关,是一种以电磁力来控制切换方向的电门。在通电线圈下,产生电磁的软铁核心吸下横向摆臂,在摆臂的右侧又使得接点相接,达到通路。本设计实用继电器的型号是SRD-05VDC-SL-C,5接脚,如图3-3。在抵押控制电路时,其中一边的两脚的衔铁动静触点分别闭合或断开;正常工作下的继电器的工作电压为直流5V,从而触发并控制延迟递增。

在本设计中,可以把继电器跟电源插座连接起来,脚4接电源插座的火线,3脚接单片机控制信号引出脚,脚5和控制信号引出脚连共地端。当脚3和5之间无电压接入时候,脚4和1导通,电源插座不启动,而电源插座的工作与否通过定时操作,软件编程设置程序实现。

8

基于单片机的多功能定时器

3.2振荡电路

图3-5振荡电路原理图

振荡电路是把电源的直流电能,转变成一定频率的交流信号的电路。作用是产生交流电振荡,作为信号源。

振荡电路有分为两种:LC回路和RC回路。一般情况下,中、高频振荡器用LC振荡电路,频率高,体积小,LC元件值也小,有较好的选频特性,输出波形纯。在低频振荡电路中,频率低,LC元件值很大。所使用的电感线圈体积大,铁芯线圈的性能差,所以用RC振荡电路就较合适。振荡器电路,就是在放大器上加上正反馈电路组成。在要求频率很稳定的振荡电路中,就要用石英晶体振荡器,这在电脑、电子表等已经使用极普遍。

3.3单片机STC12C5A60S2

单片机虽然种类很多,但是每片的内部结构都由控制器、运算器、存储器、输入端口、输出端口组成,可谓是大同小异。功能强大的单片机都是通过I/0口来运作,引脚从8脚到近百脚都有。本文介绍了一款用单片机设计的定时器,除了能计时,还能做数字时钟。

9

华侨大学厦门工学院 毕业设计(论文)

STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。工作电压:5.5V-3.3V;工作频率范围:0 - 35MHz;片上集成1280字节RAM通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55Ma;ISP(在系统可编

程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。

图3-6 单片机STC12C5A60S2引脚图

3.4 DS1302时钟芯片的电路

图3-7 DS1302时钟芯片引脚图

10

基于单片机的多功能定时器 图3-8 DS1302时钟电路图

在如图的引脚图中,SCLK一直是输入端;I/O为串行数据输入输出端,它为双向接口;该芯片是以VCC2为主、VCC1为辅的电源运行形式,不管是在主电源是否正常运作时,该芯片均能正常运行,而这主电源与辅电源的工作互动形式为:当VCC2大于VCC1+0.2V时,该芯片是由VCC2供电的,当VCC2小于VCC1时,该芯片是VCC1供电的;X1与X2为振荡源,外接的晶振为32.768kHz;启动数据传送的是由RST输入驱动置高电平,而RST是复位/片选线,在芯片运行时,只有当SCLK为低电平时可以将RST置为高电平否则RST必须保持低电平。RST输入的两种功能分别是:控制逻辑,允许地址/命令序列送入移位寄存器;RST提供终止单字节或多字节数据的传送手段。传输数据时的操作情况:当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

表 3-1 1602 液晶引脚功能

编号 符号 1 2 3 4 5 6 引脚说明 编号 符号 9 10 11 D2 D3 D4 D5 D6 D7 引脚说明 Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O VSS 电源地 VDD 电源正极 VL RS 液晶显示偏压信号 数据/命令选择端(H/L) 12 13 14 15 16 R/W 读/写选择端(H/L) E D0 D1 使能信号 Data I/O Data I/O

3.5 LCD1602电路

图3-9 LCD1602电路图

7 8 BLA 背光源正极 BLK 背光源负极

引脚3叫做液晶显示偏压信号,用来调整LCD屏的对比度,让显示更加清晰一些。一般电路设计时,通常是在这个引脚上接个电位器通过调整电位器的分压值,来调整 引脚3的电压。所以本设计中使用 1602 的下拉电阻10K

引脚4是数据命令选择端。

引脚5和 4 脚用法类似,功能是读写选择端。

11

华侨大学厦门工学院 毕业设计(论文)

引脚6是使能信号,液晶的读写命令和数据。

7 到 14 引脚是 8 个数据引脚,通过 8 个引脚读写数据和命令的。

12

基于单片机的多功能定时器

第4章 软件设计

4.1总体方案

在对前面硬件部分选定之后,就可以通过电路的结构编制软件,决定所需要的功能。本设计使用了LCD液晶屏及4个按键。设定程序定时器与时钟同时工作。

该软件系统主要是单片机数据串口通信的程序设计。本设计定时功能是从芯片P3.7端口引出控制信号。采用单片机C语言编程来实现显示时间、定时功能、时间校准等功能。

对于STC12C5A60S2的程序设计,基于功能实现的难易程度,采用C语言编译形式。编译软件使用Keil uVision2。 Keil编译软件提供的开发环境,是发挥了C语言汇编代码的高效特点。Keil集成的开发环境包含了:编译器,汇编器,实时操作系统,项目管理器,调试器,使得更加单一、灵活。

4.2 主程序流图

本系统的主程序工作的过程是首先循环进行四个数码管的扫描显示[14] (DISPLY段),然后是比较所有预置时间(COMP段)是否与当前的时间相等,如相等就转向相应处理程序。比较完成(与处理完成)后,再来判断有无按键(PP2段)按下,没有就返回继续显示、比较、判断;有的按键按下则转向相应的处理程序。按键转移采用的偏移量加表格跳转转移法(KEY段)。预置的时间比较则采用逐一比较法,即对每一个预设的值都进行比较,如果相等,则进行相应的处理。在具体比较时(COMP1段),首先比较TH值,如果不相等,则直接转出并置“时间到”标志CCB为0,而如果TH、TM、TS全部对应相等,则置该标志为1,其软件流程见下图4-1所示。

13

华侨大学厦门工学院 毕业设计(论文)

图4-1主程序流程图 图4-2中断子程序流程图

程序用C语言编写,定时和时钟计时信号由单片机的内部定时器T1产生的毫秒级信号,中断溢出后在RAM的40H单元中经多次累加输出1秒信号,作为计时的基本计数单元。待显示的数据放在以下RAM单元中,(1)时钟部分:46H→小时十位数,45H→小时个位数,44H→分钟十位数,43H→分钟个位数;(2)定时部分:4AH→分钟十位数,49H→分钟个位数,48H→秒十位数, 47H→秒个位数。通电后,程序初始化使4BH单元被置1,进入了同时打开定时器,时钟开始走时,显示→12: 00,秒信号在41H中累加60次,向48H单元作加1运算,这时数码管将显示→12:01,满60分将向小时进位而显示→1:00。如果按动“调时”、“调分”键即可调整时间。

4.3中断模块说明

程序初始化后就进入了“定时中断”子程序,其程序流程图见上图4-2。一系列的运算是在中断产生后进行的[15]。

在程序计数运算中,小时应作12进制或24进制运算、分钟要作60进制运算;而定时工作时应作99分钟倒计时及的60进制倒计时减运算。

14

基于单片机的多功能定时器

第5章 制作与调试

5.1硬件电路制作

该设计硬件部分在特点上:原理相对简单,通过合理布线,降低错误率,防止焊接过程中错误,造成的干扰。

排版上通过protel99se分布零件位置,制作方面使用印刷板,布线的线宽采用0.8mm左右,太窄就无法自制。PCB制作上,布局和布线是分不开的。印刷板的制作时候要注意在布线时对220V输入和输出的线宽要宽一点,市电和直流电的分离,防止使用时触电。

在焊接过程中,印刷板需要穿孔,进而让期间引脚穿过。焊接完成后参照电路图检查无开路或短路,且没有虚焊。

5.2调试

应用KEIL软件进行程序调试:先调试各个模块程序,然后调试中断服务程序,最后调试主程序,将各部分连接进行调试。

硬件调试:用逻辑笔、万用表等工具对硬件电路作脱机检查,看有无短路、虚焊等现象。

然后,向硬件中写入程序并调试硬件,解决问题。可以对各个子程序分别写入,分别解决硬件的每个部分的程序和硬件问题。

15

华侨大学厦门工学院 毕业设计(论文)

结 论

本设计到这边就已全部完成,实现了定时开关与时间显示时钟等功能,并达到了任务书要求的内容。通过对此次硬件软件上的制作,我很清楚的知道在我的设计在印刷板上,进行220V的电压测试危险系数较大,并且前端输入220V交流电压经过稳压后输出5V,会造成较大的误差;本设计中所存在的不足是硬件部分未加入稳压电路,这方面有待加强。从这次的毕业设计中,我虽然顺利的完成,但是对于在设计的整个过程发现了好多的不足之处,我还需要进一步加强、继续努力从而提升自己。毕业设计的宗旨是让学生独立思考研究并对现实中的问题进行开发解决的过程,对学生综合能力和工作能力的具体训练和考察过程,更能使学生提高发现、提出、解决问题的能力,锻炼学生实践能力的关键。在此次的毕设中我收获颇多,思路是最代表性的收获,正确的思路很重要,只有设计思路是正确的,那设计才有可能成功,正所谓用大脑去控制行动,才能做到事半功倍,以最有效率的方式达到需要的目的。

通过这次课程设计,我懂得只有把所学的理论知识与实践相结合,我们才能从实践中得出结论,更深一层去理解理论知识。只有理论与实践相结合才能加强我们动手、思考和解决问题的能力。

16

基于单片机的多功能定时器

致 谢

从任务书理解、方案设计、到电路制作、再到论文写作,一步步的努力,还有老师和同学的帮助。

感谢罗老师对我进行课题的讲解,设计思路的引导,并在我遇到难题的时候帮我解答。她是一个负责任的好老师。罗老师不仅在我设计中帮我解决各种难题为我指点研究思路、精心点拨、热忱鼓励外,还指导着我论文的内容,不厌其烦的进行多次指导和悉心指点。

毕业设计是对我们大学四年的综合考核,在为其两个月的毕设过程中,不断的学习,使我的综合能力得到了提高,加强了我专业知识能力,同时也养成我独立分析、解决问题的习惯。

这次毕设过程中,我收获非常大,理论上的是收获,实践的学习,同学与老师的合作精神。我会一直把这种精神延续下去,不停的学习,充实自己。

17

华侨大学厦门工学院 毕业设计(论文)

参考文献

[1] 用单片机制作的定时开关控制器. 魏军丞编著.

[2] MCS-51定时器/计数器在出租车计价器中的应用.曾若渊编著. [3] MCS-51/96系列单片机原理及应用.孙涵芳编著. [4] 基于时间芯片的定时控制装置.张晓军,罗翔,史金飞编著. [5] 基于MCS-51单片机的智能时钟控制系统设计.李响初编著. [6] 单片微型计算机原理及其应用.赵秀珍,单永磊编著. [7] 基于AT89C2051 单片机的倒计数定时器.吴汉清编著. [8] C51单片机技术教程.田希晖,薛亮儒编著.

[9] 基于 C语言编程 MCS- 51单片机原理与应用.张培仁编著. [10] MCS-51软件消除定时中断误差.徐金增; 史斐翡编著. [11] 基于单片机设计的多功能定时器.王振宇编著.

[12] 基于MCS-51单片机定时精确控制的研究.朱蓉,郑建华编著. [13] Fast Memory Transfers with the Ultra High-Speed Flash Microcontroller.

[14] Paul C. de Jong and Ferry N. Toth .Measuring Duty Cycles with an Intel MCS-51 Microcontroller.

[15] 80C51 8bit ;http://cn.ic-on-line.cn/IOL_m80c51fb/PdfView/ 4628.htm

18

基于单片机的多功能定时器

附录一 硬件电路实物图

19

华侨大学厦门工学院 毕业设计(论文)

附录二 硬件电路原理图

20

基于单片机的多功能定时器

附录三 部分关键源码及解释

#include #include\#include\#include\#include\byte flat; byte hour,min;

byte T1shour,T1smin,T1fhour,T1fmin,T2shour,T2smin,T2fhour,T2fmin; word Checktime,Opentime1,Closetime1,Opentime2,Closetime2; void key(); void Tdisplay(); void check();

void kdelay(word ms) { word i,j;

for(i=10000;i>0;i--) for(j=ms;j>0;j--); }

void lcdclr() { byte i; for(i=0;i<4;i++) {

display(1,i,' '); } }

void main() {

lcdinit();

21

华侨大学厦门工学院 毕业设计(论文)

}

l_tmpdate[1] = 46; l_tmpdate[2] = 19; l_tmpdate[3] = 20; P3M1 = 0; P3M0 = 0X10; Set_RTC(); flat = 0; T1shour = 12; T1fhour = 13; T2shour = 14; T2fhour = 15; replayer = 0; while(1) { }

key(); Tdisplay(); check(); delay(); Read_RTC();

hour = ((l_tmpdate[2]&0x30)>>4)*10+(l_tmpdate[2]&0x0f); min = ((l_tmpdate[1]&0x70)>>4)*10+(l_tmpdate[1]&0x0f);

//

/************按键************/ void key() {

if(K1==0) {

delay(); if(K1==0) {

flat++;

22

基于单片机的多功能定时器

}

}

lcdclr(); if(flat>=11) flat = 0; kdelay(15);

if(K2==0) {

delay(); if(K2==0) {

if(flat==1) { hour++;

if(hour>=24) hour = 0;

hour=((hour/10)<<4)+(hour);

Write_Ds1302(0x8e,0x00); //控制写入WP=0 Write_Ds1302(0x84,hour); Write_Ds1302(0x8e,0x80); }

else if(flat==2) { min++;

if(min>=60) min = 0;

min=((min/10)<<4)+(min);

Write_Ds1302(0x8e,0x00); //控制写入WP=0 Write_Ds1302(0x82,min); Write_Ds1302(0x8e,0x80); }

else if(flat==3) {

T1shour++;

if(T1shour>=24) T1shour = 0; }

else if(flat==4)

23

华侨大学厦门工学院 毕业设计(论文)

{ T1smin++;

if(T1smin>=60) T1smin = 0; }

else if(flat==5) {

T1fhour++;

if(T1fhour>=24) T1fhour = 0; }

else if(flat==6) { T1fmin++;

if(T1fmin>=60) T1fmin = 0; }

else if(flat==7) {

T2shour++;

if(T2shour>=24) T2shour = 0; }

else if(flat==8) { T2smin++;

if(T2smin>=60) T2smin = 0; }

else if(flat==9) {

T2fhour++;

if(T2fhour>=24) T2fhour = 0; }

else if(flat==10) { T2fmin++;

if(T2fmin>=60) T2fmin = 0; }

kdelay(30);

2

4

基于单片机的多功能定时器

}

}

if(K3==0) {

delay(); if(K3==0) {

if(flat==1) { hour--;

if(hour>24) hour = 23; hour=((hour/10)<<4)+(hour);

Write_Ds1302(0x8e,0x00); //控制写入WP=0 Write_Ds1302(0x84,hour); Write_Ds1302(0x8e,0x80); }

else if(flat==2) { min--;

if(min>60) min = 59;

min=((min/10)<<4)+(min);

Write_Ds1302(0x8e,0x00); //控制写入WP=0 Write_Ds1302(0x82,min); Write_Ds1302(0x8e,0x80); }

else if(flat==3) { T1shour--;

if(T1shour>24) T1shour = 23; }

else if(flat==4) { T1smin--;

if(T1smin>60) T1smin = 59;

25

华侨大学厦门工学院 毕业设计(论文)

}

else if(flat==5) { T1fhour--;

if(T1fhour>24) T1fhour = 23; }

else if(flat==6) { T1fmin--;

if(T1fmin>60) T1fmin = 59; }

else if(flat==7) { T2shour--;

if(T2shour>24) T2shour = 23; }

else if(flat==8) { T2smin--;

if(T2smin>60) T2smin = 59; }

else if(flat==9) { T2fhour--;

if(T2fhour>24) T2fhour = 23; }

else if(flat==10) { T2fmin--;

if(T2fmin>60) T2fmin = 59; }

kdelay(30);

}

}

2

6

基于单片机的多功能定时器

}

void Tdisplay() { if(flat==0) { display(0,0,' '); display(0,1,' '); display(0,3,' '); display(0,4,' '); display(0,8,' '); display(0,9,' '); display(0,10,' '); display(0,11,' '); display(0,12,' '); display(0,13,' '); display(1,0,hour/10+'0'); display(1,1,hour+'0'); display(1,2,':'); display(1,3,min/10+'0'); display(1,4,min+'0');

}

else if(flat==1) { display(0,0,'v'); display(0,1,'v'); display(0,3,' '); display(0,4,' '); display(0,8,'T'); display(0,9,'i'); display(0,10,'m'); display(0,11,'e'); display(0,12,' ');

display(0,13,' ');

27

华侨大学厦门工学院 毕业设计(论文)

display(1,0,hour/10+'0'); display(1,1,hour+'0'); display(1,2,':'); display(1,3,min/10+'0'); display(1,4,min+'0');

}

else if(flat==2) { display(0,0,' '); display(0,1,' '); display(0,3,'v'); display(0,4,'v'); display(0,8,'T'); display(0,9,'i'); display(0,10,'m'); display(0,11,'e'); display(0,12,' '); display(0,13,' '); display(1,3,min/10+'0'); display(1,4,min+'0'); display(1,2,':'); display(1,0,hour/10+'0'); display(1,1,hour+'0');

}

else if(flat==3) { display(0,0,'v'); display(0,1,'v'); display(0,3,' '); display(0,4,' '); display(0,8,'O');

display(0,9,'p');

2

8

基于单片机的多功能定时器

display(0,10,'e'); display(0,11,'n'); display(0,12,' '); display(0,13,'1');

display(1,0,T1shour/10+'0'); display(1,1,T1shour+'0');

display(1,2,':');

display(1,3,T1smin/10+'0'); display(1,4,T1smin+'0');

} else if(flat==4) { display(0,0,' '); display(0,1,' '); display(0,3,'v'); display(0,4,'v'); display(0,8,'O'); display(0,9,'p'); display(0,10,'e'); display(0,11,'n'); display(0,12,' '); display(0,13,'1');

display(1,3,T1smin/10+'0'); display(1,4,T1smin+'0'); display(1,2,':');

display(1,0,T1shour/10+'0'); display(1,1,T1shour+'0');

} else if(flat==5)

{ display(0,0,'v');

display(0,1,'v');

29

华侨大学厦门工学院 毕业设计(论文)

display(0,3,' '); display(0,4,' '); display(0,8,'C'); display(0,9,'l'); display(0,10,'o'); display(0,11,'s'); display(0,12,'e'); display(0,13,'1');

display(1,0,T1fhour/10+'0'); display(1,1,T1fhour+'0'); display(1,2,':');

display(1,3,T1fmin/10+'0'); display(1,4,T1fmin+'0');

} else if(flat==6) { display(0,0,' '); display(0,1,' '); display(0,3,'v'); display(0,4,'v'); display(0,8,'C'); display(0,9,'l'); display(0,10,'o'); display(0,11,'s'); display(0,12,'e'); display(0,13,'1');

display(1,3,T1fmin/10+'0'); display(1,4,T1fmin+'0'); display(1,2,':');

display(1,0,T1fhour/10+'0'); display(1,1,T1fhour+'0');

}

else if(flat==7)

3

0

基于单片机的多功能定时器

{ display(0,0,'v'); display(0,1,'v'); display(0,3,' '); display(0,4,' '); display(0,8,'O'); display(0,9,'p'); display(0,10,'e'); display(0,11,'n'); display(0,12,' '); display(0,13,'2');

display(1,0,T2shour/10+'0'); display(1,1,T2shour+'0'); display(1,2,':');

display(1,3,T2smin/10+'0'); display(1,4,T2smin+'0');

} else if(flat==8)

{ display(0,0,' '); display(0,1,' '); display(0,3,'v'); display(0,4,'v'); display(0,8,'O'); display(0,9,'p'); display(0,10,'e'); display(0,11,'n'); display(0,12,' '); display(0,13,'2');

display(1,3,T2smin/10+'0'); display(1,4,T2smin+'0'); display(1,2,':');

display(1,0,T2shour/10+'0');

31

华侨大学厦门工学院 毕业设计(论文)

display(1,1,T2shour+'0');

} else if(flat==9)

{ display(0,0,'v'); display(0,1,'v'); display(0,3,' '); display(0,4,' '); display(0,8,'C'); display(0,9,'l'); display(0,10,'o'); display(0,11,'s'); display(0,12,'e'); display(0,13,'2');

display(1,0,T2fhour/10+'0'); display(1,1,T2fhour+'0'); display(1,2,':');

display(1,3,T2fmin/10+'0'); display(1,4,T2fmin+'0');

} else if(flat==10) { display(0,0,' '); display(0,1,' '); display(0,3,'v'); display(0,4,'v'); display(0,8,'C'); display(0,9,'l'); display(0,10,'o'); display(0,11,'s'); display(0,12,'e');

display(0,13,'2');

3

2

基于单片机的多功能定时器

display(1,3,T2fmin/10+'0'); display(1,4,T2fmin+'0'); display(1,2,':');

display(1,0,T2fhour/10+'0'); display(1,1,T2fhour+'0');

}

}

void check() {

Checktime = hour*60+min; Opentime1 = T1shour*60+T1smin; Closetime1 = T1fhour*60+T1fmin; Opentime2 = T2shour*60+T2smin; Closetime2 = T2fhour*60+T2fmin;

if(Opentime1>=Closetime1) {

T1fhour = (byte)((Opentime1+1)/60); T1fmin = (byte)((Opentime1+1)`); }

if(Opentime2>=Closetime2) {

T2fhour = (byte)((Opentime2+1)/60); T2fmin = (byte)((Opentime2+1)`); }

if(Closetime1>=Opentime2) {

T2shour = (byte)((Closetime1+1)/60); T2smin = (byte)((Closetime1+1)`); }

if(Checktime==Opentime1) replayer = 1;

else if(Checktime==Closetime1)

33

华侨大学厦门工学院 毕业设计(论文)

replayer = 0;

else if(Checktime==Opentime2) replayer = 1;

else if(Checktime==Closetime2) replayer = 0; }

34

基于单片机的多功能定时器

附录四 基于单片机的外文文献翻译

AT89S52 MCU Applications

Function Characteristic Description

The AT89S52 is a low-power, high-performance CMOS 8-bit microcontroller with 8K bytes of in-system programmable Flash memory. The device is manufactured using Atmel’s high-density nonvolatile memory technology and is compatible with the indus-try-standard 80C51 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory pro-grammer. By combining a versatile 8-bit CPU with in-system programmable Flash on a monolithic chip, the Atmel AT89S52 is a powerful microcontroller which provides a highly-flexible and cost-effective solution to many embedded control applications.The AT89S52 provides the following standard features: 8K bytes of Flash, 256 bytes of RAM, 32 I/O lines, Watchdog timer, two data pointers, three 16-bit timer/counters, a six-vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator, and clock circuitry. In addition, the AT89S52 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Power-down mode saves the RAM con-tents but freezes the oscillator, disabling all other chip functions until the next interrupt or hardware reset. Interrupts

The AT89S52 has a total of six interrupt vectors: two external interrupts (INT0 and

INT1), three timer interrupts (Timers 0, 1, and 2), and the serial port interrupt. Each of these interrupt sources can be individually enabled or disabled by setting or clearing a bit in Special Function Register IE. IE also contains a global disable bit, EA, which disables all interrupts at once. Note that bit position IE.6 is unimplemented. User software should not write a 1 to this bit position, since it may be used in future AT89 products. Timer 2 interrupt is generated by the logical OR of bits TF2 and EXF2 in register T2CON. Nei-ther of these flags is cleared by hardware when the service routine is vectored to. In fact, the service routine may have to determine whether it was TF2 or EXF2 that generated the interrupt, and that bit will have to be cleared in software. The Timer 0 and Timer 1 flags, TF0 and TF1, are set at S5P2 of the cycle in which the timers overflow. The values are then polled by the circuitry in the next cycle. However, the Timer 2 flag, TF2, is set at S2P2 and is polled in the same cycle in which

35

华侨大学厦门工学院 毕业设计(论文)

the timer overflows. Oscillator Characteristics

XTAL1 and XTAL2 are the input and output, respectively, of an inverting amplifier that can be configured for use as an on-chip oscillator. Either a quartz crystal or ceramic resonator may be used. To drive the device from an external clock source, XTAL2 should be left unconnected while XTAL1 is driven,. There are no requirements on the duty cycle of the external clock signal, since the input to the internal clock-ing circuitry is through a divide-by-two flip-flop, but minimum and maximum voltage high and low time specifications must be observed.

AT89S52单片机应用

功能特征描述

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 中断

AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。IE.6位是不可用的。对于AT89S52,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清0。定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。

36

基于单片机的多功能定时器

晶振特性

AT89S52 单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2 可以不接,而从XTAL1 接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。

37

本文来源:https://www.bwwdw.com/article/e48p.html

Top