基于单片机的事务管理系统

基于单片机的事务管理系统

摘 要

所谓事务管理系统就是主要用来做提醒,辅助以计时、秒表等的一个小系统。利用MCS51单片机即可完成系统硬件需要,成本低廉,程序简单,功能丰富实用,使用率广。根据题目的设计要求,该系统要实现的功能主要有:事务提醒、定时、秒表、扬声器、小灯闪烁、键盘、液晶屏。其中事务提醒功能可重复可循环,用键盘进行输入,扬声器和小灯作为提醒作用,液晶屏输出显示。在了解了题目要求后,首先进行框图确定并且确定各模块的硬件需要以及各种元器件的需要,之后进行硬件电路的设计,同时,对软件部分的流程进行了演草和模拟,并确定参数。在此设计的最后环节,就是对所有模块的资源整合,扩展功能的实现和编程,最终得到完整的程序。

关键词:单片机 事务提醒 编程

Transaction Management System Based on Single Chip Microcomputer

Abstract

So-called transaction management system is mainly used to do remind, aided by a small system such as timing, a stopwatch. By using MCS51 single chip microcomputer to complete the system hardware, low cost, simple program, feature-rich, practical, and wide usage. According to the requirements of the subject design, in order to realize the function of the system mainly include: transaction remind, timer, stopwatch, speakers, small lights flashing, keyboard, LCD screen. The transaction alerts can be repeated cycle, use keyboard, speakers and small lights as a reminder, LCD display output. After understanding the topic request, first to make sure to block diagram of each module and determine the hardware needs and the needs of the various components, followed by the design of the hardware circuit, at the same time, the software part of the process has carried on the grass and simulation, and parameters were determined. In the last link of the design, which is for all modules of resource integration, the realization of the function of extension and programming, finally get the complete program.

Key words: single chip microcomputer affairs remind programming

目录

摘要 II

Abstract III

目录 IV

1概述 2

1.1 事务管理系统的概述 2

1.2 研究课题的目的和意义 3

1.3 国内外研究现状 4

1.4 设计内容和要求 4

1.4.1 设计要求 5

1.4.2 设计内容 5

2系统方案分析与选择论证 5

2.1主控芯片方案比较 5

2.2 显示模块方案比较 5

2.3时钟模块方案比较 6

2.4系统最终方案确定 6

3 事务管理系统的硬件设计 7

3.1 基于单片机的事务管理系统的总原理图 8

3.2 原理图各模块的讲解 9

3.2.1单片机 9

3.2.2扩展的时钟芯片 11

3.2.3扩展的键盘模块 13

3.2.4扩展的液晶屏显示模块 14

3.2.5小灯闪烁模块 15

3.2.6蜂鸣器模块 16

4 事务管理系统的软件设计分析 17

4.1 时钟模块软件分析 17

4.1.1时钟命令字 17

4.1.2 初始化步骤 17

4.1.3 注意事项 17

4.1.4 流程图 18

4.2 秒表功能的实现。 19

4.2.1 秒表计时原理 19

4.2.2 秒表启停 21

4.3 键盘模块 22

4.4 定时器模块 23

4.5 功能分页 23

5总结与展望 25

5.1 总结 25

5.2 展望 26

致谢 27

参考文献 28

1概述

1.1事务管理系统的概述

什么是事务管理系统?对于事物管理的定义就是指对我接下来一段时间即将发生的事件(包括会议,上课,活动等)的时间管理,并进行提醒。那么作为系统,该具有的功能则更为全面。不仅仅要提醒我的事务,还要能够提醒多个事件,并且做到当一个事件完成后,删除该事件,防止事件重复。

(1)可以选择该事件是否循环,例如每天晚上都要去跑步,这是一个可循环事件,当今晚事件完成后,自动设定为第二天重复。

(2)所设定的事件时间到了,蜂鸣器"滴"声报警,并且伴有小灯闪烁。按任意键取消警报,并反馈系统,该事件得到通知,事件完成,删除事件。

(3)现阶段事件完成后,应该调取下一项预设事件。

对于该事务管理系统,有如下要求:

(1)事件提醒个数不可以超过5个。因为设定事件名称以及设定时间需要占据数据存储空间,淡出依靠片内128BRAM的数据存储器,不可能设定更多事件数量。

(2)该系统可编辑的事件名称符号数不超过8个(一个汉字表示两个字符),一方面为了节省数据存储空间,另一方面是为了更高速的处理速度。

(3)事件设定好后,到点报警提醒。考虑到若无人在周边的情况。在该事件所设定的事件一分钟内,若无任意键按下,那么系统将该事件在三分钟后做第二次报警提醒,以此类推,直到在报警时间内,有按键按下,表示正在处理,该事件完成。

(4)设定的键盘可以完成事件编辑,包括修改名称(中英文即可),设定时间、修改时间等;可以进行定时或者秒表的启停;可以进行手动蜂鸣器报警以及小灯闪烁的控制

对于该事务管理系统的硬件要求:

(1)具有能够从年份精确到秒的日历时钟芯片,即有很高的时间精确度。

(2)具有能够显示时间参数的LCD液晶显示屏。

(3)有按键,能够实现事件的编辑以及时间的设定,按任意键可以相应系统反应。

(4)设定的时间到,报警,通过蜂鸣器来达到目的,另设置小灯(即LED灯)。

(5)各个元器件参数要选择合适的,这就要求要提前规划并确定。

