《篮球记分器的设计.doc》由会员分享,可在线阅读,更多相关《篮球记分器的设计.doc(24页珍藏版)》请在三一办公上搜索。
1、中北大学课程设计任务书学生姓名: 学 号: 学 院: 信息与通信工程学院 专 业: 电子信息工程 题 目: 专业综合实践之单片机系统部分: 篮球计分器设计 指导教师: 王伟 职称: 副教授 2015 年 12 月28日中北大学课程设计任务书 2015/2016 学年第 一 学期学 院: 信息与通信工程学院 专 业: 电子信息工程 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 题 目: 专业综合实践之单片机系统部分: 篮球计分器设计 起 迄 日 期: 12 月 28 日 1 月 8 日 课程设计地点: 中北大学 指 导 教 师: 王伟 张敏娟 系 主 任:
2、王浩全 下达任务书日期: 2015 年 12月 28日课 程 设 计 任 务 书1设计目的:在学习专业基础课和专业课的基础上,主要在电子仪器、微机综合设计与实践、单片机与A/D和D/A和光、计、电综合应用等几个方面开展实践活动,巩固所学知识、培养动手能力。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):1. 设计一款能够显示篮球比分的记分牌。2. 通过加分按钮可以给A队,或B队加分。3. 设计对调功能,更换场地后,AB队分数互换。4增加局数比分功能。5增加比赛时间倒计时功能。6其他功能。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:1) 设计说明书
3、符合要求;2) 相应器件的工作原理及应用;3) 系统工作原理图;4) 参考文献原文不少于3篇。 课 程 设 计 任 务 书4主要参考文献: 1 万文略编著. 单片机原理及应用M. 重庆:重庆大学出版社,2004. 2 孙德文编著. 微型计算机技术M. 北京:高等教育出版社,2005. 3 张建勋编著. C语言程序设计教程M. 北京:清华大学出版社,2008. 4 于海生编著. 计算机控制技术M. 北京:机械工业出版社,2007. 5 唐俊翟编著. 单片机原理及应用M.北京:冶金工业出版社,2003. 6 彭为编著. 单片机典型系统应用设计实例精讲M.北京:电子工业出版社, 2006.5设计成果
4、形式及要求:设计说明书及相关电路图6工作计划及进度:12月 28 日 12 月 31 日:查阅资料; 1 月 1 日 1 月 5 日:方案设计、实验验证;1 月 6 日 1 月 7 日:完成课程设计说明书; 1 月 8 日:答辩。系主任审查意见: 签字: 年 月 日目 录1 概述12 硬件方案设计及描述13 软件设计流程及描述44 运行结果145 总结16参考文献18附录191 概述 1.1 设计意义目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能I
5、C卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。通过此次基于单片机设计的篮球计时计分系统,我们可以更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧来讲述单片机编程,并对AT89S51单片机的结构和原理进行讲述,以及基于单片机开发应用的相关芯片的工作原理,和相关外围电路的设计和调试过程进一步了解,有助于今后的工作和学习生活。 本次设计用由AT89S51编程控制LCD作显示的球赛计时计分
6、系统。该系统具有赛程时间暂停,及时刷新甲、乙双方的成绩等功能。它具有价格低廉,性能稳定,操作方便并且易于携带等特点。广泛适合各类学校或者小型团体作为赛程计时计分。1.2 系统的主要功能 本系统有三项主要主要功能:1. 设计一款能够显示篮球比分的记分牌。2. 通过加分按钮可以给A队,或B队加分。3. 设计对调功能,更换场地后,AB队分数互换。4增加局数比分功能。5增加比赛时间倒计时功能。2 硬件方案设计及描述 2.1 方案选择及设计思想通过分析之后我们觉得此次设计主要是两大模块,一是系统显示模块,二是单片机设计模块,在显示模块的设计中,开始想到了常用的LED显示,但是考虑的后续硬件实现的复杂性(
7、超过10以上的LED实物连接将十分复杂),于是选取了方便但是没有接触过的LCD显示,因此也导致了一定程度的难度,在选取单片机方面,我们选取了课堂上讲授的51单片机,对于简单的输入和输出控制,51机显然最合适,51单片机是8位的,采用总线结构,但是具有变成控制简便,接口简单,工作可靠,价格经济,能耗少,容易实现系统小型化等特点。因为篮球计分系统电路结构比较简单,只有按键控制和数码显示两个部分,P0口接12个开关,分别作为比分的加一,加二,加三,减一,设置节次,暂停,交换场地的按键控制。P2口和P3口控制LCD的比分及时间显示。该系统包括AT89S51,时钟及复位电路,按键电路,及LCD显示器。该
8、电路控制简单,清晰明了,用LCD液 晶显示,避免了用LED的复杂接线,便于实体硬件电路的焊接。2.2 原理框图 1602a LCD按键电路AT89S51LCD显示器 复位电路 时钟电路图1.1 原理图2.3 工作原理 LCD显示器该显示器的RS,RW,E端与P2相连,引脚的作用分别是:RS=0输入指令,RS=1输入数据,RW=0向LCD写入指令或数据,RW=1从LCD读取信息,E是使能信号。D0D7与P3相连是数据总线。 时钟电路时钟电路在单片机系统中起着非常重要的作用,是为保证系统正常工作的基础,在一个单片机系统中,时钟是保障系统正常工作的基准震荡定时信号,主要有晶振和外围电路组成,晶振频率
9、大小决定单片机的快慢,我们这里采用的是12MHZ,另外有2个30P的电容。 复位电路单片机系统的复位电路我们采用的是上电加按钮的复位电路形式,电阻采用220欧的阻值,采用22的电容。按键电路本设计共有12个设置按键,分别为+1,+2,+3,-1,暂停,设置节次按键和交换场次按键。2.4 电路图3 软件设计流程及描述 3.1 系统模块层次结构图主函数定时器初始化函数化函数写指令函数写字符函数LCD初始化函数写数据函数按键扫描函数延时函数显示时间函数读忙信号判断函数3.2 程序流程图开始定时器0,LCD初始化显示当前时间读取P0口的值是否有按键按下NY哪个按键按下加一交换场次节次暂停减一加三加二待
10、按键释放将时间,分数,节次经P2,P3口输出显示3.3 源程序代码#include #include intrins.h /_nop_();延时函数用#define uchar unsigned char#define uint unsigned int #define Lcd_Port P3 /定义数据端口#define KEY_IO P0 /键盘接口 sbit RS = P21; /定义和LCM的连接端口sbit RW = P22;sbit E = P25;sbit Busy = P37;sbit speaker=P10;uchar data keytemp,key;uchar L=0;u
11、char k=0;uchar c = 0;uchar b=0;uchar j=0;uchar e=1;uchar d = 0;uchar hour =24;uchar hour1=0;uchar min = 11;uchar sec = 59; /赋初值uchar data flag=0x00;bit flag_key=0; uchar code Lcddata = 0123456789:;/uchar code Lcddata12=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 函数名称 :Timer0Init*
12、功能描述 :定时器0初始化 */void Timer0Init(void) TMOD=0x11;TH0 = 0x3c;TL0 = 0xb0;TH1=-10300/256;TL1=-10300%256; /25MS定时初值(T1计时用)ET0=1;ET1=1;TR0=1;TR1=1;EA=1;/* 函数名称 :IsrTimer0* 功能描述 :T0 50mS中断程序 */void IsrTimer0(void) interrupt 1 using 1 /T0 50mS中断程序static uchar count = 0; TH0 = 0x3c;TL0 = 0xb0;count+;if(count
13、 =20) /定时1s时间到 count = 0; sec-; if(sec = 0) /1分钟时间到 if(min = 0) /1小时时间到 min = 0; EA=0; speaker=speaker; else sec = 59;min-; void IsrTimer1(void) interrupt 3 using 3/T1 50mS中断程序uchar i=0,m=0,a=0;static uchar ta20ms= 0; TH1=-10300/256;TL1=-10300%256;ta20ms+;if(ta20ms= 1 ) /定时1s时间到 ta20ms=0; hour1-; if
14、(hour1 =-1) /1分钟时间到 hour-;hour1 =99; if(hour=0) hour=24;hour1=0; k=1; /EA=0; L=1; speaker=speaker; while(a=2) while(m=225)for(i=0;i=225;i+) a+;m+; speaker=1; /* 函数名称 :Delay* 功能描述 :延时子程序,延时 (1MS*t) S */void Delay(uchar t)uchar a;while(t- != 0) for(a = 0; a 125; a+);/* 函数名称 :Read_Busy* 功能描述 :读忙信号判断 */
15、void Read_Busy(void)uchar i=50; Lcd_Port=0xff; RS = 0; RW = 1; E = 1;while(i-)&Busy);E=0;/* 函数名称 :Write_Comm* 功能描述 :写指令函数 ok*/void Write_Comm(uchar lcdcomm) Read_Busy();RS = 0;RW = 0;E = 1;Lcd_Port=lcdcomm;E = 0;/* 函数名称 :Write_Char* 功能描述 :写字符函数 ok*/void Write_Char(uint num)/写字符函数 Read_Busy();RS = 1;
16、RW = 0;E = 1;Lcd_Port = Lcddatanum;E = 0;/* 函数名称 :Write_Data* 功能描述 :写数据函数 ok*/void Write_Data(uchar lcddata) Read_Busy();RS = 1;RW = 0;E = 1;Lcd_Port = lcddata;E = 0;/* 函数名称 :Init_LCD* 功能描述 :初始化LCD*/void Init_LCD(void)/Delay(400); /稍微延时,等待LCM进入工作状态Write_Comm(0x38); /8位2行5*8Write_Comm(0x0c); /显示开/关,光
17、标开闪烁开Write_Comm(0x01); /清显示Write_Comm(0x06); /文字不动,光标右移Write_Comm(0x02); /光标归位/* 函数名称 :Show_Time* 功能描述 :LCD上显示当前时间*/void Show_Time(void)Write_Comm(0x80+0x08); /显示首地址Write_Char( hour / 10 );/显示小时Write_Char( hour % 10 ); Write_Char( 10 ); /显示: Write_Char( hour1 / 10 );/显示小时Write_Char( hour1 % 10 ); Wr
18、ite_Comm(0x80+0x4b);Write_Char( min / 10 ); /显示分钟Write_Char( min % 10 );Write_Char( 10 ); /显示:Write_Char( sec / 10 ); /显示秒Write_Char( sec % 10 ); Write_Comm(0x80+0x45); Write_Char( c / 10 ); Write_Char( c % 10 );Write_Comm(0x85);Write_Char(d / 10 ); Write_Char(d % 10 ); /*按键扫描函数/*void keyscan()uchar
19、 i,t=0xef,temp=0; /1110 1111 KEY_IO=0x0f;keytemp=(KEY_IO)&0x0e;if(keytemp!=0) /0000 0000 ;0000 1000; 0000 0100; 0000 0010; 0000 0001;Delay(20);for(i=0;i=99) Write_Comm(0x84);Write_Data(1);d=0;b=0;break; case 1:c+;c+; j=1;if(c=99) Write_Comm(0x84);Write_Data(1);d=0;b=0;break; case 2:c+;c+;c+;if(c=99)
20、 Write_Comm(0x84);Write_Data(1);d=0; j=1;b=0;break; case 4:d+;if(d=99) Write_Comm(0x80+0x44);Write_Data(1);c=0;b=1;j=0;break; case 5:d+;d+;if(d=99) Write_Comm(0x80+0x44);Write_Data(1);c=0;b=1;j=0;break; case 6:d+;d+;d+;if(d=99) Write_Comm(0x80+0x44);Write_Data(1);c=0;b=1;j=0;break; case 8:if(b=1)d-;
21、if (d=0) d=0;if(j=1) c-;break; case 9:if (k=1)hour=24;EA=EA;speaker=1;L=0;k=0;break; case 10: e+;if (e=5)e=1;Write_Comm(0x80+0x0d);Write_Char(e%10); break; case 3:Write_Comm(0x80); Write_Data(C);Write_Data(B);Write_Data(A);Write_Data(:);Write_Comm(0x80+0x0d);Write_Char(e%10);Write_Data(S);Write_Data
22、(t);Write_Comm(0x80+0x40);Write_Data(N);Write_Data(B);Write_Data(A);Write_Data(:);temp=c;c=d;d=temp;break; case 7:Write_Comm(0x80); Write_Data(N);Write_Data(B);Write_Data(A);Write_Data(:);Write_Comm(0x80+0x0d);Write_Char(e%10);Write_Data(S);Write_Data(t);Write_Comm(0x80+0x40);Write_Data(C);Write_Dat
23、a(B);Write_Data(A);Write_Data(:);temp=c;c=d;d=temp;break; default:break; t=(t1)|0x01; else flag_key=0;/* 函数名称 :main* 功能描述 :主函数*/void main(void)Init_LCD(); /初始化 LCMTimer0Init(); /初始化定时器Write_Comm(0x80); Write_Data(N);Write_Data(B);Write_Data(A);Write_Data(:);Write_Comm(0x80+0x0d);Write_Char(e%10);Wri
24、te_Data(S);Write_Data(t);Write_Comm(0x80+0x40);Write_Data(C);Write_Data(B);Write_Data(A);Write_Data(:);while(1) Show_Time(); /显示时间 keyscan();4 运行结果 图2.1 比赛倒计时24s灯亮图2.2 显示比分、本场比分时间图图2.3 交换场地图5 总结参考文献1 万文略编著. 单片机原理及应用M. 重庆:重庆大学出版社,2004.2 孙德文编著. 微型计算机技术M. 北京:高等教育出版社,2005.3 张建勋编著. C语言程序设计教程M. 北京:清华大学出版社,2008.4 于海生编著. 计算机控制技术M. 北京:机械工业出版社,2007.5 唐俊翟编著. 单片机原理及应用M.北京:冶金工业出版社,2003.6 彭为编著. 单片机典型系统应用设计实例精讲M.北京:电子工业出版社, 2006.附件