单片机篮球积分器_第1页
单片机篮球积分器_第2页
单片机篮球积分器_第3页
单片机篮球积分器_第4页
单片机篮球积分器_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南工程学院课 程 设 计课程名称课程名称 单片机原理与应用单片机原理与应用 课题名称课题名称 比赛计分器设计比赛计分器设计 专专 业业 自动化自动化 班班 级级 1001 班班 学学 号号 201001020121 姓姓 名名 刘朝露刘朝露 指导教师指导教师 王迎旭王迎旭 汪超汪超 李晓秀等李晓秀等 2013 年年 6 月月 7 日日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 比赛计分器设计 专业班级 自动化 1001 班 学生姓名 刘朝露 学 号 201001020121 指导老师 王迎旭 汪超 李晓秀等 审 批 李晓秀 任务书下达日期 2013 年 6 月

2、7 日任务完成日期 2013 年 6 月 21 日设设计计内内容容与与设设计计要要求求设计内容:设计内容:设计一个甲,乙两队用的比赛计分器,要求实现以下功能:1、给甲,乙两队分别设置 1 个加分按钮,按一下能分别实现加一分。2、给甲,乙两队分别设置 1 个减分按钮,按一下能分别实现减一分。3、设置一个清零按钮,按一下能实现清零4、设置预置分按钮。5、设置一个加减一分、两分和三分的切换按钮。6、比赛时间结束后蜂鸣器提醒。设计要求:设计要求:1、设计方案要合理、正确;2、系统硬件设计及焊接制作;3、系统软件设计及调试;4、系统联调;5、写出设计报告。主主 要要 设设 计计 条条 件件1、MCS-5

3、1 单片机实验操作台 1 台;2、PC 机及单片机调试软件;3、单片机应用系统板 1 套; 4、制作工具 1 套;5、系统设计所需的元器件。说 明 书 格 式1.封面2.课程设计任务书3.目录4.系统总体方案设计5.系统硬件设计6.软件设计(包括流程图)7.系统的安装调试说明8、 总结 9、参考文献10、附录(源程序清单及硬件原理图等) ;11、课程设计成绩评分表。进 度 安 排设计时间为两周设计时间为两周第一周星期一、上午:布置课题任务,讲课及课题介绍 下午:借阅有关资料,总体方案讨论星期二、确定总体设计方案星期三、硬件模块方案设计星期四、软件模块方案设计星期五、设计及调试第二周星期一、设计

4、及调试星期二、设计及调试星期三、总调星期四、写说明书星期五、上午:写说明书,整理资料下午:交设计资料,答辩参 考 文 献1、 微型计算机原理及应用许立梓编 机械工业出版社 20022、 微型计算机接口技术及应用刘乐善编 华中理工大学出版社 2000 3、 计算机硬件技术基础试验教程邹逢兴编 高等教育出版社 20004、 16 位微型计算机原理接口及其应用周佩玲编 中国科学技术大学出版社 2000 5、 微型计算机原理与接口技术吴秀清编 中国科学技术出版社 20016、 微型计算机接口技术邓亚平编 清华大学出版社 20017、 单片机原理及及应用王迎旭编 机械工业出版社 20018、 单片机应用

5、程序设计技术 周航慈 著 北京航空航天大学出版社 2002 目目 录录第一章第一章 系统的概述系统的概述111.1 系统的功能1 11.2 设计内容及要求1 11.2.1 设计内容1 11.2.2 设计要求1 11.3 按钮设置2 2第第 2 2 章章 总体方案设计总体方案设计2 22.1 总体系统框图3 32.2 系统组成5 5第第 3 3 章章 系统硬件设计系统硬件设计6 63.1 控制电路设计6 6 3.1.1 复位电路4 4 3.1.2 矩阵按钮电路4 43.2 数码管显示电路设计6第第 4 4 章章 软件设计软件设计110 04.1 主程序设计10104.2 各子程序设计1111 4

