毕业设计(论文)基于单片机的篮球赛计时计分器_第1页
毕业设计(论文)基于单片机的篮球赛计时计分器_第2页
毕业设计(论文)基于单片机的篮球赛计时计分器_第3页
毕业设计(论文)基于单片机的篮球赛计时计分器_第4页
毕业设计(论文)基于单片机的篮球赛计时计分器_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2009届毕业设计(论文) 题 目 : 基于单片机的篮球赛计时计分器 学院、系 : 电子技术系 专 业 : 电子科学与技术 学生姓名 : 班 级 : 电科07521 学 号 : 指导老师 : 摘要 本设计是篮球计时计分器,主要在篮球比赛中用于记录整个赛程的比赛时间和显示甲、乙两队在比赛过程中的比分情况。该计时计分器有部分组成:一部分用来实现计时功能,其基本原理和定时闹相似;另一部分用来实现计分功能,其基本原理和计数器相似,只不过所要记录和显示的对象是按键按下的次数,每按下一次计数值加一。该设计能够实现计时和计分功能,采用共阴极数码管进行动态显示,加分的部分用按键来完成,每按一次发送一个计数脉冲

2、,计数值加一。关键词: 计时 计分 动态显示 abstract this design is time basketball scoring device, mainly for recording in the basketball game of playing time throughout the race and display a and b teams score during the game situation.this time scoring machine has parts: used to achieve the timing function, the basic

3、 principles and similar time downtown; another part of the scoring functions used to implement the basic principles and counter similar to, but want to record and display the objects are keypress the number of times, each time you press the count plus one.the design can achieve timing and scoring fu

4、nctions, the use of dynamic common cathode led display, plus some to complete with buttons, each time sending a pulse count, the count plus one. key words: to keep time to keep score dynamic to show目 录 中文摘要i英文摘要 第一章 绪论11.1 发展背景.11.2 系统功能101.3 课题运用的知识点101.4 课题组成 10第二章 课论基础92.1 单片机概述 2.1.1 at89c51性能介绍

5、2.2 七段数码管的基本介绍2.2.1简介 2.2.2硬件译码 2.2.3软件译码 2.2.4显示方法第三章 系统原理的设计 3.1课题的技术和量化要求3.2 系统的组成框图第4章 硬件部分的设计4.1 单片机接口电路4.2 数码显示电路 第5章 软件部分设计 5.1 按键模块 5.1.1 简介 5.1.2 键盘处理的流程图 5.1.3 源代码 5.2 显示模块 5.2.1 简介 5.2.2 显示的流程图 5.2.3 源代码 5.3 成绩调整模块 5.3.1 简介 5.3.2 成绩调整流程图 5.3.3 源代码 5.4 延时模块 5.4.1 简介 5.4.2 延时的流程图 5.4.3 源代码

6、课题设计总结附录一 原理图附录二 源程序设计参考文献致谢 第一章 绪论1.1发展背景体育比赛计时记分系统是对体育比赛过程中所产生的时间、比分等数据进行快速采集记录、加工处理、传递利用的信息系统。根据不同运动项目的不同比赛规则要求, 体育比赛的计时记分系统包括测量类、评分类、命中类、制胜类、得分类等多种类型。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的, 因此, 足球比赛的计时记分系统是一种得分类型的系统。篮球比赛的计时记分系统由计时器、记分器等多种电子设备组成。同时, 根据目前高水平足球比赛要求, 完善的足球比赛计时记分系统设备应该能够与现场成绩处理、现场大屏幕、电视转播车等多种

7、设备相联, 以便实现提高比赛现场感、表演娱乐观众等功能。1.2系统功能随着科技的迅猛发展,单片机在计算机应用领域中起到了越来越重要的作用. 单片机体积小,功能强,集成了微型机的各部件,大大缩短了系统内信号传送的距离,从而提高了系统的可靠性及运行速度。该系统主要是线以下两种功能: 1 计分:能同时显示甲、乙两队比分,最大计分数为99。能分别对甲、乙两队比分进行加分。2 计时:从比赛开始时启动计时工作方式,初始时间为00,最大计时为99 分钟, 经过修改后应该还能实施计时暂停,还能设定为倒计时。3 交换比分:中场交换比赛场地时,能交换甲、乙两队比分的位置。4 哨音提示:设定的比赛时间到了,能自动哨

