基于AT89S52的篮球足球比赛计时计分器仿真及实物制作_第1页
基于AT89S52的篮球足球比赛计时计分器仿真及实物制作_第2页
基于AT89S52的篮球足球比赛计时计分器仿真及实物制作_第3页
基于AT89S52的篮球足球比赛计时计分器仿真及实物制作_第4页
基于AT89S52的篮球足球比赛计时计分器仿真及实物制作_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、深圳大学考试答题纸(以论文、报告等形式考核专用)二一四二一五学年度第 一 学期课程编号1303100001课程名称单片机应用与设计主讲教师王百鸣评分学 号2012130035姓名黄志宇专业年级集成电路设计与集成系统 大三教师评语:题目: 基于at89s52的篮球足球比赛计时计分器仿真及实物制作答题:1、 设计任务概述:采用at89s52单片机为核心设计的一个用于赛场的篮球足球比赛的计时计分器并制作出实物。本设计分为三个模块:显示模块,计时模块和按键模块。计时模块采用定时器t0中断计时,并通过p3口的外部中断0和外部中断1实现比赛时间的修改。显示模块分为计时和计分两部分,采用一个四位共阴七段数码

2、管和两个共阴七段数码管显示,采用动态扫描方式显示,段选采用p0口实现,位选通过p2口实现。按键模块通过p1口输入数据。总体实现功能如下:(1)能为比赛提供计时功能,并能任意修改所要计量的时间,以此来满足足球篮球比赛的不同赛制。(2)能为比赛提供记录比分功能,随时刷新甲、乙两队在整个比赛过程中的比分,出现错误也能重新修改比分。(3)比赛结束时,能发出报警声,并能随时关闭报警声。(4)比赛期间可随时接受暂停请求,计时停止。2、 系统硬件模块设计:(1) 设计框图及原理图(2) 单片机芯片at89s52模块 at89s52的主要特性如下: 与at89c51,c52,stc89rc52兼容8k字节可编

3、程闪烁存储器128*8位内部ram32可编程i/o线三个16位定时器/计数器6个中断源可编程串行通道片内振荡器和时钟电路 (3) 时钟模块采用12mhz的晶振,另有两个30pf的瓷片电容(4) 复位电路5(5) 报警电路采用蜂鸣器加100的限流电阻接p1口(6) 按键控制模块共有9个设置按键,p1口有7个:add1、add2是加分键(add1按一次加一分,add2按一次加二分),minus1是减分键(按一下减一分),bstop是关蜂鸣器键,start是开始计时键,stopagain是时间暂停键,turn是切换键(用于加分方的切换),p3口有2个中断:timeadd1是时间计时加1分钟,time

4、add10是时间计时加10分钟。(7) 时间显示模块采用一个四位共阴七段数码管显示分秒。段选口接p0口,p0口接一个1k的排阻,起上拉电平作用。位选口接p2,采用动态扫描。(8) 比分显示模块采用两个两位共阴七段数码管显示甲队乙队分数。段选口接p0口,p0口接一个1k的排阻,起上拉电平作用。位选口接p2,采用动态扫描。三、系统软件模块设计(1)c语言程序流程图中断函数按否初始化显示 开始修改计时时间nstart按否时间是否为0按键函数计时函数显示函数n复位函数报警函数n(2) 源程序代码:#include#include #define uint unsigned int#define uch

5、ar unsigned charuchar 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 disbuffer8=0;uchar minute=0,second=0;uchar ascore=0,bscore=0,temp=0;uchar flage1=0;uchar flage=0;uint count,z;sbit bizz=p17; /定义按键对应的端口sbit a

6、dd1=p10;sbit add2=p11;sbit minus1=p12;sbit bstop=p14;sbit start=p15;sbit stopagain=p16;sbit turn=p13;sbit timeadd1=p32;sbit timeadd10=p33;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; else if(second=0 &

7、minute!=0) second=59;minute-; else if(second!=0 ) second-; void delay( ) /显示延时函数uint x,y;for(x=10;x0;x-)for(y=10;y0;y-); void delay1( ) /延时消抖函数16msuint x,y;for(x=10;x0;x-)for(y=360;y0;y-);void display1()uchar i,j;uchar temp;disbuffer3=second%10;disbuffer2=second/10;disbuffer1=minute%10;disbuffer0=mi