6、.2.1 延时子程序1111 4.2.2 初始化子程序1 12 2 4.2.3 交换按钮程序1 12 2 4.2.4 状态部分程序1 11 1 4.2.5 加减部分程序1 13 3仿真图仿真图16设计总结设计总结1 17 7参考文献参考文献1 18 8附录附录: :源程序清单源程序清单1 19 9电气信息学院课程设计评分表电气信息学院课程设计评分表3 37 71第第 1 1 章章 系统概述系统概述1.1 系统功能系统功能设计一个甲、乙两队比赛计分器,主要用于各种体育比赛记录分数。采用矩阵式键盘作为输入。基于以上思路,本次设计使用 80C51 实现一基于单片机的电子计分器的设计,其主要具有如下功

7、能:(1)用户可分别对两队比分进行加 1、加 2、加 3 和减 1,减 2,减 3 操作。(2)比分通过 6 个 8 段共阴极数码管显示器进行显示,每队比分显示三位,可以交换两队的比分。(4)具有复位功能,通过复位键实现。(5)预置分可通过加或减分按钮实现。 (6)比赛时间倒计时及其结束后蜂鸣器自动提醒。1.2 设计内容及要求设计内容及要求1.2.1 设计内容:设计内容:(1)给甲乙两队分别设置一个分数控制按钮,此按钮有 7 种状态,分别为+1、+2、+3、-1、-2、-3,+10(置数) 。(2)设置一个切换状态按钮,可以分别切换每一种状态,然后每一种状态会有相应的发光二极管点亮以区别是哪种

8、状态。(3)设置一个复位按钮,按下实现甲、乙队总分回到初试分及显示(4)设置一个交换分按钮,用于交换甲乙比分。1.2.2 设计要求:设计要求:方案合理、正确,系统稳定、可靠。软件设计要求尽可能精练、简短和运行可靠。硬件电路要求简单明了,以节约成本。21.3 按钮设置按钮设置本设计的宗旨是用最少的按键实现最多的功能。设计中一共用到了 5个按钮,分别为:清零按钮、甲的加分减分按钮,乙的加分减分按钮,切换状态按钮和交换比分按钮。每个按钮的功能如下:控制甲的按钮:实现+1、+2、+3、-1、-2、-3,+10(置数)功能;控制乙的按钮:实现+1、+2、+3、-1、-2、-3,+10(置数)功能;切换按

9、钮:实现甲乙的各种状态的切换;减缓比分按钮:交换甲乙的比分;清零按钮:实现甲乙比分清零;3第第 2 2 章章 总体方案设计总体方案设计2.1 总体系统框图总体系统框图此次设计 80C51 单片机为核心,配以一定的外围电路和软件,以实现比赛计分器的功能。利用 6 个 8 段共阴级数码管显示器.采用动态显示输出比分,用户信息输入则采用 44 矩阵式键盘,起状态切换用发光二极管的状态表示。用一片单片机可满足本设计的输入输出。系统设计方案的硬件电路设计框图如图 2-1 所示。4图 2-1 硬件电路设计2.2 系统组成系统组成系统由硬件部分和软件部分组成。硬件电路由复位按钮、80C51 单片机、矩阵键盘

10、和 7 个发光二极管,6 个数码管等组成。 软件部分主程序主要由系统初始化段、键盘识别、键值处理、8 段共阴极 LED 显示器扫描显示子程序组成。软件设计主要分为四个部分:信息输入、信息处理、显示输出。信息输入时采用矩阵式键盘来实现,所以需要检测键盘有无按键的子程序;信息处理需要对用户通过键盘输入的不同信息进行辨别并执行相应的处理;显示输出考虑到成本和电路体积,决定采用动态输出,从而达到设计的目的。 5 第第 3 3 章章 系统硬件设计系统硬件设计3.1 控制电路设计控制电路设计3.1.1 复位电路复位电路如图 3-1 所示,按钮与单片机的 RST 引脚相连,当每次按下该按钮后,系统将通过软件

11、实现对计分回到初始值功能。复位GNDX1CRYSTALC1C2XTAL218XTAL119ALE30PSEN29RST9U1VCCR1图 3-1 复位控制接口电路3.1.2 矩阵按钮电路矩阵按钮电路键盘的读取方式:行与列各有 4 条线档其中一个按键被按下后,它所在的行列线就导通了,所以如果一条线上是低电平,那么按键的另一条线也是低电平。先给第一行送一个低电平,读取列值,就可以判定第一行上是否有按键按下,如果有按键,那么列线里面就有一条线为低电平。如果都为高电平,说明第一行上没有按键被按下,接着给第二行送6低电平,重复上述步骤,就可以读取按键了。也可以用另外一种方法:先给行线全部写“0” ,然后