8、音提示比赛结束.1.3 课题运用的知识点 本课题主要运用单片机设计知识设计篮球赛记时计分器,因此涉及到的知识点主要有以下几点:(1)at89c51单片机的运用(2)led数码管的运用(3)人机接口1.4 课题组成(1)课题的理论基础(2)系统原理的设计(3)硬件部分的设计(4)软件部分的设计(5)仿真调试 第二章 课论基础2.1 单片机概述 单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算机简称单片机。单片机的内部硬件结构和指令系统主要是针对自动控制应用而设计的,所以单片机又称微控制器mcu(micro controller unit),

9、用它可以很容易的将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(embedded mcu)。 mcs51单片机是美国intel司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用hmos,功耗是630mw,是89c5的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,mcs-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89s51、已经停产的89c51等),atmel公司的 at89c51 8位单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由flash(程序存储器的

10、内容至少可以改写1000次)存储器取带了原来的rom(一次性写入),at89c51的性能相对于8051已经算是非常优越的了。n 2.1.1 at89c51性能介绍at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,为很多嵌入式控制系统提

11、供了一种灵活性高且价廉的方案。1主要特性:与mcs-51 兼容4k字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 2管脚说明:vcc:供电电压。gnd:接地。图2.1 at89c51的引脚排列p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口

12、作为原码输入口,当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口当用于外部程序存储器或1

13、6位地址外部数据存储器进行存取时,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

14、 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注

15、意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程

16、序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。3振荡器特性: xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4芯片擦除:整个perom阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ale管脚处于低电平10ms 来完成。在芯片擦操作中,代码

17、阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,at89c51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,cpu停止工作。但ram,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存ram的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。5. 存储器组织 * 64kb的程序存储器空间(0000-ffffh)* 128b内部ram空间(00h-ffh) * 128b内部特殊功能寄存器空间(80h-ffh) * 位寻址空间(20h-ffh)* 64kb外部数据存储器空间(0000-ffffh)2.

18、2 七段数码管的基本介绍2.2.1简介数码管是工业控制中使用非常多的一种显示输出设备,通过他可以很容易的显示控制系统的数字量,如一些温度仪表、电梯楼层显示、电子完年历等系统中都常用的数码显示管进行显示。数码管包括七段星数码管和米字型数码管。现在工业共常用的是七段数码管(一下简称数码管)来介绍的它的结构及其单片机的接口。数码管是8个发光的二极管的构成,显示不同的组合可用来显示数字09,字段af符号h、l 、p、r、u、y,符号“_”及小数点。同一组发光二极管的共阴共阳的连接原理是一样的。数码管也分共阴极和共阳极两种,它的的结构(图2.2.0)和共阴(图2.2.1)、共阳极(图2.2.1)。 图2

19、.2.0 图2.2.1 图2.2.2 共阴极数码管的8个发光二极管的阴极连接在一起接低电平(一般接地),其他管脚接电源各段输出端。当某段输出端的为高电平时,该端所接的发光二极管发光,根据不同的发光字段的不同的组合形成数字或者字符。同样由于每个字段的发光二极管,都有一个的额定的导通电流,而且根据设计人员要根据具体情况来调节数码管的宽度和亮度,所以还需根据外接电源及额定导通电流及其亮度的来确定的相应的限流电阻。至于共阳极的发光原理和共阴极的数码管发光原理并无二异,不同的是共阳极数码管是当某段输出端的为低电平时,每个的字段的发光二极管才能正常发光。此设计采用的共阴极的数码管,所以主要介绍共阴极的数码

20、管及其软件的译码方式。数码管的连接方式有软件译码和硬件译码。软件译码通过软件来实现译码来实现不同的组合字符或者数字的显示;硬件译码主要通过硬件驱动电路或芯片来控制数码管所要显示的字符的组合。相应的硬件译码需要外加专用的译码芯片,增加相应的应用成本,但是软件的设计较为简单,会降低的cpu的运转负荷,适合要求较高的场合。而软件译码的优点是成本低廉,但是软件的设计会稍微复杂。2.2.1硬件译码 硬件译码是指通过专用的译码驱动硬件电路或者芯片来控制显示数码管来显示所需的字符,74ls47是一款常用的共阳极数码管主用的现实芯片。他的功能是从bcd码到七段数码管的译码和驱动。本次试验不适用硬件译码,基本原

21、理的介绍从略。2.2.2软件译码 a dpcbd gef 图2.2.2下面以共阴极数码管为例介绍数码管的软件的译码方式。 根据共阴极数码管的现实原理,假如数码管要显示字符“2”,依据上所示的数码结构图,可以反推出该数码管的各个引脚所需的电平信号是“01011011”,即为0x5b。这个从目标输出字符反推出的数码管的各段应该输入的数据过程为字形编码。事实上我们可以此显示原理推出大部分的字符的字形编码。以下表格将逐一罗列各自字符(09)的字形编码。数码管字形编码表 共阴极 dp g f e d c b a 字型码00111111 0x3f 000001100x60 010110110x5b0100

