无线抢答器Word格式文档下载.docx

上传人:b****6 文档编号:21507534 上传时间:2023-01-30 格式:DOCX 页数:28 大小:572.89KB
下载 相关 举报
无线抢答器Word格式文档下载.docx_第1页
第1页 / 共28页
无线抢答器Word格式文档下载.docx_第2页
第2页 / 共28页
无线抢答器Word格式文档下载.docx_第3页
第3页 / 共28页
无线抢答器Word格式文档下载.docx_第4页
第4页 / 共28页
无线抢答器Word格式文档下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

无线抢答器Word格式文档下载.docx

《无线抢答器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《无线抢答器Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。

无线抢答器Word格式文档下载.docx

图3.3.1PT2262原理图

PT2262发出的编码信号是由:

地址码、数据码、同步码组成一个完整的码字,解码芯片接收到解码信号时,其地址码经过两次比较核对后,VT标志位才会输出高电平,相应的数据码也会变成高电平,当发射机没有按键按下的时候,PT2262不接通电源,PT2262不工作,当有按键摁下的时候,其17管脚输出经调制的串行数据信号。

PT2272采用的是PT2272-M4,表示数据输出为四位的暂存性红外遥控接收芯片,采用此型号的芯片主要是为了配套语音模块的只刷新一遍,否则采用L4型号语音模块将不断刷新播报,采用四位数据输出因为四位数据输出的编码足够各种功能的组合。

3.474HC573、74HC595

图3.474HC573原理图

74HC573是器件的输入是和标准CMOS兼容的,具有高噪声抵抗特性的8路锁存器,恰好够数码管的8路输出。

74HC595是硅结构的CMOS器件,兼容低电压TTL电路,由串行输入8位并行输出的移位寄存器和一个存储器构成,因为移位寄存器和存储器是不同的时钟。

因此当输出8位数据时,通过控制两个时钟,当连接数码管时中间的移位状态不会显示,只会显示移位后的状态。

这也是74595相较于74164的优点。

3.5驱动芯片ULN2803

图3.5ULN2803原理图

ULN2803属于高电压、大电流的达林顿晶体管阵列。

他的驱动负载电流是500mA,驱动电压为50V。

适合驱动大数码管。

4.系统软件设计

4.1系统软件开发环境

采用KEIL开发环境,对STC89C51进行控制,通过单片机开发板将程序下载到单片机中。

具体步骤如下:

1、启动KEILC51。

2、新建一个工程。

Project菜单——NewProject,选择好要保存好的文件后,键入qiangda保存,接着弹出CPU的类型,选择STC89C51。

3、在工程中加入文件,新建一个文件,文件菜单File——New,我们再选择文件菜单File——Saveas,弹出对话框后,我们文件名框中键入qiangda.c,这样C文件就建立好了。

再把文件加入到工程中去。

点击Target1前面的+号键,右键单击SourceGroup1——选择AddFiletoGroupSourceGroup1,选择添加Add。

4、Project设置:

在Project——optionsforTarget(target1)——output将createHEX选中,这样编译后如果程序没有问题就可以生成单片机可以识别的HEX文件。

5、将程序下载到单片机中,打开STC-ISP,选择单片机的型号,打开程序文件,选择正确的com口,下载程序,给开发板上电,当显示下载成功后,就可以实现实现相应的功能。

图4.152系统开发板

4.2系统主要功能的实现流程

图4.2系统流程

4.3系统主要功能实现源代码

#include<

reg52.h>

#include<

stdio.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitzhengdao=P3^2;

//正倒计

sbitqidong=P3^3;

//启动

sbitpan=P3^4;

//抢答时间还是回答时间

sbitbaiadd=P3^5;

//百位的按键

sbitshiadd=P3^6;

//十位的按键

sbitgeadd=P3^7;

//个位的按键

sbitzanting=P1^5;

//暂停

sbitpan2=P1^7;

//清屏

#defineKEYP1//定义用来检测按键的端口

sbitK0=P1^1;

sbitK1=P1^2;

sbitK2=P1^3;

sbitK3=P1^4;

//程序代码为四个抢答端

sbitDUAN=P2^6;

//定义锁存使能端口段锁存

sbitWEI=P2^7;

//位锁存

sbitTTS_BUSY=P1^0;

//检测SYN6288模块工作状态

#defineHEAD_LEN5//数据包头的长度

#defineLEN_OFFSET2//长度字节的偏移量(本例中长度不超过255字节,因此只使用1字节长度)

#defineBKM_OFFSET4//背景音乐命令偏移

#defineBKM_MAX15//背景音乐数量

//数据包头(0xFD+2字节长度+1字节命令字+1字节命令参数)

ucharcodehead[HEAD_LEN]={0xfd,0x00,0x00,0x01,0x00};

ucharnBkm=0x00;

//背景音乐编号