总结来说,该系统的核心部分就是对于事件提醒的软件分析。我分为6个部分:时间值的比较、到点报警、判断是否处理、识别按键、未处理作延时处理、处理作删除或循环处理。对于整个系统来说,设计了功能分页的显示,就是指,识别一个按键是否按下,进入不同的功能页面,这也是液晶屏显示的一种优势所在,容易汇编和设计。三大功能页:事务提醒、定时、秒表。

接下来,我们做详细的硬件分析以及各模块软件分析。设计思路是,在详细了解了该系统的功能要求后,大致划分了单片机系统模块、时钟模块、蜂鸣器模块、小灯闪烁模块、键盘模块、显示器模块这六大部分。先进行整体框架的建造,然后各个模块单独突破,以点破面。在每一个模块分析中,先进行软件流程分析估算,然后确定元器件,并绘制原理图。之后进行各模块的调试,最终,根据各模块间的交集进行组合。这里有几个难点:

(1)键盘的选择要满足事件的编辑(名称,时间,可删除,可更改),满足定时的设定,满足秒表的启停、清零,还要能够响应蜂鸣器。也就是说,键盘这一模块与其他五个模块都有交集和涉及。

(2)事件提醒的流程,这是系统的关键也是难点。从用户的角度考虑,能够设定的事件名称是限制的,按键不能过多,秒表计时到60就会清零。这些是我设计中的一些缺点,也是会给用户使用带来不便的几点。不过,该系统便携性强,稳定性高,消耗比较低。

(3)没有添加变压块,也就是说,直接使用电池供电。

接下来是具体设计。

1.2研究课题的目的和意义

该课题所要求的事务管理系统功能较为简单,但是带来的作用确是很实惠的。事务管理系统在各个行业应用广泛,小到个人使用,大到企业单位使用。举例来说,高校使用的教务管理,实质上就是一种事务管理,可以进行成绩的录入和查询以及考级的报名;各企业使用的会议时间安排以及任务安排书,本质就是事务管理,只不过把功能进行了小修改。这两个例子中提到的事务管理,共同点就是:可编辑、可查询、可提醒。总之,事务管理系统的研究具有很大的使用价值。

而单片机作为最典型的嵌入式系统,在各大高校相关专业都开设有独立课程;而且在各种课程设计、毕业设计论文的课题中,都应用广泛[1]。各大高校推行的各种电子类设计大赛也都用到了单片机,由此可见,单片机技术对我们的生活有巨大影响。

那么此课题的研究目的就是为了使学生灵活应用单片机技术,换一种说法,使得学生的单片机技术入门,为以后学习各种高阶技术应用打基础,也为后续学习掌握高端嵌入系统奠定基础。同时,对于个人的学术素质提高有重要意义。也为推广单片机技术,目前单片机应用领域较广,例如在智能仪器中的应用、机电一体化产品中的应用、计算机网络通信中的应用。相信掌握单片机技术对于社会发展具有重要意义。

1.3国内外研究现状

事务管理系统的应用很广泛,在如今互联网时代,公司企业,事业单位,各大高校等,都将事务管理系统当作是事务处理的高效率工具,当然,和本课题中涉及的系统是有很大区别的,本课题所研究的是基于单片机进行设计的,而且较为基础,功能较为单一。而各个单位所使用的则更为高级,甚至说智能化。比如说,各大高校所使用的教务系统,这其实就是一个事务管理系统,但其更侧重的方面是学生的成绩录入,成绩查询,等级报名等,也就是信息的录入、显示和查询。还有各大企业用事务管理系统作会议提醒,更高级的系统则会用作任务安排并逐级下达给各部门。也就是说,事务管理系统已应用到很多工作中,作为一个效率工具。国外对于事务管理系统的应用与国内的情况类似。

看过一本书叫做《事务处理概念与技术》。这本书里介绍的是事务管理最应重视的核心:管理。然后才是怎么样去规划事件和规划时间。书中的内容比较复杂深奥,但给了我很大的启发和灵感。要注重用户的使用是否方便,还要照顾设计者的是否可靠。

在计算机技术的发展过程中,单片机技术是一个里程碑式的高潮。发展过程大概分为五个阶段:

(1)第一阶段(1974-1976),初级阶段,制造工艺十分落后,集成度较低。

(2)第二阶段(1977-1978),低性能单片机阶段,以MCS-48为代表,ROM很小,运算速度低,中断系统也较为简单,可基本满足一些工业需要。

(3)第三阶段(1979-1982),高性能单片机阶段,多级中断处理。典型代表就是本课题设计中所使用的MCS-51单片机,也是目前国内外产品的主流产品。且处于不断被完善和改进之中。

(4)第四阶段(1983-80年代末),16位单片机阶段。由于制造工艺的精进,结合前人的智慧,集成程度大大提高,运算速度和控制功能大大提高,具有很强的实时处理能力。

(5)第五阶段(90年代),现如今发展状况,32位单片机,新型的串行总线结构和新的特殊功能部件,象征着单片机技术达到顶端,具有强劲的运算速度,代表产品有ARM系列、M68300系列等。再与直流电机的速度控制相结合,相辅相成,扬长避短,二者在性能方面得到了极大提升,可以达到对各种各样的系统进行控制的目的。在大量数据的实时处理上以及复杂工业过程控制上等领域得到大量应用。

而目前的发展趋势就是实现整个系统的单片化。顾名思义,就是将整个系统所需要的各个芯片和元器件集成到一块微型芯片上。这是趋势也是目的。

1.4设计内容和要求

1.4.1 设计要求

(1)系统功能完整且良好,可正常运作;

(2)系统稳定可靠,能够持续稳定的运作;

(3)使用MCS51单片机,设有液晶屏、键盘、蜂鸣器和小灯闪烁。

