摘要:采用单片机AT89C51作为本设计的核心元件。利用7段共阳LED作为显示器件。在此设计中共接入了6个7段共阳LED显示器,和4个8段共阳LED显示器,其中6个用于记录AB队的分数,每队3个LED显示器显示范围可达到0~999分,足够满足赛程需要,另外4个LED显示器则用来记录赛程时间,其中2个用于显示分钟,2个用于显示秒钟。赛程计时采用倒计时方式。即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。计时范围可达到0~99分钟,也完全满足实际赛程的需要。
其次,为了配合计时器和计分器校正调整时间和比分,我特定在本设计中设立了11个按键,其中3个用于设置,交换场地,启动和暂停等功能,另外8个用于调整比赛的比分。采用单片机控制使这个系统按键操作使用简洁,LED显示,安装方便。解决了篮球比赛计数器的安装问题,节约了线材,适合在各种规模的体育场馆使用,完全可以代替传统的用钟表进行计时的方法,当然稍加改动也可以用于其他球类比赛,是体育器材向智能化发展的一个实例。
关键词:AT89C51 74LS164 计时计分系统
1 概述1.1 课题背景
体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递利用的信息系统。根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类,评分类,命中类,制胜类,得分类等多种类型。
篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统。篮球比赛的计时计分系统由计时器,计分器等多种电子设备组成,同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标。
由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器和24秒控制器等组成。
1.2 设计内容
本系统是采用单片机AT89C51作为本设计的核心元件。利用LED作为显示器件。在此设计中共接入了10个LED显示器,其中6个用于记录AB队的分数,每队3个LED显示器显示范围可达到0~999分,足够满足赛程需要,另外4个LED显示器则用来记录赛程时间,其中2个用于显示分钟,2个用于显示秒钟。赛程计时采用倒计时方式。即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。计时范围可达到0~99分钟,也完全满足实际赛程的需要。
其次,为了配合计时器和计分器校正调整时间和比分,我特定在本设计中设立了11个按键,其中8个用于设置,交换场地,启动和暂停等功能。
1.3 设计任务和要求
任务: 设计一个用于赛场的篮球计时计分器。
要求: 1、能记录整个赛程的比赛时间,并能修改比赛时间。
2、能随时刷新甲、乙两队在整个过程中的比分。
3、中场交换比赛场地时,能交换甲、乙两队比分的位置。
4、比赛结束时,能发出报警声。
5、自带+5V、+12V直流稳压电源。
2 系统总体方案及硬件设计2.1 总体方案:
本系统采用单片机AT89C51作为本设计的核心元件。利用7段共阳LED作为显示器件。在此设计中共接入了10个7段共阳LED显示器,其中6个用于记录AB队的分数,每队3个LED显示器显示范围可达到0~999分,足够满足赛程需要,另外4个LED显示器则用来记录赛程时间,其中2个用于显示分钟,2个用于显示秒钟。赛程计时采用到计时方式。即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。计时范围可达到0~999分钟,也完全满足实际赛程的需要。
其次,为了配合计时器和计分器校正调整时间和比分,我特定在本设计中设立了11个按键,其中3个用于设置,交换场地,启动和暂停等功能,另外8个用于调整比赛的比分。AT89C51单片机是智能控制器的核心,控制整个系统电路的工作: 74LS164将单片机输出的串行输入信号转换为并行信号输出并驱动LED;显示器显示比赛的时间,和两个队伍的分数等信息;键盘用于发出控制命令;报警电路会在24秒进攻时间结束或单节比赛结束时给出声光报警信号。
1)单片机控制电路,以AT89C51为控制核心
2)键盘电路,采用软件延迟去抖动电路设计,输入接口采用串行方式,这样可减少占用CPU的接口,减少了硬件的成本同时也增强了系统的扩展性。
3)显示电路,采用静态显示方式,采用串行输入并行输出的74LS164集成电路,该电路驱动能力较强,可直接驱动LED显示器,减少了显示电路与单片机之间的连接线。
4)设计了复位电路。智能控制器中设有复位电路,这是单片机开始工作都要进行的操作。
2.2 系统的硬件构成:
此篮球比赛计时计分系统是一个时间计算系统,由相应的键盘控制电路、LED显示器、声光报警、电源等电路组成。可以通过人员的简单调控,数据经过处理,输出比赛时间,比分并推动显示电路显示数值。基于单片机系统的篮球赛计时计分器的系统构成图如下图所示:
图1 系统构成图
3 硬件电路设计3.1 键盘模块的设计
本设计要求有调时调分等功能,因此键盘设计是必须的。非编码式键盘中,每个按键的作用只是使相应接点接通或断开,每个按键的键码并非由硬电路产生,而是由相应扫描处理程序对它扫描形成的。因此非编码键盘硬件电路极为简单,在微型计算机中得到了广泛的应用。
本设计采用独立式非编码键盘,每个按键都是彼此独立的,均需占用CPU的一条I/O输入数据线,其中控制比分调节的8个按键分别与P1.0~P1.7相连,控制交换场地,和开始/暂停的3个按键与CPU的P3.0~P3.2口相连,若没有按键按下时,CPU从P1口读得的引脚电平均为"0"(+5V);若某一按键被按下,则该键所对应的端口线变为低电平。单片机定时对P1口进行程序查询,即可发现键盘上是否有键按下以及哪个键被按下。
11个控制按键的定义如下:
S1 RST/VPD 复位按钮
S2 P1.0 A队加1分
S3 P1.1 A队加2分
S4 P1.2 A队加3分
S5 P1.3 A队减1分
S6 P1.4 B队加1分
S7 P1.5 B队加2分
S8 P1.6 B队加3分
S9 P1.7 B队减1分
S10 P3.0 开始/暂停按钮
S11 P3.1 交换场地按钮
S12 P3.2 设定时间按钮
控制按键的设计如下图所示:
图2 键盘电路设计图
3.2 LED显示模块的设计
3.2.1 AT89C51对LED的显示 LED是发光二极管的简称,LED数码管结构简单,价格便宜。在单片机显示中通常使用的都是LED数码管。89C51单片机对LED数码管的显示可以分为静态和动态两种。静态显示的特点是各LED管能稳定地同时显示各自字型;动态显示是指各LED轮流地一遍一遍的显示各自字符,人们因视觉器官惰性而看到的是各LED似乎是在同时显示不同的字型[1]。
静态显示:所谓的静态显示,是由单片机一次输出显示后,就能保持,直到下次送新的显示模型为止。这种显示占用机时少,显示可靠;缺点是使用元件多,且线路比较复杂,因而成本比较高。但是随着大规模集成电路的发展,目前已经研制出具有多种功能的显示器件。例如:锁存器,译码器、驱动器、显示器四位一体的显示器件,用起来比较方便。当显示位数较少时,采用这种显示方式是合适的。这种显示方式的每一个七段显示器需要一个8位输出口控制。
动态显示:所谓的动态显示,就是单片机定时地对显示器件扫描。在这种方法中,显示器件分时工作,每次只能有一个器件显示,但由于认得视觉暂留现象,所以仍感觉到所有的器件都在"同时"显示。这种显示方法的优点是使用硬件少,因而价格低;但占用机时多,只要单片机不执行显示程序就立刻停止显示。动态显示的亮度与导通电流有关,与点亮时间和间隔的比例有关。许多单片机的开发系统及仿真器上的6位显示器即采用这类显示方法[2]。
3.2.2 74LS164芯片简介 74LS164是8位移位寄存器(串行输入,并行输出),它的作用是将串行信号转换为并行信号。当清除端(CLEAR)为低电平时,输出端(QA-QH)为低电平。 串行数据输入端(A,B)可控制数据。当 A、B 任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下 Q0 为低电平[3]。当 A、B 有一个为高电平,则另一个就允许输入数据,并在 CLOCK 上升沿作用下决定 Q0 的状态。
表1: 164为8位移位寄存器,其主要电特性的典型值如下:
74LS164的引脚图和逻辑图如下所示:
图3 74LS164封装引脚图
图3 74LS164封装引脚图
表2: 74HC164引出端符号及功能
表3: 74LS164真值表
注:H-高电平,L-低电平,X-任意电平,↑-低到高电平跳变, QA0,QB0,QH0 -规定的稳态条件建立前的电平,QAn, QGn -时钟最近的↑前的电平[6]。
表4: 74HC164推荐工作条件:
3.2.4 显示电路设计 为了保证显示的可靠性,本单片机控制系统采用静态显示。本设计采用的是通过连接74LS164移位寄存器实现LED的静态显示,这样可以使CPU将数据送来后就由74LS164控制,减少了CPU的工作。采用的数码显示管是采用共阳极的接法,电源电压为5V。AT89C51单片机串行口方式为移位寄存器方式[7],外接10片74LS164作为LED显示器的静态接口,把AT89C51的P0口和P2口作为数据输出线,P0.1和P2.4作为移位时钟脉冲。
下图示出了AT89C51通过74LS164对十个共阳LED的接口电路。图中,Q0~Q7口和所有LED的a,b,c,d,e,f,g,SP引线相连,用于字型显示,其余引脚用于接通数据和电源等。此显示部分有两个功能,分别是显示时间和显示两队的比分。显示时间用四个LED,两个为分钟位,其余两个为秒钟位;采用十进制,最高显示99.59,精确到小数点后两位;显示两队比分用六个LED,采用十进制,最高分为999分。
AT89C51是通过P0.0~P0.5和74LS164相连的,10 个74LS164移位寄存器按照比分和时间的不同用途一共分为两组,P0.0口为比分数据输出口,为74LS164提供显示数据,P0.1口为移位寄存器时钟输入,P0.2为比分同步清除输入端[8];P0.3为时间数据输出口,为74LS164提供显示时间数据,P0.4口也为移位寄存器时钟输入,P0.2为时间同步清除输入端。
在这个静态显示电路中,数据的输入和保存是通过74LS164的寄存器和锁存器实现的,这样LED就可以实现一遍一遍的显示,能将新的数据显示而替换上一级的数据。
74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。CLK(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到CLK端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。CLR(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。QA…QH(第3-6和10-13引脚)并行输出端分别接LED显示器的hg….a各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,再来一个脉冲,第一个脉冲就会从最高位移出。4片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机P3.0端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第4个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一,二,三,四片74LS164单片机中[9]。显示电路图如下:
图5 显示电路图的设计
3.3 声光报警及指示电路
本系统设计了报警电路,设定单节比赛的时间值,系统计时的过程中,一旦发现到达设定的时间,即当整节比赛结束时,便启动自身报警电路[10]。单片机便将P3.6管脚由低电平变为高电平,如果报警开关处于闭合状态,则三极管导通,蜂鸣器发出报警信号。声光警报电路原理图如下所示:
图6 声光报警器设计图
3.4 单片机控制设计
3.4.1 单片机系统I/O口分配 系统的I/O口分配如下:TXAL1,TXAL2 为单片机外接时钟振荡电路,石英晶体起振后在XTAL2上输出一个3V左右的正弦波,以便使AT89C51片内的OSC电路按石英晶振相同的频率自激振荡[11]。
P1.0口至P1.7口为键盘输入口,这8个按键用来调整A,B两队的比分,在比赛中出现计分错误的情况时方便快速的修改比分。P3.0口至P3.2口外接了另外三个按键,他们的作用分别是:开始/暂停,交换场地,设定时间。
P0.0口至P0.2口连接4个LED数码管用来显示比赛时间,P2.0口至P2.4口连接了6个LED数码管显示A,B两只队伍的比分。
P3.6口接报警电路。
3.4.2 AT89C51单片机简介 单片机(Microcontroller,又称微处理器)是在一块硅片上集成了各种部件的微型机[12],这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。AT89C51是MCS51系列单片机的一个产品。MCS51系列单片机是Intel公司推出的通用型单片机,其结构特点如下:
(1)8位CPU;
(2)片内震荡及时钟电路;
(3)32根I/O线;
(4)外部存储器寻址范围ROM、RAM各64K;
(5)2个16位的定时器/计数器;
(6)5个中断源,2个中断优先级;
(7)全双工串行接口。
AT89C51单片机系列指的是MCS51系列和其他公司的8051衍生产品。这些衍生品是在基本型基础上增强了各种功能的产品,如高级语言型、flash 型、EEPROM型、A/D型、DMA型、多并行口型等,这些产品给8位单片机注入了新的活力[13],给它的开发应用开拓了更广泛的前景[14]。
AT89C51引脚图:
图7 AT89C51引脚图
AT89C51主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器[15](FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[16]。
管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
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口输出其特殊功能寄存器的内容[17]。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.6 /WR(外部数据存储器写选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效[18]。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3.4.3 单片机外接时钟产生电路 定时控制部件起着控制器的作用,由定时控制逻辑,指令寄存器,和振荡器OSC等电路组成。OSC是控制器的心脏,能为控制器提供时钟脉冲,引脚ATXL1为反向放大管的输入端,XTAL2为输出端,在XTAL1和XTAL2上外接定时反馈回路,OSC就能自激振荡。单片机片内电路OSC与片外器件就构成一个时钟产生电路,CPU的所有操作均在时钟脉冲同步下进行。片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz~12MHz之间选取。C1、C2是反馈电容,其值在5pF~30pF之间选取,典型值为30Pf[19]。本电路选用的电容为30pF,晶振频率为12MHz[20]。
图8 时钟产生电路
XTAL1和XTAL2:这两个端子是片内振荡电路的输入线,用来外接石英晶体和微调电容。在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种机械振动又会产生交变电场,上述物理现象称为压电效应。一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡[21]。这一特定频率就是石英晶体的固有频率,也称谐振频率。即用来连接AT89C51片内OSC的定时反馈回路,如上图所示。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使MCS-51片内的OSC电路按石英晶振相同频率自激振荡。通常,OSC的输出时钟频率fOSC为0.5MHz-16MHz,典型值为12MHz或者11.0592MHz。电容C1和C2可以帮助起振,典型值为30pF,调节它们可以达到微调fOSC的目的。
3.4.4 单片机外接复位电路 单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位后是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态复位。MCS-51单片机的RST引脚是复位信号的输入端。例如:若MCS-51单片机时钟频率为12MHz,则复位脉冲宽度至少应该为2μs[10]下图为单片机复位电路[22]。
图9 AT89C51单片机复位电路
3.5 稳压电源的设计
3.5.1 稳压电源的组成 直流稳压电源主要由电源变压器、整流电路、滤波电路和稳压电路四部分组成,原理框图如图16所示,电网供给的交流电压Ui1为220V、50Hz,经电源变压器降压后,得到符合电路需要的交流电压Ui2,然后由整流电路变换方向不变,大小随时间变化的脉动直流电压Ui3;再用滤波器滤去其交流分量,就可得到比较平直的直流电压Uo,为了能得到稳定的输出直流电压,本设计还使用稳压电路,以保证输出电压更加稳定[15]。
图10 直流稳压电源原理框图
3.5.2 三端固定集成稳压器简介 三端固定集成稳压器包含7800和7900两大系列,7800系列是三端固定正输出稳压器,7900系列是三端固定负输出稳压器。它们的最大特点是稳压性能良好,外围元件简单,安装调试方便,价格低廉,现已成为集成稳压器的主流产品。7800系列属于正压输出,即输出端对公共端的电压为正。UI为输入端,UO为输出端,GND是公共端(地)。三者的电位分布如下:UI>UO>UGND(0V)。最小输入—输出电压差为2V,为可靠起见,一般应选4~6V。最高输入电压为35V。
7900系列属于负电压输出,输出端对公共端呈负电压。7900与7800的外形相同,但管脚排列顺序不同,2为输出端,3位输入端。7900的电位分布为:UGND(0V)>-UO>-UI。对三端固定输出集成稳压器,其输入电压的选取原则:
UImax>UI>U0+( UI—U0) Imin
U0=5~18V时, UImax=35V
U0=20~24V时, UImax=40V
只要把正输入电压加到CW7800的输入端,CW7800的公共端接地,其输出端便能输出芯片标称正电压值U0。实际应用电路中,芯片输入端、输出端除分别接大容量滤波电容外,通常在芯片引出脚跟部接小电容(0.01 u~10uF)Ci及Co到地。Ci用于抑制芯片自激振荡。当输入线较长时,抵消其电感效应以防止产生自激振荡。Co用于变窄芯片的高频宽带,减小高频噪声。Ci与Co的具体取值随芯片输出电压高低及应用电路的方式不同而不同。一般来说使用集成稳压器都需防止芯片自激及减小高频噪声。图11为CW7800的接线图[23]。
图11 CW7800接线图
CW7900的输入端加上负输入电压Ui,芯片的公共端接地,在输出端得到标称的负电压Uo。电容Ci用来抑制输入电压Ui中的纹波和防止芯片自激振荡,Co用来抑制输出噪声。接线图与7800相同。CW7805、CW7809、CW7815、CW7812、CW7912、CW7915集成稳压器的主要参数:
3.5.3 电源设计 该系统需要+5V和+12V两个电源,如图1所示为输出±5V,±12V的直流电压,它由电源变压器T1,桥式整流电路以及滤波电容、防止自激电容和固定三端稳压器(CW7805、CW7812等)等组成。220V交流电通过电源变压器变换成交流低压,再经过桥式整流电路和滤波电容的整流和滤波,在固定式三端稳压器CW7805的IN和GND两端形成一个并不十分稳定的直流电压。此直流电压经过CW7812和CW7805的稳压和C3和C5的滤波便在稳压电源的输出端产生了精度高、稳定度好的输出直流电压[25]。电源电路原理图如下所示:
图12 电源设计图
3.6 硬件原理图
系统硬件图如下图所示:
图13 硬件设计电路图
4 软件程序设计
本设计中采用的处理器是AT89C51单片机,由此可采用面MCS-51的程序设计语言,包括ASM51汇编语言和C51高级语言,这两种语言各有特点。汇编语言更接近机器语言,常用来编制与系统硬件相关的程序,如访问I/O端口、中断处理程序、实时控制程序、实时通信程序等;而数学运算程序则适合用C51高级语言编写,因为用高级语言编写运算程序可提高编程效率和应用程序的可靠性[26]。
考虑到汇编语言的以下特点,在智能测控装置的基本功能软件开发中,程序主要采用ASM51汇编语言编写:
(1)汇编语言是最基本的程序设计语言。迄今为止,汇编语言仍然是计算机系统底层软件(例如汇编程序、PC机的BIOS等)设计的基本语言;
(2)能充分利用机器的硬件功能与结构特点。汇编语言与机器语言密切相关,因此能透彻地反映计算机硬件的功能与特点。程序员可充分利用机器硬件系统的许多特性(如寄存器、标志位以及一些特殊指令等)。这样能充分发挥程序设计的技巧;
(3)用汇编语言编写的程序比起用高级语言编写程序具有更高的系统性能。汇编语言程序具有执行速度快和节省存储空间的特点,它可以精确地描述算法,把计算过程和控制过程刻画得更具体;
(4)实时性能好。用汇编语言编制的程序可以对各种接口芯片及I/O端口直接进行控制,实时性能好。对于一些应用领域(例如工业监控系统等)汇编语言是不可缺少的,一般高级语言不适合这种应用,因为一般高级语言不能充分地利用计算机硬件所提供的诸如中断等方面的功能[22]。
4.1 主程序设计
主程序功能:完成系统初始化操作,判断时间是否超限,如果超限则转报警处理,如果未超限则读入控制按钮的状态,并根据输入状态,散转执行相应的功能子程序。
全部程序主要由主程序,时间中断程序,鸣音子程序,时间显示程序,比分显示程序,调时时间显示程序,交换场地程序组成。
4.2 主流程图
图14 主程序软件流程图