基于单片机的比赛计分系统.docx

上传人:b****9 文档编号:23364735 上传时间:2023-05-16 格式:DOCX 页数:18 大小:737.87KB
下载 相关 举报
基于单片机的比赛计分系统.docx_第1页
第1页 / 共18页
基于单片机的比赛计分系统.docx_第2页
第2页 / 共18页
基于单片机的比赛计分系统.docx_第3页
第3页 / 共18页
基于单片机的比赛计分系统.docx_第4页
第4页 / 共18页
基于单片机的比赛计分系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于单片机的比赛计分系统.docx

《基于单片机的比赛计分系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的比赛计分系统.docx(18页珍藏版)》请在冰豆网上搜索。

基于单片机的比赛计分系统.docx

基于单片机的比赛计分系统

沈阳航空航天大学

自动化专业技能训练

(课程设计报告)

 

题目基于单片机的比赛计分系统

(2)

 

班级

学号

学生姓名

指导教师

 

课设题目基于单片机的比赛计分系统

(2)

沈阳航空航天大学自动化学院

摘要:

现在大多数比赛活动中都会遇到需要向观众和选手展示选手得分的情况,需要用到比赛记分牌。

在目前的市场上,普通计分牌系统都需要几百块,价钱比较高。

本项目设计的记分牌系统,电路简易,灵敏可靠,具有一定的使用价值和竞争价值。

比赛计分器的设计是为了解决比赛时计分与计时准确方便和灵活适用的问题而提出的,本设计的比赛计分器硬件利用AT89S52单片机完成了计分的功能,并通过数码管来显示比赛双方的分数,软件部分利用KeilC51软件来进行编译,最后将生成的HEX文件烧入到单片机芯片中。

单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足需求。

关键词:

单片机、比赛计分、数码管。

1.总体方案

单片机是一个单芯片形态,面向控制对象的嵌入式应用计算机系统.它的出现及发展使计算机技术从通用型数值计算领域进入到智能化的控制领域。

由于本次设计的简单记分牌体积小,故要求其控制器体积更小以便能嵌入其结构之中。

可以适应不同规则下操作。

计分牌主要用途是展示选手的得分情况,当选手得分时记分牌加上相应的分数。

根据项目要求进行系统设计通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。

图1基于AT89S52单片机比赛记分牌体统框图

(1)单片机的时钟电路

单片机本身是一个复杂的同步时序系统,为保证同步工作方式的实现,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。

单片机的时钟电路由振荡电路和分频电路组成。

其中震荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。

而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。

图2单片机的时钟电路

(2)单片机复位电路工作原理

复位是单片机的初始化操作,其作用是使CPU中的各个部件都处于一个确定的初始状态,并从这个状态开始工作。

当单片机的ALE及两脚输出高电平,RST引脚高电平时,单片机复位。

单片机的复位电路有上电复位和手动按钮复位两种形式,RST/VPD端的高电平直接由上电瞬间产生高电平则为上电复位;若通过按钮产生高电平复位信号称为手动按钮复位。

在实际应用系统中,有些外围芯片也需要复位,如果这些复位端的复位电平要求与单片机的要求一致,则可以与之相连。

复位后,P0—P3四个并行接口全为高电平,其它寄存器全部清零,只有SBUF寄存器状态不确定。

目前,在单片机体统中共使用4种类型的复位电路,分别为:

积分型电路、微分型电路、比较器型和看门狗型。

其中前三种是在芯片外面用分立元件或集成电路芯片搭建的,而最后一种位于芯片内部,是单片机芯片的一部分。

对于片外复位电路,无论哪种类型,加电复位和手动复位是必不可少的基本功能。

目前,在单片机体统中共使用4种类型的复位电路,分别为:

积分型电路、微分型电路、比较器型和看门狗型。

其中前三种是在芯片外面用分立元件或集成电路芯片搭建的,而最后一种位于芯片内部,是单片机芯片的一部分。

对于片外复位电路,无论哪种类型,加电复位和手动复位是必不可少的基本功能。

如图3所示:

图3复位原理电路

(3)单片机晶振电路工作原理

每个单片机系统里都有晶振,全程是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。

晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。

高级的精度更高。

有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。

晶振的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。

如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。