8、nute/10;disbuffer5=ascore%10;disbuffer4=ascore/10;disbuffer7=bscore%10;disbuffer6=bscore/10;temp=0xfe; /采用动态扫描p2=temp;for(i=0;i8;i+)j=disbufferi;p0=table1j;delay();temp=_crol_(temp,1); /temp的最低位0左移,依次选通各个数码管p2=temp;void display() /显示函数uchar i,j;uchar temp;disbuffer3=second%10;disbuffer2=second/10;di

9、sbuffer1=minute%10;disbuffer0=minute/10;disbuffer5=ascore%10;disbuffer4=ascore/10;disbuffer7=bscore%10;disbuffer6=bscore/10;temp=0xfe;p2=temp;for(i=0;i8;i+)j=disbufferi;p0=tablej;delay();temp=_crol_(temp,1);p2=temp;void bizzer() /报警函数while(minute=0 & second=0) bizz=0;delay1(); display1();if(!bstop=1

10、)delay1();if(!bstop=1)while(!bstop=1);while(1)bizz=1;display(); void exinterrupt() interrupt 0/外部中断0,增加1分钟计时 delay1();if(!timeadd1)while(!timeadd1); minute+; void exinterrupt1() interrupt 2 /外部中断1,增加10分钟计时 delay1();if(!timeadd10)while(!timeadd10); minute+=10; void button()/按键控制函数if(!turn)delay1();if

11、(!turn)while(!turn);flage+=1; if(flage%2=0)if(!add1) /分数加1分delay1();if(!add1)while(!add1);ascore+=1; if(!add2) /分数加2分delay1();if(!add2)while(!add2);ascore+=2;if(!minus1) /减分delay1();if(!minus1)while(!minus1);ascore-=1;elseif(!add1)delay1();if(!add1)while(!add1);bscore+=1; if(!add2)delay1();if(!add2)

12、while(!add2);bscore+=2; if(!minus1)delay1();if(!minus1)while(!minus1);bscore-=1;if(!stopagain) /时间暂停delay1();if(!stopagain)while(!stopagain);flage1+=1;if(flage1%2=1)tr0=0; else tr0=1; if(!bstop=1) delay1();if(!bstop=1)while(!bstop=1);bizz=1; void main()while(1)display1();th0=(65536-50000)/256;tl0=(6

13、5536-50000)%256;tmod=0x01; /定时器t0,工作方式1,16位计时器ea=1; /开放所有中断et0=1; /允许定时/计数器t0中断ex0=1; /允许外部中断0请求 ex1=1; /允许外部中断1请求it0=1; /外部中断0下降沿触发it1=1; /外部中断1下降沿触发if(!start)delay1();if(!start)while(!start);tr0=1;while(minute!=0 | second!=0 )display1();button();bizzer(); 4、 设计的仿真(1)初始化显示(2) 比赛中显示5、 设计layout六、实物制作

14、(1)打印底层布线(2) 用图纸敷在感光板(10*15cm)下,放到实验室的曝光机下曝光320秒。(3) 将曝光好的感光板放至显影剂中显影,摇晃3分钟左右,电路连线出现。(4) 将显影后的感光板放至腐蚀液(三氯化铁溶液),刻蚀两小时左右后形成所要的电路板。 (5) 打孔,焊元器件(6) 完成实物7、 实物测试(1)初始化显示(2) 比赛中显示8、 课程设计体会: 这次单片机的期末设计我选择了第四个题目“单片机应用系统的仿真与实现”。做篮球足球比赛计时计分器是源于自己对这两种球类的热爱,所以有动力去完成这样一个设计。 在设计过程中懂得了从硬件模块和软件模块两个方面开始着手,并运用keil编写c语言生成编译文件和运用proteus7进行仿真。 在制作实物的工程中,阻碍非常大,由于经验不足,花了6个板子才成功。从中吸取了很多教训,如单

温馨提示

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

评论

0/150

提交评论