12、看列线是否有为低电平的,如果有说明那一列上有键被按下,让后要确定按键所在的行的,给所有列线写“0” ,读取行线的值就可以确定按键的具体位置了, 让后将两次读取的值,组成一个值 j 就得到了键值。图 3-2 矩阵键盘的接口电路3.2 数码管显示电路设计数码管显示电路设计 显示器采用 8 段共阴极数码管显示器,来实现显示器的动态扫描,八个二极管连接一个阴极的结构,只要另一段为高电平,二极管就会发光,从而形成一段。将八段顺序排列后就成为具有一定编码的共阴显示器了。动态扫描的频率有一定的要求,频率太低,LED 将出现闪烁现象。如频率太高,由于每个 LED 点亮的时间太短,LED 的亮度太低,肉眼无法看

13、清,所以一般均取几个 ms 左右为宜,这就要求在编写程序时,选通某一位 LED 使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。显示电路如图 4 所示。7共阴极数码管显示显示 小数点 G FEDCBA HE代码 0 00111111 3FH 1 00 00 011006H 2 0101 1 0 1 15BH 3 0 1 0011114FH 4 011 0 01 1066H 5 0110 1 1017DH 6 011 1 1 101 07H 7 00 000 111 7FH 8 01 1 11 1 116FH 9 0 110 11 1 140H 图 3-3 数码管显示电路 数码管显示采

14、用 8 个 8 段数码管显示器,来实现显示器的动态扫描8显示采用动态扫描显示方法,即由显示器扫描显示子程序控制显示器逐个循环从左至右依次点亮各个显示器。由单片机的 P0 口控制显示。9第第 4 4 章章 软件设计软件设计4.1 主程序设计主程序设计 主程序主要由系统初始化段、键盘识别、键值处理、6 个 8 段共阴极LED 显示器扫描显示子程序组成。通过对以上各段和子程序的结合,以实现系统功能。该系统主程序流程图如下图所示。图 4-1 系统主程序流程图10图 4-2 扫描刷新显示子程序流程图4.2 各子程序设计各子程序设计 4.2.1 延时子程序延时子程序void delay(uint z)ui

15、nt x,y;11for(x=z;x0;x-)for(y=110;y0;y-);此段程序是根据实验板各硬件的参数具体设置的。4.2.2 初始化子程序初始化子程序void init()cnt=0;num=0;wela=0;dula=0;temp=0;TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;初始化程序是用来对各定义的变量初始化的,每一次主程序执行之前都要先执行初始化程序以保证变量的值为初值。4.2.3 交换按钮程序交换按钮程序if(key4=0) /当交换键按下 delay(10); if(ke

16、y4=0)12 m=bai;bai=aa;aa=m; n=shi;shi=bb;bb=n;p=ge;ge=cc;cc=p; while(!key4); /去抖 delay(10); while(!key4);此程序就是当交换按键按下时,利用中间变量改变甲乙的每一位的数值,这样就能实现交换甲乙两队的比分,然后再给电路去抖动,就不会出现问题了。4.2.4 状态部分程序状态部分程序for(i=0;i4;i+)if(key3=0)if(key3=0) num+;if(num=7)num=0;delay(5);switch(num)13 case 0: cnt=-3;d7=0;d6=1;break;ca

17、se 1: cnt=10;d1=0;d7=1;break;case 2: cnt=1;d2=0;d1=1;break;case 3: cnt=2;d3=0;d2=1;break;case 4: cnt=3;d4=0;d3=1;break; case 5: cnt=-1;d5=0;d4=1;break;case 6: cnt=-2;d6=0;d5=1;break; while(!key3); delay(10);while(!key3);该程序是主函数里面的部分程序,当切换分按钮按下时利用 switch case 语句来实现甲乙各种状态之间的切换,并且同时控制了 7 个发光二极管的显示来表明当前