22、11110x4f011 001100x66011011010x6d011111010x7d000001110x07011111110x7f2.2.4数码管的显示方法 数码管的现实方法是静态显示方法和动态显示方法。 静态显示是指数码管的显示某一字符,相应的发光的二极管恒定导通的或者恒定截止。这种的现实方法中的每个数码管是相对的独立的、公共端的恒定接地(共阴极)或者接电源(共阳极)。每个的数码管的的每个字段分别于i/o地址相连或者硬件译码电路相连,这时只要i/o口或者硬件电路译码器所需的电平输出,相应的字符即可显示出来,并保持不变,直到需要更新所显示的字符为止。采用静态显示方法占用cpu的时间少,

23、编程简单,但占用的i/o口线多,硬件电路复杂,成本高,只适用字符显示少的场合。动态显示逐次点亮每个数码管。方法是每个数码管公共端都有一个i/o口线来控制,以动态显示时先选中第1个数码管,把数据送给他显示,一定时间后在选中第2个数码管,把数据送给他显示.即在某一时刻只有一个数码管在显示字符。这样只要扫描的速度走够快(要超过人眼的视觉停留时间),动态显示的效果在人看来就是几个数码管同时显示。采用动态显示方式比较节省i/o口,硬件电路比静态显示的方式简单,但其亮度不如静态显示时的时间的亮,而且显示数码管较多时,cpu要逐次扫描,会占用较多的时间。第3章 系统原理的设计3.1课题的技术和量化要求1 能

24、记录整个赛程的比赛时间,并能修改比赛时间、暂停比赛时间。2 能随时刷新甲、乙两队在整个赛程中的比分。3 中场交换比赛场地时,能交换甲、乙两队比分的位置。4 比赛时间结束时,能发出报警指令;3.2 系统的组成框图 为了实现原理图的设计目标,同时结合自己获取的各种资料以及要达到的具体功能,所确定的组成框图见图3.1.1。 一、组成框图的组成说明 按钮单片机芯 片时间显示比分显示 图3.1.1:系统原理框图二、组成框图的组成及其功能说明1、 led能够显示比赛成绩和比赛时间,并且能够显示调整后的比赛成绩和时间2、 控制按钮由两队的加分按钮组成、以中场中止按钮组成。3、 暂停比赛时间。第四章 硬件部分

25、的设计4.1 单片机接口电路图4.1.1单片机接口电路见图4.1.1,其电路分析如下:1)复位电路 复位是指单片机的cpu或系统中其它的部件处于某一确定的初试状态,并从这一状态开始工作。除了进入系统的正常初始化之外,当由于程序运行出错或是操作错误使系统处于锁死状态,为摆脱困境,需要进行按键复位。 通常单片机的复位操作有上电复位、信号复位、运行监视复位,运行监视复位有程序运行监视和电源监视。 上电复位 上电复位是指单片机上电是的复位操作,保证单片机上电后立即进入规定的复位状态。 信号复位 信号复位是指单片机在正常供电的情况下,在复位引脚端加以复位信号。根据不同情况有按键操作复位、唤醒复位、控制复

26、位等。 系统运行监视复位 系统运行监视复位是指系统出现非正常情况下时的复位操作,通常有电源监视复位和程序监视复位。电源监视复位是指在电源下降到一定电平状态或未达到额定电平要求时的系统复位;程序运行监视复位是指程序运行时常时的系统复位。在本设计中,则是采用上电复位,复位电路见图2,原理是当电源接通后,上电瞬间reset引脚获取高电平,该高电平需要电容充电来维持,当高电平维持在两个机械周期以上则单片机能被复位。一般为了能够可靠复位,复位时间一般在10ms以上,对于振荡频率为12mhz的复位电路,典型rc系数为:c3=10uf ,r29=8.2千欧。2)晶体振荡电路 晶体振荡电路用于产生单片机工作时

27、所需的时钟信号,从而保证各部分工作的同步。单片机内部有一个高增益反相反大器,只要在输入端xtal1与输出xtal2之间挂一个晶体振荡器和微调电容就可以构成一个稳定的自激震荡器并在单片机内部产生的时钟脉冲信号。振荡电路见图3,电容器c1与c2用于稳定频率和快速起振,电容一般在5pf30pf,本设计电容为30pf。3)键盘接口电路 与通用单片机相比,单片机应用系统中的键盘种类很多,键盘中按键数量设置依系统操作要求而定。单片机应用系统中的键盘有独立式和行列式两种。(1)独立式键盘独立式键盘中,每个按键占用一个i/o口线,每个按键相对独立。i/o口通过按键与地相连,无按键按下时,引脚端为高电平,有按键

