• 633.11 KB
  • 2022-04-29 13:59:49 发布

基于单片机篮球赛计时计分器设计电子信息工程毕业论文.docx

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'郑州大学毕业设计(论文)题目:基于单片机篮球赛计时计分器设计指导教师:马旭东职称:讲师学生姓名:张华学号:20122450236专业:电子信息工程院(系):信息工程学院完成时间:2016年5月25日2016年5月25日 毕业设计(论文)任务书附表一题目来源:自选课题名称基于单片机篮球赛计时计分器设计设计人姓名张华学号20122450236指导教师姓名、职称马旭东(讲师)指导时间/地点专业班级电子信息工程二班一、设计(论文)内容本设计主要利用单片机STC89C52作为核心元件,利用LCD1602作为显示器件,一组用来显示A队的分数,一组用来显示B队的分数,另外一组用来计时。用按键控制比赛过程中双方的比分和比赛时间的显示。篮球赛计分屏系统包含了STC89C52系列单片机的最小系统的构成,同时在此基础上扩展了一些实用性强的外围接口,可以进一步了解应用以及LCD1602的结构、工作原理以及这种显示器的接口通信。系统设计完成后应具有成本价格低廉、性能稳定、高准确度显示、操作方便且易携带等特点。广泛适合各类学校和小团体作为赛程计分。二、设计(论文)的主要技术指标1、LCD1602的显示原理;2、单片机定时器与计数器的设计;3、矩阵键盘的设计。三、进度安排1、3月31日前通过学习单片机的基础知识,查阅资料,了解篮球赛计时计分器的功能结构,明确关键模块的意义;2、4月30日前完成主要程序的编写并进行调试,完成Proteus电路图绘制,理论分析篮球赛计时计分器设计中的软硬件问题;3、5月20日前完成程序的编写及调试,按照电路原理图进行焊接,完成成品,并完成毕业论文初稿;4、5月25日前对成品出现的问题与不足进行完善,确保其性能与质量,修改论文初稿并定稿。四、毕业设计(论文)提交的文档及基本要求1.毕业论文一份(包含封皮、目录、中英文摘要、内容及参考文献)2.不少于5000汉字的科技翻译资料一份3、毕业论文简介(A4纸1~2页)(包含题目、专业、年级、姓名、指导教师、毕业论文所做的工作、解决的问题、创新之处等)4.毕业设计任务书5.开题报告6.毕业设计工作中期检查表此表指导教师填后、复印,指导教师、学生各保存一份,交院教学办一份 毕业设计(论文)开题报告附表二课题名称基于单片机篮球赛计时计分器设计学生姓名张华学号20122450236专业班级电子2班一、选题的目的意义随着电子工业的迅速发展,各种各样的计时器不断出现,并被广泛应用在各种体育赛事,虽然电子计时器很早就有人研究,但通常都是利用模拟电子器件,数字电子器件或是模拟与数字混合组成,其稳定性和准确度仍存在一些问题,针对这一现象我决定开发一个基于单片机为核心的篮球比赛计时计分器,它具有计分准确,24秒倒计时,体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等优点。二、国内外研究综述随着单片机技术的迅速发展,设计和制造篮球计时记分器越来越智能与高端。根据目前高水平篮球比赛要求,完善的篮球比赛计时系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标。随着电子技术的产业结构调整,生产工艺的飞速发展和篮球的广泛推广,市场对篮球计分器的需求也越来越大,该器件具有价格低廉,性能稳定,操作方便并且易于携带等特点。国内外在这方面研究水平较为接近。三、毕业设计(论文)所用的方法本课题主要以设计研究为主。通过网上查询相关学术期刊及相关专业书籍,来完成初步设计。根据单片机的工作原理,和原有理论设计出针对于篮球比赛的计时计分器,本设计准备从以下几个方面着手:1、阅读相关的资料,仔细分析和研究单片机的接口操作以及LCD1602的显示原理;2、根据任务要求认真思考并确定设计思路,在导师的帮组下确定设计方案;3、按照设计方案进行程序编程;电路设计,焊接成品及调试并撰写论文;4、在老师的指导下完成最后的设计,进行论文答辩。四、主要参考文献与资料获得情况[1]郭天祥.51单片机C语言教程—入门、提高、开发、拓展全攻略.电子工业出版社,2009[2]谭浩强.C程序设计(第三版).清华大学出版社,1991[3]求实科技.8051系列单片机C程序设计.北京:人民邮电出版社.2006[4]张涵、任秀华、王全景、张超.基于PROTUES的电路及单片机设计与仿真.电子工业出版社.2012[5]郭玉霞主编.MCS-51单片机原理与应用[M].北京航空航天大学出版社.2010.1 五、指导教师审批意见签字:年月日毕业设计工作中期检查Ⅰ附表三2016年4月5日课题名称基于单片机篮球赛计时计分器设计姓名张花专业和班级电子信息工程1班指导教师马旭东一、毕业设计具体内容、目标和可能遇到的问题本设计主要利用单片机STC89C52作为核心元件,利用LCD1602作为显示器件,一组用来显示A队的分数,一组用来显示B队的分数,另外一组用来计时。用按键控制比赛过程中双方的比分和比赛时间的显示。具体功能如下:1.通过2个键,分别实现A/B队加分的功能,可以实现加1分,加2分,加3分,并显示在LCD1602液晶上;2.如果计分错误(如多加了分数),可通过A/B各自的减分按键进行减分,每按一次按键,系统减1分。最高分值为999分,最低分值为000分,设计一个篮球赛计分屏的系统;3.通过外接一个喇叭控制键,实现鸣笛警示的作用。并通过在protues软件环境下仿真篮球计时计分器的使用过程,并进行焊接制作成品。由于仿真有一定的误差,实际中可能会有一些变化,对此需要在焊接后进行调试及修改;还有就是在使用C语言编程中会出现一些字符问题和位置不对而导致整个程序出现错误。二、采取的研究方法、技术路线、实验方案及可行性分析通过Proteus仿真软件,直观准确的对电路进行描述与分析,再配合Keil软件对程序进行模拟与调试,两相配合,反复实验,再进行焊接,制作成品。以设计操作为主,通过网上查询相关学术期刊和专业书籍,来完成初步的设计;学习单片机的基础知识,完成程序的编写,并在软件上调试;熟悉Proteus的功能,了解对电路的分析与设计,加深对程序的理解;熟练掌握焊接技能,并已获得一定成果,我们对这个方案有信心。 三、指导教师对学生出勤、文献阅读等方面的评语签字:年月日此表学生填写,指导教师给出评语后,复印件于第五周交院教学办公室。毕业设计工作中期检查Ⅱ附表四2016年5月10日课题名称基于单片机篮球赛计时计分器设计姓名张华专业和班级电子信息工程1班指导教师马旭东一、阶段性结果通过翻阅相关书籍,熟练掌握了单片机的基本知识,学会了使用keil软件和STC-SIP的使用,掌握了矩阵键盘检测原理和1602液晶的操作方法,并初步完成了仿真电路的绘制,已开始相关程序的编写。二、存在的问题在使用C语言编程中一些地方没有进行注释,结果在修改时变得比较费时费力,同时因为一些字母大小写问题和语句位置不对而导致整个程序在keil软件调试过程中出现错误,对此我们需要养成良好的编程习惯,及时保存多加实验;在Proteus的元件库中有一些原本准备使用的元件并不包含,只能用其他元件代替,导致了具有一定的误差,对此需要在焊接前进行实验确保制作完成后能过使用,避免不必要的麻烦。三、后一步工作设想对相关程序进行优化以及完善,使计时计分器显示简洁明了,操作简单,并完成论文的撰写。 四、指导教师对学生出勤、论文进展方面的评语签字:年月日指导教师组织学生口头汇报后,学生填写该表,教师给出评语后,于第十周交院教学办公室。 基于单片机篮球赛计时计分器设计摘要:21世纪以来,伴随着科技的发展,单片机把我们带入了智能化的电子领域,现如今许多电子系统的电路由原来的复杂变得简单、功能由欠缺变得齐全很大一部分原因是由于单片机的加入。若把老旧经典的电子系统当作一个僵死的电子系统,那么智能化的电子系统则是一个具有“生命”的电子系统。随着时间的推移,单片机与串行接口的结合越来越广泛的应用到各个电子系统当中。本设计在硬件上主要依托STC89C52单片机作为核心控制元件,利用LCD1602作为显示器件,软件方面依托C语言作为编程语言,并利用Keil对所编程序进行调试,在Protues搭建的软件仿真平台下进行仿真。本设计在以STC89C52系列单片机为最小系统的基础上扩展了一些实用性强的外围接口,进一步了解单片机的应用,LCD1602的结构和独立按键的工作原理,主要实现了计时和显示A/B队的分数,并能进行加分,减分,鸣笛警示等功能。系统设计完成后应有价格低廉、性能稳定、操作方便且易携带等特点。广泛适合各类学校和小团体作为赛程计分。关键词:单片机;LCD1602;计数器;定时器 TimingscoringbasketballgamedesignbasedbyMCUAbstract:Enteringthetwenty-firstCentury,withthedevelopmentoftechnology,Theembeddedmicrocontrollerputusintothefieldofelectronicsandintelligent,Nowadaysmanyelectroniccircuitsfromtheoriginalcomplexsystemseasier,becomesfullyfunctional,alargepartofthereasonisduetothemicrocontrollerjoin.Iftheoldclassicelectronicsystemasadeadelectronicsystem,theintelligentelectronicsystemisonewitha"life"oftheelectronicsystem.Overtime,thecombinationofmicrocontrollerandserialinterfacewhichiswidelyappliedtovariouselectronicsystems.ThisdesignreliesonhardwareSTC89C52mainmicrocontrollerasthecorecontrolelementsastheuseofLCD1602display,softwarereliesontheClanguageasaprogramminglanguage,andtheuseoftheprogrammedKeildebugging,simulationsoftwarebuiltinProtuessimulationplatform.ThedesignwiththesmallestsystemSTC89C52MCUbasedontheexpansionofanumberofpracticalperipheralinterface,abetterunderstandingoftheapplicationofmicrocontroller,LCD1602structureandindependentkeyworks,themainachievementofthetiminganddisplayA/Bteamscores,andcanbeaplus,minuspoints,whistlewarningfunctions.Afterfinishingsystemdesign,itshouldbelowcost,stableperformance,convenienttooperateeasytocarryandsoon.Suitableforallkindsofschoolsandsmallgroupsasthescoringrace.Keywords:Microcontroller;LCD1602;Counter;Time 目录1绪论21.1篮球计时计分器简介21.2篮球计时计分器设计内容22系统总体方案设计32.1系统硬件设计32.2系统软件设计42.4本章小结53系统硬件设计63.1STC89C52微处理器模块63.1.1STC89C52微处理器的介绍63.1.2定时/计时器介绍93.1.3复位电路及时钟振荡电路103.2LCD显示模块123.3键盘模块133.4电源与蜂鸣器模块153.5硬件电路设计153.5.1元器件的选择153.5.1显示电路163.5.2按键电路163.5.3电源及蜂鸣器电路173.5本章小结184系统软件设计184.1应用软件简介184.1.1Keil与Proteus简介184.1.2Keil与Protues的联合调试184.2软件模块设计194.2.1系统主程序设计194.2.2系统显示程序设计204.3本章小结215篮球计时计分器的系统调试215.1系统调试215.2仿真结果22参考文献24附录:篮球计时记分器源程序25 1绪论本文先以介绍篮球计时计分器的发展现状作为开端,以此展开论述,首先确定系统的总体设计,画出系统的组成框图,并对各部分模块的功能及所用其元器件及电路进行分析与设计,主要包括单片机控制模块,LCD显示模块、键盘控制模块、电源模块等。并设计软件部分的程序流程图、在keil软件中编写相应的程序,并在Proteus仿真软件平台下运行和调试,最终做出成品。1.1篮球计时计分器简介计时计分器是各大运动赛事中不可缺少的工具之一,而篮球自从1891年诞生到如今已经成为了一项风靡全球的运动,尤其是关于美国职业男篮NBA的新闻已经成为了人们茶余饭后津津乐道的话题,很多人熟悉篮球,明白篮球比赛是根据两个队在规定的时间内得分多少来决定胜负的,这就需要有计时计分器记录下每队的得分以及所花时间,基于此设计一款篮球计时计分器就显得尤为重要。基于STC89C51单片机设计的篮球计时计分器相对于老旧的翻拍器具有体积小、计时精确的优点,更能适合目前的高水平的篮球比赛。1.2篮球计时计分器设计内容利用STC89C52单片机及LCD显示等模块,设计一个简易的篮球计时计分器能够对篮球比赛实现实时控制。设计内容如下:1.用LCD1602显示数据:记录比赛双方比分,可进行加减分,倒计时形式记录比赛时间,24秒即将结束时发出警示鸣笛;2.设计硬件电路图;3.画出程序流程图、编写程序、完成编译;4.硬件电路进行焊接、调试、并完成成品。37 2系统总体方案设计随着单片机在各个领域的广泛应用,以单片机为核心的篮球赛计时计分器也应用而生,如用单片机控制LCD液晶显示器计时计分器,用单片机控制LED七段数码管计时计分器等。本设计由STC89C52单片机为核心,LCD1602液晶作为显示器的计时计分系统。具有赛程定时设置,赛程时间暂停,计时和显示A/B队的分数,并能及时进行加分,减分,鸣笛警示功能。2.1系统硬件设计根据上述系统介绍,篮球计时计分器的系统设计共包括四大模块:单片机控制模块、LCD显示模块、按键模块及电源及与蜂鸣器模块。各模块作用如下:1.单片机控制模块:以STC89C52单片机为控制核心,来完成计时计分器的功能。利用其内部的定时/计数器完成24秒倒计时和记比分等。单片机STC89C52内部的定时器/计数器具有4种工作方式,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。2.LCD显示模块:使用LCD1602液晶显示器作为显示电路,直观的将比分与时间呈现出来,便于观测。3.按键模块:利用矩阵键盘与单片机I/O口相连,实现篮球计时计分器的加分与减分。4.电源与蜂鸣器模块:为整个系统提供合适又稳定的电源,主要为单片机和蜂鸣器提供。在24秒倒计快要结束时蜂鸣器发出警示鸣笛,提醒运动员抓紧时间,是一个非常人性化的设计。综合以上篮球计时计分器系统设计有单片机控制模块、电源模块、按键模块及显示模块等组成,具体系统硬件结构框图如图2-1所示。37 STC89C52RC报警电路计时电路计分LCD显示比分时间鸣笛警示按键控制复位电路电源电路图2-1篮球赛计分器的硬件结构框图2.2系统软件设计比赛开始,并初始化软件部分要求实现的功能有:开始时LCD显示屏除比赛时间都显示0;设置键可设定比赛时间;具有AB两队分别计分的功能;有鸣笛警示功能;设定比赛时间后,按下开始按键,计时器开始计时;当开始计时后,AB两队能进行加分等。结合单片机基本原理与LCD显示原理、独立键盘接口连接、中断响应等理论知识可设计出程序流程图如下图2-2所示:读P3口的值取出P3.6YN去抖启动按键是否按下37 去抖读取功能键N确认是否有按键按下Y确认按下的是哪个键读取按键信息并等待按键释放单片机把信息传到LCD并显示Ny确认比赛是否结束Y比赛结束图2-2程序流程图2.4本章小结本章主要阐述了本设计的总体设计方案,通过模块化的设计来实现硬件部分的功能,软件部分的实现主要通过编写程序控制单片机的I/O口和相应按键操作来完成。后续章节方案设计的详细内容在系统总体设计方案确立下一步步展开。37 3系统硬件设计设计一个基于C52单片机的篮球赛计时计分器,初步确定本设计的总体框架结构和具体模块,再根据具体设计要求选定合适的设计方案以及选取合适的元器件进行系统硬件设计。具体设计概念如下:选择STC89C52型单片机,按键电路、显示电路、鸣笛警示电路等部分通过与不同的I/O口与单片机连接,设计一个简易的篮球赛计时计分器。3.1STC89C52微处理器模块3.1.1STC89C52微处理器的介绍 STC98C52单片机是STC公司生产的一种低功耗,高性能CMOS微处理器,是一种增强型8051单片机,STC89C52片内集成512字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。片内资源有4组I/O控制端口、32位I/O口线,3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在3.3V到5.5V宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP(DualIn-linePackage)的封装。STC89C52引脚如下图3-1所示。37 s图3-1STC89C52引脚图由其引脚图,我们按其功能类别将它们分成三类:1.电源和时钟引脚。如:VCC、GND、XTAL1、XTAL2;2.编程控制引脚。如:RST、PSEN、ALE/PROG、EA/VPP;3.I/O口引脚。如:P0、P1、P2、P3,4组8位I/O口。VCC、GND—单片机电源引脚。不同型号单片机接入对应电压电源,常压为+5V,低压为+3.3V。XTAL1、XTAL2—外接时钟引脚。XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,需在这两个脚外接石英晶体和振荡电容,振荡电容的值一般取10p~30p;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。PSEN—全程是程序储存器允许输出控制端。在读外部程序储存器时PSEN低电平有效,以实现外部程序储存器单元的读操作。37 ALE/PROG—当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。EA/VPP—EA接高电平时,单片机读取内部程序储存器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。EA接低电平时,单片机直接读取外部ROM。I/O口引脚—P0口、P1口、P2口和P3口。P0口—双向8位三态I/O口,每个口可独立控制。51单片机P0口内部没有上拉电阻,为高阻态,所以不能正常地输出高低电平,因此该组I/O口在使用时务必要外接上拉电阻。P1口—准双向8位I/O口,每个口可独立控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。之所以称它为“准双向”是因为该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号,也就是要使其先有个“准”备的过程,所以才称为准双向口。对52单片机P1.0引脚的第二功能为T2定时器/计数器的外部输入,P1.1引脚的第二功能位T2EX捕捉、重装触发,即T2的外部控制端。P2口—准双向8位I/O口,每个口可独立控制,内带上拉电阻,与P1口相似。P3口—准双向8位I/O口,每个口可独立控制,内带上拉电阻。作为第一功能使用时就当作普通I/O口,与P1口相似。作为第二功能使用时,各引脚的定义如表3-1所示,值得强调的是,P3口的每一个引脚均可独立定义为第一功能的输入/输出或第二功能。I/O口备选功能/特殊功能P3.0/RXD串行输入口P3.1/TXD串行输出口P3.2/外部中断0P3.3/外部中断1P3.4/T0定时器/计时器0外部输入P3.5/T1定时器/计时器1外部输入P3.6/外部数据存储器写脉冲P3.7/外部数据存储器读脉冲37 表3-13.1.2定时/计时器介绍STC89C52片内集成了3个16位定时/计数器,定时/计数器T0和T1是通用的定时/计数器,定时/计数器T2集定时、计数和捕获三种功能于一体,功能更强。定时/计数器的实质是加1计数器(16位)。由高8位和低8位两个寄存器组成。TMOD是定时器/计时器的工作方式寄存器,确定工作方式和功能;TCON时控制寄存器,控制T0,T1的启动和停止及设置溢出标志。加1计数器的输入的计数脉冲有两个来源一个是由系统的时钟振荡器输出脉冲经12分频后送来;另一个是T0或T1引脚输入一个脉冲就使计数器回零,且计数器的溢出使TCON寄存器中TF0或TF1置1,向CPU发出中断请求。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。单片机在使用定时器或计数器功能时,通常需要设置两个与定时器有关的寄存器:定时器/计数器工作方式寄存器TMOD与定时器/计数器控制寄存器TCON。定时/计数器T0和T1的操作模式和工作方式由TMOD来定义,其格式如表3-2所示:表3-2工作方式寄存器TMOD由表3-2可知,TMOD的高四位用于设置定时器1,低四位用于设置定时器0,对应4位的含义如下:GATE—门控制位GATE=0,定时/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制;GATE=1,定时/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚上的电平状态来共同控制;C/T—定时器模式和计数器模式选择位C/T=1,为计数器模式,C/T=0,为定时器模式;37 M1M0—工作方式选择位每个定时/计数器都有4种工作方式,它们由M1M0设定,对应关系如表3-3所示。M1M0工作方式00方式0,为13位定时/计数器01方式1,为16位定时/计数器10方式2,8位初值自动重装的8位定时/计数器11方式3,仅适用于T0,分成两个8位计数器表3-3定时器/计时器的四种工作方式定时/计数器控制寄存器在特殊功能寄存器中,字节地址位88H,位地址分别是88H~8FH,该寄存器可进行位寻址。TCON寄存器用来控制定时器的启,停,标志定时器溢出和中断情况。其格式如表3-4:TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D08FH8EH8DH8CH8BH8AH89H88H表3-4控制寄存器TCON其中的英文标示分别代表着:TF1—定时器1溢出标志位,TR1—定时器1运行控制位,TF0—定时器0溢出标志,TR0—定时器0运行控制位,,IE1—外部中断1请求标志,IT1—外部中断1触发方式选择,IE0—外部中断0请求标志,IT0—外部中断0触发方式选择。3.1.3复位电路及时钟振荡电路单片机最小系统由复位电路和时钟振荡电路组成。复位方式一般有三种:手动按钮复位,上电复位和积分型上电复位,如图所示。37 图3-2手动按钮复位图3-3上电复位图3-4积分型上电复位本次设计选取12.000MHZ(实际上是11.0592MHZ)石英晶体谐振器并联两个20pF振荡电容一头接入XTAL1和XTAL2引脚,另一头接地。时钟振荡电路图如图3-5所示。37 图3-5时钟振荡电路3.2LCD显示模块液晶(LiquidCrystal)是一种高分子材料,因为其特殊的物理、化学、光学特性,20世纪中叶开始了广泛应用。液晶显示器(LCD)的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯光构成画面。相对于数码管,液晶显示器具有图像质量好,体积小,耗电低,图像刷新率高,显示操作简单等优点,所以本次设计的显示模块我们采用液晶显示器。图3-61602液晶显示器本设计使用的1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置128个字符的ASCII字符集字库,只有并行接口,无串37 行接口。其接口说明如表所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2DateI/O2VDD电源正极10D3DateI/O3VL液晶显示偏压信号11D4DateI/O4RS数据/命令选择端(V/L)12D5DateI/O5R/W读/写选择端(H/L)13D6DateI/O6E使能信号14D7DateI/O7D0DateI/O15BLA背光源正极8D1DateI/O16BLK背光源负极表3-51602液晶接口信号说明由表可知:液晶1,2端为电源;12,16端为背光电源,为防止直接加5V电压烧坏背光灯,需要在15脚串接一个电阻用来限流。液晶3端为液晶对比度调节端,可通过一个电位器接地来调节液晶显示对比度。液晶4端为向液晶控制器写数据/命令选择端,接单片机P3.5口。液晶5端为读/写选择端,因为不读取任何数据,只向其写入命令和显示数据,因此此端选择为写状态。液晶6端为使能信号,是操作时必需的信号,接单片机P3.4口。3.3键盘模块键盘分成编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编写器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,由于非编码键盘结构简单,设计与裁量比较自由,所以用的较多的是非编码键盘。非编码键盘又分为独立键盘和行列式键盘。1.按键特性键盘实际上就是一组按键,在单片机外围电路中,通常用到的按键都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开,本设计的按键如图所示。37 图3-72.抖动处理按键在被按下时,其触点电压变化的理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动现象,抖动的时间长短和按键的机械特性有关,一般为5~10ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖动电路,也有专用的去抖动芯片,但通常用软件延时的方法就能很容易解决抖动问题,没有必要再添加多余的硬件电路。3.按键检测及功能非编码键盘是所用按键组成的集合。为了保证键盘的正确输入,键接口必备以下功能:(1)按键检测与识别,判断有无键按下以及按键位置,按键检测与识别是通过再某一行或列送入低电平,其余的为高电平,然后依次轮流检测一次各列或各行是否有低电平即可找到被按下的按键的具体位置。键盘检测有下列三种方式:定时检测方式:单片机调用扫描程序在指定时间对键盘进行检测,即时响应用户键入请求。程序编程检测方式:调用扫描程序响应用户键入请求在单片机空闲时。中断检测方式:按键按下的同时由中断电路产生中断请求,由单片机响应并执行中断服务程序扫描键盘。(2)去键抖动目的是消除按键抖动带来的误差。按键按下后,延时10ms进行消抖动,再检测一次,确认有两次检测相同再进行按键扫描。(3)检测按键释放得到按键值后,再以延时扫描的方法检测按键是否被释放。确认按键释放后键处理工作完成。37 3.4电源与蜂鸣器模块本设计电源模块采用USB插座和自锁开关共同组成,鉴于目前很多电子产品上数据线都采用USB插座,我们使用USB插座是为了购买本产品的用户在使用时更加方便,再配上自锁开关可以很方便的在通电情况下让其断电。在24秒倒计时即将结束时,设计采用蜂鸣器进行鸣笛警示,告知场上的运动员时间快要结束,是非常人性化的设计。3.5硬件电路设计在本设计中硬件设计是一个非常重要的环节。在对硬件进行设计时,第一步要确定所用的元器件,并熟练掌握所用元器件的原理及功能之后进行设计。本设计的主要硬件电路可以分成三个部分:显示电路、按键电路和电源与蜂鸣器电路。3.5.1元器件的选择本设计主要选择了以下元器件:如表3-6所示:元器件名称所属类所属子类STC89C52MicroprocessorIC’s8051FamilyBD136TransistorsBipolarCAPCapacitorsCAP-ELECCapacitorsGenericCRYSTALMiscellaneousLM016LOptoelectronicAll—SubBUTTONSwitchs&RelaysSwitchsPNPModellingPrimitivesAnalog(SPICE)SOUNDERSpeakers&soundersAll—Sub-CategoriesRESPACK-8ResistorsResistorPacksSW-DPDTSwitchs&RelaysSwitchs表3-6元器件列表37 3.5.1显示电路显示电路主要由LCD显示器,时钟振荡电路和单片机组成。P0.0~P0.7连接着LCD的输入端D0到D7;XTAL1、XTAL2端外接2个22PF的振荡电容和12MHZ的石英晶振作为时钟电路;P1.0~P1.2分别连接着LCD的4,5,6端口,决定着液晶显示器的操作时序。当RS=L,R/W=H,E=H,读状态;当RS=H,R/W=H,E=H,读数据;当RS=L,R/W=L,E=H,写指令;当RS=H,R/W=L,E=H,写数据。设计出的电路图如下所示:图3-8显示电路3.5.2按键电路由12个按键组成的矩阵键盘,单片机引脚P3.4~P3.7分别连接着键盘的各行,P3.1~P3.3分别连接着键盘的各列,依次按下分别会进行A队比分加1,B队比分加1,开始键,A队比分减1,B队比分减1,设置键,A队获胜局数加1,B队获胜局数加1,第一行清零,A队获胜局数减1,B队获胜局数减137 ,第二行清零。设计出的电路图如下所示:图3-9按键电路3.5.3电源及蜂鸣器电路电源采用直流电源并用自锁开关与单片机连接,采用蜂鸣器作为报警器件,该电路主要由单片机、三极管、蜂鸣器、自锁开关,直流电源组成。P2.0接入三极管的b极,使能端接入三极管的e极,c极通过一个限流电阻与蜂鸣器相连,当24秒倒计时即将结束时产生一个外部中断,蜂鸣器发出声响。设计电路图如下所示:图3-10电源及蜂鸣器电路3.5本章小结本章通过已掌握的理论知识以STC89C52RC单片机为核心控制器件和LCD、矩阵键盘、电源模块和蜂鸣器等外围器件共同构成了篮球计时计分器的硬件部分。37 4系统软件设计在对设计相关软件进行编程中,主要有C51编程和汇编ASM-51编程两种方式。相对于汇编ASM-51编程,C51编程不需要熟悉单片机的各个指令操作,可以直接使用C语言编程操控单片机,库中包含了许多标准子程序,具有较强的数据处理能力,而且十分方便,效率高,所以本设计采用C51编程。4.1应用软件简介4.1.1Keil与Proteus简介Keil软件是单片机最常用的编译软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。Proteus嵌入式系统仿真与开发平台是由英国Labcenter公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台。踏实一款可视化的、支持多种微处理器且支持多种微处理器开发环境联合调试的软、硬件仿真软件。Proteus除具有电子电路原理图设计与仿真,PCB自动或人工布线等功能外,还具有为控制系统与外设的混合电路系统协同仿真功能。4.1.2Keil与Protues的联合调试(1)安装Keil和Proteus(2)把PROTEUSMODELS目录中的VDM51.DLL复制到安装目录的C51BIN目录中(3)修改Keil安装目录下的TOOLS.INI文件,在C51字段加入TDRV8=BINVDM51.DLL(“ProteusVSMMonitor-51Driver”)并保存。(4)在Proteus的Debug菜单中选择UseRemoteDebugMonitor(5)在Keil中建立工程文件建立一个新工程点击“Project”菜单中的“Newproject”选项建立一个新的工程,之后再建立一个新文件以lanqiu.c形式保存并添加到目标组里。在optationsfortarget选项里的output栏里将createafile前的对勾选上,使在建立目标时产生37 HEX文件,并在debug栏中选择“proteusvsmmonitor-51dvriver”。(6)在keil中进行Debug,同时在Proteus中查看直观结果。4.2软件模块设计4.2.1系统主程序设计在主程序中,主要工作就是各个设配进行初始化操作,并判断比赛是否开始,具体程序如下:voidmain(){beep=0;//开机蜂鸣器响一下delay_1ms(200);//延时200msP0=P1=P2=P3=0xff;//初始化单片机IO口为高电平init_1602();//1602初始化time_init();//定时器0初始化init_eeprom();//开机自检eeprom初始化display();//显示函数while(1){key();//按键函数if(key_can<20){key_with();//按键处理函数}if(flag_200ms==1){flag_200ms=0;if(menu_1==0)start();//开始比赛函数}}}4.2.2系统显示程序设计系统要实现把比分和时间显示在液晶显示器上,需要设计比赛开始时各行显示的内容,并可显示三位数,两位数及一位数,部分程序如下:voidwrite_string(ucharhang,ucharadd,uchar*p){37 if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1){if(*p=="")break;write_data(*p);p++;}}voidwrite_sfm2(ucharhang,ucharadd,uintdate){if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(table_num[date/10%10]);write_data(table_num[date%10]);}voidwrite_sfm1(ucharhang,ucharadd,uintdate){if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(table_num[date%10]);}voidwrite_sfm3(ucharhang,ucharadd,uintdate){if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(table_num[date/100%10]);write_data(table_num[date/10%10]);write_data(table_num[date%10]);}voiddisplay()//显示函数{write_sfm2(2,7,fen);//显示分write_sfm2(2,10,miao);//显示秒37 write_sfm2(2,13,m_24);//显示秒write_sfm1(2,1,aj_fen);//显示A队的局数比分write_sfm1(2,3,bj_fen);//显示B队的局数比分write_sfm3(1,4,ax_fen);//显示A队每节的比分write_sfm3(1,13,bx_fen);//显示B队的局数比分}4.3本章小结本章对设计过程中所需要的软件进行了详细的介绍,包括keil和protues的简介及其联合调试的基本操作。结合前几章的介绍与设计,本设计的核心部分基本完成。5篮球计时计分器的系统调试系统调试就是通过修改程序,使篮球计时计分器的程序错误纠正,功能不断完善,为焊接成品做准备。使用软件仿真,调试仿真结果。5.1系统调试根据系统设计要求,进行Keil和Proteus系统仿真,不断调试程序,直到符合功能要求。Proteus总体仿真图5-1所示。37 图5-15.2仿真结果我们双击单片机,在出现的窗口中点击ProgramFile按钮,打开之前在Keil编译而成的HEX文件,点击开始进行仿真。我们在图中点击开始按键,开始比赛,测试计分还有计时等各项功能,部分结果如下:图5-2经过不断的调试修改程序再调试,我们解决了各种问题完成了设计的要求。结论:本次设计的是篮球计时记分器,首先以介绍篮球计时计分器展开,阐述了37 篮球计时计分器的用途和发展现状,以表明设计一款使用方便操作简单的计时器很有必要。接下来我们就需要了解设计这样一款产品需要什么,本次采用STC89C52单片机作为控制核心,另外还有显示模块,按键模块等一些外围电路。掌握了其主要组成部件,我们就可以用Proteus软件将仿真图画出来,然后在Keil软件进行编程调试,生成Hex文件并下载单片机元器件中进行仿真,不断地对程序进行修复完善,以达到最佳效果。通过这次设计,让我对C语言,单片机及其I/O接口有了深入的了解与认识,并学习了Keil等软件,让我的方面知识上了一个新的台阶。致谢:在这五个半月的时间里,得到了导师的细心指导和同学们的大力帮助,在此向他们表示最真诚的的感谢,感谢他们对我的指导和帮助,让我学到了很多专业知识,为我能够顺利完成毕业设计打下了坚实的基础。37 参考文献[1]苏伟斌.8051系统单片机应用手册[M].北京:科学出版社,1997.[2]周平.单片机应用技术[M].北京:高等教育出版社,2002.[3]郭天祥.51单片机C语言教程—入门、提高、开发、拓展全攻略.电子工业出版社,2009[4]谭浩强.C程序设计(第三版).清华大学出版社,1991[5]郭玉霞主编.MCS-51单片机原理与应用[M].北京航空航天大学出版社.2010.1[6]求实科技.8051系列单片机C程序设计.北京:人民邮电出版社.2006.[7]张涵、任秀华、王全景、张超.基于PROTUES的电路及单片机设计与仿真.电子工业出版社.2012[8]何立民.单片机应用技术大全[M].北京:北京航空航天大学出版社,2004.37 附录:篮球计时记分器源程序#include//调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义变量范围0~255#defineuintunsignedint//无符号整型宏定义变量范围0~65535#include#include"eeprom52.h"//这三个引脚参考资料sbitrs=P1^0;//1602数据/命令选择引脚H:数据L:命令sbitrw=P1^1;//1602读写引脚H:数据寄存器L:指令寄存器sbite=P1^2;//1602使能引脚下降沿触发ucharcodetable_num[]="0123456789abcdefg";sbitbeep=P2^0;//蜂鸣器IO口定义bitflag_200ms;ucharflag_start;//开始计时ucharmiao,fen,m_24;//时间ucharax_fen,bx_fen;//ab队的小比分ucharaj_fen,bj_fen;//ab队的局数比分ucharset_time;ucharmenu_1;//菜单设计的变量uchara_a;/***********************1ms延时函数*****************************/voiddelay_1ms(uintq){uinti,j;for(i=0;i=2){menu_1=0;init_1602();//1602初始化}if(menu_1==1){write_string(1,0,"set_fen:00");write_string(2,0,"");}}if(menu_1==1){if(key_can==9)if(set_time<99)//设置每节的时间set_time++;if(key_can==12)if(set_time!=0)//设置每节的时间set_time--;write_sfm2(1,9,set_time);//显示设置的时间fen=set_time;}if(menu_1==0){if(key_can==3)//开始键{37 flag_start++;if(flag_start==1){if(m_24==0)//当秒为0时时间重新为24秒m_24=24;if(fen==0){m_24=24;fen=set_time;miao=0;}}if(flag_start>=2)flag_start=0;}if(key_can==1)ax_fen++;//A队每节的比分加1if(key_can==4)if(ax_fen!=0)ax_fen--;//A队每节的比分减1if(key_can==2)bx_fen++;//B队每节的比分加1if(key_can==5)if(bx_fen!=0)bx_fen--;//B队每节的比分减1if(key_can==7)if(aj_fen<9)aj_fen++;//a队局数比分加1if(key_can==10)if(aj_fen!=0)aj_fen--;//a队局数的比分减1if(key_can==8)if(bj_fen<9)bj_fen++;//B队局数比分加1if(key_can==11)if(bj_fen!=0)bj_fen--;//B队局数的比分减1if(key_can==9)//每节的比分清零{37 ax_fen=bx_fen=0;flag_start=0;}if(key_can==12)//每局的比分清零时间变量还原{miao=0;fen=set_time;m_24=24;//时间aj_fen=0;bj_fen=0;//ab队的局数比分flag_start=0;}display();//显示函数}write_eeprom();//保存数据}/*********************定时器0初始化******************/voidtime_init(){EA=1;//开总中断TMOD=0X11;//定时器0、定时器1工作方式1ET0=1;//关定时器0中断TR0=1;//允许定时器0定时}/*******************开始比赛函数******************/voidstart(){staticucharvalue;if(flag_start==1){value++;if(value>=5){value=0;if(miao==0){miao=60;if(fen==0){flag_start=0;}fen--;//分钟减1}miao--;37 m_24--;//秒减1if(m_24==0){flag_start=0;write_eeprom();//保存数据beep=1;//关闭蜂鸣器}display();//显示函数}if(flag_start==1)if(m_24<=3)//最后3秒蜂鸣器报警{beep=~beep;}}}/***************主函数*****************/voidmain(){beep=0;//开机蜂鸣器响一下delay_1ms(200);P0=P1=P2=P3=0xff;//初始化单片机IO口为高电平init_1602();//1602初始化time_init();//定时器0初始化init_eeprom();//开机自检eeprom初始化display();//显示函数while(1){key();//按键函数if(key_can<20){key_with();//按键处理函数}if(flag_200ms==1){flag_200ms=0;if(menu_1==0)start();//开始比赛函数}}}37 /*********************定时器0中断服务程序************************/voidtime0_int()interrupt1{staticucharvalue;//定时2ms中断一次TH0=0xf8;TL0=0x30;//2msvalue++;if(value>=100){value=0;flag_200ms=1;}}毕业设计(论文)成绩评价意见论文题目37 指导教师评语:评定成绩:签名:年月日评阅人评语:评定成绩:签名:年月日答辩小组评语:答辩小组成员签名:答辩成绩:组长签名:年月日答辩委员会意见(同意给优、良、中、及格等次)总成绩(综合):签名:年月日注:设计(论文)总成绩=指导教师评定成绩(30%)+评阅人评定成绩(30%)+答辩成绩(40%)  评定成绩过程给分均按百分制分数给分,最终给定成绩再按五分制换算后给出。经验:作为信工毕业的老学长,毕设还是很简单的!1.37 一般情况大四上学期即将结束开始分配导师进行一个毕设的大致确定,这时候导师会让你们定题目什么的,你也不用太担心啊,这都是暂时的,先应付考试到下学期你再说。2.有些老师会给你一个很高端(sb)的题目,这时候你要是感觉你不会弄不出来怎么办呢,首先上淘宝或者什么途径找专门写论文的,问一下你的题目能不能弄出来啊,如果他开价在1000元以上,你一定别傻不拉及的真付,你先找到一个跟你们老师给的题目差不多的但比较简单的(这个就需要你去问淘宝做毕设的那个便宜又跟你题目差不多的),然后联系老师说你给的题目感觉有点难做不出来,我想做xxxxxxxx(这个便宜的题目),老师一般都会答应的。3.毕设格式很关键的,一定格式放第一位。4.查重复率嘛,这个我当初重复率在50%以上,改几次就下去了。我最终重复率不到10%,所以大家不用担心的。那怎么改呢?变关键词和语句就好啊。关键词怎么变:打开百度,直接输入xx的近义词,找个相近的替换掉,然后变语句顺序,在靠自己联想加词,重复率就下去了5.毕设答辩简直水的一b啊。老师一般就问你这个实现了什么功能,如果有程序会问你这句话实现了什么就ok了,你要是保研的,答辩的时候给老师说我保研需要80以上,就会80以上,水不水?37'