篮球记分器的设计说明Word文件下载.docx

上传人:b****5 文档编号:19846357 上传时间:2023-01-10 格式:DOCX 页数:23 大小:539.97KB
下载 相关 举报
篮球记分器的设计说明Word文件下载.docx_第1页
第1页 / 共23页
篮球记分器的设计说明Word文件下载.docx_第2页
第2页 / 共23页
篮球记分器的设计说明Word文件下载.docx_第3页
第3页 / 共23页
篮球记分器的设计说明Word文件下载.docx_第4页
第4页 / 共23页
篮球记分器的设计说明Word文件下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

篮球记分器的设计说明Word文件下载.docx

《篮球记分器的设计说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《篮球记分器的设计说明Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。

篮球记分器的设计说明Word文件下载.docx

6.其他功能。

3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:

1)设计说明书符合要求;

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.设计成果形式及要求:

设计说明书及相关电路图

6.工作计划及进度:

12月28日~12月31日:

查阅资料;

1月1日~1月5日:

方案设计、实验验证;

1月6日~1月7日:

完成课程设计说明书;

1月8日:

答辩。

系主任审查意见:

签字:

年月日

1概述

1.1设计意义

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械了。

因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

通过此次基于单片机设计的篮球计时计分系统,我们可以更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧来讲述单片机编程,并对AT89S51单片机的结构和原理进行讲述,以及基于单片机开发应用的相关芯片的工作原理,和相关外围电路的设计和调试过程进一步了解,有助于今后的工作和学习生活。

本次设计用由AT89S51编程控制LCD作显示的球赛计时计分系统。

该系统具有赛程时间暂停,及时刷新甲、乙双方的成绩等功能。

它具有价格低廉,性能稳定,操作方便并且易于携带等特点。

广泛适合各类学校或者小型团体作为赛程计时计分。

1.2系统的主要功能

本系统有三项主要主要功能:

2硬件方案设计及描述

2.1方案选择及设计思想

通过分析之后我们觉得此次设计主要是两大模块,一是系统显示模块,二是单片机设计模块,在显示模块的设计中,开始想到了常用的LED显示,但是考虑的后续硬件实现的复杂性(超过10以上的LED实物连接将十分复杂),于是选取了方便但是没有接触过的LCD显示,因此也导致了一定程度的难度,在选取单片机方面,我们选取了课堂上讲授的51单片机,对于简单的输入和输出控制,51机显然最合适,51单片机是8位的,采用总线结构,但是具有变成控制简便,接口简单,工作可靠,价格经济,能耗少,容易实现系统小型化等特点。

因为篮球计分系统电路结构比较简单,只有按键控制和数码显示两个部分,P0口接12个开关,分别作为比分的加一,加二,加三,减一,设置节次,暂停,交换场地的按键控制。

P2口和P3口控制LCD的比分及时间显示。

该系统包括AT89S51,时钟及复位电路,按键电路,及LCD显示器。

该电路控制简单,清晰明了,用LCD液晶显示,避免了用LED的复杂接线,便于实体硬件电路的焊接。

2.2原理框图

1602aLCD

图1.1原理图

2.3工作原理

LCD显示器

该显示器的RS,RW,E端与P2相连,引脚的作用分别是:

RS=0输入指令,RS=1输入数据,RW=0向LCD写入指令或数据,RW=1从LCD读取信息,E是使能信号。

D0~D7与P3相连是数据总线。

时钟电路

时钟电路在单片机系统中起着非常重要的作用,是为保证系统正常工作的基础,在一个单片机系统中,时钟是保障系统正常工作的基准震荡定时信号,主要有晶振和外围电路组成,晶振频率大小决定单片机的快慢,我们这里采用的是12MHZ,另外有2个30P的电容。

复位电路

单片机系统的复位电路我们采用的是上电加按钮的复位电路形式,电阻采用220欧的阻值,采用22μ的电容。

按键电路

本设计共有12个设置按键,分别为+1,+2,+3,-1,暂停,设置节次按键和交换场次按键。

2.4电路图

3软件设计流程及描述

3.1系统模块层次结构图

3.2程序流程图

N

Y

3.3源程序代码

#include<

reg51.h>

#include"

intrins.h"

//_nop_();

延时函数用

#defineucharunsignedchar

#defineuintunsignedint

#defineLcd_PortP3//定义数据端口

#defineKEY_IOP0//键盘接口

sbitRS=P2^1;

//定义和LCM的连接端口

sbitRW=P2^2;

sbitE=P2^5;

sbitBusy=P3^7;

sbitspeaker=P1^0;

uchardatakeytemp,key;

ucharL=0;

uchark=0;

ucharc=0;

ucharb=0;