下面具体的介绍一下晶振的作用以及原理,晶振一般采用如图4a的电容三端式(考毕兹)交流等效振荡电路;实际的晶振交流等效电路如图4b,其中Cv是用来调节振荡频率,一般用变容二极管加上不同的反偏电压来实现,这也是压控作用的机理;把晶体的等效电路代替晶体后如图4c。

其中Co,C1,L1,RR是晶体的等效电路。

图4晶振电路及其等效槽路

分析整个振荡槽路可知,利用Cv来改变频率是有限的:

决定振荡频率的整个槽路电容C=Cbe,Cce,Cv三个电容串联后和Co并联再和C1串联。

可以看出:

C1越小,Co越大,Cv变化时对整个槽路电容的作用就越小。

因而能“压控”的频率范围也越小。

实际上,由于C1很小(1E-15量级),Co不能忽略(1E-12量级,几PF)。

所以,Cv变大时,降低槽路频率的作用越来越小,Cv变小时,升高槽路频率的作用却越来越大。

这一方面引起压控特性的非线性,压控范围越大,非线性就越厉害;另一方面,分给振荡的反馈电压(Cbe上的电压)却越来越小,最后导致停振。

通过晶振的原理图你应该大致了解了晶振的作用以及工作过程了吧。

采用泛音次数越高的晶振,其等效电容C1就越小;因此频率的变化范围也就越小。

微控制器的时钟源可以分为两类:

基于机械谐振器件的时钟源,如晶振、陶瓷谐振槽路;RC(电阻、电容)振荡器。

一种是皮尔斯振荡器配置,适用于晶振和陶瓷谐振槽路。

另一种为简单的分立RC振荡器。

用万用表测量晶体振荡器是否工作的方法:

测量两个引脚电压是否是芯片工作电压的一半,比如工作电压是51单片机的+5V则是否是2.5V左右。

另外如果用镊子碰晶体另外一个脚,这个电压有明显变化,证明是起振了的。

(4)按键电路的设计

本次实验用了三个按键电路:

复位电路、加一电路和减一电路。

三个按键电路都是通过手动按下按键拉低电平来分别实现相应的复位及加减功能。

(5)数码管特性及使用

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

下图5分别为共阳极和共阴极数码管引脚图:

图5作为共阳极右为共阴极引脚结构

(6)AT89S52单片机引脚

功能特性:

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8位微控制器8K字节在系统可编程FLASHAT89S52P0口。

其引脚结构如图6

图6AT89S52引脚图

2.2.7集成块74LS06的使用

74LS06为集电极开路输出的六组反相驱动器,其结构如图7所示,其中1A~6A为输入端,1Y~6Y为输出端:

图774LS06引脚图

3.1电路原理图

根据上述分析,设计出基于AT89S52单片机的比赛计分牌电路原理图如图8所示。

电源电路为单片机以及其他模块提供标准5V电源。

晶振模块为单片机提供时钟标准,使系统各部分能协调工作。

复位电路为单片机提供复位功能。

单片机作为主控制器,根据输入信号对系统进行相应的控制。

数码管显示选手当前的得分。

按键设置模块用来刷新选手的得分,当选手得分时可以通过这两个按钮对选手分数重新设置。

图8比赛记分牌的原理图

4软件设计

4.1软件流程图

单片机开始运行时显示选手10分,数码管显示10,主程序循环调用显示选手得分,当遇到中断时,调用中断程序,如果是P1则显示数字加1,加1处理流程图如图7所示。

图7处理流程图

4.2源程序

基于AT89S52单片机的比赛记分牌设计程序如下:

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchari,num=0,zuo=0,you=0,zhong,flag=0;

ucharKey_Value;//读出的键值

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

*名称:

Delay_1ms()

*功能:

延时子程序,延时时间为1ms*x

*输入:

x(延时一毫秒的个数)

*输出:

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

voidDelay_1ms(uinti)//1ms延时