1.4.2 设计内容

(1)根据题目要求,设计出事务管理系统的系统框图并进行工作原理的描述和讲解,并且对各个模块进行设计、绘制和描述讲解;

(2)(2)确定各个模块的硬件组成,细致到各引脚的标注以及所有元器件的罗列;

(3)完成软件部分的流程图,,并对整个系统的软件运作做合理阐释,完成课题。

2系统方案分析与选择论证

2.1主控芯片方案比较

方案一:使用TI公司生产的16位MSP430F149系列单片机作为系统的主控芯片。此款芯片性能较高,功耗较低,具有非常强大的功能。虽然其内部置入一个高速12位ADC,但是昂贵的价格决定了本课题研究舍弃该款芯片的使用,同时,该芯片属于贴片封装,需要另外制作PCB板,如此看来,制作成本较高,开发周期较长。

方案二:使用宏晶科技有限公司产出的增强型51单片机STC12C5A60S2作为主控芯片。次芯片内部集成了ADC和SPI总线接口,内部时钟不分频,而且价格适中,是开发者可以考虑的一款芯片。

方案三:采用最为普遍常用的MCS51单片机作为主控芯片,无内置高速ADC,虽最为基础,但是价格便宜,操作简单易上手,低功耗,可灵活扩展,适用于大部分设计,三种方案之中,最为经济实惠。

考虑到本课题研究中不需要ADC功能,再结合事务管理系统的设计要求和特点:简洁,易行,便携性,可靠性。而且本系统很大程度上要靠软件设计来完成。站在性价比的角度上来看,方案三最为符合本课题研究的情况。

2.2 显示模块方案比较

方案一:采用带字库的LCD12864液晶屏来显示信息。该款液晶屏能够显示多数常用汉字,同时能够绘制图片,设计成比较理想的结果。

方案二:采用字符液晶显示LCD1602显示信息,控制容易,价格便宜。性价比较高。

方案三:采用LED7段数码显示管显示,成本在三种方案中成本最为低廉,但最为简陋,不能显示字符,无法匹配本课题中事务管理的功能。

综合以上方案,选择方案一中指令较为丰富,功能较为强大的LCD12864液晶屏,虽价格稍高,但性价比最高。

2.3时钟模块方案比较

方案一:选择DS12C887时钟芯片,这款芯片是可以作为计算机的时钟计时和日历且自带晶体振荡器和电池的,在无外接电源的情况下,可以工作十年之久,工作稳定可靠,适用于要求较高精度的场合。另外,该款芯片提供3种可编程中断。

方案二:选择DS1302日历时钟芯片,是一款串行实时时钟芯片,内部有一个高速静态RAM,成本较低,可提供对后备电源进行小电流充电的能力。

方案三:选择M41T50/60/65时钟芯片,该款芯片适用范围较广,可自动调节闰年的功能。同时兼顾硬件设计的体积。功耗很低,但适合于工业系统或者大型家用电器。

综合上述公式,我们选择精度要求不高的,成本较为低廉的DS1302液晶屏。效果卓越,性价比较高。

2.4系统最终方案确定

以MCS51单片机为主,辅以复位模块、键盘输入模块、液晶屏显示输出模块、蜂鸣器模块、小灯闪烁模块以及定时模块(用的是日历芯片DS1302)。考虑到这是一个低功耗、可便携的系统,我采用的是电池供电,这样会更加便捷。系统总框架如图2.1:

图2.1 系统总框架

起初的设计思想是利用变压、整流、滤波技术,即设计一个变压整流块将220V交流电变换成5V直流电输出,这样可以使得该系统适用范围更广,并且可以提高系统的稳定性和实用性,但是考虑到成本相对应就会大大提高并且会增大实物的体积,同时会增加系统功耗。在与指导老师的讨论下,舍弃电源变换模块,直接采用电池作为供电电源进行使用,增强其便携性。

既然作为事务提醒,时钟芯片必不可少,该课题用到的就是最为普遍常见的日历时钟芯片DS1302。该芯片是美国Dallas推出的一款带RAM的涓流充电实时时钟芯片,性能卓越,功耗较小,成本低廉。

扩展的键盘模块采用的是3x3的矩阵式键盘,考虑到要做事务输入,如果采用独立键盘的设定会造成编程的复杂化,所以在与老师的讨论沟通下,采用矩阵式键盘,硬件上复杂一些,而软件编程就会顺利一些,那么软件的间接性会带来部分稳定性,也使得按键输入更为灵活。

液晶屏显示模块采用的是LCD12864液晶屏。自带中文字库,点阵图形显示。之所以利用这款液晶屏,是因为接口方式较为简单以及方便的操作指令。具体参数我将在下文中进行详细介绍。

该系统的复位功能、秒表功能和定时功能均由MCS51单片机最小系统完成。具体描述在下一章节进行介绍。

3 事务管理系统的硬件设计

3.1 基于单片机的事务管理系统的总原理图

对事务管理系统的总原理框图如下图3.1所示:

图3.1 总原理图

3.2 原理图各模块的讲解

图3.1所示的总原理图介绍比较繁琐,那么接下来我进行更为细致的模块描述,

3.2.1单片机

单片机系统的应用在近几十年里一直经久不衰。如今科技发达,技术革新,却也未将单片机技术这名老将逼退至二线。那么所谓单片机就是将微处理器(Central Processing Unit,CPU)、存储器ROM(Read Only Memory,只读存储器)和RAM(Random Access Memory,随机存储器)、定时器/计数器、输入输出接口(I/O接口)、总线和其他多种功能器件集成在一块微型芯片上的微型计算机。就目前来说,单片机应用领域为智能化电子产品且需要嵌入仪器设备内,体现了较高的工艺水平。

