投篮玩具设计论文文档格式.docx
《投篮玩具设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《投篮玩具设计论文文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
2.2.5四位数码管电路设计6
2.2.6电源电路设计6
2.2.7电路焊接与调试7
3.1软件程序功能需求分析8
3.2软件设计流程8
3.2.1开发平台介绍8
3.2.2主程序流程图8
3.2.3初始化配置9
3.2.3语音模块程序设计9
4联合调试10
4.1调试前准备10
4.2联合调试10
4.3功能验证10
结论11
致谢12
参考文献13
附录14
1绪论
1.1设计目的及意义
随着单片机应用的广泛普及,以51单片机为平台并结合语音模块和传感器模块的应用越来越广泛。
本论文的目的在于设计一种基于51单片机和ISD1760语音模块的电子投篮玩具,实现该玩具功能的智能化和操作的人性化。
1.2设计要求
设计的投篮玩具是一种可以自动计分和语音播报的投篮玩具,课题任务的具体要求如下:
1、具有清零键;
2、进球得分加2分或3分(砸板投中篮为2分,空心投中篮为3分);
3、进球分数数码管显示;
4、具备语音播报功能;
5、制作实物并调试。
1.3设计内容
本论文主要研究的内容包括投篮玩具的方案设计、软硬件的实现和联合调试。
首先,通过学习51单片机的相关知识,掌握51单片机的电路设计和C语言编程能力;
学习ISD1760语音模块电路,掌握语音播报功能的设计方案;
学习红外对管传感器和振动传感器的工作原理。
其次,根据设计任务要求,制定电路整体方案和设计硬件电路原理图。
其中硬件电路设计包括单片机最小系统、ISD1760语音模块、红外对管传感器电路和振动传感器电路设计。
接着,根据设计的原理图,进行电路的手工焊接和调试,编写软件代码,软件设计基于Keil软件平台,采用C语言编程。
最后,通过软硬件联合调试,修改完善代码,验证设计功能。
整个论文设计过程包括方案论证、查找文献、电路焊接和软件调试等设计过程,要求实现设定的任务要求,硬件实物测试需验证所设计的投篮玩具工作稳定性和进球计分、语音报分、分数显示和清零等功能性。
2硬件电路设计
2.1设计方案分析
从设计的实现平台分析,本设计采用传统的51单片机平台,利用其丰富的I/O资源和定时器功能,可以方便实现与语音模块和传感器模块之间的对接。
从设计的功能实现分析,由于需要通过判断是否进球和得分的方式以判定所得分数,因此设计了以红外对管传感器和振动传感器组成的传感器电路,通过对两个信号的捕捉,来判断是否投中篮,并感知其得分方式为砸板得分还是空心得分,图2-1为进球判断原理示意图。
当球进入篮筐时,位于篮筐水平方向红外对管传感器检测到障碍(篮球),便输出低电平信号给单片机以判断进球得分,否则不得分。
振动传感器与篮板直接接触,以感应投篮时是否砸到篮板(振动感应),并输出信号给单片机。
由于需具备语音播报功能,采用了ISD1760语音模块,它可与单片机直接通信,并可录制多段语音,并通过地址进行选择播放。
红外对管传感器
振动传感器
接单片机IO口
图2-1进球判断原理示意图
2.2电路设计与调试
2.2.1电路整体设计
根据实现的设计平台和实现功能的要求,完成了投篮玩具电路的整体设计如图2-2所示。
整体电路由单片机及其外围电路、ISD1760语音模块、四位数码管电路、键盘输入电路和传感器模块等部分电路组成。
51单片机
STC89C516RD+
ISD1760
语音模块
四位数码管
清零按键
图2-2投篮玩具电路的整体设计图
2.2.2单片机电路设计
51单片机电路是整个电路的核心部分。
本设计中选用宏晶科技(STC)公司的STC89C516RD+型号的8051单片机,具有低成本,低功耗特点,内部具有63KB的flash程序存储空间,1280B的RAM数据存储空间。
本设计选用的封装为DIP40,单片机外部接11.0592Mhz晶振。
图2-3为单片机及外围电路原理图。
单片机分配给外部电路的管脚情况如表2-1所示。
图2-3单片机及外围电路原理图
表2-1单片机管脚分配表
名称
分配管脚
备注
ISD_MISO
P0.3
单片机与ISD1760的SPI接口
ISD_MOSI
P0.4
ISD_SCLK
P0.5
ISD_SS
P0.6
按键输入
P3.2
外部清零键
计数器0输入
P3.4
接红外对管传感器
IO输入
P3.6
接振动传感器
四位数码管位选
P1.0~P1.3
四位数码管与单片机接口
四位数码管段码
P2.0~P2.7
复位输入
RST
外部复位
2.2.3语音模块电路设计
语音模块电路采用ISD1700芯片,它是华邦ISD公司2007年新推出的单片优质语音录放电路,该语音芯片提供多项新功能,包括内置专利的多信息管理系统,新信息提示(vAlert),双运作模式(独立&
嵌入式),以及可定制的信息操作指示音效。
芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。
图2-4为ISD1700系列芯片管脚图,它与单片机直接通过SPI总线连接。
ISD1700系列特点:
●可录、放音十万次,存储内容可以断电保留一百年
●按键模式和MCU串行控制模式(SPI协议)
●MIC和ANAin两种录音模式
●PWM和AUD/AUX三种放音输出方式
●可处理多达255段以上信息
●有丰富多样的工作状态提示
●多种采样频率对应多种录放时间
●音质好,电压范围宽,应用灵活
电特性:
●工作电压:
DC2.4V~5.5V,,最高不能超过6V
●静态电流:
0.5~1μA
●工作电流:
20mA
图2-4ISD1700系列芯片管脚图
本设计中选用ISD1760芯片,8kHz采样率下可录音时长为60秒。
图2-5为ISD1760模块的电路原理图。
录音可通过麦克风输入也可以通过Analn音频接口输入,为了获得良好的声音效果,语音经过AUX口经放大后输出给喇叭,选用喇叭为8欧姆0.5W,同时支持SPI操作和独立按键控制操作。
电路焊接了RDY、FWD(快进)、ERASE(擦写)、REC(录音、PLAY(播放)、FT(直通)和VOL(音量)等独立操作按键,这些按键使得录放功能变得简单。
单片机通过四线(MISO、MOSI、SCLK、SS)SPI协议对ISD1760进行串行通信。
ISD1760作为从机,单片机通过发送不同的命令来控制播放不同的语音段。
图2-5ISD1760模块电路原理图
2.2.4传感器电路设计
传感器电路包括红外对管传感器和振动传感器电路。
红外对管传感器部分:
该传感器电路对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过LM393比较器电路处理之后,指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。
该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。
振动传感器电路:
该电路由SW-420常闭型震动传感器和宽电压LM393比较器组成,可用于各种震动触发作用,报盗报警,智能小车,地震报警,摩托车报警等。
当传感器不震动时,震动开关呈闭合导通状态,输出端输出低电平,指示灯亮;
当传感器震动时,震动开关瞬间断开,输出端输出高电平,指示灯不亮;
输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境是否有震动。
图2-6为传感器电路原理图。
图2-6传感器电路原理图
(上为红外对管传感器、下为振动传感器)
在实际使用过程中发现,SW-420常闭型震动传感器稳定性差,为了提高振动感应效果。
采用蜂鸣片及触点弹簧组成的振动传感器(如图2-7所示),它具有高灵敏、快速、高性能等特点,广泛用于汽车防盗及其它安防产品上。
它内部用压电陶瓷片加弹簧重锤结构检测振动信号,并通过LM358等运放放大并输出控制信号,具有成本低、灵敏度高、工作稳定可靠,振动检测可调节范围大的优点。
该传感器共有三根接线,蓝线为信号输出经358运放输出,没有震动时为高电平(注意输出脚要上拉一个电阻),有震动时为低电平,红色线电源,+5V黑线为地线。
图2-7振动传感器实物图
2.2.5四位数码管电路设计
为了实现投篮得分的显示功能,设计了四位数码管电路。
数码管选用MT03641BR四位共阳数码管。
位选端都经过2N3904三极管驱动。
图2-7为四位数码管电路原理图。
图2-7四位数码管电路原理图
2.2.6电源电路设计
电源电路采用三端稳压管7805进行5V电压的稳压输出供给单片机电路,这种稳压用的集成电路芯片,只有三条引脚输出,分别是输入端、接地端和输出端,标准封装为TO-220。
用78系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。
因为三端固定集成稳压电路的使用方便,电子制作中经常采用。
图2-8为电源电路原理图。
实际焊接中发现,语音模块工作时瞬间电流很大,导致供给单片机的电压下降而复位单片机,因此在7805的输出端接2个470uF的电解电容。
图2-8电源电路原理图
2.2.7电路焊接与调试
由于实际使用的需要,设计采用模块化焊接方式,将传感器电路和单片机及语音显示电路独立开来,它们之间通过排线连接。
焊接时先焊接电源模块,待电源模块调通后,再以此焊接单片机电路、语音模块电路、数码管显示电路。
图2-9为单片机及语音显示电路焊接实物图和传感器电路实物图。
图2-9上图为单片机及语音显示电路焊接实物图下图为传感器电路实物图
3软件程序设计
3.1软件程序功能需求分析
根据功能设计要求,软件程序需要实现以下功能:
1、实现与ISD1760语音模块之间的SPI通信;
2、实现四位数码管动态扫描;
3、实现中断清零功能;
4、实现对红外对管传感器脉冲信号的计数功能;
5、实现振动传感器信号的捕获。
3.2软件设计流程
3.2.1开发平台介绍
本设计软件设计在Keil平台上进行C语言编程。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起,其方便易用的集成环境、强大的软件仿真调试工具使得程序开发变得快捷、高效。
图3-1Keiluvisoon3C语言开发平台
3.2.2主程序流程图
本设计的主程序流程图如图3-2所示,单片机上电后首先进行定时器0、1、2、外部中断0和SPI串行口初始化,接着循环检测定时器0的计数值是否发生变化,如有变化说明有进球,便进入是否砸板判断程序,如果Flag信号为1,说明是砸板进球,分数加2,播放语音1,若Flag信号为0,说明是空心进球,分数加3,播放语音2。
如果定时器0计数没有变化,说明没有进球,便进入砸板判断,如果Flag信号为1,说明球砸板没有得分,播放语音3。
砸板判断标志位通过定时器1中断扫描振动传感器输入信号,如果捕获到低电平,便置Flag为1。
3.2.3初始化配置
程序初始化配置包括定时器0、1、2初始化和中断初始化。
其中,定时器0工作在16位计数模式,定时器1、2工作在16位定时模式,因此设置TMOD=0X15;
中断控制方面,使能定时器1、2中断和外部中断0,分别置ET1、ET2和EX0等中断使能位为1;
语音模块控制方面,首先进行了SPI初始化配置,向ISD1760发送两个字节的ISD1700_PU命令。
3.2.3语音模块程序设计
程序根据传感器不同的信号,判别是否进球和进球的方式并播放对应的语音,语音通过独立按键控制方式经麦克风提前录入ISD1760芯片。
表2-2是语音播放类别和相对应的播放地址,语音播放地址通过7字节命令传送到ISD1760,便可选择播放哪条语音。
表2-2语音类别和相应播放地址
播放语音
播放地址
语音1
球不进,没有得分
0x0010~0x0029
语音2
球进了,得3分
0x0040~0x0058
语音3
球进了,得2分
0x0068~0x0078
4联合调试
4.1调试前准备
完成硬件电路焊接和程序设计后开始进行软硬件联合调试。
调试前需准备稳定的供给电源,输出电压为+5VDC,准备万用表一个,装有KEILC51的电脑一台,51单片机下载器一个和测试道具。
4.2联合调试
图4-1为硬件电路联合调试场景,左边为传感器电路(红外对管传感器和振动传感器),右边为单片机语音显示电路,它们之间通过一个4PIN排线连接,电路供电电源为5VDC。
调试前检查电路是否短路或者断路。
图4-1硬件电路联合调试场景
4.3功能验证
模拟设计一个篮筐,完成计分、砸板、语音报分等功能测试。
结论
整个论文设计过程包括方案论证、查找文献、电路焊接和软件调试等设计过程,实现了既定的任务要求,硬件实物测试中充分验证了所设计的投篮玩具工作稳定性和进球计分、语音报分、分数显示和清零等功能性。
通过这几个月的辛勤劳动,终于在老师与学长的帮助以及自己的努力下完成了这个篮球玩具的设计工作,为以后工作实践积累了一些经验。
所设计的篮球玩具具有以下功能:
致谢
参考文献
[1]曾婷,万星宇.ISD1700系列语音芯片原理与应用设计.价值工程,2011年23期.
[2]刘恩华,徐科明.基于ISD1700SPI协议模式的语音报警系统.电子测试,2009年10期.
[3]李可为.集成电路芯片封装技术.北京:
电子工业出版社,2007.
[4]张洪润,刘秀英,张亚凡.单片机应用设计200例.北京:
北京航空航天大学出版社,2006.
[5]刘乐善,欧阳星明,刘学清.微型计算机接口技术及应用.华中科技大学出版社,2000.
[6]李全利,仲伟峰,徐军.单片机原理及应用.北京清华大学大学出版社,2006
[7]李朝青.单片机原理及接口技术.北京:
北京航空航天大学出版社,2005
[8]周坚.单片机C语言轻松入门.北京:
北京航空航天大学出版社,2006
[9]华成英,童诗白.模拟电子技术基础.北京:
高等教育出版社,2006
[10]STC89C516RD+,ISD1700,LM358等.中国芯片手册网..
附录
投篮玩具主程序源码:
/******************************************
投篮玩具主程序main.c
单片机:
晶振:
11.0592Mhz
*****************************************/
#include<
reg52.h>
#include"
sound.h"
ISD1700.H"
unsignedchardate;
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19};
//不带小数点的数码管段码
ucharcount=0;
//得分
uintfenshu=0;
//显示的分数
ucharflag=0;
//砸篮板标志位
sbitkey1=P3^6;
//振动传感器输入接口
sbitgw=P1^0;
//个位选通定义
sbitsw=P1^1;
//十位选通定义
sbitbw=P1^2;
//百位选通定义
sbitqw=P1^3;
//千位选通定义
/*********ISD1760语音模块SPI通信接口**********/
sbitISD_SS=P0^6;
sbitISD_MISO=P0^3;
sbitISD_MOSI=P0^4;
sbitISD_SCLK=P0^5;
/*函数申明-----------------------------------------------*/
voiddelay(uintz);
voidInitial_com(void);
externvoidspi_pu(void);
externvoidcomm_sate(void);
externvoidspi_stop(void);
externvoidspi_fwd(void);
externvoidspi_play(void);
externvoidisd1700_7byte_comm(ucharcomm_par,uintstar_addr,uintend_addr);
/*延时函数*/
voiddelay1(uintz)
{
uinti,j;
for(i=z;
i>
0;
i--)
for(j=110;
j>
j--);
}
voidDelays(unsignedinttc)
while(tc!
=0)
{unsignedinti;
for(i=0;
i<
100;
i++);
tc--;
voidLED()//数码管显示函数
gw=1;
P2=tab[fenshu%10];
Delays(8);
gw=0;
sw=1;
P2=tab[fenshu/10%10];
sw=0;
bw=1;
P2=tab[fenshu/100%10];
bw=0;
qw=1;
P2=tab[fenshu/1000];
qw=0;
//******************************
//*****初始化函数***********
voidInitial_com(void)
EX0=1;
//开外部中断0
TMOD=0X15;
//定时器0工作在16位计数模式,定时器1工作在16位定时模式
TH1=(65536-40000)/256;
TL1=(65536-40000)%256;
ET1=1;
//使能定时器1中断
TR1=1;
//T1开始计时
TL0=0x0;
TH0=0x0;
TR0=1;
//T0开始计时
RCAP2H=0X90;
//定时器2
RCAP2L=0X00;
TH2=RCAP2H;
TL2=RCAP2L;
T