羽毛球计分器专业综合课程设计.doc_第1页
羽毛球计分器专业综合课程设计.doc_第2页
羽毛球计分器专业综合课程设计.doc_第3页
羽毛球计分器专业综合课程设计.doc_第4页
羽毛球计分器专业综合课程设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

此文档收集于网络,如有侵权,请联系网站删除湖南文理学院课程设计报告课程名称: 专业综合课程设计 专业班级: 自动化10101班 学号(37)学生姓名: 李 建 明 指导教师: 周 志 刚 完成时间: 2013年 6 月 14 日 报告成绩: 评阅意见: 评阅教师 日期 2013.6.20 湖南文理学院制羽毛球计分器设计此文档仅供学习与交流目 录目 录I一、设计题目1二、设计要求1三、设计作用与目的2四、所用设备及软件24.1 软件24.2 硬件3五、系统设计方案35.1 系统总体设计35.2 工作原理35.2.1 51单片机工作原理35.2.2 DS1302工作原理35.2.3 数码管工作原理45.2.4 独立按键工作原理5六、系统硬件设计56.1 系统整体设计56.2 各单元电路设计66.2.1 单片机最小系统电路66.2.2 按键输入部分电路66.2.3 数码管动态显示电路76.2.4 DS1302时钟电路7七、系统软件设计77.1 主程序流程设计87.2 子程序程设计8八、实验调试结果9九、设计中的问题及解决方法11十、设计心得11参考文献12附录1:系统总体结构电路原理图13附录2:程序清单14一、设计题目当今时代被人们称为信息时代,计算机技术迅速发展,计算机在工业、农业、国防、科研及日常生活领域发挥着重要的作用,成为各国工业发展水平的重要标志之一。自第一台计算机问世以来,在短短几十年间,已由电子管数字计算机发展到今天的超大规模集成电路计算机,运算速度由每秒5000次提高到今天的每秒上万亿次。近年来,计算机一方面向着高速、智能化的超级巨型机方向发展,另一方面向着微型机的方向发展。在微机的大家族中,单片机作为嵌入式微机控制器在工业测控系统、智能仪器和家电中得到广泛的应用。它依靠一定的硬件基础,针对特定的控制目的,实现一个高可靠性、高可行性、高效率的计算机应用系统,是现代工业和社会发展的迫切需要。当代计算机芯片技术的快速发展,使得这一需求得以实现。各种单片机计算机的推出,以及各种档次开发手段的涌现,使得在国民经济各个领域从民用电器、机电一体化产品到航空航天技术、人工智能、工业机器人等的一个极其广阔的领域中,掀起了一场竞相开发计算及应用系统的热潮。本设计所用到的单片机芯片为STC89C51RD+就是其中典型的代表。本设计内容为羽毛球计分器,具有准确而又灵活的计分功能,亮度高,可视性能好。采用独立式键盘作为输入,用户可分别对两队比分进行计数,具有对调功能,交换场地后,分数互换,能过显示局数比分,同时具有电子钟的功能,能过显示当前的比赛时间。以STC89C51RD+单片机作为主控核心,与时钟芯片DS1302、按键、LED显示等模块组成硬件系统。通过独立按键的操作可以对赛比分进行实时显示并且能过显示局数与当前的实时时间,同时显示部分采用8位七段数码管显示。此电子计分器具有准确而又灵活的计分功能,且亮度高、可视性能好、经济实用的特点。二、设计要求本羽毛球电子计分器能够实时显示A、B两队的比赛分数,具有场地互换分数互换的功能,能显示比赛的局分。且具有一般电子时钟的功能,能够动态显示年、月、日、小时、分钟、秒,能够随时设置调整时间。整个系统整个系统由外部+5V直流电源供电。在控制模块上设有5个独立按键,时钟模块由DS1302实现,显示部分由八位七段数码管动态显示。系统上电后数码管将显示“HELLO”。通过按键SB2、SB3、SB4、SB5对年、月、日、小时、分钟、秒进行设置。通过设置确认/清零键SB6确认后写入DS1302中。数码管将从设置的时间开始动态显示时间。通过SB2键可以选择需要显示的内容。三、设计作用与目的系统的设计主要利用STC89C51RD+单片机完成简易球类计分器的设计。通过对整个系统的分析与设计,完成从理论知识到实践应用的过度,掌握基于单片机的产品设计与开发的相关理念,学会利用单片机完成简单的电子系统的设计与制作。学会C语言的编程应用,培养良好的编程风格,掌握相关的编程或仿真软件的使用。基于STC89C51RD+单片机的球类计分器的设计,掌握51单片机最小系统的设计与常见人机接口电路的设计,懂得简单电子电路的设计,掌握51单片机内部资源的使用,了解51单片机的外部结构与内部结构之间的关系,并能编程实现单片机的各部分相关功能。四、所用设备及软件 基于STC89C51RD+单片机的,涉及到相关的软件和硬件。4.1 软件系统设计主要使用到的软件有Keil C51、Protel 99SE等。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。 Protel 99SE是ProklTechnology公司开发的基于Windows环境下的电路板设计软件。该软件功能强大,人机界面友好,易学易用,仍然是大中专院校电学专业必学课程,同时也是业界人士首选的电路板设计工具。Protel 99SE 由两大部分组成:电路原理图设计(Advanced Schematic)和多层印刷电路板设计(Advanced PCB)。其中Advanced Schematic由两部分组成:电路图编辑器(Schematic)和元件库编辑器(Schematic Library)。4.2 硬件硬件主要用到的是个人计算机及51单片机开发板完成。在有完善的理论分析与设计后,制作硬件实物则需要以下硬件支持。51单片机、DS1302芯片、电阻、电容、发光二级管、晶振、按键、数码管、万能板、杜邦线、电烙铁、焊锡等。五、系统设计方案5.1 系统总体设计整个设计分为四大模块,系统结构框图如图1。STC89C51RD+单片机作为核心控制模块,独立键盘为输入模块,DS1302作为时钟模块,八位数码管及五个按键指示LED灯作为输出模块。图1 羽毛球计分器构框图显示切换键SB2调整按键SB3A加按键SB4B加按键SB5设置确认键SB6STC89C51RD+单片机数码管显示LED灯显示DS13025.2 工作原理5.2.1 51单片机工作原理单片机就是在一块硅片上面集成了微处理器(CPU)、存储器(RAM、ROM、EPROM)和各种输入、输出接口(定时器/计数器、并行I/O口、串行口、A/D转换器以及脉冲调制器PWM等),这样一块芯片具有一台计算机的属性,因为被称为单片微型计算机,简称单片机。STC89C51RD+单片机有40条引脚,采用双列直插式封装。针对本次设计,做出的I/O口定义如表1所示。5.2.2 DS1302工作原理DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。表1 系统接口定义引脚名单片机引脚功能说明备注P0P0.0P0.7连接数码管的段位控制段显示P1_0P1.0显示切换键输入口P1_1P1.1调整键输入口P1_2P1.2加按键输入口P1_3P1.3减按键输入口P1_4P1.4设置切换键输入口T_CLKP1.6DS1302时钟线接口T_IOP3.5DS1302数据线接口T_RSTP1.7DS1302复位线接口LED1P1.5指示按键SB2接口LED2P3.2指示按键SB3接口LED3P3.3指示按键SB4接口LED4P3.4指示按键SB5接口LDE5P3.7指示按键SB6接口P2_0P2.074LS138 A口线接口P2_1P2.174LS138 B口线接口P2_2P2.274LS138 B口线接口单片机上电后,DS1302从程序中写进的初始时间运行。通过手动设置将当前的时间值写入DS1302的寄存器中。DS1302将从设置的时间开始运行。通过八位数码管显示当前的时间。5.2.3 数码管工作原理数码管分为七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,共阴极就是将八个LED的阴极连在一起接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。同时根据数码管的驱动分类分为静态驱动和动态驱动。本次设计中采用动态驱动显示。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。5.2.4 独立按键工作原理按键输入部分采用五个独立按键接到单片机的P1口。独立按键又叫查询式按键。查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单。实际制作过程中,按键的位置可以任意放置,但是每个按键的接线端必须按照按键的功能连接要正确,不能错乱。设计中五个独立按键的功能如表2所示。表2 按键功能定义按键单片机引脚功能备注SB1REST单片机手动复位键SB2P1.0进行显示切换功能SB3P1.1时间设置时为调整键,计分时作为比分显示对换按键SB4P1.2时间设置时为加按键,计分时为A队加按键SB5P1.3时间设置时为减键,计分时为B队加键SB6P1.4设置确认键,计分时当一局结束后进行比分清零六、系统硬件设计6.1 系统整体设计按照系统设计功能的要求,系统由主控模块、时控模块、及显示模块和键盘接口模块共4个模块组成。主控芯片使用51系列STC89C51RD+单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。显示模块采用普通的共阴极极八位LED数码管。数码管的位选采用一片74LS138的译码器,这样能减少I/O口的占用造成资源的浪费。P0口作为数码管的段显,P0口作为输出口线时需要接上拉电阻。程序下载需要一个USB转串口芯片,采用MAX232芯片。6.2 各单元电路设计6.2.1 单片机最小系统电路图2 单片机最小系统电路单片机最小系统包括电源,复位电路,振荡电路。单片机最小系统“最小”就是指一个单片机能开始独立工作所需的最基本的外部电路。具体是指VCC脚接电源,GND接地,接好晶振,连上RC复位电路,另外值得注意的是在不需要扩展外部存储器的情况下EA脚接高电平,具体电路如图2所示。图中的MAX232芯片是转串口芯片,下载程序时用。单片机的RST脚是高电平复位,电路采用上电复位和手动复位的两种复位接法。晶振电路选择晶振一般为12M,若用到单片机的串行口通信,则一般选择11.0592M的晶振。主芯片是1系列STC89C51RD+单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统的51单片机。图3按键输入部分电路6.2.2 按键输入部分电路按键输入部分由五个独立按键接到单片机的P1口,具体电路如图3所示。实际制作过程中,按键的位置可以任意放置,但是每个按键的接线端必须按照按键的功能连接要正确,不能错乱。在使用按键时需要对其消抖。当有按键按下时单片机对应的引脚检测到低电平。按键值的读取采用循环扫描法实现。6.2.3 数码管动态显示电路七段数码管一般由八个发光二极管组成,其中由七个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的点或一个笔画发关。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单使用也方便。发光二极管的阳极连接在一起的称为共阳极数码管,阴极连接在一起的称为共阴极数码管。设计中采用共阴极的数码管,段显示由单片机的P0口控制,P0口做为输出口需要接上拉电阻。位选由单片机的P2口的前三位控制。P2口的前三位连接74LS138译码器实现对八位数码管的位选控制。电路图如附录1。6.2.4 DS1302时钟电路图4 DS1302时钟电路图DS1302采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。DS1302与单片机的电路连接图如图4所示。DS1302有三个口线:RST复位、I/O数据线、SCLK串行时钟。图中的五个LED灯用于指示按键是否按下,当按键按下时对应的LED灯亮,松手时LED灯灭。七、系统软件设计系统采用模块化编程,各部分相互独立又紧密联系。许多程序太长或太复杂,很难写在单一单元中。如果把代码分为较小的功能单元,将大大简化编程过程。模块化程序一般比单块程序容易编写、调试和修改。只要把各个单元之间的接口定义好,各个单元的详细设计就可以独立进行了。使用模块化方法可以更快地开发程序,因为较小的子程序比大程序更容易理解、设计和测试。子程序可以重用,为一个程序编写的代码经常可以用于其它的程序。7.1 主程序流程设计N图5 主流程图YNYFLAGE=0?初始化子程序程序开始FLAGE=1?时间设置程序显示程序程序的执行有一个逻辑层次,C语言就是一些函数的组合,编程就是去编写一些函数以满足客观实际要求,在编写函数过程中的一些逻辑层次里面,有顺序、循环、跳转等等不同的控制逻辑。基于STC89C51RD+单片机的羽毛球计分器主函数是由初始化函数、时间设置函数、显示函数组成。主函数流程图如图5所示。任何程序开的开始都是从main函数开始执行的,一个程序也只能有一个main函数。 主程序如下:void main() init(); while(1) switch(FLAGE) case 0: STETime();break; case 1: DISPLAY();break; 7.2 子程序程设计子程序包含较多,针对本次设计,列出部分主要的子程序。其中主要包含的子程序有初始化子程序、时间设置子程序、按键扫描子程序、显示子程序、延时子程序等等。其中几个主要子程序流程图如下所示。图6为显示程序流程图。FLAGE1是显示的标志位,通过按键SB2改变其值。显示程序如下:void DISPLAY(void)/进行显示 switch(FLAGE1) case 0:DISPLAY1();break;/显示比分 case 1:DISPLAY2();break;/显示局数比分 case 2:DISPLAY3();break;/显示时、分、秒 case 3:DISPLAY4();break;/显示年、月、日 KEYDEAL();/按键扫描处理程序程序开始写命令字节一位复位端变高启动一次数据传送工作时钟线发脉冲够8次了?写数据字节一位时钟线发脉冲够8次了?复位端变低结束YYNN图7 写DS1302流程图程序开始比分显示程序FLAGE1=0?FLAGE1=2?YNYFLAGE1=1?局分显示程序按键扫描程序YYN图6显示程序FLAGE1=3?N 年月日显示程序 时分秒显示程序N图7是写写一个字节到DS1302子程序。程序如下: void v_W1302(uchar ucAddr, uchar ucDa) T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); / 写地址 _nop_();_nop_();v_RTInputByte(ucDa); / 写1Byte数据T_CLK = 1;T_RST = 0; 八、实验调试结果通过前期的硬件电路的设计与软件设计后。通过Keil C51软件进行编程,编程语言图8 测试的时间图9 局分与比分是C语言。C语言是一种面向过程的编程语言。STC89C51RD+单片机能兼容C51,使用C语言能编程效率更高。调试使用的一快C51系列的开发板。在自身设计原理图的基础上利用开发板的硬件资源搭建自己的实验平台。实验中按键采用杜邦线接单片机IO口通过接地模拟按键按下。经过反复的修改测试,设计终于达到了预期的效果。图8中数码管显示的是测试是的时间(第一排是年、月、日,第二排是时、分、秒)。图9中数码管显示的是A、B两队的比分与局分。九、设计中的问题及解决方法问题一:如何实现局分的计数?羽毛球比赛中两位选手在对手没获得20分情况下,自身取得21分那么本局取胜。在同时获得20分及以上分时谁先净胜对方3分者赢。为了实现自动计算局分需要对没加一次的分数后对比分比较。比较时会有几种不同的情况,需要一一列出。问题二:如何实现按键的复用?设计中使用到了5个独立按键。计分器启动后需要对DS1302时钟芯片进行时间设置需要用到5个独立按键。在进入计分后5个独立按键的功能发生了变化。因此在程序编写过程中对按键处理需要分情况,采用标志位的方式能够解决这一问题。问题三:硬件设计问题在硬件设计时P0口需要加上拉电阻,不加上拉电阻驱动不了数码管。测试是用到开发板,而开发板上的独立按键与设计的独立按键不一致,需要用杜邦线给低电平模拟按键触发。十、设计心得基于51单片机的羽毛球计分器是单片机控制系统中单片微型机应用与设计的重要组成部分。羽毛球计分器的控制电路由按键输入部分、单片机控制部分、显示以及DS1302时钟部分组成。在基于51单片机的羽毛球计分器设计中,整个设计能达到预期的设计要求,但是也有许多需要改进的地方如。通过本次单片机课程的学习与基于51单片的电子万年历的设计,把理论用到实践中去,动手动脑解决学习过程中遇见的问题,巩固与加强相关的知识,学会做人做事,培养刻苦专研的精神,为未来的工作与生活打下坚实的基础。在设计过程中,虽然遇到很多麻烦,花了大量时间去调试,但是最终我还是完成了电路的设计任务。由此我知道,做好每一件事,必须要有耐心、信心、决心,以及严谨的态度。在这过程中有时候没时间吃饭,没时间睡觉,我还是坚持下来了,因为在背后一直有鼓励我、支持我的家人。非常感谢父母给我生命,在这二十多年里,不辞劳苦的养育我,给我进入大学学习的机会,我将用我一辈子的收获来回报父母的恩情。参考文献1周丽娜.Protel99SE电路设计技术(基础、案例篇)M.北京:中国铁道出版社.2009.2焦宝文.课程设计指南M.北京:清华大学出版社.1983.3杨垒,于复生,郭梅静.基于AT89S52的定时器设计J.山东建筑大学学报,2006(05)4林毅.基于AT89C51单片机构成的键盘显示电路J.现代电子技术,2006(13)5坂本正文.步进电机应用技术M.北京:科学出版社,2010.6http:/ 78附录1:系统总体结构电路原理图附录2:程序清单 #include #include#define uchar unsigned char#define uint unsigned int *独立按键*/ sbit P1_0=P10; sbit P1_1=P11; sbit P1_2=P12; sbit P1_3=P13; sbit P1_4=P14; sbit ACC0 = ACC0; sbit ACC7 = ACC7; sbit T_CLK = P16; /*实时时钟时钟线引脚 */ sbit T_IO = P35; /*实时时钟数据线引脚 */ sbit T_RST = P17; /*实时时钟复位线引脚 */ sbit LED1=P15; /按键按下指示 sbit LED2=P32; sbit LED3=P33; sbit LED4=P34; sbit LED5=P37;/*初始时间设置*/uchar flag; /显示切换标志uchar sign4;/更改完成标志uchar sign5;/显示切换标志uint sec0=0;/秒uint min0=0; /分uint hour0=0; /小时uint day0=1; /天uint month0=1; /月uint year0=13; /年uint yearh=20; /年uint cursor=0; /当前光标闪烁位uchar a=0xff; /LED显示掩码uchar code Seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极极数码管段uchar code table1=0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8 ; /译码器选择显示的位uint table26=0,0,0,0,0,0; /存储改变的数据uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0X40 ,0x39,0x5e,0x79,0x71; uchar a0,a1,a2,a3,a4,a5,a6,a7;uchar key2;/按键值记忆uchar c1,c2;/存储局数uchar sign,sign1,sign2,sign3;uchar FLAGE;/标志位1uchar FLAGE1;/标志位2/*函数声明*/void init(void); /初始化程序void STETime(void);/设置DS1302的时间void DISPLAY1(void);/显示比分void DISPLAY2(void);/显示局数比分void DISPLAY3(void);/显示时、分、秒void DISPLAY4(void);/显示年、月、日void display(uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar); /数码管显示子程序void delay2(uint count) ;/延时函数void compar(void);uchar key();/按键扫描子程序void KEYDEAL(void);/按键处理程序void DISPLAY(void);/显示程序void delay1(uint t);/延时void Kdelay() ; /按键消抖void delay();void Delay_1ms(uint i);/1ms延时void v_RTInputByte(uchar ucDa);/往DS1302写入1Byte数据uchar uc_RTOutputByte(void) ; /从DS1302读取1Byte数据void v_W1302(uchar ucAddr, uchar ucDa);/往DS1302写入数据uchar uc_R1302(uchar ucAddr);/读取DS1302某地址的数据void v_BurstW1302T(uchar *pSecDa);/往DS1302写入时钟数据(多字节方式)void v_BurstR1302T(uchar *pSecDa);/读取DS1302时钟数据void v_BurstW1302R(uchar *pReDa);/往DS1302寄存器数写入数据(多字节方式)void v_BurstR1302R(uchar *pReDa);/读取DS1302寄存器数据void v_Set1302(uchar *pSecDa);/设置初始时间void v_Get1302(uchar ucCurtime);/读取DS1302当前时间uchar dectobcd(uchar dec);/DEC码转换为BCD码uchar bcdtodec(uchar bcd);/BCD码转换为DEC码uint D_B(uint dec);/调整值进行转换void Run_DS1302(void);/读出DS1302中的数据void display1(uchar L1,uchar L2,uchar L3,uchar L4,uchar L5) ;/时间设置时的显示void SET_time();/设置时间void Write_1302();/将设置的时间写入1302中/* 名称 : void main()* 功能 : 主函数。* 输入 : 无* 输出 : 无*/void main() init();/初始化程序(初始化一些变量) while(1) switch(FLAGE) case 0: STETime();break; /设置初始时间 case 1: DISPLAY();break; /进入显示函数 /* 名称 : void init(void)* 功能 : 初始化程序。* 输入 : 无* 输出 : 无*/void init(void) /初始化程序 FLAGE=0; FLAGE1=0; a0=10;a1=12;a2=0;a3=0;a4=11;a5=12;a6=0;a7=0; sign=0; /* 名称 : void STETime(void)* 功能 : 设置DS1302的时间* 输入 : 无* 输出 : 无*/void STETime(void)/设置DS1302的时间 SET_time(); /设置时间 Write_1302();/将设置时间写入1302/* 名称 : void DISPLAY(void)* 功能 : 显示程序* 输入 : 无* 输出 : 无*/void DISPLAY(void)/进行显示 switch(FLAGE1) case 0:DISPLAY1();break;/显示比分 case 1:DISPLAY2();break;/显示局数比分 case 2:DISPLAY3();break;/显示时、分、秒 case 3:DISPLAY4();break;/显示年、月、日 KEYDEAL();/按键扫描处理程序/* 名称 : KEYDEAL(void)* 功能 : 按键扫描处理函数。* 输入 : 无* 输出 : 无*/void KEYDEAL(void) uchar b0,b1,b2,b3,b4,b5,b6,b7,e1; /用于变量转换 if(P1_0=0) /按键1扫描 Kdelay(); if(P1_0=0) if(FLAGE12) FLAGE1=0; else FLAGE1+; while(P1_0=0); if(P1_1=0) /按键2扫描 Kdelay(); if(P1_1=0) if(sign=0)sign=1; elsesign=0; b0=a0;b1=a1;b2=a2;b3=a3; e1=c1; a0=a4;a1=a5;a2=a6;a3=a7; c1=c2; a4=b0;a5=b1;a6=b2;a7=b3; c2=e1; while(P1_1=0); if(P1_2=0) /按键3扫描 Kdelay(); if(P1_2=0) if(sign=0) if(a39) a3+; else a3=0;a2+; else if(a79)a7+;elsea7=0;a6+; while(P1_2=0); if(P1_3=0) /按键4扫描 Kdelay(); if(P1_3=0) if(sign=0) if(a79)a7+;else a7=0;a6+; else if(a39) a3+; else a3=0;a2+; while(P1_3=0); if(P1_4=0) /按键5扫描 Kdelay(); if(P1_4=0) a2=0;a3=0;a6=0;a7=0; sign3=0; while(P1_4=0); if(sign3=0) compar(); /* 名称 : void display(uchar ,uchar ,uchar ,uchar ,uchar,uchar ,uchar ,uchar )* 功能 : 显示扫描子程序* 输入 : 无* 输出 : 无*/void display(uchar d0,uchar d1,uchar d2,uchar d3,uchar d4,uchar d5,uchar d6,uchar d7)P0=tabled0;P2=0xf8;delay2(1); P0=tabled7;P2=0xff;delay2(1);P0=tabled6;P2=0xfe;delay2(1); P0=tabled5;P2=0xfd;delay2(1); P0=tabled4;P2=0xfc;delay2(1);P0=tabled3;P2=0xfb;delay2(1);P0=tabled2;P2=0xfa;delay2(1);P0=tabled1;P2=0xf9;delay2(1);/* 名称 :void delay2(uint count) * 功能 : 延时子程序* 输入 : 无* 输出 : 无*/void delay2(uint count) uint j; while(count-!=0) for(j=0;j80;j+);

温馨提示

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

最新文档

评论

0/150

提交评论