下面介绍单片机系统的诸多优点:

(1)很高的可靠性。这体现在较强的抗干扰性以及固定在ROM中的程序不易感染病毒等方面。

(2)很好的扩展性。这体现在它有很多供扩展的引脚,使用灵活,可构成各种规模的应用系统。

(3)很强的控制性。这体现在它丰富的控制指令上(例如位处理指令、条件分支转移指令、逻辑操作指令等)。

(4)较低的功耗。这体现在它所需电压很低,工作电流很小上。低电压,可便携。

(5)很广泛的应用。虽然现在其他许多智能电子技术逐渐代替了单片机技术,但从智能化电子的历史发展来看,单片机的汇编技术起到了不可或缺的作用,并且有着独一无二的优势。

除了上述诸多优点,最主要的是现如今单片机仍然活跃在很多领域之中,这种里程碑式的技术是不可能被淘汰的,现如今也被不断的完善和发展,也逐渐的揉入到了我们的生活中,密不可分。我们要去学习的不仅仅是单片机技术本身,更重要的是学习汇编过程中折射出的思维模式,结合自己的创造性,不断进步。

本系统所使用的是哈佛结构的MCS-51型号的单片机,具有64KB的程序存储器寻址空间。内部具有128或256字节的RAM用来存储数据,这些单元均可读写,部分还可以位寻址功能。其中用户数据RAM可分为三大区:工作寄存区、堆栈和数据缓冲区以及位寻址区。具体的结构构成以及框图在此不做赘述。单片机最小系统如图3.2所示:

图3.2 单片机最小系统框图

该图中显示了复位部分,如下图3.3。该部分复位电路是上电/按键手动复位电路,也就是说,这部分电路使得系统可自动上电复位,也可以由用户手动按下按键进行复位。那么其工作原理是这样的:按下按键,电容C1充电(C1的值为2.2μF,比较小的一个电容,因为对参数的要求并不是很严格,那么只要电容的充电时间大于两个机器周期就能达到稳定可靠的目的,这也是RC复位电路的优点所在。),使得RST一端快速到达高电平;按键放开的瞬间,电容释放电到芯片内阻,这时RST一端恢复到低电平,单片机达到可靠复位的目的[1]。(这里对于电阻的选择,主要根据充电时间t=R×C来决定,前面说了,大于两个机器周期即可,我选择小一点,电阻值为2KΩ)。

图3.3 复位电路

图3.4 晶振电路

如上图3.4所显示电路,就是所谓的晶振电路,毫不夸张的说,没有晶振就没有时钟周期,没有时钟周期,单片机就是一片废物,这么说也是强调晶振电路的必要性。是片内时钟振荡方式,需要在管脚18和19之间外接石英晶体(频率为1.2~12MHz)和震荡电容(震荡电容的作用是:容易启震和减小频率的温漂),震荡电容的值一般取10~30pF,典型值为30pF(这是教材上所列出的典型值)。

在此简单对单片机的P3口进行介绍:是8位准双向I/O端口。是一个复用功能口。有两个功能作为使用:第一种,作为简单的I/O口使用,其使用方法与P1口的使用一致;做第二功能使用时,其功能如下表3.1所示。P3口的每一个引脚都可以单独定义。

表3.1 P3口的第二功能

端口线 第二功能

P3.0 串行口输入

P3.1 串行口输出

P3.2 外部中断0输入

P3.3 外部中断1输入

P3.4 T0的外部输入

P3.5 T1的外部输入

P3.6 "写"信号输出

P3.7 "读"信号输出

3.2.2扩展的时钟芯片

采用最为常见的DS1302日历时钟芯片,该款芯片走时精确,可为多通道数据采集、实时控制和定时提供时间基准和同步信号。这款芯片可对年、月、日、星期、时、分、秒分别进行计时。该芯片的工作电压范围为2.5V-5.5V,功耗较低。设计的期间,考虑到长期保存,防掉电,采用外部充电电池加电,从而能够达到保证系统掉电仍有供电的目的,时钟电路模块原理图如图3.5表示:

图3.5 日历时钟模块

当单片机与时钟芯片进行数据传输时,单片机必须先向芯片内写入控制命令字,然后芯片进行判断,如写入的字选择是单字节模式,那么通过连续的SCLK脉冲进行数据的输入或输出,这里的输入输出数据大小为1B;若判断字选择为突发模式,则通过连续脉冲SCLK可以一次性写/读时钟寄存器(必须一次性且全部完成,不可以根据需要读/写),大小为7B,也可以达到一次性读/写1-31B的RAM数据(读/写数据可以根据需要完成,不要求全部完成)。

当二者之间无数据传输时,芯片的状态如下:SCLK处于并保持低电平,当RST处于低电平时,禁止数据传输;那么当RST由低位升为高位时,则启动数据传输,传输时,低位在前,高位在后。数据在控制字指令输入后的下一个脉冲上升沿被写入芯片内,读出数据的过程类似写入数据的过程,则在下一个脉冲的下降沿被读出,每次读/写1位,而连续8个脉冲信号可以读/写1字节。

注意图中所设计的防掉电保护电路,如下图3.6所示。采用两个续流二极管1N4148、两个电容和一个3.6V电池组成。其工作原理是:当系统掉电,该电路工作,由电池对芯片提供电源,防止数据丢失。这其中,电容在一直充电,为了防止突然掉电,二极管的作用是为了单向导通。原理很简单,VCC端掉电,由电池继续供电。设计此电路,就是为了提高系统稳定性以及可靠性。