{

ucharx,j;

for(j=0;j

for(x=0;x<=148;x++);

}

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

*名称:

Keyscan()

*功能:

实现按键的读取。

下面这个子程序是按处理矩阵键盘的基本方法处理的。

*输入:

*输出:

按键值

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

ucharKeyscan(void)

{

uchari,j,temp,Buffer[4]={0xfe,0xfd,0xfb,0xf7};//让矩阵键盘的每行分别为低电平

for(j=0;j<4;j++)

{

P1=Buffer[j];

temp=0x10;

for(i=0;i<4;i++)

{

if(!

(P1&temp))//判断P1口高4位某一行为低电平

{

num=i+j*4;

if(num==0)

{

zuo++;

if(zuo>=9)

zuo=9;

}

if(num==1)

{

you++;

if(you>=9)

you=9;

}

if(num==3)

{

flag=1;

}

while(!

(P1&temp));

return(i+j*4);//返回键码

}

temp<<=1;

}

}

}

voiddisply()

{

//P0=0;

/*if(num==3)

{

zhong=zuo;

zuo=you;

you=zhong;

}

*/

P2=7;//选择哪一位数码管点亮

if(flag==0)

P0=table[zuo];//赋值段码给P0口

if(flag==1)

P0=table[you];//赋值段码给P0口

Delay_1ms

(2);//延时0.02秒

//P0=0;

P2=8;//选择哪一位数码管点亮

if(flag==0)

P0=table[you];//赋值段码给P0口

if(flag==1)

P0=table[zuo];//赋值段码给P0口

Delay_1ms

(2);//延时0.02秒

}

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

*名称:

Main()

*功能:

主函数

*输入:

*输出:

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

voidMain(void)

{

//P2=7;

while

(1)

{

P1=0xf0;

if(P1!

=0xf0)//判断有无按键按下

{

Delay_1ms(20);//按键消抖

if(P1!

=0xf0)//第二次判断有无按键按下

{

Delay_1ms(20);//按键消抖

if(P1!

=0xf0)//第三次判断有无按键按下

{

Key_Value=Keyscan();

}

}

}

disply();

//P0=table[Key_Value];//数码管赋值

}

}

5系统仿真与调试

应用系统设计完成后,就要进行硬件调试和软件调试。

5.1硬件调试

硬件的调试主要是把电路各种参数调整到符合设计要求。

先排除硬件故障,包括设计性错误和工艺性障碍。

一般原则是先静态后动态。

利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路障碍。

先要将单片机芯片取下,对电路板进行检查,通过观察看是否有异常,是否有虚焊的情况,然后用万用表测试各电源电压,若这些都没问题,则可上电调试。

5.2软件调试

调试方法:

通常一个程序应至少具备四种性能:

跟踪、断点、查看变量、更改数值。

本实验模块分明,可按模块分别调试,通过后再整体调试,正确无误后用在系统编程器将程序固化到AT89S52的FLASHROM中,接上电源脱机运行。

实物图:

5.结论及进一步设想

采用该系统可根据实际情况进行时间的准确显示和比分修改,具有低功耗、可靠性强、安全性高以及低成本等特点,主要不足之处在于计时显示部分有时会出现显示不稳定的情况,基本满足了本次设计。

通过这次比赛计分系统课程设计,还可以使用汇编语言进行描绘,通过两种不同的语言,达到相同的目的。

参考文献

1赵鑫,蒋亮,齐兆群等.数字电路设计.北京:

机械工业出版社,2005

2苏家健,曹柏荣,汪志锋.单片机原理及应用技术.北京:

高等教育出版社,2003

3李朝青.单片机原理及接口技术.北京:

北京航天航空大学出版色,2001

4胡汉才.单片机原理及其接口技术.北京:

清华大学出版社,2004.

5潭浩强.C语言程序设计.北京:

清华大学出版社.2005

6李华,李东.MCS51/98系列单片机原理与应用.北京:

机械工业出版社.1997

7谢自美等.电子线路设计、实验、测试.北京:

华中科技大学出版社.2007

 

附录1元件清单

元件名称

型号

数量

AT89S52

……

1

发光二极管

1

 

课设体会

这次课程设计让我收获很多,以前学的并不好,做的时候发现确实不容易,通过各种查找资料以及反复调试,还有同学和老师的帮忙才做出了一个比较理想的程序,当然程序并不是完美的,还需要改进的地方很多,但是我们时间有限,只能做到这了,在这里非常感谢那些帮我的老师和同学。

这个程序基本上已经把要求都实现了,我还是比较开心,感觉单片机确实挺有意思。

还好单片机是我们已经学过的内容,但是不怎么容易。

做完之后发现其实我们学习的东西太少,而且觉得自己这么多天的努力其实做出来的东西其实很简单,快毕业了,但是学无止境,我还是想多学点东西,不管在任何地方,任何时间。

 

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

当前位置:首页 > 总结汇报 > 实习总结

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

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