18、处于什么状态。切换到相应的状态时在执行显示扫描程序将实现切换功能。4.2.5 加减部分程序加减部分程序if(key1=0) /甲控制按钮按下 delay(10); /延时 if(key1=0) temp=temp+cnt; /实现加减运算 if(temp=256) temp=0; while(!key1); /去抖delay(10);while(!key1); bai=temp/100; /分离处百位14shi=temp%100/10;ge=temp%10;该程序是通过前段调用一个变量 cnt 来作为本次运算的加数,然后通过切换状态来做不同的运算。这样就免去了很多不必要的程序,直接调用实现,简

19、化了程序。15仿真图:仿真图:16设计总结设计总结这次课程设计虽然只有短短的两周时间,但我受益匪浅学会了很多东西。刚开始拿到课题时,觉得自己无处入手,但通过老师的讲解和查询资料,开始有自己的思路,整理出了总体方案,然后设计出硬件原理图,源程序等。 在这次课程设计中,我在整个设计过程中懂得了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力, 使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计做的不是很理想,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我受益良多。课程设计是结束了,不过

20、学习单片机知识的过程还没有终结,探索学习的奥妙,培养学习的兴趣,养成良好的学习习惯对我们来说才是最重要的。与此同时我感受到了老师对学生的那种悔人不卷的精神,每天的固定时间,老师都来给我们指导,使我们少走弯路,顺利完成实习任务,感谢汪老师一路以来对我们的关心与帮助。17参考文献参考文献1单片机原理与应用王迎旭编 机械工业出版社 251 系列单片机原理与接口技术实验指导周向红编 湖南工程学院 3微型计算机原理及应用许立梓编 机械工业出版社 20024微型计算机接口技术及应用刘乐善编 华中理工大学出版社 2000 5计算机硬件技术基础试验教程邹逢兴编 高等教育出版社 2000616 位微型计算机原理

21、接口及其应用周佩玲编 中国科技大学出版社 2000 7微型计算机原理与接口技术吴秀清编 中国科学技术出版社 20018微型计算机接口技术邓亚平编 清华大学出版社 20019单片机原理及及应用王迎旭编 机械工业出版社 200110单片机应用程序设计技术 周航慈 著 北京航空航天出版社 200211单片机实用技术问答 谢宜仁 主编 人民邮电出版社 200218附录附录 A:A:源程序清单源程序清单#include #define uchar unsigned char #define uint unsigned int #define TH_value 0 xb1#define TL_value

22、0 xe0/定时器工作于方式 1,每 20ms 产生一个中断sbit speak=P37;sbit ext=P32;sbit led=P34;/*BCD 码字*/uchar code bcd=0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0A,0 x0B,0 x0C,0 x0D,0 x0E,0 x0F;/*09 数字显示*/uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00;uchar munite;

23、/比赛剩余分位数uchar second; /比赛剩余秒位数uchar part;/当前比赛的节次uchar s24; /24 秒标志uchar red_mark;/红队得分19uchar blue_mark; /蓝队得分uchar key_move;/设置位移动uchar key_red_add;/红队得分增加 1uchar key_red_mul;/红队得分减少 1uchar key_blue_add;/蓝队得分增加 1uchar key_blue_mul;/蓝队得分减少 1uchar key_pause; /暂停uchar key_reset; /24 秒复位及进入下一节复位uchar

24、time_tick1,time_tick2;uchar station;/状态标志位uchar flag;/跳亮标志位uchar talk1,talk2,num,num1; /报警信号标志/*函数声明*/void init();void init_timer();void init_extra();uchar key_scan();void scanf(uchar p,uchar tw,uchar m,uchar s,uchar r,uchar b);void scanf1(uchar p,uchar r,uchar b);void scanf2(uchar tw,uchar r,uchar

25、b);void scanf3(uchar m,uchar r,uchar b);void scanf4(uchar s,uchar r,uchar b);void play24();void playstop1();void playstop2();/*延时程序,t=1 时,延时 1ms*/void delay(uchar t)20int i,j;for(j=0;jt;j+) for(i=0;i=4)talk2=1;/终场报警操作TR0=0;/关闭定时器中断 0TR1=1;21elsetalk2=1;/小节结束报警TR1=1;TR0=0;elsemunite-;second=59;elsese