图3.6 防掉电保护电路

3.2.3扩展的键盘模块

采用3x3矩阵式键盘。设计之初,考虑到使用独立键盘会给后期编程造成很大的麻烦,综合系统的稳定性以及可靠性考虑,决定使用矩阵式键盘,对其按键的识别则采用动态扫描法。线路连接图如下图3.7:

图3.7 键盘模块

利用软件延时来达到消除键抖动的目的,然后再对按键进行判别与处理。

从图中可以看出,我是用了一个74LS245的芯片将矩阵式键盘连接到单片机的P0口上,下面我简单介绍下74LS245芯片。

该款芯片是一款比较常见,使用比较广泛的芯片,其作用是用来驱动外接设备的。其本质是一个8路同向三态双向总线收发器,可以进行双向传输数据,即可以输入数据也可以输出数据。设计中,之所以使用该芯片,是因为外接键盘和液晶屏,超过了MCS51单片机P0口最大负载。

芯片的接收模式为:当片选端处于低电平时,DIR端为"0",信号则有B端向A端传输;若DIR端为"1",信号则由A向B传输。当片选端处于高电平时,那么A和B均处于高组态状态[1]。

扩展的键盘使用动态扫描法,之所以采取此种方法,是为了节省I/O接口,而且编程也较为简单。此方法不仅可以扫描键阵,还可以同时兼顾实现显示硬件设计,使用广泛。在扫描过程中,"移动"信号轮流对各行按键进行检测,回送线上必须接上拉电阻。首先,行线输出全为0,然后读"列线",全为1时,代表无按键按下;否则代表有键按下,需要进行延时去抖动。将某行输出置位0,读取"列线"状态,判断"列线"上某位是否为0,为0则代表该处交叉点的按键被按下;不为0,则代表无按键按下。继续扫描下一行,直到全部扫描完成[1]。

3.2.4扩展的液晶屏显示模块

采用LCD12864液晶屏显示,关于该模块的硬件介绍不做过多赘述。12864自带中文字库,内部含有国际一级、二级简体中文字库的点阵图形液晶显示;利用模块的灵活性和方便的操作指令,构成全中文的人机交互界面。管脚功能如下表3.2所示;

表3.2 管脚说明

管脚号 管脚名称 管教功能

1 VSS 电源地

2 VCC 电源正

3 V0 亮度调整

4 RS RS=H,则显示数据

RS=L,则显示之灵数据

5 R/W R/W=H,读数据

R/W=L,写数据

6 E 使能信号

7 DB0 三态数据线

8 DB1 三态数据线

9 DB2 三态数据线

续表3.4

10 DB3 三态数据线

11 DB4 三态数据线

12 DB5 三态数据线

13 DB6 三态数据线

14 DB7 三态数据线

15 PSB PSB=H,则处于并口方式

PSB=L,则处于串口方式

16 NC 空脚

17 /RESET 低电平有效的复位端

18 VOUT 驱动电压输出端口

19 A 背光源正端口

20 K 背光源负端口

设计采用该型号液晶屏是因为中意它丰富的操作指令,即关键在于注意软件编程,一定要定义好硬件连接的引脚,进行编程时,首先编写显示初始化程序,然后进行设置显示地址,在之后进行写入显示字符的数据。模块图如下图3.8所示:我使用了一个74LS245芯片进行液晶屏与单片机的连接。

图3.8 液晶屏显示模块

3.2.5小灯闪烁模块

如图3.9表示。简单的由一个限流电阻和一个发光二极管组成,因为LED灯不允许直接与单片机连接。硬件很简单,依靠软件编程实现小灯的闪烁效果。

图3.9 小灯闪烁模块

3.2.6蜂鸣器模块

如图3.10,标准的蜂鸣器模块,简单的由一个三极管、一个电阻和一个蜂鸣器组成,电路结构简单,编程简单。端口内部无上拉电阻,外接时,接了一个外接电阻R11,阻值取的较大,为10KΩ。设计之初,加了一个延时函数,叫一声就关闭,但在与指导老师的讨论下,这种功能不合适该系统,从用户的角度来看,我需要的是蜂鸣器一直发声警报,反而最简单的是最实用的。

图3.10 蜂鸣器模块

蜂鸣器的参数如下表3.3.

表3.3 蜂鸣器参数

额定电压 1.5

工作电压范围 1.0~1.7

最大电流值 80mA

电阻 6~10Ω

DBA 70~100

工作频率 3000

注意三极管的使用。要明白,之所以使用三极管,是因为蜂鸣器的工作电流比较大,而单片机I/O口工作电流比较小(4mA~7mA),所以无法直接驱动,那么就需要一个放大电路来驱动,一般来说,使用一个三极管即可。这里选择的三极管采用常用的NPN型的9013或PNP型的8050等,放大倍数取在100左右。蜂鸣器以及小灯都主要为"提醒功能"服务的,如事务提醒,定时到时提醒,倒计时提醒等。软件部分编程也较为简单。

4 事务管理系统的软件设计分析

基于单片机的事务管理系统的难点就在于对系统的软件分析和编程,从上文的进行来看,该系统所需模块较少,充分利用了每个模块的每个元件的功能,如51单片机的所有I/O接口,日历时钟芯片的定时/计时的功能。将在下文中详细介绍。该部分主要罗列各功能实现的流程图以及对流程图的说明及解释。

4.1 时钟模块软件分析

4.1.1时钟命令字

长期的事务管理要求日历时钟芯片有精确的实时时钟,能够提供精准的时间基数。时钟芯片的命令字如下表4.1。

