网站大量收购独家精品文档,联系QQ:2885784924

基于AT89S52的篮球足球比赛计时计分器仿真及实物制作毕业论文.doc

基于AT89S52的篮球足球比赛计时计分器仿真及实物制作毕业论文.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 PAGE 38页 共4页 深圳大学考试答题纸 (以论文、报告等形式考核专用) 二○一四~二○一五学年度第 一 学期 课程编号 课程名称 单片机应用与设计 主讲教师 评分 学 号 姓名 专业年级 集成电路设计与集成系统 大三 教师评语: 题目: 基于AT89S52的篮球足球比赛计时计分器仿真及实物制作 答题: 设计任务概述: 采用AT89S52单片机为核心设计的一个用于赛场的篮球足球比赛的计时计分器并制作出实物。本设计分为三个模块:显示模块,计时模块和按键模块。计时模块采用定时器T0中断计时,并通过P3口的外部中断0和外部中断1实现比赛时间的修改。显示模块分为计时和计分两部分,采用一个四位共阴七段数码管和两个共阴七段数码管显示,采用动态扫描方式显示,段选采用P0口实现,位选通过P2口实现。按键模块通过P1口输入数据。总体实现功能如下: (1)能为比赛提供计时功能,并能任意修改所要计量的时间,以此来满足足球篮球比赛的不同赛制。 (2)能为比赛提供记录比分功能,随时刷新甲、乙两队在整个比赛过程中的比分,出现错误也能重新修改比分。 (3)比赛结束时,能发出报警声,并能随时关闭报警声。 (4)比赛期间可随时接受暂停请求,计时停止。 系统硬件模块设计: 设计框图及原理图 单片机芯片AT89S52模块 AT89S52的主要特性如下: ·与AT89C51,C52,STC89RC52兼容 ·8K字节可编程闪烁存储器 ·128*8位内部RAM ·32可编程I/O线 ·三个16位定时器/计数器 ·6个中断源 ·可编程串行通道 ·片内振荡器和时钟电路 时钟模块 采用12MHZ的晶振,另有两个30pF的瓷片电容 复位电路 5 报警电路 采用蜂鸣器加100Ω的限流电阻接P1口 按键控制模块 共有9个设置按键,P1口有7个:add1、add2是加分键(add1按一次加一分,add2按一次加二分),minus1是减分键(按一下减一分),,bstop是关蜂鸣器键,start是开始计时键,stopagain是时间暂停键,turn是切换键(用于加分方的切换),P3口有2个中断:timeadd1是时间计时加1分钟,timeadd10是时间计时加10分钟。 时间显示模块 采用一个四位共阴七段数码管显示分秒。段选口接P0口,P0口接一个1kΩ的排阻,起上拉电平作用。 位选口接P2,采用动态扫描。 比分显示模块 采用两个两位共阴七段数码管显示甲队乙队分数。段选口接P0口,P0口接一个1kΩ的排阻,起上拉电平作用。位选口接P2,采用动态扫描。 三、系统软件模块设计 (1)C语言程序流程图 中断函数按否初始化显示 开始 中断函数按否 初始化显示 开始 修改计时时间 N 修改计时时间 start按否 start按否 时间是否为0按键函数计时函数显示函数 N 时间是否为0 按键函数 计时函数 显示函数 复位函数报警函数 N 复位函数 报警函数 源程序代码: #includereg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table1[]={ 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff,0xef}; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; uchar disbuffer[8]={0}; uchar minute=0,second=0; uchar Ascore=0,Bscore=0,temp=0; uchar flage1=0; uchar flage=0; uint count,z; sbit bizz=P1^7; //定义按键对应的端口 sbit add1=P1^0; sbit add2=P1^1; sbit minus1=P1^2; sbit bstop=P1^4; sbit start=P1^5; sbit stopagain=P1^6; sbit turn=P1^3; sbit timeadd1=P3^2; sbit timeadd10=P3^3; void ininterrupt() interrupt 1 //定时器T0计时函数 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) { count=0; if(second==0 minute==0) { ET0=0;

文档评论(0)

weidameili + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档