28、按下时,引脚为低电平,i/o口内部有上拉电阻外部不可接上拉电阻。(2)行列式键盘用i/o口线组成行列结构,按键设置在交叉点上,在按键数目较多时运用这种连接方式,可节省i/o口连线。行列式键盘的标识最常用的两种方法:行扫描法和线反转法。本次设计中由于按键较少,采用三按键独立式键盘即可满足需要见图(4.1.2)图4.1.24.2 数码显示电路 led显示器 通常所说的led显示器由七个发光二极管组成,因此也称作七段led显示器,通过七段发光二极管的不同组合,可以显示多种数字、字母或其它符号。图4.1.31)led的接法 共阴极接法是指把发光二极管的阴极连接在一起构成公共阴极,使用时公共阴极接地,阳

29、极输入高电平段的二极管则会导通发光,而输入低电平的则不会亮。2)显示方式 动态显示是指依次轮流点亮显示器的各个位,每隔一段时间则点亮一次,设置足够短的时间,利用人的视觉暂停效应和发光二极管的熄灭时的余辉,达到多个字符同时显示的效果。运行这种显示方式可以降低成本与功耗,但需要较大的驱动电流。 本设计中采用的共阴极连接方式,由于没有有足够的i/o口可以使用采用动态示方式,显示电路见图4.1.3。此外p0需外加上拉电阻(图4.1.4)。图4.1.4第五章 软件部分设计5.1按键模块5.1.1简介 其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命

30、令只执行一次,而在按键按下的过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,图5.1.1要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图(5.1.1)所示: 从图中可以看出,我

31、们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,cpu就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。 5.1.2.键盘处理的流程图 等待按键释放 按键处理 真的有键按下吗? 延时n 有键按下吗?ny 图5

32、.1.2 5.1.3 源代码void key_sc() /键盘扫描模块 uchar key_bt,i; while(1) p1=0xff;delay_t(80);key_bt=p1;switch(key_bt) case 0xfe: /初始化,显示0; for(i=0;i9;i+) /display_bufi=0;display_rt(display_buf); break; case 0xfd: /a队 modify_sc(); break; case 0xfb: /b队 modify_sc(); break; case 0xf7: /时间 modify_st(); break; 5.2显示

33、模块5.2. 1 简介 显示部分通过p0口外加上拉电阻进行显示,数码管采用7段共阴极数码管,通过查表指令进行显示,首先将要显示的缓存单元,送入累加器中,通过累加器进行查表,将要显示的数值存储起来,然后通过位选信号,将要显示的位的数码管打开,进行现实。并通过延时子程序进行延时,使其显示的数值稳定下来。然后再通过位选信号,将显示的数值关断,从而显示下一个数值。但当显示完一圈后程序跳出,等待数据的传输,再次进行显示。考虑到显示的数据比较多有10个数据,而且需要相当多的位选线。所以把整个显示缓看做一个整体。低6位传输的是比赛数据,高4位传输得是比赛时间。 p2、p3初始化 p0=showdis_cod