表4.1 命令字

7 6 5 4 3 2 1 0

1 RAM/C/K A4 A3 A2 A1 A0 RD//W

4.1.2 初始化步骤

在使用DS1302之前,应该对其进行初始化,初始化步骤设计如下:

(1)取RST得非端为0, 取SCLK端为0,则初始设置为禁止读/写,串行时钟的输入为低电平。

(2)向芯片内写入允许写命令,禁止写保护。

(3)向芯片内写入年、月、日、星期、时、分、秒的初值,如下表4.2:

表4.2 初值

年 月 日 星期 时 分 秒

8CH 88H 86H 8AH 84H 82H 80H

(4)设置写保护。

4.1.3 注意事项

对1302的使用有以下注意事项:

(1)当/RST处于高电平时,才能进行读/写操作。

(2)必须采用单字节进行读/写操作。

(3)采用突发模式进行读/写操作。

(4)判断是否需要进行对备用电池的充电操作。

4.1.4 流程图

在设计中,设计思路是每设定的预定时间,系统利用时钟芯片所提供的时间与所设定的时间进行比较,当二者数值相符合时,触发蜂鸣器电路,蜂鸣器导通报警提醒,同时小灯闪烁,这里的闪烁利用软件编程实现。流程图如图4-1:

图4.1 事务提醒流程图

具体设计思路如下:日历时钟芯片会自动进行当前时分秒计时,当使用者设定好事务提醒时间后,系统先进行时位上数据的比较,时位不相等时,就不会往下进行分位的比较,继续时位的计数;而当时位与设定时间的时位相等时,进行下一项分位比较,若分位的值不相等时,就不会往下进行秒位比较;而当分位相等时,则进行下一项秒位的比较,秒位不相等时,下一秒自动进行比较,直到时、分、秒这三位数值都与所设定值相等时,反馈一个信号,触发蜂鸣器报警。由于计算机的处理速的很快,也就是说单片机在这一秒内的判断很多次,系统一直处于报警状态,那么就设定一个环节,识别按键是否按下。若无按键按下,表示用户不在周围或者用户未接到警报,那么蜂鸣器会一直在滴滴响,当警报持续60s后,仍然无按键按下,则目标值分位上的数据+3处理,返回继续进行比较,直到该事件被处理。若有任意按键按下,则表示用户收到提醒,系统转入另一判断,该事件是否已经由用户设定为循环事件,若是,则根据设定值,进行各位时间值的增加。比如说,用户编辑"跑步"事件,设定时间为06:00,每天循环。那么就将当前设定值的时位进行+24处理。若不是循环事件,那么将当前时间数据清除,并调取数据存储器中的下一条时间设定值,再次进行数值比较,周而复始。

编程当中,不能使用中断指令,应该采用较为简单的逻辑比较指令。

4.2 秒表功能的实现。

4.2.1 秒表计时原理

利用单片机本身的定时器/计数器T0、T1来达到,并且利用中断进行秒表的启动和停止,同时利用RST进行秒表清零。单片机有五个中断源,这里使用的是

片内定时器/计数器溢出中断T0和T1:其工作原理是当定时器/计数器计满回零产出溢出时,相应的硬件置位于中断标志,当CPU相应中断后,那么硬件自动清零中断标志。而串行口发送或接收1帧,之后硬件置位响应中断标志;CPU响应中断,之后由用户手动清零中断标志。秒标工作流程图如下图4.2:其中T0设1ms

图4.2 秒表工作流程图

4.2.2 秒表启停

秒表的启停则是利用RST按键来进行,当屏幕中有秒表计时的时候(即有初值的情况),若按下RST键,那么回到初值;若没有按下RST,那么判断是否有其他任意键按下,若按下,则进行重新计时,和按下RST键达到的效果是一致的。若没有其他键按下,触发蜂鸣器警报,确认是否有按键按下,若有,返回重新计时;若没有,则单片机上电自动复位。流程图如下图4.3:

图4.3 秒表复位流程图

4.3 键盘模块

3x3矩阵式键盘扫描程序流程图如图4.4。

图4.4 矩阵键盘扫描程序流程图

如上图4.4所示,键盘的扫描过程并不复杂,在硬件设计中提到过,采用动态扫描法。首先,使得行线输出全为0,然后读取"列线",全不为1时,代表有键按下,下一步需要进行延时10ms进行软件去抖动。流程图中的"确认有键闭合"是指继续将某行输出置位0,读取"列线"状态,判断"列线"上某位是否为0,为0则代表该处交叉点的按键被按下;在之后判断按键是否被释放,若未被释放,继续返回确定建号,若按键得到释放,则返回键号。当判断不为0,则代表无按键按下,则返回上一步。以此种模式继续扫描下一行,直到全部扫描完成。

下图4.5流程图是在设计中考虑到的键盘接口处的电路流程图。图4.4是在解释键盘的动态扫描的过程,而我绘制图4.5的目的是为了突出延时去抖动的过程,二者流程图很相似,但软件编程大有不同。

软件去抖动的原理很简单:检测判断有按键按下时,执行一段延时10ms的子程序,然后再确定点评是否仍保持闭合状态,若依旧保持,也就是再次确认是否有按键按下,确认后才是真正的按键按下,最后进行相应的处理。这里需要注意的是,按键释放也要进行10ms的延时处理,等待后沿去抖动后再次判断按键是否释放,以此保证消除按键抖动对于系统的影响。而图4.5所谓接口电路流程图就是强调扫描前,确认"行线"输出为0,然后读取"列线"的情况[5]。