staticucharbai2=0;

shi2=0;

ge2=0;

//初始化

staticucharbai1=0;

shi1=0;

ge1=0;

uchacodeTAB[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

staticunsignedintsecond;

intm;

unsignedchartext[]={"

[soundu]选手抢答犯规,组号"

};

unsignedchartext1[]={"

[soundu]选手抢答成功,组号"

unsignedchartext2[]={"

#defineTEXT_LEN28//正文长度

#defineNUM_POS25

#defineNUM_MIN1

#defineNUM_MAX8

uintnNum=NUM_MIN;

staticucharcounter=0;

second_1=0;

second_0=0;

second_2=0;

voiddelay(unsignedcharm);

voiddelayms(unsignedinti);

voiddisplay();

voidUART_InitBaud(void);

voidDelay1(uintn);

voidBkMusic(ucharnum);

voidSpeech(uchar*buf);

voidscankey2(void);

voidTimer0(void)interrupt1

{

ET0=0;

TH0=0X3C;

TL0=0XB0;

counter++;

if(counter==20)

counter=0;

if(zhengdao==1)

second++;

elsesecond--;

if(second==0||second==999)

{TR0=0;

}

second_1=(second%100)/10;

//shi

second_0=(second%100)%10;

//ge

second_2=second/100;

ET0=1;

voiddelay(unsignedcharm)

{while(m--)

{

unsignedchari;

for(i=120;

i>

0;

i--)

{}

}

voiddelayms(unsignedinti)

unsignedchara,b;

for(a=0;

a<

i;

a++)

for(b=0;

b<

120;

b++);

voiddisplay1(void)

P0=0Xfe;

WEI=1;

//位锁存

WEI=0;

P0=TAB[bai1];

DUAN=1;

//段锁存

DUAN=0;

delayms

(2);

P0=0Xfd;

P0=TAB[shi1];

P0=0Xfb;

P0=TAB[ge1];

P0=0Xf7;

P0=TAB[bai2];

P0=0Xef;

P0=TAB[shi2];

P0=0Xdf;

P0=TAB[ge2];

voidscankey1(void)

if(pan==1)

if(baiadd==0)

delayms(10);

if(baiadd==0)

{while(baiadd==0);

(bai1)++;

if((bai1)==9)

{(bai1)=0;

if(shiadd==0)

if(shiadd==0)

{while(shiadd==0);

(shi1)++;

if((shi1)==9)

{(shi1)=0;

if(geadd==0)

if(geadd==0)

{while(geadd==0);

(ge1)++;

if((ge1)==9)

{(ge1)=0;

else

(bai2)++;

if((bai2)==9)

{(bai2)=0;

(shi2)++;

if((shi2)==9)

{(shi2)=0;

(ge2)++;

if((ge2)==9)

{(ge2)=0;

voiddisplay()

P0=TAB[second_2];

delay(3);

P0=TAB[second_1];

P0=TAB[second_0];

voidDelay1(uintn)

uchari=112;

while(n--)

while(i--);

//串口初始化

voidUART_InitBaud(void)

SCON=0xD8;

//晶振为11.059MHZ时,设定串口波特率为9600bit/s,方式3

PCON=0x00;

TH1=0xFD;

TR1=1;

//串口发送数据

voidSendChar(ucharn)

SBUF=n;

while(TI==0);

//发送数据

TI=0;

//背景音乐(参数为0表示关闭背景音乐)

voidBkMusic(ucharnum)

num%=BKM_MAX+1;

nBkm=num;

//发声程序

voidSpeech(uchar*buf)

uchari=0;

//循环计数变量

ucharxor=0x00;

//校验码初始化

ucharch=0x00;

ucharlen=0x00;

while(buf[len++]);

//当数组buf的第len个值的内容不为0时执行下列程序

//发送数据包头(0xFD+2字节长度+1字节命令字+1字节命令参数)

for(i=0;

i<

HEAD_LEN;

i++)

if(i==BKM_OFFSET)

ch=nBkm<

<

3;

//写入背景音乐

elseif(i==LEN_OFFSET)

ch=len+3;

else

ch=head[i];

xor^=ch;

SendChar(ch);

Delay1

(1);

}

//发送文字内容

len;

xor^=buf[i];

SendChar(buf[i]);

SendChar(xor);

//发送校验位

Delay1(10);

while(TTS_BUSY);

//等待语音结束

//键扫描

voidscankey2(void)

uchark;

KEY=0xff;

//置位键端口以读取键值

if(KEY!

=0xff)//如果有键按下

k=KEY;

//取键值

//消抖

if(K0==1)

nNum=1;

elseif(K1==1)

nNum=2;

elseif(K2==1)

nNum=3;

elseif(K3==1)

nNum=4;

elsereturn;

sprintf(text+NUM_POS,"

%1d"

nNum);

//修改选手号码

Speech(text);

//合成语音

Delay1(1000);

//抢答间隔

return;

voidmain()

TMOD=0X21;

EA=1;

UART_InitBaud();

//初始化串口为9600bps

Delay1(200);

BkMusic(4);

//背景音乐4

Speech("

[t5]欢迎大家参加竞赛,请[3]选手们做好准备"

);

//欢迎词

BkMusic(0);

//关闭背景音乐

Delay1(1000)

while

(1)

if(qidong==1)

{

if(zanting==0)

TR0=1;

for(m=0;

m<

28;

m++)

{text[m]=text1[m];

scankey2();

display();

if(K0==1&

&

K1==0&

K2==0)

P0=0Xf7;

WEI=1;

WEI=0;

P0=0X06;

DUAN=1;

DUAN=0;

delayms(4);

elseif(K0==0&

K1==1&

{

P0=0X5B;

K2==1)

P0=0X4F;

}

elseif(zanting==1)

TR0=0;

second=100*(bai2)+10*(shi2)+(ge2);

elseif(qidong==0)

for(m=0;

{text[m]=text2[m];

second=100*(bai1)+10*(shi1)+(ge1);

if(pan2==1)

scankey1();

display1();

else

P0=0Xff;

P0=0X00;

if(K0==1&

5.系统测试

5.1无线模块的测试

图5.1地址码和数据码的脉冲表示

其中,Ta=8个时钟宽度,Tb=1个时钟宽度,Tc=2个字码长度。

地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”;

两个宽脉冲表示“1”;

一个窄脉冲和一个宽脉冲表示“F”也就是地址码的“悬空”。

图5.2pt2272的不同后缀功能

后缀的6和4表示有几路并行的控制通道,当采用4路并行数据时(PT2272-M4),对应的地址编码应该是8位,如果采用6路的并行数据时(PT2272-M6),对应的地址编码应该是6位。

图PT22622272编码信号波形

5.2显示数码管调试

经过一系列的调试,八英寸数码管已经可以完全实现可任意设定回答时间、抢答时间(0-999秒),时间可正计、倒计切换、清屏、显示抢答组号及分数的功能。

图5.2.1设定抢答时间、回答时间

图5.2.2抢答时间的正计/倒计

图5.2.3回答时间的正计/倒计

图5.2.4抢答组号显示

图5.2.5分数的加、减、清零及保持

6.课程建议

此门课程开的非常有意义,在以前觉得学接口什么的没有什么用处,觉得自己学的只是书本上的比较死的知识,但是通过这次实验,能够意识到一门课程只要学过了就一定能够用的上,这也是一个学习新的知识的过程,比如加深了我对高频知识的理解。

也让我理解了一个产品,他的系统的形成是一个不断优化的过程,要敢于突破,敢于创新。

通过电子实验,我们掌握应用基本理论和设计软件,设计电子电路的能力。

掌握电子电路的测试方法,熟练应用电子工程领域相关仪器、仪表和设备对电路的技术指标进行测试。

我们通过自主设计电路和软件来完成,解决一些实际问题。

而且开放性创新实验,给了我们一个完全自由发挥的平台。

在这里,我们利用所有资源实现自己的创意,提高了主动学习的积极性。

但是我觉得最好不要和学长学姐合作,容易产生依赖的心理。

并且产品的系统最好不是一方面的东西,不能直视软件方面的开发,或者只是模电知识。

7.参考文献

【1】康华光,邹寿彬.电子技术基础(数字部分)(第五版).高等教育出版社.2005

【2】康华光,邹寿彬.电子技术基础(模拟部分)(第五版).高等教育出版社.2005

【3】李朝青.单片机原理及接口技术[M].北京:

北京航空航天大学出版社.2005

【4】朱勇.单片机原理与应用技术.清华大学出版社.2006

【5】张毅刚,彭喜元等.新编MCS-51单片机应用设计(第二版).哈尔滨工业大学出版社.2006

【6】潭博学,苗江静.集成电路原理及应用.北京:

电子工业出版社.2003

【7】高峰.单片微机应用系统设计及实用技术[M].北京:

机械工业出版社.2004

【8】楼然苗,李光飞.51系列单片机设计实例.北京航空航天大学出版社.2006

【9】何书森,何华斌.实用电子线路设计速成[M].福州:

福建科学技术出版社,2006

【10】陈欢庆.电子制作理论与实践[M].浙江大学出版社.2005

【11】马淑华、王凤文、张美金.单片机原理及接口技术.北京邮电大学出版社.2005.10

【12】杨金岩,郑应强,张振仁.8051单片机数据传输接口扩展技术与应用实例.人民邮电出版社.2005

【13】王文杰 

基于逻辑数字电路的抢答器设计-毕业论文(20

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

当前位置:首页 > 高等教育 > 工学

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

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