ucharj=0;

uchare=1;

uchard=0;

ucharhour=24;

ucharhour1=0;

ucharmin=11;

ucharsec=59;

//赋初值

uchardataflag=0x00;

bitflag_key=0;

ucharcodeLcddata[]={"

0123456789:

"

};

//ucharcodeLcddata[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/******************************************************************************************

*函数名称:

Timer0Init

*功能描述:

定时器0初始化

******************************************************************************************/

voidTimer0Init(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

T050mS中断程序

voidIsrTimer0(void)interrupt1using1//T050mS中断程序

staticucharcount=0;

TH0=0x3c;

count++;

if(count==20)//定时1s时间到

count=0;

sec--;

if(sec==0)//1分钟时间到

{

if(min==0)//1小时时间到

min=0;

EA=0;

speaker=~speaker;

}

else

sec=59;

min--;

}

voidIsrTimer1(void)interrupt3using3//T150mS中断程序

{uchari=0,m=0,a=0;

staticucharta20ms=0;

TH1=-10300/256;

ta20ms++;

if(ta20ms==1)//定时1s时间到

ta20ms=0;

hour1--;

if(hour1==-1)//1分钟时间到

hour--;

hour1=99;

if(hour==0)

{

hour=24;

hour1=0;

k=1;

//EA=0;

L=1;

while(a<

=2){

while(m<

=225){for(i=0;

i<

=225;

i++)

a++;

m++;

}}

speaker=1;

Delay

延时子程序,延时(1MS*t)S

voidDelay(uchart)

uchara;

while(t--!

=0)

for(a=0;

a<

125;

a++);

Read_Busy

读忙信号判断

voidRead_Busy(void)

uchari=50;

Lcd_Port=0xff;

RS=0;

RW=1;

E=1;

while((i--)&

&

Busy);

E=0;

Write_Comm

写指令函数ok

voidWrite_Comm(ucharlcdcomm)

{

Read_Busy();

RS=0;

RW=0;

E=1;

Lcd_Port=lcdcomm;

E=0;

Write_Char

写字符函数ok

voidWrite_Char(uintnum)//写字符函数

Read_Busy();

RS=1;

Lcd_Port=Lcddata[num];

Write_Data

写数据函数ok

voidWrite_Data(ucharlcddata)

Lcd_Port=lcddata;

Init_LCD

初始化LCD

voidInit_LCD(void)

//Delay(400);

//稍微延时,等待LCM进入工作状态

Write_Comm(0x38);

//8位2行5*8

Write_Comm(0x0c);

//显示开/关,光标开闪烁开

Write_Comm(0x01);

//清显示

Write_Comm(0x06);

//文字不动,光标右移

Write_Comm(0x02);

//光标归位

Show_Time

LCD上显示当前时间

voidShow_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);

Write_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);

//***************按键扫描函数/*************

voidkeyscan()

uchari,t=0xef,temp=0;

//11101111

KEY_IO=0x0f;

keytemp=(~KEY_IO)&

0x0e;

if(keytemp!

=0)//00000000;

00001000;

00000100;

00000010;

00000001;

Delay(20);

for(i=0;

4;

KEY_IO=t;

keytemp=(~KEY_IO)&

if(keytemp!

=0&

flag_key==0)

flag_key=1;

switch(keytemp)

case0x08:

key=0*3+i;

break;

case0x04:

key=1*4+i;

case0x02:

key=2*4+i;

default:

switch(key)

case0:

{c++;

j=1;

if(c>

=99){Write_Comm(0x84);

Write_Data('

1'

);

d=0;

}b=0;

}break;

case1:

c++;

case2:

}j=1;

b=0;

case4:

{d++;

if(d>

=99){Write_Comm(0x80+0x44);

c=0;

b=1;

j=0;

case5:

d++;

}b=1;

case6:

case8:

{if(b==1){d--;

if(d==0)d=0;

if(j==1)c--;

case9:

if(k==1)hour=24;

EA=~EA;

speaker=1;

L=0;

k=0;

case10:

e++;

if(e==5)e=1;

Write_Comm(0x80+0x0d);

Write_Char(e%10);

break;

case3:

{Write_Comm(0x80);

Write_Data('

C'

B'

A'

:

'

Write_Comm(0x80+0x0d);

Write_Char(e%10);

S'

t'

Write_Comm(0x80+0x40);

N'

temp=c;

c=d;

d=temp;

}break;

case7:

t=(t<

<

1)|0x01;

elseflag_key=0;

main

主函数

voidmain(void)

Init_LCD();

//初始化LCM

Timer0Init();

//初始化定时器

Write_Comm(0x80);

Write_Data('

Write_Da

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1