《智能电子计时器系统-毕业论文设计.docx》由会员分享,可在线阅读,更多相关《智能电子计时器系统-毕业论文设计.docx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要本设计是以AT89S51单片机为核心实现的一个智能电子计时器系统。目前市场上的电子计时器,主要有基于NE555的电子计时器、基于脉冲的电子计时器以及基于AT89S51单片机的电子计时器三种。通过比较,本课题选择了“基于AT89S51单片机的电子计时器”的设计方案。该方案利用了AT89S51单片机为主控芯片,实现了时间显示、定时中断以及记录比分等功能。具有简单易操作、时间可以任意设定等优点,适合目前人们对智能小家电的需求。本设计主要从总体设计、硬件设计、软件设计、系统实现等方面来对智能电子计时器进行详细的介绍。硬件主要由显示模块、按键模块、复位模块、晶振电路等组成;软件是用C语言编程,再利
2、用Keil软件进行仿真,最后将软硬件结合起来实现电子计时器的功能。本设计主要是完成定时时功能,该计时器系统简单易操作,定时时间也较长,适合在999秒以内的定时,比如豆浆机、榨汁机等的定时。关键词:AT89S51, LED数码管,电子计时器, C语言AbstractThis design is based on AT89S51 as the core implementation of an intelligent electronic timer system. Currently on the market of electronic timer, are mainly based on t
3、he electronic timer NE555, based on the pulse of the electronic timer and electronic timer based on AT89S51 3 kinds. By comparison, chose the topic electronic timer based on AT89S51 design. The scheme takes advantage of the AT89S51 as the main control chip, implement the time display, timing interru
4、pt and record the score. With a simple easy to operate, the advantages of time can be set arbitrary, meet requirements of intelligent household appliances. This design mainly from the overall design, hardware design, software design, system implementation, etc to intelligent electronic timer is intr
5、oduced in detail. Hardware is mainly composed of display module, keys module, reset module, a crystal vibration circuit and so on; Software is written in C language programming, using the Keil software simulation, electronic timer function is realized by combining software and hardware.Timing of the
6、 completion of this design is mainly the function, the timer system easy to operate, simple timing time is longer, suitable time within 999 seconds, such as timing DouJiangJi, juicer and so on.Keywords: AT89S51, LED digital tube, electronic timer, the C language目 录第一章绪论1第二章 电子计时器及AT89S51单片机的简介22.1 电
7、子计时器的的功能以及工作原理22.1.1 电子计时器的功能简述22.1.2 电子计时器的工作原理及组成22.2 AT89S51单片机的简介32.2.1 AT89S51功能特性概述32.2.2 AT89S51的引脚图及说明4第三章 系统的总体设计83.1 方案比较83.2 功能设计103.3 功能实现流程10第四章 硬件设计124.1 单片机最小系统124.2 电子计时的功能模块144.3继电器模块144.4按钮模块154.5显示模块16第五章 软件设计195.1 C语言简介195.2 软件模块规划205.3 程序实现215.3.1程序的功能模块225.3.2主程序设计225.3.3中断程序设计
8、235.3.4其他子程序的设计24第六章 系统实现266.1 硬件实现266.2 软件调试276.3 系统功能测试29结 论30致 谢31参考文献32附录1:计时继电器设计总电路图:33附录2:PCB电路图34附录3:元器件清单35附录4:电子计时器源程序36第一章 绪论我国广泛采用的搅拌机是强制式搅拌机和倾卸式搅拌机1。这两类搅拌机对混凝土的水灰比、强度、坍落度的适应性比较宽。我国在搅拌机的研究和发展上在向大容量的方向发展和提高,但是随着人们生活水平的提高,搅拌机也逐渐进入到老百姓的生活中。而且是智能小型的搅拌机,比如说豆浆机和榨汁机等都用到了搅拌机,把人们从纷繁的家务劳动中解放出来而且将中
9、国美食做的更美味。随着计算机在社会领域的渗透,微型单片机的应用2正在不断地走向深入。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合。有时还会用到运用C语言3进行编程,简化了源程序,简单易懂,再利用Keil软件进行仿真编译,最后软硬件相结合实现功能。本次设计的搅拌机智能电子计时器是以AT89S51单片机为核心的计时系统,由硬件和软件两部分组成。进行软件仿真时,再跟硬件相结合。设计一个更加简单以及灵敏的计时器,用于小型家电中,还可以作为篮球计分器使用。计时任意设置,简单,方便,灵敏度高等
10、优点,就是在时间设置这一块存在不能直接输入,而必须要用按键加减才能实现。第二章 电子计时器及AT89S51单片机的简介2.1 电子计时器的的功能以及工作原理2.1.1 电子计时器的功能简述电子计时器的功能是以单片机4的硬件设计为基础的,通过硬件模块化的设计,再结合软件系统,最后实现整体的功能。电子计时器的系统可以分为三个部分:复位模块、显示模块以及控制模块。电子计时器是由单片机为核心的器件组成的一个倒计时系统。系统显示器是由3个8位数共阳型数码管组成,还有复位模块、按键模块等组成。目前电子计时器应用广泛用于各种场合,如篮球比赛,广告牌定时翻转以及本次最重要的是用于家庭小型搅拌机的定时。这次毕业
11、设计的电子计时器计时时间是0999秒,开始计时时显示器通过单片机控制,数码管显示倒计时的时间,通过按键控制倒计时的开始和停止,当倒计时结束时,会听到滴的一声以及数码管显示为000并不再变化来提醒倒计时结束。本设计是基于AT89S51单片机控制的智能电子计时系统,该系统以单片机为核心,C语言为程序基础,采用单片机软件、硬件相结合的方式,实现定时计时的功能。本次的设计能够实现999秒以内的时间定时,利用C语言编程,实现对整个系统的控制,完成相应所需的功能。不仅成本低而且制作简单,实现功能齐全,在平时的篮球比赛的倒计时中也可以运用,而且可以复位,能够多次设定以及任意设定计时的时间。2.1.2 电子计
12、时器的工作原理及组成本方案采用单片机程序设计制作,它是利用芯片AT89S51的特殊功能,P3口控制按键开关,当按下开关S1,三个数码管将显示999,然后通过P2.0和P2.1对控制数码管的两个三极管进行位选,P1口输出段码经74LS373锁存来驱动数码管进行倒计时,同时能实现复位、暂停、任意调整时间的功能。其系统框图如图下图所示。图2-1 系统原理框图图2-1是电子计时器的工作原理框图,计时器的工作原理是以硬件为基础,采用模块化设计的方法进行控制的系统。由图可以看出计时器的核心部件是单片机,以单片机为核心,利用系统的软件5程序控制硬件电路,从而实现计时的功能。通过按键向单片机设定时间,然后通过
13、内部程序的处理之后,由单片机输出信号,最后由数码管显示出结果。单片机是整个计时器的控制部分,它不仅将输入与输出连接起来了,同时完成了信号处理部分。单片机的内部软件部分的设计6是采用C语言编写的,它完成了时间参数的设定、计时功能、保存、显示、输出及计时倒计时等功能。2.2 AT89S51单片机的简介2.2.1 AT89S51功能特性概述AT89S51 是美国ATMEL 公司生产的低功耗, 高性能CMOS8 位单片机, 片内含4k bytes 的可系统编程的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术生产, 兼容标准8051 指令系统及引脚。它集Flash 程序存
14、储器既可在线编程(ISP) 也可用传统方法进行编程及通用8 位微处理器于单片芯片中,ATMEL 公司的功能强大,低价位AT89S51 单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89S51 提供以下标准功能:4k 字节Flash 闪速存储器,128 字节内部RAM,32 个IO 口线,看门狗(WDT),两个数据指针,两个16 位定时 计数器,一个5 向量两级中断结构,一个全双工串行通信口, 片内振荡器及时钟电路。同时,AT89S51 可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM, 定时 计数器,串行通信口及中
15、断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89S51单片机的主要特点如下:(1) 控制功能强。为了满足工业控制的要求,一般单片机的指令系统均有及丰富的转移指令、I/O口的逻辑操作以及位处理的功能。(2) 集成度高、体积小、有很高的可靠性。单机机把各功能部件集成在一块芯片上,内部采用总线结构,减少了芯片内部之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合于在恶劣环境下工作。(3) 有优异的性能价格比。(4) 低功耗、低电压、便于生产便携式产品。(5) 增加了I2C串行总线方式、
16、SPI串行接口等,进一步缩小了体积,简化了结构。(6) 单片机的系统扩展、系统配置较典型、规范,容易构成各种规格的应用系统。目前单片机正朝着高性能和多品种的方向发展,今后单片机的发展趋势将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。2.2.2 AT89S51的引脚图及说明要掌握了解单片机就必须先从最基本的引脚开始学习和掌握,图2-2就是AT89S51单片机的四十个引脚图,从图中可以看出单片机四十个引脚的各个名称和功能。再根据各个引脚的介绍就可以基本熟练地掌握各个引脚的作用了。图2-2 AT89S51单片机的引脚图 P0口:P0口是一组8位漏极开路
17、型双向I0口,也即地址数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:Pl 是一个带内部上拉电阻的8位双向IO口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在
18、Flash编程和程序校验期间,P1接收低8位地址。部分端口还有第二功能,如表2-1所示。表2-1 P1口部分引脚的第二功能端口引脚第二功能P1.5MOSI(用于ISP编程)P1.6MISO(用于ISP编程)P1.7SCK (用于ISP编程)P2口:P2 是一个带有内部上拉电阻的8 位双向IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外P2口送出高8位地址数据。Flash编程或校验时,P2亦接收高位地址和其
19、它控制信号。P3口: P3 口是一组带有内部上拉电阻的8 位双向I0 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。P3口更重要的用途是它的第二功能,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。如下表2-2所示:表 2-2 P3口的特殊功能端口引脚第二功能P3.0RXD (串行输入口)P3.1TXD (串行输出口)P3.2INT0 (外部中断0)P3.3INT1 (外部中断1)P3.4T0 (计时器0外部输入)P3.5T1 (计时器1外部输入)P3.6WR (外部数据存储器写选通)P3.
20、7RD (外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。 DISRTO位缺省为RESET输出高电平打开状态。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。第三章 系统的总体设计3.1 方案比较(1)基于NE555的电子计时器采用动态显示的方法来实现LED显示器的数字显示。内部主要采用了NE555集成电路,实现其他的扩充功能。它体积小,无外观修饰,完全裸露内部元件,操作方便,便于安
21、装、拆卸与维修。NE555是一种应用特别广泛的集成电路,属于小规模的集成电路,在很多电子产品中都有应用。NE555的作用是用内部的定时器来构成时基电路,给其他的电路提供时序脉冲。NE555内部含有两个电压比较器,一个分压器,一个RS触发器,一个放电晶体管和一个功率输出级。由NE555构成的电子计时器,具有体积小,成本低,抗干扰能力强,面向控制等优点。它广泛应用于各种继电器,电磁开关,控制器,延时器,定时器等的时间测试。目前所使用的电秒表大多是指针式或集成电路型的,节后相对复杂,测试功能单一。(2)基于脉冲的电子计时器基于脉冲的电子计时器由计时电路、译码显示电路、脉冲发生电路、校分电路、清零电路
22、和报时电路这几部分组成。脉冲发生电路为电子计时器提供计数脉冲,需要产生1Hz的脉冲信号。采用NE555集成电路和分频器CD4040构成脉冲发生器。NE555定时器构成多谐振荡器,波形稳定,上升沿和下降沿小,振幅大,占空比可调,而后通过CD4040k可以输出20211Hz几种频率供后面使用。计时电路采用二-十进制加法计数器由CD4518实现。60秒为1分,将分秒的个位、十位分别在七段数码显示器上显示出来,从0分0秒到59分59秒,然后重新计数。校分电路设计有一个开关,当开关打到高电位档时,计数器正常计数;当开关打到低电位档时,分计数器进行快速校分(即分计数器可以不受秒计数器的进位信号控制,而通过
23、2Hz频率的校分信号进行校分),而秒计数器保持。在任何时候,拨动校分开关,可以进行快速校分。采用74LS74 D触发器,由于D触发器的输出端只在时钟的上升沿变化,而其他时刻保持上一次的电平,故可以用其构成防颤抖电路,在校分电路中有其应用。(3)基于AT89S51单片机的电子计时器本次设计以AT89S51单片机为核心设计一个智能电子计时器,计时时间从数码管显示电路五部分电路,软件程序部分有定时中断程序、外部中断程序、显示子程序和延时子程序等。软件仿真工具采用Keil软件。硬件采用万用板把元件焊接在一起从而实现预期的功能。该设计具有计时精确、使用方便、可以任意设定计时时间以及可以作篮球电子计时器用
24、等优点;但存在不能在高温的环境下使用以及不稳定等缺点,还有待改进。(4)综合分析根据以上两种方案可以看出基于NE555的电子计时器的设计具有体积小,无外观修饰,完全裸露内部元件,操作方便,便于安装、拆卸与维修的优点。但目前所使用的电秒表大多是指针式或集成电路型的,相对于数字电子计时器测试结果不准确,测试内容单一,所以本次设计不适用这个设计。基于脉冲的电子计时器的设计采用NE555集成电路和分频器CD4040构成脉冲发生器两个组合设计成的,设计比较复杂,操作也比较复杂,报时是每隔一秒都会报时,不适合家庭操作,这样也就不适合本次设计。所以综合以上分析还是基于AT89S51单片机的电子计时器的方案更
25、加适合,简单易操作、多功能而且时间可以任意设定。第三章开始将仔细介绍这次设计的软件和硬件设计以及调试等内容。3.2 功能设计此电子计时器系统是采用AT89S51单片机为核心元件,结合数码管、晶振、二极管、按键等元件构成一个简易的电子计时器器。利用了单片机的振荡电路、按键复位电路、时钟电路、定时中断等电路,实现单片机系统的功能。本次设计的电子计时器具有实时显示及定时的功能,能有多种用处。比如:该电子计时器应具有基本倒时功能;具有启动,暂停复位功能;时间可以任意调整;时间用数码显示,初始值为000秒,最大值为999S扫描时间间隔为1S还可以作为篮球计分表使用。3.3 功能实现流程本课题利用AT8S
26、51单片机及其丰富的外围接口实现了计时系统的设计,该电子计时器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了成本,使用方便,只需要按加减按钮设定一个时间,最后按下确认按钮即可,到时会自动中断,停止工作,是一个实用的工程设计,下图3-1是硬件的实现流程图: 是图3-1 功能实现流程图本次设计的搅拌机智能电子计时器就是本着智能简单方便的原则,所以功能实现非常简单,只要按加减键设定时间然后按确认键就可以了,时间到时就会自动停止。第四章 硬件设计4.1 单片机最小系统单片机最小系统是单片机在发挥具体测控功能时所必须的组成部分。单片机最小应用系统方框图,如图4-1所示。 图4-1 单片机最小系
27、统应用框图(a)复位电路单片机在开机时都需要复位,以便CPU及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。单片机复位电路工作原理:当通电瞬间稳压电源给电容充电。RESET为复位输入端,当RESET引脚持续两个机器周期以上的高电平时,使单片机完成复位操作,随着电容充电结束,将使电容与电阻之间将呈现低电平,单片机复位结束。复位操作的主要功能是把PC初始化为0X0000,使单片机程序存储器从0X0000单元开始执行程序。本次设计以单片机AT89S51作为主控芯片,控制整个电路的运行。采用AT89S51上的复位引脚。单片机外围需要一个复位电路,复位电路的功能是:系统上电时提供复位信号,
28、直至系统电源稳定后,撤消复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。复位电路的设计图如图4-2所示:图4-2 单片机复位电路图(b)晶振电路本设计选择的方案中采用的是内部振荡方式。采用内部方式时在XTAL1和XTAL2引脚上接石英晶体和微调电容可以构成振荡器,如图4-3所示。图中C1、C2起稳定振荡频率、快速起振的作用。内部振荡方式所得的
29、时钟信号比较稳定,实用电路中使用较多。振荡频率的选择范围为1MHz12MHz。图4-3 晶振电路图4.2 电子计时的功能模块用P0口、P1口、P2口分别连接三个显示管;P3口的P3.0、P3.1、P3.2分别连接加1键、减1键、确定键;复位引脚连接复位按钮。如图4-4所示:图 4-4 计时继电器的功能框图4.3继电器模块现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。电子继电器便能完成这一桥梁作用。继电器电路中一般都要在
30、继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势,防止干扰。本设计的控制端为P3.3,当P3.3为高电平时,继电器不工作,当P3.3为低电平时,继电器工作,常开触点吸合,起到保护电路以及保护人身的安全。利用P3.3口输出高低,控制继电器的开合,实现对外部装置的控制。连接如图4-5所示:图4-5 继电器模块图4.4按钮模块按键是微机应用系统中使用最广泛的一种数据输入设备,按照键盘按键的结构形式,可分为独立式键盘和矩阵式键盘。本设计主要采用独立式键盘,此键盘控制电路主要是用于调整时间,其电路结构图如图4-6所示。图4-6 按钮模块图(1)独立式键盘的扫描识别原理独立式键盘就是各个按键
31、是相互独立的,分别接一根输入线,各条输入线上的按键工作状态不会影响其他输入线的工作状态。因此,通过检测输入线的电平状态,可以判断哪个按键被按下,若检测是低电平则键盘闭合。就像本次设计共用到四个按键,分别负责调整时间(加一减一)、开始(确认)以及复位的功能,互不干扰。 (2)独立式键盘的消抖原理一般采用触点式键盘,由于机械触点的弹性作用,在闭合及断开的瞬间,电压信号伴随有一点时间的抖动,抖动时间与按键的机械特性有关,一般在5-10ms。为保证CPU一次按键动作,必须消除抖动的影响,消除抖动的措施有硬件消除和软件消除。本文根据抖动信号特点,采用软件消抖的方法,主要是在程序中调用延时子程序,判断前后
32、两次读值是否相等,相等则为键盘闭合,反之键盘断开。本次设计主要用到四个按键,每个按键都是独立的。其中有两个是用来设定时间的,一个加一,一个减一,可以实现1-999秒时间内的任意时间的设定,还有一个是用来确定的即开始按钮。最后一个是用来复位的,每次计时完成后按下复位键就可以将以前的数据都清除,重新回到000,可以消除一部分干扰。4.5显示模块八段数码显示管有两种,一种是共阳数码管;另一种是共阴数码管。二者原理不同但功能相同。每个数码管都有a、b、c、d、e、f、g七个笔划和一个小数点DP,这八个联对应二极管阳极,阳极都连在一起称为共阳。电路图4-7:图 4-7 共阳数码管图本设计的时间显示选用3
33、个八段(共阳)数码管LED,经过三次降压后连接到数码管的VCC。其外形和内部结构如图4-8所示: 图4-8 八段数码管图数码管共阳与共阴数码管正好相反。它是当P0为低电平时亮。当P00=0时,a亮。当P00=0,P01=0,P02=0,P03=0,P04=0,P05=0时,该数码管则显示0。数码管显示方式有静态显示和动态显示两种。静态显示是指在显示器显示某个字符时相应的段(发光二极管)一直导通或截止,直至变换为其它字符,特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;而动态显示是把显示器相同段选线并联在一起,由一个8位I/O口控制,其字选端由其它相应的I/O口控制,然后采用扫描方式轮流点
34、亮各位LED,使每位分时显示该位应该显示的字符,特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。该方式是分时轮流选通数码管的公共端,这不仅能提高数码管的发光效率,并且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。在本设计中根据实际情况采用的是动态显示方法,通过每5毫秒选通数码管,然后显示对应的字段,由于人眼分辨率达不到5毫秒,因此整个数码显示用肉眼看是一直亮的。第五章 软件设计5.1 C语言简介在C语言诞生之前,系统软件主要是采用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差,但一般的高级语言又难以实现对计算机硬件的直接操作
35、,于是出现了兼有汇编语言和高级语言特性的新语言即C语言。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。C语言的功能强大,使用简单,有丰富的库函数,运算速度快,编程效率高,可移植性好。C语言既具有一般高级语言的特点,也具有对计算机硬件直接进行操作的函数,包括了多种高级语言的优点,其最主要的优点是能与汇编语言混合编程,可直接操作硬件端口,这正是单片机
36、应用所需要的。其语言简洁,使用方便灵活,与汇编语言相比,主要有如下优点: 对单片机的指令系统不要求十分熟悉,仅要求对单片机的基本硬件结构有一定了解; C语言可直接访问单片机的物理地址,包括寄存器、不同存储器以及外部接口器件; 具有丰富的数据结构类型及多种运算符,易于表达,使用方便; 源代码可读性较强,容易理解和编程,源文件简短; 具有丰富的库函数,其中包括许多标准共用函数,具有较强的数据处理能力; 模块化编程技术使程序容易移植,可以把需要的功能模块方便地移植到一个新程序或另一种单片机上。许多计算机都支持对C语言的应用,因而可以方便地在微型计算机上直接编写和测试部分程序。多数情况,调试正常的代码
37、段可以直接移植到目标单片机上,这样可以在没有硬件的情况下开始编写和调试程序。减少在硬件上的调试,可加快开发过程,也可大大缩短编程和调试时间,从而提高编程效率。5.2 软件模块规划 如图5-1所示是软件系统的结构框图,软件设计和硬件电路设计是相互结合进行的,由硬件电路的结构决定软件部分能够实现的功能,该系统软件设计的编程是采用C语言,通过模块化的方式编写设计的,由图可以看出软件设计部分可以分为复位、定时中断、按键处理三个模块,其中定时中断模块是整个软件设计的核心模块,设计写出各个模块的子程序,然后在主程序中调用,从而实现整个系统的计时功能。图5-1 软件系统的结构框图本设计利用单片机AT89S5
38、1自身的电子计时器进行设计。由于AT89S51的晶振频率是12MHZ,即1s。具体安排如下:(1)用AT89S51的工作方式1(即十六位定时器)和中断1。十六位电子计时器最大可计时65536。电子计时器的初始值为50微妙。(2)数码管(共阳)显示用静态显示,三个数码管分别占用P0,P1,P2。其中,P0为百位、P1为十位显示、P2为个位显示。数码管采用共阴显示,也就是说当其值为0时,数码管亮;让其显示09共十个数字,故它们的值分别是:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90(3)按钮的分配:加1按钮定义为P3.0,减1按钮定义为P3.
39、1,确认按钮定义为P3.2,复位按钮芯片的RST引脚,P3.3引脚连接继电器。(见附录1)(4)因为显示时间太短时,人眼无法看清,所以在三个数码管和三个按钮前都加上一段延时程序。软件任务规划环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如中断,计时,显示,控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件进行设计时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。
40、在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。通过设置标志位,然后利用标志位的变化,从而实现程序的监控。5.3 程序实现在本设计中软件部分的程序分为以下几个部分:主程序、按键控制子程序、延时子程序、时钟设计子程序、定时器中断子程序以及LED显示子程序。具体C语言源程序设计见附录4。下面对主要程序进行分析介绍。5.3.1程序的功能模块本设计的软件程序主要包括:代码初始化、数码管显示程序、按键接收程序、继电器控制程序和中断计时程序。如下图5-2所示:图 5-2 程序的功能模块图5
41、.3.2主程序设计图5-3所示是主程序流程图,由图中可以看出主程序模块的设计比较简单,它主要实现的功能:首先需要完成对各个数码管、发光二极管检测,检测对应的元件是否是好的;然后进行系统的初始化,包括内部各寄存器单元的初始化、外接电路端口的初始化、内部定时器的初始化、定时器中断的初始化数码管显示及发光二极管的初始化。以上工作是电子计时器工作的前期准备,完成这些以后,电子计时器进入工作,调用显示子程序以及按键处理子程序,通过按键子程序的处理,实现对各个按键的输入信号进行处理,然后再通过显示子程序输出。进行不断的循环执行,最终实现计时功能。图5- 3 主程序流程图5.3.3中断程序设计定时器0的定时
42、时间是1ms,用作扫描数码管显示,在定时器0开启时,定时器0开始定时,此时主程序正常运行,当定时器0的定时时间到时,主程序不再执行,开始进入中断程序,在中断程序中,对8位数码管进行动态扫描。中断程序执行完后返回主程序。当计时完成后就会执行到中断程序,单片机具有能实现中断及返回,所以计时完成后数码管就会显示为000且不继续工作。如图5-4所示。图5-4定时器0的中断程序流程图5.3.4其他子程序的设计(1) 显示子程序显示子程序是采用动态扫描的方式编写的,利用循环扫描的方式每5毫秒轮流选通数码管led1,led2及led3,由于扫描的速度较快,人眼分辨不出,从而使得所看到的数码管显示看上去是同时
43、亮的。(2) 延时和定时中断子程序延时子程序的函数定义为delay(i),当调用此程序时,表示延时i毫秒。主要用于按键消抖及数码管循环显示时使用。定时中断服务程序,在此设计中,选用的是定时器T0,设置T0工作于方式1,即16位定时器模式,定时时间为50毫秒,每50毫秒溢出一次,实现一次中断,并判断倒计时时间是否到。第六章 系统实现 6.1 硬件实现如图6-1所示,是此次毕业设计硬件实物图,本设计中,需要3个数码管,4个按键,另外还需要13个发光二极管,电池盒,继电器,电解电容,电阻等就可以将系统的硬件电路实现。本次焊接是买的PCB板回来自己焊的,但是由于是手工布线很多跳线没有布,自己对着PCB
44、线路图一个个查找加上跳线。然后经过老师的多次指导加了一个电池盒采用直流供电就不需要电脑供电了,之后又加了一开关可以控制电源的通和断,使功能更完全,使用更方便。该电子计时器主要包括:专用电源一个,有单片机AT89S51的电路板一个、四个按钮、三个数码管和一个继电器。硬件实物图如6-1所示。焊接完出现问题及解决方法:1、(1) 问题:硬件完成后接上电源,数码管一点反应也没有。 (2)原因分析:可能是那一块没焊好导致电路断路,电源接不进去。(3)解决方法:仔细对照PCB图,一条一条线找问题,发现是有一个地方没焊好,导致断路。 2、 问题: 第二个数码管的E脚不亮。 原因分析: 应该是数码管的引脚接断
45、路了。 解决方法:仔细找了好久才发现是因为有一点锡沾到布好的铜线上,导致E脚被短路,把锡吸掉即可。 3、 问题:系统接上电后,发现第一个数码管有点接触不良。 原因分析:可能电压不稳定。 解决方法:少接了一根短路线。图 6-1硬件实物图正面图6.2软件调试软件设计完成后,首先进行软件调试。利用Keil软件对C语言编写的源程序进行编译仿真,Keil软件是目前最流行开发MCS-51系列单片机的软件,它提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。等程序在Keil软件中,调试成功后,将源程序经Kei
46、l编译后生成的十六进制的hex文件,烧制到硬件电路中即单片机中,进行软硬件结合调试。利用Keil软件进行代码的调试。按照程序流程图将代码写好。下面图6-2是编译成功后的画面。图 6-2 编译成功图经过认真的调试,终于完成,但是在调试过程中遇到不少问题,仍然值得注意。总结如下:(1) 源文件的扩展名必须是.asm的;(2) 每句代码后须写分号;(3) 确保输入的关键字正确;硬件实现和程序调试完成后,就可以将程序烧写到单片机中了,然后进行系统调试。一、具体的测试步骤接通电源后,三个数码管将显示000;按下复位按钮仍显示000。(1)按一次加1键,数码管则显示001,按确定键后,开始计时,当显示00
47、0时,有“嘭”的响声;(2)复位后,按减1键,数码管则显示999(说明最大计时为999秒),此时按下加1键,数码管则显示000;(3)先设定时间为7秒,即数码管则显示007,按确定键后开始倒计时,此时再按下加1键,电子计时器继续加1;(4)在任何时候都对电子计时器进行复位,均显示000;(5)加时或减时后,在没有确定之前,数码管则显示设定的时间。故可用于记录比分。二、实现功能作为电子计时器使用:正确接通电源后,三个数码管显示:000。按下复位键复位,按下加1键加时到预定时间,若时间太长可按减1键;按确定键开始计时,数码管则显示当前时间,当时间为0时,发出响声并触发继电器开始工作。作为记录比分:本设计亦可用于记录体育比赛中的比分。此时,只要按下加1键或减1键即可。三、功能测试总结本设计可用于现代自动化的工业控制中,例如搅拌机的控制,设定好时间后,时间到搅拌机马上开始工作。时间可精确到1S。能够进行最大999秒的计时功能,设置外部操作开关,有+键、- 键、确认键和复位键。控制电子计时器的启动和加时/减时功能。电子计时器递减/加时的时间间隔为1秒。当时间递减为零时,引脚P3.
限制150内