配色: 字号:
基于51单片机的无线篮球计分器设计
2020-06-27 | 阅:  转:  |  分享 
  
单片机课程设计基于51单片机的无线篮球计分器设计专业年级:2012级电气工程及其自动化参与成员:邹勇(P121813544)尚阿琪(P
121813545)刘甜甜(P121813535)马辉(P121813517)张大为(P121813555)贾双梅(P12211
3555)指导老师:黄靖涛摘要目前,随着人民生活条件的改善以及对各种比赛项目的热爱和欣赏,采取有线机器来进行记分的中小型比赛也开始
减少,取而代之的是利用无线控制进行记分。无线记分系统不再沿用过去的记分功能,而是利用无线发送与接收的形式工作,既节省了材料费用,也
使记分器工作的时候比较不受约束,且可以任意挪动。因此为了使记分更加方便并且记分设备的携带更加便捷,无线记分设备在国内外的研究都变得
更加广泛和深入。本文主要设计了一个基于CC1101模块的无线记分器,采用的是STC89C52芯片,来进一步研究射频收发模块
与单片机的结合,并实现无线记分功能。本设计的无线记分器分别由记录端和接收显示端这两部分构成。记录端由单片机最小系统、CC1101
无线发射模块、按键、指示灯等组成,单片机读取按键后把数据利用CC1101无线发射模块发送给接收显示端进行显示。接收显示端由单片
机最小系统、CC1101无线接收模块、四位数码显示模块等组成,无线接收模块将接收的数据送单片机处理后,再将数据由数码管显示出来。
根据该无线记分器的设计框图,进行材料的选购以及硬件的搭建,并用C语言编写程序实现记分功能,分别利用四个功能按键控制A、B
两队的加分和减分,在记录端数码管上显示加分或者减分,在接收端数码管上显示两队的比分情况。关键词:无线;射频收发模块;记分器目录
摘要2一、系统方案设计4系统构成框图及基本功能介绍4系统各部分简介4二、硬件电路设计551单片机最小系统5无线收发部分6CC11
01模块简介6无线模块单片机接口72.374HC573芯片介绍7触摸按键介绍8数码管模块介绍9各模块连接概述10三、软件设计
11软件设计综述11C程序设计12四、硬件搭建及测试12程序的编写及烧录12硬件测试13总结14附录15附录1C程序设计1
5附录2硬件调试效果图19一、系统方案设计系统构成框图及基本功能介绍单片机最小系统八位数码管显示无线接收模块本设计主要采用S
TC89C52单片机制造而成,由无线发送模块和无线接收模块组成无线收发系统,按键区采用TTP226触摸按键,设置四个功能按键
,分别控制A、B两队的加减分情况,显示区分为两个部分,一部分由一组四位数码管模块形成,处于发送端显示加或减的功能;另一部分由一
组八位数码管模块形成,处于接收端显示A、B两队比分情况。同时,采用74HC573锁存控制器来控制数据在数码管上的输出。系统
构成框图如图1-1所示。无线发送模块按键区单片机最小系统四位数码管显示系统各部分简介图1-1系统构成框图单片机数据在数码管上
的显示。单片机的工作电压为5V,如果直接将数码管与单片机连接,则会导致电压不够,数码管显示不清。本设计中主要是采取在单片机与数码
管之间连接了74HC573芯片,使得数码管上成功显示加减分以及A、B两队的比分情况,该芯片起到了电流放大以及程序锁存的作用
。CC1101无线模块的电源输入。由于该模块工作于1.8-3.6V电源电压之间,故采用3.3V电源稳压模块对其进行稳压
,从而使该无线模块可以正常工作。CC1101无线发送与接收模块之间信息的传送。CC1101的发送器部分是基于RF频率直接合
成的,将一个晶体连接至XOSC_Q1和XOSC_Q2。由晶体振荡器产生合成器的参考频率,以及ADC和数字部件的时钟,同时
以一个四线的串行外设接口来进行配置和存取数据缓冲器。另一方面,CC1101中具有一个低功耗中频接收机。低噪声放大器将接收到的射频
信号放大,并在进行积分求取的过程中降压转换至中频。在IF下,I/Q信号被模拟数字转换器数字化,而且均以数字形式完成自动增益控
制、精确信道滤波、调制解调位和数据包同步。二、硬件电路设计51单片机最小系统图2-1STC89C52单片机最小系统本设计主要
采用的是STC89C52芯片。该芯片是由STC公司出产的一款性能强,功耗低,具有8K在系统可编程Flash存储器的
八位微控制器。STC89C52芯片具备了传统51单片机所不具备的功能,虽然其使用的是经典的MCS-51内核,但它又做了很
多的改进。同时,STC89C52因其在单芯片上拥有8位CPU和在系统可编程Flash存储器,更是为那些嵌入式控制应用
系统提供了灵活有效的解决方案。如图2-1所示为51单片机最小系统图,它由电源部分、复位电路部分、和晶振电路组成。无线收发部
分CC1101模块简介CC1101是一款用于极低功耗RF应用的Sub-GHz高性能射频收发器。其主要是针对工业方面、科
技研究方面和医疗方面以及300-348MHz、387-464MHz和779-928MHz这几个频带的短距离无线通信设备。该无
线收发模块的最大传输速率可以达到500Kbps,而且在空旷的地方可达200-300米的传输距离,可以从软件方面来对波特率进行
修改,具有无线唤醒等功能,支持低功率电磁波激活功能,无线唤醒处于睡眠状态的低功耗设备,灵敏度达到-110dBm,具有很高的可靠
性,可广泛应用于各种场合的短距离无线通信领域。其通常应用于300/779MHzISM/SRD频带的超低功耗无线应用、无线计量
、无线告警、楼宇自动化和安全系统等[11-13]。CC1101RF收发器集成了一个高度可配置的基带调制解调器,支持数据包的处理
、突发传输、数据的缓冲、空闲信道的评估、指示链路质量以及无线唤醒等硬件方面的处理。我们还可以通过一个串行外设接口对CC1101
的重要运行参数和64字节RX和TX的先入先出数据缓存器进行控制。CC1101在一个典型的系统中经常会与一个微控制器以
及一些额外的无源组件结合应用[14-15]。其关键特性如下:RF性能灵敏度高且电流消耗较低,在所有可用的频率带下,具有高达+10
dBm的可编程输出功率、1.2到500kBaud的可编程数据速率以及卓越的接收机选择性和阻断性能,可用频带有:300-34
8MHz、387-464MHz和779-928MHz。模拟特性支持2-FSK、GFSK、MSK以及OOK,灵活的ASK
波形整形,建立时间只需90μs,能够迅速地锁定频率合成器,对于很多跳频系统都非常适用,同时利用自动频率补偿调整频率合成器到实际
接收信号的中心频率,并且拥有集成的模拟温度传感器。数字特性支持数据包导向系统、校验地址、检测同步字、灵活的数据包长度以及自动CRC
处理;可用一次“突发”数据传输对所有寄存器进行编程,具有高效的串行外设接口,数字RSSI输出,可编程信道滤波器带宽,可编程载
波监听指示器,可编程前导质量指示器;可用于增强随机噪声伪同步字检测的保护,支持发送前自动空闲信道评估,支持所有数据包的链路质量指
示,可选数据自动白化和去白。无线模块单片机接口图2-2无线模块与单片机连接图如图2-2所示、无线模块的SI、SO、CSN、GD
O0、GDO2、SCLK分别与单片机的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5相连。通过这6个I/O
口与CC1101芯片SPI总线进行数据的交换,进而完成收发等功能。74HC573芯片介绍74HC573芯片是一款具有三
态输出的八路锁存器,用于驱动电容相对较高或者阻抗相对较低的负载,实现缓冲寄存器、串并口以及双向总线驱动器等。当该芯片锁存允许端,即
LE端,为高逻辑电平时,输出端Q输出数据跟数据输入端D一致;当LE端为低逻辑电平时,输出端进入锁存状态,无论输入为何
种电平,输出Q均保持上一次的电平状态,即保持预先设置好的数据。74HC573芯片的输出使能端OE(低电平有效),可用来设置
输出口的工作状态。当OE为高电平时,无论锁存允许端和数据输入端为何种电平,输出都是高阻态。在处于高阻态的状态时,输出端无法进行读
取也不能进行驱动总线,即芯片处于不可控状态。其芯片引脚图如图2-3所示。120219318OEVCCD0Q0D1Q1D2474
HC57317Q2D3516Q3D4615Q4D5714Q5D6813Q6D7912Q7GND1011LE图2-374HC573
芯片引脚图2.4触摸按键介绍本次无线记分器设计采用的是一款TTP226触摸式按键,KEY1-KEY8接口与TTP226
的D0-D7输入接口连接,输出接口Q0-Q7与OUT1-OUT8接口相连,将其安置在记分器的无线发射端来控制A、B
两队的加减分。这是一种接触板检测IC,一共提供了八个触摸按键,并且内含八个指示灯,每个按键对应一个指示灯,当按下某个按键时,与
其对应的指示灯就会亮起,证明该按键在工作。在软件编程的时候,设置1键为A队的加分键、2键为A队的减分键,设置3键为
B队的加分键、4键为B队的减分键。TTP226触摸式按键不再延续传统固定pad尺寸的直接按钮键,而且接触键在交直流
应用中的特点是功耗较低、工作电压较宽。其具体特点如下:工作电压为2.0V~5.5V;在工作电压为3V时,工作电流典型值为8
0uA,最大值为160uA,输出刷新率约为55Hz;人体接触检测相对比较稳定,取代了传统直接切换的按键;由按键中的选项可以分
别选择直接模式、矩阵模式和串行模式,直接模式下最多八个输入和八个输出。在上电之后,TTP226触摸式按键有一段稳定时间,在此期间
触碰触摸键区功能无效,TTP226的是0.8~1.0s,而且始终进行自动校准,当任何按键都不被触碰时,TTP226重新的校准
周期是0.8~1.0s。如图2-4所示TTP226触摸式按键电路原理图。图2-4TTP226触摸式按键电路原理图数码管
模块介绍本次无线记分器设计采用一个八位数码管显示模块以及一个四位数码管显示模块来进行加、减分功能的显示以及A、B两队的比分情况
。在无线发射端设计一个四位数码管来显示加减功能,当按下A队或者B队加分键的时候,该数码管模块则显示“Add”;当按下A
队或者B队减分键的时候,该数码管模块则显示“dEL”。该四位数码管模块的电路原理图如图3-4所示。在无线接收端设计一个八位
数码管来显示A、B两队的比分情况,初始值设置为“000--000”,分别通过A、B两队的加减分键来对比分情况进行调整,如
A队得50分,B队得42分,则数码管显示为“050--042”。DS1DS2DS3DS4aKaKaKaKbKbKbKbK
ccccddddeeeeffffggggDPDPDPDP....WEI1R9Q1WEI2R10Q2WEI3R11Q3WEI4R12
Q4P1VCC111R1a222R2b333R3c45454R4d66567R5R6R7efg7891078WEI1WEI2
8R8DP11WEI312WEI413VCC图2-5四位数码管模块电路原理图各模块连接概述对于无线发送端,采用电源稳压模块对整个
单片机系统进行稳压,单片机正常工作电压为5V,本设计中稳压在5.35V左右,也可以供单片机小系统正常工作。设置单片机P2.0
-P2.5接口分别与CC1101模块的SCK、MOSI、GDO2、MISO、CSN、GDO0接口相连,由于CC1101
模块需要的是1.8-3.6V的电源输入,故采用3.3V电源稳压模块对无线发送模块进行稳压。将P3.0-P3.7接口与T
TP226触摸按键的OUT1-OUT8接口相连,P0.0-P0.7接口与74HC573芯片的D0-D7输入引脚相连
,P2.7接口与芯片LE端相连,再将74HC573芯片的Q0-Q7输出引脚连向四位数码显示模块的A-DP接口,且
将单片机P1.4-P1.7接口分别与数码显示模块的另外四个接口相连。无线发送端电路原理图见附录2。对于无线接收端,稳压方面与
无线发送端一致,设置单片机P1.1-P1.6接口分别与CC1101模块的SCK、MOSI、GDO2、MISO、CSN、G
DO0接口相连,同样由于CC1101模块需要的是1.8-3.6V的电源输入,故采用3.3V电源稳压模块对无线接收模块
进行稳压。在无线接收端设置了两个74HC573芯片,将P0.0-P0.7接口与其中一个74HC573芯片的D0-D7
输入引脚相连,P2.6接口与芯片LE端相连,再将74HC573芯片的Q0-Q7输出引脚连向八位数码显示模块的A-
DP接口。而另外一个74HC573芯片的LE端与P2.7接口相连,输出接口Q0-Q7与数码显示模块的另外八个接口
相连。三、软件设计软件设计综述本设计软件设计方面的构思方法比较简洁,容易理解,方法也比较新颖,没有复杂的程序嵌套。程序开始时先进行
初始化,定义各个端口,并且对各函数进行声明,再对按键进行扫描,查看是否有键按下,若有键按下,判断是哪个键按下,首先判断是A队评
分区的按键按下,还是B队评分区的按键按下。若判定为A队评分区的按键按下,再判断是加分键,还是减分键,若为加分键,则给A队
进行加分处理;若为减分键,则给A队进行减分处理。若判定为B队评分区的按键按下,再判断是加分键,还是减分键,若为加分键,则给
B队进行加分处理;若为减分键,则给B队进行减分处理。然后再对数码管进行扫描,加以显示;若无键按下,则不执行任何程序,直接结
束。主程序流程图如图4-1所示。开始程序初始化与函数声明否是否有键按下?是A队?否是A队加分?否B队加分?否是是A队加分A队减
分B队加分B队减分结束图3-1主程序流程图C程序设计该无线记分器设计一共设置了四个功能按键分别实现A、B两队加减分功能,1
号键实现A队加分功能,连续触摸即可对A队进行连续加分,为防止出现加分错误,设置2号键对A队进行减分控制;3号键实
现B队加分功能,连续触摸即可对B队进行连续加分,同样,为防止出现加分错误,设置4号键对B队进行减分控制。当按下A
队或者B队加分键的时候,无线发射端上的四位数码管模块则显示“Add”;当按下A队或者B队减分键的时候,该数码管模块则显
示“dEL”。而无线接收端设计的显示A、B两队比分情况的八位数码管,初始值设置为“000--000”,分别通过A、B两队的加减
分键来对比分情况进行调整,如A队得57分,B队得42分,则数码管显示为“057--042”,中间两位数码管用于显示“-
-”来区分A、B两队的比分。程序见附录1。四、硬件搭建及测试程序的编写及烧录本次设计采用C语言进行程序编写,并使用Ke
il软件进行程序的编译,而软件调试主要就是根据编译时产生的错误进行查找和修改。编写界面如4-1所示。图4-1编写界面程序编
译操作步骤:1、为该工程建立一个文件夹“无线发送”;2、新建一个project文件“无线发送.uv4”,将其保存在文件夹“无线
发送”中,并设置单片机型号,即目标器件为STC89C52;3、编辑源程序,建立源文件“无线发送.c”,再保存在文件夹“无线发送”
中;4、在工程项目组中添加源文件“无线发送.c;5、设置调试环境,选择调试模式为硬件仿真,将实物与计算机的USB连接,选择串
口为COM1,设置串行口波特率为115200bps,烧录界面如图4-2所示;硬件测试图4-2烧录界面程序编译成功之后,启
动专门用于STC系列单片机的STC-ISP软件,选择正确的单片机型号,即STC89C52,再选择编译产生的.HEX文件
,设置串口为COM1,最高波特率为115200bps。之后,使目标板处于断电状态,点击下载按钮,该软件将与单片机进行握手,此
时给目标板上电,将目标程序烧录到单片机中。然后,对实物进行检测调试。单片机工作电压为5V左右,故用电源稳压模块对电源电压进行手
动调整,并用万用表对电压进行测量,确保电源电压限定在单片机工作电压范围内。首先,打开无线发送和接收两端的电源开关,初始值设置为“0
00--000”,显示效果图见附录2。如果此时比赛开始A队得一分,触摸一下1号按键,发送端数码管显示“Add”,此时接收端数码
管显示比分为“001--000”;如果之后B队又得两分,长触3号按键,发送端数码管依然显示“Add”,B队分数跳动两下,松
开按键,此时接收端数码管显示比分为“001--002”。无线记分器显示效果图见附录2。总结本次设计过程中也遇到了不少问题,并得
到了解决,以下对其中的几个问题加以总结。CC1101无线模块在发送以及接收信号时可能受到干扰而导致不能及时向单片机系统传输数据,
编写程序时采用一定的延时,来避免这种干扰。最初采购了四个共阳的二位数码管和两个共阳的四位数码管,利用这些数码管焊接之后,记分器表面
布线复杂,而且由于焊接的问题导致接触不良,显示乱码,故改用焊接好的八位数码管显示模块以及四位数码管显示模块。在向数码管发送程序时
,LED显示有时候会出现重影,可以在改变段的输出内容之前,先令所有的位都停止显示,即开位、送段码、延时1~5ms、关位,再下一
位,就可进行消隐。当然这次的设计中也还存在着一定的不足,比如说设计中使用的触摸按键在工作时,用手触摸A组加分按钮,就容易触碰到
A组的减分按钮,导致A组的加分键和减分键指示灯同时亮起,所以如果条件允许的话,可以采用设计更好的按键模块来代替这次使用的触
摸按键。附录附录1C程序设计#include#defineDataPortP0//定义数据端口程序
中遇到DataPort则用P0替换#definea1#defineb0sbitLATCH1=P2^7;//定义锁存使
能端口段锁存sbitLATCH2=P2^6;//位锁存unsignedcharcodedofly_DuanMa[10]={0x
c0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码值0~9unsi
gnedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,
0x7f};//分别对应相应的数码管点亮,即位码unsignedcharTempDataA[3];//A队存储显示值的全局
变量unsignedcharTempDataB[3];//B队存储显示值的全局变量unsignedintnumA=0;
//A队要显示的数unsignedintnumB=0;//B队要显示的数voidDelaysmg(unsignedin
tt){while(--t);}voidDisplay_flag(){unsignedchari;for(i=3;i<=
4;i++){DataPort=0;//清空数据,避免交替重影LATCH1=1;//段锁存LATCH1=0;DataPort=do
fly_WeiMa[i];//取位码LATCH2=1;//位锁存LATCH2=0;DataPort=0xBF;//取显示数据,
段码LATCH1=1;//段锁存LATCH1=0;Delaysmg(200);//扫描间隙延时}}voidDispla
y(unsignedcharFirstBit,unsignedcharNum,unsignedcharname){
unsignedchari;for(i=0;i1=1;//段锁存LATCH1=0;DataPort=dofly_WeiMa[i+FirstBit-1];//取位码LATCH2
=1;//位锁存LATCH2=0;if(name)DataPort=TempDataA[i];//取显示数据,段码elseDat
aPort=TempDataB[i];//取显示数据,段码LATCH1=1;//段锁存LATCH1=0;Delaysmg(200
);//扫描间隙延时}}voidDisplay_A(){TempDataA[0]=dofly_DuanMa[numA/100
0];//分解显示信息,如要显示57,则57/10=557%10=7TempDataA[1]=dofly_DuanMa[(nu
mA%1000)/100];TempDataA[2]=dofly_DuanMa[((numA%1000)%100)/10];D
isplay(1,3,a);//A队Display_flag();//显示”--“}voidDisplay_B(){TempD
ataB[0]=dofly_DuanMa[numB/1000];//分解显示信息,如要显示57,则57/10=557%10=
7TempDataB[1]=dofly_DuanMa[(numB%1000)/100];TempDataB[2]=dofly_D
uanMa[((numB%1000)%100)/10];Display(6,3,b);//B队Display_flag();//
显示”--“}#include#include#define#defineINT8
UINT16Uunsignedcharunsignedint#define#define#define#define
#defineWRITE_BURST0x40READ_SINGLE0x80READ_BURST0xC0BYTES_IN_RXFI
FO0x7FCRC_OK0x80//连续写入//读//连续读//接收缓冲区的有效字节数//CRC校验通过位标志//
sbi
tSCK=P1^1;sbitMOSI=P1^2;sbitGDO2=P1^3;sbitMISO=P1^4;sbitCSN=P1^5;
sbitGDO0=P1^6;//
sbitLED=P1^0;////接收函数主函数部分voidmain(void){INT8Uleng=0;INT8URxBuf[8]={0};INT8UPaTabel[8]={0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60};CpuInit();POWER_UP_RESET_CC1100();halRfWriteRfSettings();halSpiWriteBurstReg(CCxxx0_PATABLE,PaTabel,8);while(1){leng=8;//预计接受8bytesif(halRfReceivePacket(RxBuf,&leng)){if(RxBuf[0]==0xA2)//接收到A队加分信号{numA=numA+1;}elseif(RxBuf[0]==0xA3)//接收到A队减分信号{numA=numA-1;}elseif(RxBuf[0]==0xB2)//接收到B队加分信号{numB=numB+1;}elseif(RxBuf[0]==0xB3)//接收到B队减分信号{numB=numB-1;}}Display_A();//A队Display_B();//B队}}附录2硬件调试效果图无线记分器初始状态图A队加分效果图图4-5B队减分效果图
献花(0)
+1
(本文系小刀刀vov首藏)