4.4 定时器模块

这个模块中定时的功能与4.1中事务管理的功能相似。用户可以进行事件名称输入,比如衣服放在洗衣机中进行机洗的时间为30min,那么定时的格式为"洗衣服 30min 重复:否"格式中所谓重复项,为选择,选择是或者否。和4.1章节中介绍的事务提醒有很大的相似,唯一最大的不同就是,定时功能的设计上,要求每次只能设定一个时间,执行完才能够写入下一个定时。

4.5 功能分页

这个部分进行说明的是对系统显示进行功能分页,每一个功能为一页。也就是说,设置一个键盘按键,比如取右下角的一个按键,命名为"any",这个按键被识别按下的时候,单片机进入选功能页程序,这时显示屏上显示第一页:事务提醒;再按一下显示第二页:秒表功能;再按一下显示第三页:定时功能。

这项功能属于细节处理,硬件设计中,就考虑到了功能分页的情况。对于此项功能的实现,主要依靠子程序的调用和编辑。

图4.5 键盘接口电路程序流程图

5总结与展望

5.1 总结

本设计是"基于单片机的事务管理系统",设计之初,首先明确的是事务管理系统的框架,了解由哪些部分构成以及实现这些结构的元器件连接,并掌握系统所要求达到的功能以及能够实现这些功能的流程图。在本设计中,要求有事务提醒功能,想一想,多从用户的角度考虑问题,很多小细节需要考虑到,而且很多都是难点。比如说事件暂时不能得到处理该怎么办?事件一直不能得到处理该怎么办?事件的编辑该怎么实现?等等一些列问题,这些也是导致该系统的缺点所在,我所设计的这款系统,键入的事件数量较少,运算速率较慢,事件延时提醒的延时时间是固定的不可更改,按键较少导致用户需要自行记住这些按键各自的功能。设定了一个按键用来切换功能,方便设计者也为方便用户。

接下来绘制流程图过程中,需要把设想的功能分解成一个个小步骤,一个一个细节去刻画,而且要严格控制流程图的格式,这样才有助于程序的汇编。

总的来说,对该系统达到基本要求就是稳定可靠。各大功能板块齐全,控制容易,易上手。在设计过程中,采用了矩阵式键盘,虽然硬件上复杂一些,但是软件编辑会精简。一键切换,可以选择事务管理页面,或者秒表定时页面,或者事务编辑页面。从而提高运算效率。矩阵键盘进行了软件去抖动处理,硬件去抖动很麻烦,这里不予以考虑。同时,在日历时钟芯片的编辑上,加入了防掉电保护。

缺点是:智能化较低,各项指标需要用户自行键入;数据存储空间较小,所存储的事件数量较少;

优点是:稳定、可靠;便携性高;安全性高;当手动编辑完成后,需要再操作行为减少;易维护等。

在设计中,遇到了一些难点,也因此吸取了教训。设计之初,很粗糙的构建了整个系统,各个芯片的管脚说明,各元器件的参数都没有细致的罗列。比如说,蜂鸣器的选择,该用什么型号,安全电压是多少,该怎么和单片机连接;若果使用三极管,那么选择NPN还是PNP型,使用NPN型,要注意设置一个关断,否则开机蜂鸣器报警。确定型号后的放大倍数的确定,最大电流值是多少,等等。这些数据一定要精确。

此课题研究综合电路、模拟/数字电子技术、CAD制图、汇编、仿真等,是对大学四年的学习的实践,以此为鉴而知不足。

元器件清单如下表5.1:

表5.1 元器件清单

名称 数量

MCS-51单片机芯片 ×1

74LS245芯片 ×2

LCD液晶显示屏 ×1

蜂鸣器 ×1

NPN9013三极管 ×1

LED小灯 ×1

32.768晶振片 ×2

按钮 ×10

滑动变阻器 ×1

30μF电容 ×2

10μF电容 ×1

2.2μF电容 ×1

0.1μF电容 ×3

10KΩ电阻 ×10

4.7KΩ电阻 ×3

2KΩ电阻 ×1

1KΩ电阻 ×1

200Ω电阻 ×1

单片机本身就是低功耗、可靠性高,在进行课题设计时,深深感受到自己的薄弱之处。虽然深入的学习了单片机技术,但是应了一句话"实践是检验真理的唯一标准",我所学所看所知只有应用到自己的设计中,我才真正的消化了这些。同时,我也认识到,现阶段所接触到的所有工程设计只不过是冰山一角,自己还有很长的路要走。通过本次设计,巩固学习是一方面,最重要的是知不足,每一门学科都是先人智慧的结晶,书山有路勤为径,单片机这门课程呈现的是更深化发展的大趋势。

5.2 展望

现如今的32位单片机,是顶级产品系列,算法更加优化,处理速度更加快捷。在不久的将来,我相信能够达到系统单片化的程度,这也是单片机技术发展的趋势,即将所有必要的外围电路(包括存储器、A/D转化器、驱动器等)全部集成到单片机内。在技术不断革新的同时,要加大片内存储的容量来存储数据,得以满足动态数据存储的要求。

简单来说,个人角度来看,汇编语言虽较为繁琐,但是简洁明了,接口对接口,深入浅出,简单易懂易掌握,而且现如今串行口扩展十分方便灵活,编程的灵活性大大增加。而作为使用较多的单片机在不断完善的推动下,可靠性不断提高,功耗不断降低,仍牢牢"嵌入"在工业、军事、航空、医疗、自动控制等多个领域。