26、cond-;if(s24=0)/24 秒计数TR0=0;elseif(s242)talk2=1;TR1=1;TR0=0;key_pause=0;22else if(s248)talk1=1;TR1=1;s24-;/6 秒提醒if(second=0&munite=0) /操作进入下一节比赛if(key_reset=1)s24=0 x18;part+;key_reset=0;if(part=10)talk2=1;/比赛太久,报警if(part5)/判断是否为加时赛,不是,延长 12 分钟if(key_red_add=1)/红队得分操作加key_red_add=0;if(red_mark0)

27、red_mark-;if(key_blue_add=1)/蓝队得分操作加key_blue_add=0;if(blue_mark0)blue_mark-;if(station=1)/比赛节次操作TR1=1;flag=0;while(station=1)if(flag=0)scanf1(part,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark);if(key_red_add=1)/比赛节次操作加24key_red_add=0;if(part1)part-;if(station!=1)TR1=

28、0;flag=0;TR1=1;flag=0;while(station=3)if(flag=0)scanf3(munite,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark);if(key_red_add=1)/分操作加,MAX=6025key_red_add=0;if(munite0)munite-;if(station!=3)TR1=0;flag=0;if(station=4)/计时秒操作TR1=1;flag=0;while(station=4)if(flag=0)scanf4(sec

29、ond,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark);if(key_red_add=1)/秒操作加,26MAX=60key_red_add=0;if(second0)second-;if(station!=4)TR1=0;flag=0;/*初始化*/void init()munite=0 x01;second=0 x00;red_mark=0 x00;blue_mark=0 x00;27part=0 x01;s24=0 x18;station=0 x00;key_pause=0;ke

30、y_move=0 x00;key_red_add=0 x00;key_red_mul=0 x00;key_blue_add=0 x00;key_blue_mul=0 x00;key_reset=0 x00;flag=0 x00;/*定时器 0 初始化*/void init_timer()TMOD=0 x11;TH0=TH_value;TL0=TL_value;TH1=TH_value;TL1=TL_value;ET0=1;ET1=1;time_tick1=0;time_tick2=0;/*外部中断源初始化*/void init_extra()28EX0=1;EX1=1;IT0=1;IT1=1;

31、EA=1;/*定时器 0*/void timer0()interrupt 1time_tick1+;TH0=TH_value;TL0=TL_value;/*定时器 1*/void timer1()interrupt 3EA=0;TH1=TH_value;TL1=TL_value;time_tick2+;if(time_tick2=50)led=led;time_tick2=0 x00;if(flag=0)flag=1;/跳亮标志位elseflag=0;29if(talk1=1)EA=0;TH1=0 xFD;TL1=0 xF7;EA=1;speak=speak;num+;if(num=200)n

32、um=0;talk1=0;TR1=0;if(talk2=1)EA=0;TH1=0 xFD;TL1=0 xF7;EA=1;speak=speak;num+;if(num=200)num1+;num=0;30if(num1=4)num1=0;talk2=0;TR1=0;EA=1;/*外部中断 0*/void extra0()interrupt 0if(key_pause=1)key_pause=0;TR0=0;elseif(s24=0);elsekey_pause=1;TR0=1;31/*外部中断 1*/void extra1()interrupt 2uchar dtemp;dtemp=key_s

33、can();switch(dtemp)case 0 xFE:key_move=1;break;case 0 xFD:key_reset=1;break;case 0 xF7:key_red_add=1;break;case 0 xDF:key_red_mul=1;break;case 0 xEF:key_blue_add=1;break;case 0 xBF:key_blue_mul=1;break;default:break;if(key_move=1)station+;if(station=5)station=0;key_move=0;/*键盘扫描*/uchar key_scan()uchar temp;P1=0 xFF;32temp=P1;delay(3);if(temp=P1)return temp;/*数码管驱动*/void scanf2(uchar tw,uchar r,uchar b)P2=bcd

温馨提示

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

评论

0/150

提交评论