课程设计--基于单片机的拔河游戏机设计1
××大学××学院××课程设计
基于单片机的 拔河游戏机设计
学生姓名 学 号 所 在 系 专业名称 班 级 指导教师 成 绩
××大学××学院 二○一二年六月
摘要:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机
的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
而51系列单片机是各单片机中最为典型和最有代表性的一种,通过本次课程设计进一步对单片机学习和应用,从而更熟悉单片机的原理和相关设计并提高了开发软、硬件的能力。
关键词:单片机 ,80C51,多谢振荡电路, 集成电路,游戏机
Abstract :With the computer in the social sphere in recent years, the
penetration and the development of large scale integratedcircuit, microcontroller applications are constantly deepening, because of its powerful function, small size, low power consumption, cheap, reliable, easy to use and so on Therefore particularly suited to and control of the system, more and more widely used in automatic control, intelligent instruments, gauges, data acquisition, military products and household appliances and other fields, SCM is often used as a core component in According to the specific hardware architecture, and application-specific software features object combine to make perfect.
The 51 series is the most typical of the microcontroller and the most representative one, through this course designed tofurther study and application of microcontrollers, which are more familiar with the principles of SCM and related design and development of improved software and hardware capabilities.
Keywords:
playstation
digital clock, 80C51 ,oscillatingcircuit , integratedcircuit ,
目 录
前言 . ............................................................................................................................................... 4 1. 设计目的 .......................................................................................................................... 1 2. 设计思路 .......................................................................................................................... 1 3. 设计过程 .......................................................................................................................... 1
3.1方案论证 ........................................................................................................................ 2 3.2电路设计 ........................................................................................................................ 2
4.电路仿真与结果分析................................................................................................... 4
4.1电路仿真 ........................................................................................................................ 4 4.2结果分析 ........................................................................................................................ 5
5.主要仪器与设备 ............................................................................................................. 5 6.设计总结 ............................................................................................................................. 5 7.参考文献 ............................................................................................................................. 6 附件:拔河游戏机程序 . ....................................................................................................... 8
前言
随着现代科技的不断发展,人们的生产生活水平也在不断提高。日常娱乐生活中, 娱乐产品非常流行。单片机具有功能强、可靠性高、使用方便、体积小及重量轻等优点。国外已广泛应用于自动化控制的各个领域。近年来, 国内的单片机技术与产品开发应用方面的发展也很快, 各种电子产品已越来越多地采用单片机控制系统且性价比高。本文从实用的角度以AT89C2051单片机为核心设计了一种拔河游戏机。实践证明, 该游戏机运行状况稳定、可靠, 满足了娱乐的要求。与此同时,拔河游戏机还是一种综合性、趣味性的试验,它结构简单,易安装与调试,使生产或者自行制作的最佳选择。
1. 设计目的
第一点:熟悉巩固和加深所学电子技术课程的基本知识,提高综合运用所学知识的能力。
第二点:培养学生根据课题需要选用参考书、查阅手册、图表和文献资料的能力,提高学生独立解决工程实际问题的能力。
第三点:通过设计方案的分析比较、设计计算、元件选择及电路安装调试等环节,初步掌握单实用电路的工程设计方法。
第四点:提高学生的动手能力,掌握常用仪器设备的正确使用方法,学会对简单实用电路的实验调试和对整机指标的测试方法。
第五点:了解与课题有关的电路以及元器件的工程技术规范,能按课程设计任务书的要求编写设计说明书,能正确反映设计和实验成果,能正确绘制电路图等。
2. 设计思路
15个二极管排成一条直线,两边各装一个按键,每按一次按键,就会产生一个有效低电平,哪边按一次,发光二极管就向哪边移一位。
安装一个复位开关,第一次按是让发光二极管回到中点,再按一下后,蜂鸣器发出响声,两边选手就可以拔河了。
当发光二极管移到终端时,两边选手按键无效,数码管就会记录一下对应的盘数。再按复位键,以进行下次的拔河。
再用一个清零键,用于让记录盘数的数码管清零,同时发光二极管也回到中点。
3. 设计过程
我的电路分为五个部分,数码管,蜂鸣器,清零部分,拔河部分,发光二极
管。数码管主要用于显示双方的盘数,蜂鸣器用于提醒选手拔河开始或拔河结束,清零部分用于对数码管清零和发光二极管复位,拔河部分用于控制发光二极管的移动,发光二极管显示拔河的状态,当终点亮时,数码管计数。
图1流程图
3.1方案论证
按两次复位键后,蜂鸣器响起,两边选手开始拔河。当发光二极管移到左端
终点时,选手按键无效,左边的数码管计一次数。按两次复位键,继续拔河,当发光二极管移到右端终点时,选手按键无效,右边的数码管计一次数。如果是3局2胜制,当有一方已赢了2局后,复位键也无效,需要按一下清零键。
3.2电路设计
图2 数码管
图3蜂鸣器
图4清零部分
图5拔河部分
图6发光二极管
4.电路仿真与结果分析
4.1电路仿真
第一点:按下复位键,观察发光二极管是否在中点,如果在中点,则再按下
复位键。
第二点:任意随机的按key1和key2,直到发光二极管移到终点。 第三点:观察数码管,看计数是否正确。 第四点:按两次复位键,重复上述步骤。
第五点:按下清零键,看数码管数据是否清零,发光二极管是否也回到中点。如果达到预期,则实验成功。
4.2结果分析
仿真时数码管没有亮,经过分析后知道是错用了共阴极数码管,改用共阳极
的后数码管有显示了。然后进行拔河游戏过程,但是发光二极管从P0口进入到P2口或从P2口进入到P0口后,发光二极管移位出现了混乱,而且不能到达终点,原因是程序没有写好。认真修改了程序后,移位正常了。但是数码管不能实现清零,把清零方式由电平清零改为脉冲式清零后,可以正常清屏了。
5.主要仪器与设备
发光二极管led ×15, 电阻510欧×15,电阻20欧×1 7SEG-MPX2-CA×1, AT89C52×1, 极性电容CAP-POL 22uF ×2, 电容30pF ×2, 蜂鸣器BUZZER ×1,晶振CRYSTAL ×1, RESPACK-8×1, PNP×1, 电阻1000欧×2, BUTTON×4。
6.设计总结
对我们而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程
中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。无论如何,这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在我们的努力下,终于游逆而解。
这次设计能够顺利完成,非常感谢四川师范成都学院电子工程系鲁顺昌主任,是××主任给我们提供了这么优越的条件。还要感谢××老师、××老师,没有他们的细心、高明的指导,就没有本次课程设计圆满成功。
7.参考文献
[1] 吴健. A VR 单片机实用C 语言程序设计与典型实例[M] .北京中国电力出版社,2008.120—145
[2]马潮. A VR 单片机嵌入式系统原理与应用[M] . 北京韩天航空大学出版社,2007.115—150
[3]阎石. 数字电子电路 [M] .北京:中央广播电视大学出版社,1993. 125—133
[4]马潮. A VR 单片机嵌入式系统原理与应用 [M] .北京韩天航空大学出版社,2007.112—130
[5] 吴健. AVR 单片机实用C 语言程序设计与典型实例 [M] . 北京中国电力出版社,2008.106—130
[6]李晓林、牛昱光、阎高伟. 单片机原理及接口技术 [M] . 电子工业出版社.100—113
[7]康华光. 电子技术基础模拟部分(第五版)[M] . 高等教育出版社.101—120
[8]张福. c 及c++程序设计(第三版)[M] .人民邮电出版社.101—120 [9] 邱关源. 电路第五版,[M],高等教育出版社.2005. 115—129 [10] 张毅刚. 新编MCS51单片机应用设计(第三版)[M] .哈尔滨:哈尔滨工业大学出版社,2008. 125—145
[11] 何立民. 单片机应用技术选编[M] . 北京:北京航空大学出版社,1998。115—133
[12] 李华. MCS-51系列单片机使用接口技术[M] . 北京:北京航空航天大学出版社,1993. 125—139
[13] 彭为. 单片机典型系统设计实例精讲 [M] .北京:电子工业出版社,2006.
[14] 李大友. C 语言程序设计[M] .清华大学出版社,1999. 113—136
[15] 王明福、乌云高娃. C 语言程序设计教程 [M] . 高等教育出版社,2004,
6. 108—120
附件:拔河游戏机程序
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit wela1=P3^0;
sbit wela2=P3^1;
sbit beep=P3^5;
sbit key=P3^4;
sbit key1=P3^2;
sbit key2=P3^3;
uchar n,m,temp1,temp2,a,b,num;
uint n1=0,n2=0;
void key_init();
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
void di(void)
{
beep=0;
delay(10);
beep=1;
}
void disp(uchar shi,uchar ge)
{
wela1=1;
P1=table[shi];
delay(10);
wela1=0;
wela2=1;
P1=table[ge];
delay(10);
wela2=0;
}
void key_init()
{
if(key==0)
{
delay(5);
if(key==0)
{
while(!key);
temp1=0x7f;
temp2=0xff;
di();
P0=temp1;
P2=temp2;
num++;
if(num==3)
num=0;
}
}
if(num==2)
{
if(key1==0)
{
delay(5);
if(key1==0)
{
while(!key1);
if(temp1==0xff)
{
if(temp2==0xfe)
{
temp2=0xff;
P2=temp2;
temp1=0x7f;
P0=temp1;
}
if(temp2!=0xff)
{
temp2=_cror_(temp2,1);
P2=temp2;
}
}
else
{
temp1=_cror_(temp1,1);
P0=temp1;
}
a=1; //用于跳出P0==0xfe的循环 }
}
if(key2==0)
{
delay(5);
if(key2==0)
{
while(!key2);
if(temp2==0xff)
{
if(P0==0x7f)
{
temp1=0xff;
P0=temp1;
temp2=0xfe;
P2=temp2;
}
if(temp1!=0xff)
{
temp1=_crol_(temp1,1);
P0=temp1;
}
}
else
{
temp2=_crol_(temp2,1);
P2=temp2;
}
b=1; //用于跳出P2==0xbf的循环 }
}
}
if(P0==0xfe&&a==1)
{
num=0;
n+=1;
a=0;
}
if(P2==0xbf&&b==1)
{
num=0;
m+=1;
b=0;
}
}
void init()
{
P0=0x7f;
n1=0;
n2=0;
num=0;
n=0;
m=0;
}
void main()
{
init();
disp(n,m);
while(1)
{
disp(n,m);
key_init();
}
}