34、ei5.2.2.显示的流程图 i1 p3 1p2=bit_disp2p3=0xffp3=bit_disp3p2=0xff 5.2.3.源代码void display_rt(uchar dis_code) /显示任务 char bit_disp2,bit_disp3,i; bit_disp3=0x20; bit_disp2=0x08; for(i=0;i=9;i+) p2=0xff; p3=0xff; p0=show_tdis_codei; if(i1; else bit_disp3=0x20; p2=bit_disp2; p3=0xff; bit_disp2=bit_disp21; delay

35、_t(1); 5.3成绩调整模块 5.3.1 简介 成绩调整模块用用于记录两队比赛成绩,显示led中前3位用于记录a队比赛成绩,后三位用于记录b队的比赛成绩。成绩的记录范围从000999其中。获取键盘k2和k3信息5.3.2成绩调整流程图us_b+延时 等待再次获取p1的键盘信息 y ds_b+ y hs_b+ 显示 p1=0xfd ? p1=0xfb ? us_b=0 ds_b=0 hs_b=0nn us_a=0 ds_a=0 hs_a=0 hs_b9 hs_a9 n yhs_a+ y ds_a+us nnb队 p1=0xfba队 p1=0xfd us_a+ ds_b9 ds_a9 us_b

36、9 us_a 95.3.2源代码void modify_sc() /调整比赛结果 while(1) display_rt(display_buf); while(p1=0xfd) /a队 us_a+; if(us_a9) ds_a+; us_a=0; if(ds_a9) ds_a=0; hs_a+; if(hs_a9) us_a=0; ds_a=0; hs_a=0; display_buf3=us_a; display_buf4=ds_a; display_buf5=hs_a; display_rt(display_buf); delay_t(60); while(p1=0xfb) /b队 u

37、s_b+; if(us_b9) us_b=0; ds_b+; if(ds_b9) ds_b=0; hs_b+; if(hs_b9) us_b=0; ds_b=0; hs_b=0; display_buf0=us_b; display_buf1=ds_b; display_buf2=hs_b; display_rt(display_buf);delay_t(60); 5.4延时模块 5.4.1简介 程序主要采用双循环结构。 5.4.2延时的流程图 关于延时的流程图 t- = 0 ? 退出n tt=300 ytt- tt =0 ?n5.4.3延时的流程图 void delay_t(int t) /

38、延时 int tt; while(t-) tt=300; while(tt-); 课题设计总结随着数字化控制技术在产品中的越来越广泛应用和人民生活水平的提高,对产品的环保、安全舒适、方便实用性能要求越来越高。本次设计只是初步的完成的它的功能,并没有对其的相关的节能、精准度多的考虑,并且只是流于任务式的处理,总体来说这次的设计并不令人满意。而且只是进行基本的仿真,并没有进行实物的设计,纸上谈兵并无太多的实际效果。另一方面,我对c和8051有了较为清醒的认识,这次设计我对于软件模块首先用c初步的架构起来,但限于显示模块的短板浪费了相当多的时间和精力。我试图用8051重构整个系统,但是对汇编相当的恐

39、惧,实现了小部分。也想用c和汇编8051混写,迫于时间的紧张只能用放弃这个想法了。8051实现led模块的位选控制相当的简单,而且非常准确,不足之处阅读和维护是有相当的难度;而c语言虽然使用起来简单但是不易控制其准确性。综上所述,语言各有所长,但并非万能。本模块中i/o选择比较紧张,实际上i/o需求少的74hc164串行传输段选数据,通过其他口来进行位选控制,最重要的是不会占用p3这个多功能的i/o口。另外可以选择ln3461来显示数据。 通过此次设计,使我对篮球赛记时计分其有了部分认识。因此,我将继续向前迈进,期待对它有更深层次的了解,期待取得更好的效果。附录一 原理图 附录二 仿真附录三

40、源程序设计#include#define uchar unsigned char#define uint8 unsigned intuchar code show_t10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /0 1 2 3 4 5 6 7 8 9static uchar display_buf10; /定义显示缓冲char xsc3,ysc3; /保存两队的比赛结果char tsc4; /保存比赛时间uchar us_a=0,ds_a=0,hs_a=0,us_b=0,ds_b,hs_b=0; /分别定义a和b队比赛成绩的个位、

41、十位、百位uchar sut=0,sdt=0,mut=0,mdt=0; /分别定义比赛时间的秒、分个位及其十位sbit fm_bt = p27; /蜂鸣状态位void delay_t(int t) /延时 int tt; while(t-) tt=300; while(tt-); void display_rt(uchar dis_code) /显示任务 char bit_disp2,bit_disp3,i; bit_disp3=0x20; bit_disp2=0x08; for(i=0;i=9;i+) p2=0xff; p3=0xff; p0=show_tdis_codei; if(i1;

42、else bit_disp3=0x20; p2=bit_disp2; p3=0xff; bit_disp2=bit_disp21; delay_t(1); void alarm_spk() /攻击时间倒计时,喇叭在最后5秒钟发出滴答滴答的警报声uint8 vtmp;for(vtmp=0;vtmp9) ds_a+; us_a=0; if(ds_a9) ds_a=0; hs_a+; if(hs_a9) us_a=0; ds_a=0; hs_a=0; display_buf3=us_a; display_buf4=ds_a; display_buf5=hs_a; display_rt(display_buf);delay_t(60); while(p1=0xfb) /b队 us_b+; if(us_b9) us_b=0; ds_b+; if(ds_b9) ds_b=0; hs_b+; if(hs_b9) us_b=0; ds_b=0; hs_b=0; display_buf0=us_b; display_buf1=ds_b; display_buf2=hs_b; display_rt(display_b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论