单片机拔河器实训报告.docx
《单片机拔河器实训报告.docx》由会员分享,可在线阅读,更多相关《单片机拔河器实训报告.docx(14页珍藏版)》请在冰豆网上搜索。
单片机综合设计报告
设计课题:
拔河游戏模拟机
学 院:
桂林电子科技大学北海职业技术学院
专业:
电子信息工程技术作者:
陆业晓 学号:
1012220705
日期:
2011年12月16日
目录
摘要................................................................
1、课题背景 3
1、设计任务分析 4
2、实验设计思路 4
3、实验设计方案 5
1、方案一 5
2、方案二 7
3、方案对比与选择 9
4、元器件选用与电路图 9
5、实验程序 11
6、总结 13
7、参考文献 13
课题背景
随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言逐渐过过度到使用高级语言开发,其中又以C语言为主,市场上集中常见的单片机均有其c语言开发坏境,应用于51系列单片机开发的c语言,通常简称为c51语言。
现在忠实开发工具与仿真工具的使用,既便于多媒体教学,有方便学生学习,例题丰富详实,可操作性强,每章均配有实训,内涵思考与练习,内容选择难易适中,符合高职高专的教学要求。
单片机应用系统由硬件系统和软件系统两部分组成。
硬件系统是指单片机以及扩展的存储器、
I\O接口、外围扩展的功能芯片以及接口电路。
软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。
与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行
一、设计任务分析:
单片机课程设计是单片机电子技术基础课程的实践性教学环节,是为了理论结合实际的电子基础知识,验证,巩固和消化电子技术基本知识,综合应用单片机电子技术解决生产第一线的实际问题,提高基本的专业动手能力,进一步培养分析问题和解决问题的能力,以后更好的为社会服务。
设计主要内容及要求:
1、设计一个模拟拔河游戏比赛的逻辑电路。
2、电路使用7个发光二极管,开机后只有中间的一个发亮,此亮点表示拔河的中心。
3、比赛双方各持一个按钮,快速不断地按动按钮,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一位。
4、亮点移到任一方终端发光二极管时,胜利信号灯就会亮,这一方就获胜,此时,双方的按钮都应无作用,输出状态保持,只有复位后,在拔河绳子中间
的发光二极管重新亮。
二、实验设计思路
基本要求如下:
(1)比赛开始时,由裁判下达命令后,甲乙双方才能输入信号。
(2)“电子绳”由7个LED管构成,裁判下达“开始比赛”的命令后,位于
“电子绳”中点的LED点亮。
甲乙双方通过按键输入信号,使发亮的LED管向自己一方移动,并阻止其向对方延伸。
当自己一方终点的LED管点亮时,表示比赛结束。
由裁判按复位键使电路复位。
三、总体设计方案:
3、1电路设计原理
拔河游戏机需用7个发光二极管排列成一行,开机后只有中间一个点亮,
以此作为拔河的中心线,游戏双方各持一个按键,迅速地、不断地按动产生脉冲,谁按得快,亮点向谁方向移动,每按一次,亮点移动一次。
移到任一方终端二极管点亮,这一方就得胜,此时双方按键均无作用,输出保持,只有经复位后才使亮点恢复到中心线。
3、2电路设计方案:
方案一:
1、1电路原理图:
复位
↓
晶振起振电路→单片机控制电路→亮点显示←复位
上图一(电路框图)
图二(原理图)
1、2电路工作原理
本实验方案采用单片机电路,有晶振电路为单片机提供脉冲输出,单片机
芯片通过程序的烧录将其信号通过按键S2,S3控制单片机的P2的I/O口的高低电平,使其按键对7个输出端控制LED的亮暗。
单片机原始状态输出低电位。
当按动S2、S3两个按键时,单片机输出驱动电平指示灯点亮并产生位移,当亮点移到任何一方终端后,这一状态被锁定。
如按动复位键,亮点又回到中点位置,比赛又可重新开始。
1、3各单元电路设计:
1、电源及复位电路电路:
电源电路为整个拔河器电路提供电压输入,使其运行,开关S1每当按下几位比赛复位,当胜利一方获胜时,则通过复位电路使其重新开始比赛
2、晶振电路:
单片机晶振电路为单片机提供工作信号,12M晶振的工作速度为每秒12M,连接晶振电路是,必须先经过晶振再经过电容,不然影响单片机程序的烧录
下图为晶振电路:
晶振电路通过单片机XTAL1,XTAL2两I/0口为单片机输入脉冲
3、单片机控制电路:
晶振电路为单片机提供时序,使单片机开始工作,按动按钮S2、S3使输入信号,单片机对输入的信号进行处理,输出信号到译码器。
电路如图:
按键S2接单片机的P2.0口,S3接单片机的P2.1口,通过这两个口控制拔河双方
4、单片机最小系统电路:
1、如果P0不用,那J34上拉电阻也不需要,用到哪个IO就在哪个IO上加上 拉电阻。
如果是一个P口的8个IO都要用,就统一用排阻(SIP9封装)。
2、有一个电源指示灯。
3、下载线只要把P3.0P3.1引出来接实验箱或下载线即可。
4、有一个晶振12M或11.0592M,两个小电容20p。
5、复位电路的手动复位按键(S54)可要,可不要。
方案二:
1、1电路原理图:
图一,图二分别为拔河游戏机的电路框图、整机逻辑图。
2、2 电路工作原理:
可逆计数器CC40193原始状态输出4位二进制数0000,经译码器输出使中间的一只电平指示灯Q0点亮。
当按动A、B两个按键时,分别产生两个脉冲信号,经整形后分别加到可逆计数器上,可逆计数器输出的代码经译码器译码后驱动电平指示灯点亮并产生位移,当亮点移到任何一方终端后,由于控制电路的作用,使这一状态被锁定,而对输入脉冲不起作用。
如按动复位键,亮点又回到中点位置,比赛又可重新开始。
将双方终端指示灯的正端分别经两个与非门后接到2个十进制计数器CC4518的使能端EN,当任一方取胜,该方终端指示灯点亮,产生1个下降沿使其对应的计数器计数。
这样,计数器的输出即显示了胜者取胜
的盘数。
2、3各单元电路的设计:
1.编码电路的设计:
由双时钟二进制同步可逆计数器CC40193构成,它有2个输入端,
4个输出端,能进行加/减计数。
通过编码器来控制电平指示灯的显示,加计数时向右移动,进行减计数时,向相反方向移动。
3.译码电路:
由4线-16线译码器CC4514构成。
译码器的输出Q0~Q15中选9个接电平指示灯,电平指示灯的负端接地,而正端接译码器;这样,当输出为高电平时电平指示灯点亮。
比赛准备,译码器输入为0000,Y0输出为1,中心处指示灯首先点亮,当编码器进行加法计数时,亮点向右移,进行减法计数时,亮点向左移。
电路图如下图所示:
4.控制电路:
由异或门CC4030和与非门CC4011构成,其作用是指示出谁胜谁负。
当亮点移到任何一方的终端时,判该方为胜,此时双方的按键均宣告无效。
将双方终端指示灯的正接至异或门的2个输入端,当获胜一方为“1”,而
另一方则为“0”,异或门输LD 出为“1”,经与非门产生低电平“0”,再
送到CC40193计数器的置数端,于是计数器 停止计数,处于预置状态,
由于计数器数据端D0、D1、D2、D3和输出Q0、Q1、Q2、Q3对应相连,输入也就是输出,从而使计数器对脉冲不起作用。
电路图如下图所示:
5.胜负显示:
由计数器CC4518和译码显示器构成。
将双方终端指示灯正极经与非门输出后分别接到2个CC4518计数器的EN端,CC4518的两组4位BCD码分别接到实验箱中的两组译码显示器的8、4、2、1插孔上。
当一方取胜时,该方终端指示灯发亮,产生一个上升沿,使相应的计数器进行加一计数,于是就得到了双方取胜次数的显示,若1位数不够,则进行2位数的级连。
电路图如下:
6.复位控制:
CC40193的清零端CR接一个电平开关,作为一个开关控制,进行多次比赛而需要的复位操作,使亮点返回中心点。
CC4518的清零端RD也接一个电平开关,作为胜负显示器的复位来控制胜负计数器使其重新计数。
3、2方案比较与选择
方案一与方案二对比,在学了并会使用单片机的前提基础下,方案一显得
更加简单,所用的芯片也较少,方案二所用芯片多,焊接较为复杂,同时方案是通过单片机实现数电芯片的功能,使其更加简单快捷,而且成本相对来比较低,也更加能加深对单片机程序学习和理解,相比之下方案一的电路做起来也比较轻松,不容易出错。
但方案一没有显示电路,这是方案一的缺点。
最后还是选择了方案一,因为方案一的电路所用器件较少,焊接也较为容易。
四、元器件的选用及电路图
4、1元件的选用
51单片机 1片
电阻:
1KΩ/10KΩ/300Ω 1个/1个/1个
晶振 12M 1片
开关 4个
电容 30pF/10pF 2个/1个
LED 9个
PCB板 计算机一台 PC机一台
4、2电路仿真图
4、3拔河器电路原理图
4、4电路PCB图
4、5拔河器实物图
5、实验程序:
#include
#defineLedsP0#defineoff1
#defineon0sbitkey1=P2^0;sbitkey2=P2^1;sbitled=P0^7;
unsignedcharcounter;
unsignedcharcodenumtab[10]={0x7e,0x18,0xb6,0xba,0xd8,0xea,0xee,0x38,0xfe,0xfa};unsignedcharstate;
voiddelay(unsignedchardelay_time)
{
unsignedchara,b,c;for(a=0;a}
voidmain()
{
unsignedchara=0;state=0xf7;Leds=0xf7;counter=1;while(counter){if(key1==on)
{
if(key1==on)
{
a=a+1;
}
}
if(key2==on)
{
if(key2==on)
{
a=a+2;
}
}
if(a==1)
{
state=state<<1;state=state|0x01;Leds=state;
a=0;
}
if(a==2)
{
state=state>>1;state=state|0x80;Leds=state;
a=0;
}
if(state==0xfe)
{
led=0;counter=0;
}
if(state==0xdf)
{
led=0;counter=0;
}
}
}
六、调试电路板与程序联调过程中遇到的问题及解决方案:
1、PCB图中因为按键管脚尺寸错误,使其按键不能插入,通过对按键封装
的重新布置才能使其正常工作
2、电路板按键部分的GND连接错误,通过对