而单片机技术的发展势必会促进事务管理系统的发展。更多的体现在智能化,比如说,加入语音识别,包括语音报时,语音输入;加入通信功能,现阶段可以使用通信芯片,在未来可以使用无线语音通信,也就是说,将系统与手机进行无线连接;加入温度传感器,与语音芯片结合,进行天气播报,更进一步则与互联网连接,可以同步最为精确的时间和天气温度;还可以加入监控功能,就像现在市场上的智能腕带,测心率以及统计公里数。这些种种都可以利用单片机完成,但是需要更大的存储空间以及更快的运算速度。

致 谢

本次毕业设计,是在老师的悉心指导下完成的,最终的成果,也体现了我大学四年的学习情况。回想这四年来,数十门课程,昔日上课的情景一一浮现在眼前。在此感谢本科的所有任课教师。毕业设计是一门综合设计,是我交给所有老师的一份答卷,或许有些不足,但诚挚的感谢各位老师。

老师本着严谨治学,认真负责的态度,凭借渊博的学识,不断地帮助我完善论文,所有的环节确定都是与老师讨论后的成果,每次讨论都有新的收获。老师跟进的很严格,但是效果无疑是最好的,是鼓励是鞭策,但无疑这种方式很辛苦。

这次一同战斗的同学很多,课题相通,互相帮助,尽量不给老师造成困扰,老师的辛苦大家有目共睹。毕业期将近,身边的同学都在忙毕业设计,各位老师都在用心用力去提供帮助,各位老师辛苦了。

在此也谢谢家人的支持和鼓励,没有热情相助,但却是身后坚实而温暖的依靠,是我遇到难题勇敢面对的不可或缺的力量。家人也总能在我最需要帮助的时候出现。

知不足而勇上进,在毕业设计中给予我帮助的人,在此我表示衷心感谢。也由衷的说一句:各位辛苦了。

参考文献

[1] 张鑫.单片机原理以应用[M].北京:电子工业出版社,2005.

[2] 周华 宋公明 陈志辉.基于51单片机的综合性多键位数控键盘设计[C].全国企业应用集成系统与技术学术研讨会(EAIST'05). 2005-11-01.

[3] 王莉 曹继光.控制设备开发中PC键盘的设计[J]. 《自动化与仪器仪表》. 2004年3期. 1001-9227.

[4] 翟呈祥.基于FPGA的8051单片机IP核设计及应用[D]. 太原理工大学. 2007.

[5] 沈磊. 基于单片机的自来水加氯控制系统的设计[D]. 沈阳理工大学. 2009.

[6] 张安鸿. 基于情景描述的手机语义系统研究[D]. 昆明理工大学. 2005.

[7] 马红星 姜黎 高志军. 实时时钟芯片DS1302在DSP嵌入式系统中的应用[J]. 《信息化研究》. 2009年11期. 1674-4888

[8] 张治海. 基于单片机的多功能万年历的设计与实现[J]. 《山西电子技术》. 2015年5期. 1674-4578

[9] 牛余朋 朱正斌 梁春雨.时钟芯片DS12C887的应用技巧[J]. 《电子制作》. 2011年6期. 1006-5059.

[10] 何文静. 基于52单片机的数字时钟设计[J]. 《电子制作》2015年13期. 1006-5059.

[11] 康跃君. 液晶显示屏故障诊断与维护的研究[D]. 苏州大学. 2009.

[12] 蒋宏艳. 单片机实训课程的创新设计探讨[D]. 贵州大学. 2008.

[13] 王洪涛. 论单片机在电子技术中的应用[J]. 《消费电子》. 2012年13期. 1674-7712.

[15] 李宝泉. 单片机未来应用发展的研究探讨[J].《电子世界》. 2014年21期. 1003-0522.

[16] 崔雨杨. 从电路集成到系统集成[J]. 《中国传媒科技》. 2005年7期. 1671-0134.

[17] 赵海兰 朱剑 赵祥伟.《DS1302实时显示时间的原理与应用[J]. 《电子技术》. 2004年1期. 1000-0755.

[18] 冯大捷. 基于DS1302电子时钟的设计[J]. 《科技视界》. 2012年2期. 2095-2457.

[19] 王侃. 单片机最小系统的研究[J]. 《求知导刊》. 2015年11期. 2095-624X.

[20] 郭景.单片机的复位电路[J]. 《内蒙古石油化工》. 2004年6期. 1006-7981.

相关推荐
青春男大15 分钟前
java队列--数据结构
java·开发语言·数据结构·学习·eclipse
yzhSWJ36 分钟前
mybatisplu设置自动填充
java·spring·tomcat
Java雪荷40 分钟前
基于 Vant UI + Redisson BitSet 实现签到日历
java·redis·vue
白宇横流学长1 小时前
基于Javaee的影视创作论坛的设计与实现【源码+文档+部署讲解】
java·java-ee
南宫生1 小时前
力扣-数据结构-4【算法学习day.75】
java·数据结构·学习·算法·leetcode
TANGLONG2221 小时前
【初阶数据结构与算法】八大排序算法之归并排序与非比较排序(计数排序)
java·数据结构·c++·算法·面试·蓝桥杯·排序算法
winks31 小时前
使用RabbitMQ
java·rabbitmq·java-rabbitmq
Oneforlove_twoforjob1 小时前
【Java基础面试题044】使用new String(“哈哈“)语句会创建几个对象?
java·开发语言
坊钰2 小时前
【Java 数据结构】LinkedList 类 和 模拟实现链表
java·开发语言·数据结构·学习·算法·链表
胡尔摩斯.2 小时前
SpringMVC
java·开发语言·后端·spring·代理模式