1、无线抢答器 无线抢答器 1. 系统功能要求(1)可任意设定回答时间、抢答时间(0-999秒),时间可正计、倒计切换;(2)可显示组号,显示时间;(3)抢中或违规可自动语音播报出组号;(4)内置喇叭,声音可调节;(5)抢答时限规定:01999秒可调,答题时限规定:01999秒可调;(6)建议使用PT2262/PT2272制作。2. 系统整体结构2.1主控台框图 图2.1主控台框图2.1.1数码管显示 数码管显示采用的是74HC573锁存、ULN2803驱动显示模块,通过锁存器控制位选、段选均使用P0口,使系统简单化。2.1.2语音模块 语音模块采用较为容易控制的SYN6288模块,采用串行通信方
2、式。 2.1.3无线收发模块 无线接收模块采用315MHzDF无线收发模块配套PT2272解码 部分,形成控制命令,对显示、语音模块加以控制。 无线发送模块采用的是315MHzDF无线收发配套PT2262编码,此部分不与单片机相连。 2.1.4键盘控制键盘、拨码开关部分通过对I/O口控制,实现主控命令。2.2抢答端框图 图2.2抢答端框图 2.2.1 数码管显示 数码管显示部分采用的是74HC595实现I/O口模拟串口,ULN2803驱动显示模块,74595实现了I/O口的大节约化,仅用三个口驱动段选。 2.2.2无线收发模块无线发送模块采用的是315MHZ无线收发配套PT2262编码部分,此
3、部分不与单片机相连。无线接收模块采用315MHZ无线收发模块配套PT2272解码部分,形成控制命令。3.系统硬件电路设计 3.1系统总电路图3.1.1 主控端原理图 图3.1.2 抢答端原理图3.2无线收发模块图3.2.1无线发射模块原理图 图3.2.2无线发射模块原理图 DF无线模块的工作频率是315MHZ,采用省标谐振器SAW进行稳频,受环境温度的影响非常小,声表谐振器的频率稳定度仅次于晶体。DF无线接收模块实际上是一个超再生接收电路,这是一个非常成熟的电路。 3.3 PT2262/PT2272解码/编码芯片图3.3.1 PT2262原理图PT2262发出的编码信号是由:地址码、数据码、同
4、步码组成一个完整的码字,解码芯片接收到解码信号时,其地址码经过两次比较核对后,VT标志位才会输出高电平,相应的数据码也会变成高电平,当发射机没有按键按下的时候,PT2262不接通电源,PT2262不工作,当有按键摁下的时候,其17管脚输出经调制的串行数据信号。PT2272采用的是PT2272-M4,表示数据输出为四位的暂存性红外遥控接收芯片,采用此型号的芯片主要是为了配套语音模块的只刷新一遍,否则采用L4型号语音模块将不断刷新播报,采用四位数据输出因为四位数据输出的编码足够各种功能的组合。 3.4 74HC573、74HC595图3.4 74HC573原理图74HC573是器件的输入是和标准C
5、MOS兼容的,具有高噪声抵抗特性的8路锁存器,恰好够数码管的8路输出。74HC595是硅结构的CMOS器件,兼容低电压TTL电路,由串行输入8位并行输出的移位寄存器和一个存储器构成,因为移位寄存器和存储器是不同的时钟。因此当输出8位数据时,通过控制两个时钟,当连接数码管时中间的移位状态不会显示,只会显示移位后的状态。这也是74595相较于74164的优点。3.5 驱动芯片ULN2803 图3.5 ULN2803原理图ULN2803 属于高电压、大电流的达林顿晶体管阵列。他的驱动负载电流是500mA,驱动电压为50V。适合驱动大数码管。4.系统软件设计4.1系统软件开发环境采用KEIL开发环境,
6、对STC89C51进行控制,通过单片机开发板将程序下载到单片机中。具体步骤如下: 1、启动KEILC51。2、新建一个工程。Project菜单New Project,选择好要保存好的文件后,键入qiangda保存,接着弹出CPU的类型,选择STC89C51。3、在工程中加入文件,新建一个文件,文件菜单FileNew,我们再选择文件菜单FileSave as,弹出对话框后,我们文件名框中键入qiangda.c,这样C文件就建立好了。再把文件加入到工程中去。点击Target1前面的+号键,右键单击Source Group 1选择Add File to Group Source Group 1,选择
7、添加Add。4、Project设置:在Projectoptions for Target(target 1)output将create HEX选中,这样编译后如果程序没有问题就可以生成单片机可以识别的HEX文件。5、将程序下载到单片机中,打开STC-ISP ,选择单片机的型号,打开程序文件,选择正确的com口,下载程序,给开发板上电,当显示下载成功后,就可以实现实现相应的功能。 图4.1 52系统开发板 4.2系统主要功能的实现流程 图4.2系统流程4.3 系统主要功能实现源代码 #include#include #define uchar unsigned char#define uint
8、unsigned intsbit zhengdao=P32;/正倒计sbit qidong=P33;/启动 sbit pan=P34;/抢答时间还是回答时间sbit baiadd=P35;/百位的按键sbit shiadd=P36;/十位的按键sbit geadd=P37;/个位的按键sbit zanting=P15;/暂停sbit pan2=P17;/ 清屏#define KEY P1 /定义用来检测按键的端口sbit K0 = P11;sbit K1 = P12;sbit K2 = P13;sbit K3 = P14;/程序代码为四个抢答端sbit DUAN=P26;/定义锁存使能端口 段
9、锁存sbit WEI=P27;/ 位锁存sbit TTS_BUSY = P10; /检测SYN6288模块工作状态#define HEAD_LEN 5 /数据包头的长度#define LEN_OFFSET 2 /长度字节的偏移量(本例中长度不超过255字节,因此只使用1字节长度)#define BKM_OFFSET 4 /背景音乐命令偏移#define BKM_MAX 15 /背景音乐数量/数据包头(0xFD + 2字节长度 + 1字节命令字 + 1字节命令参数)uchar code headHEAD_LEN = 0xfd,0x00,0x00,0x01,0x00;uchar nBkm = 0x
10、00; /背景音乐编号static uchar bai2=0;shi2=0;ge2=0;/初始化static uchar bai1=0;shi1=0;ge1=0;/初始化ucha code TAB10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;static unsigned int second;int m;unsigned char text = soundu选手抢答犯规,组号 ; unsigned char text1 = soundu选手抢答成功,组号 ;unsigned char text2 = soundu选手抢答犯规,组号
11、;#define TEXT_LEN 28 / 正文长度#define NUM_POS 25#define NUM_MIN 1#define NUM_MAX 8uint nNum = NUM_MIN;static uchar counter=0; second_1=0;second_0=0;second_2=0;void delay(unsigned char m);void delayms(unsigned int i);void display();void UART_InitBaud(void);void Delay1(uint n);void BkMusic(uchar num);voi
12、d Speech(uchar *buf);void scankey2(void);void Timer0(void)interrupt 1ET0=0;TH0=0X3C;TL0=0XB0;counter+;if(counter=20)counter=0;if(zhengdao=1)second+;else second-; if(second=0|second=999)TR0=0;second_1=(second%100)/10;/shisecond_0=(second%100)%10;/gesecond_2=second/100;ET0=1;void delay(unsigned char m
13、) while(m-) unsigned char i; for(i=120;i0;i-) void delayms(unsigned int i)unsigned char a,b;for(a=0;ai;a+)for(b=0;b120;b+);void display1(void)P0=0Xfe; WEI=1; /位锁存WEI=0;P0=TABbai1;DUAN=1; /段锁存DUAN=0;delayms(2);P0=0Xfd;WEI=1; /位锁存WEI=0;P0=TABshi1;DUAN=1; /段锁存DUAN=0;delayms(2);P0=0Xfb;WEI=1; /位锁存WEI=0;
14、P0=TABge1;DUAN=1; /段锁存DUAN=0;delayms(2);P0=0Xf7; WEI=1; /位锁存WEI=0;P0=TABbai2;DUAN=1; /段锁存DUAN=0;delayms(2);P0=0Xef;WEI=1; /位锁存WEI=0;P0=TABshi2;DUAN=1; /段锁存DUAN=0;delayms(2);P0=0Xdf;WEI=1; /位锁存WEI=0;P0=TABge2;DUAN=1; /段锁存DUAN=0;delayms(2);void scankey1(void)if(pan=1)if(baiadd=0) delayms(10); if(baiad
15、d=0) while(baiadd=0); (bai1)+; if(bai1)=9) (bai1)=0; if(shiadd=0) delayms(10); if(shiadd=0) while(shiadd=0); (shi1)+; if(shi1)=9) (shi1)=0; if(geadd=0) delayms(10); if(geadd=0) while(geadd=0); (ge1)+; if(ge1)=9) (ge1)=0; else if(baiadd=0) delayms(10); if(baiadd=0) while(baiadd=0); (bai2)+; if(bai2)=
16、9) (bai2)=0; if(shiadd=0) delayms(10); if(shiadd=0) while(shiadd=0); (shi2)+; if(shi2)=9) (shi2)=0; if(geadd=0) delayms(10); if(geadd=0) while(geadd=0); (ge2)+; if(ge2)=9) (ge2)=0; void display()P0=0Xfe;WEI=1; /位锁存WEI=0;P0=TABsecond_2;DUAN=1; /段锁存DUAN=0;delay(3);P0=0Xfd;WEI=1; /位锁存WEI=0;P0=TABsecond
17、_1;DUAN=1; /段锁存DUAN=0;delay(3);P0=0Xfb;WEI=1; /位锁存WEI=0;P0=TABsecond_0;DUAN=1; /段锁存DUAN=0;delay(3);void Delay1(uint n) uchar i=112; while(n-) while(i-);/串口初始化void UART_InitBaud(void) SCON=0xD8; /晶振为11.059MHZ时,设定串口波特率为9600bit/s,方式3 PCON=0x00; TH1=0xFD; TR1=1; /串口发送数据void SendChar(uchar n) SBUF = n; w
18、hile(TI=0); /发送数据 TI=0; /背景音乐(参数为0表示关闭背景音乐)void BkMusic(uchar num) num %= BKM_MAX + 1; nBkm = num;/发声程序void Speech(uchar *buf) uchar i = 0; /循环计数变量 uchar xor = 0x00; /校验码初始化 uchar ch = 0x00; uchar len = 0x00; while(buflen+);/当数组buf的第len个值的内容不为0时执行下列程序/发送数据包头(0xFD + 2字节长度 + 1字节命令字 + 1字节命令参数) for(i =
19、0; i HEAD_LEN; i+) if(i = BKM_OFFSET) ch = nBkm 3; /写入背景音乐 else if(i = LEN_OFFSET) ch = len + 3; else ch = headi; xor = ch; SendChar(ch); Delay1(1); /发送文字内容 for(i = 0; i len; i+) xor = bufi; SendChar(bufi); Delay1(1); SendChar(xor); /发送校验位 Delay1(10); while(TTS_BUSY); /等待语音结束 Delay1(10);/键扫描void sca
20、nkey2(void) uchar k; KEY = 0xff; /置位键端口以读取键值 if(KEY != 0xff) /如果有键按下 k = KEY; /取键值 Delay1(1); /消抖 if(K0 = 1) nNum = 1; else if(K1 = 1) nNum = 2; else if(K2 = 1) nNum = 3; else if(K3 = 1) nNum = 4; else return; sprintf(text + NUM_POS,%1d,nNum); /修改选手号码 Speech(text); /合成语音 Delay1(1000); /抢答间隔 return;
21、void main()TMOD=0X21;TH0=0X3C;TL0=0XB0;ET0=1;EA=1;UART_InitBaud(); /初始化串口为 9600bpsDelay1(200); BkMusic(4); /背景音乐4Delay1(200);Speech(t5欢迎大家参加竞赛,请3选手们做好准备); /欢迎词BkMusic(0); /关闭背景音乐Delay1(1000)while(1)if(qidong=1) if(zanting=0) TR0=1; for(m=0;m28;m+) textm=text1m; scankey2(); display(); if(K0=1&K1=0&K2
22、=0) P0=0Xf7; WEI=1; WEI=0; P0=0X06; DUAN=1; DUAN=0; delayms(4); else if(K0=0&K1=1&K2=0) P0=0Xf7; WEI=1; WEI=0; P0=0X5B; DUAN=1; DUAN=0; delayms(4); else if(K0=0&K1=0&K2=1) P0=0Xf7; WEI=1; WEI=0; P0=0X4F; DUAN=1; DUAN=0; delayms(4); else if(zanting=1) TR0=0;second=100*(bai2)+10*(shi2)+(ge2); else if(
23、qidong=0) for(m=0;m28;m+) textm=text2m; scankey2(); second=100*(bai1)+10*(shi1)+(ge1); TR0=0; if(pan2=1) scankey1(); display1(); else P0=0Xff; WEI=1; WEI=0; P0=0X00; DUAN=1; DUAN=0; if(K0=1&K1=0&K2=0) P0=0Xf7; WEI=1; WEI=0; P0=0X06; DUAN=1; DUAN=0; delayms(4); else if(K0=0&K1=1&K2=0) P0=0Xf7; WEI=1;
24、 WEI=0; P0=0X5B; DUAN=1; DUAN=0; delayms(4); else if(K0=0&K1=0&K2=1) P0=0Xf7; WEI=1; WEI=0; P0=0X4F; DUAN=1; DUAN=0; delayms(4); 5.系统测试 5.1无线模块的测试 图5.1地址码和数据码的脉冲表示其中,Ta=8个时钟宽度,Tb=1个时钟宽度,Tc=2个字码长度。地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“F”也就是地址码的“悬空”。 图5.2 pt2272的不同后缀功能后缀的6和4表示有几路并行的控
25、制通道,当采用4路并行数据时(PT2272-M4),对应的地址编码应该是8位,如果采用6路的并行数据时(PT2272-M6),对应的地址编码应该是6位。图 PT2262 2272 编码信号波形 5.2显示数码管调试经过一系列的调试,八英寸数码管已经可以完全实现可任意设定回答时间、抢答时间(0-999秒),时间可正计、倒计切换、清屏、显示抢答组号及分数的功能。 图5.2.1 设定抢答时间、回答时间 图5.2.2 抢答时间的正计/倒计 图5.2.3 回答时间的正计/倒计 图5.2.4抢答组号显示 图5.2.5分数的加、减、清零及保持6.课程建议 此门课程开的非常有意义,在以前觉得学接口什么的没有什
26、么用处,觉得自己学的只是书本上的比较死的知识,但是通过这次实验,能够意识到一门课程只要学过了就一定能够用的上,这也是一个学习新的知识的过程,比如加深了我对高频知识的理解。也让我理解了一个产品,他的系统的形成是一个不断优化的过程,要敢于突破,敢于创新。通过电子实验,我们掌握应用基本理论和设计软件,设计电子电路的能力。掌握电子电路的测试方法,熟练应用电子工程领域相关仪器、仪表和设备对电路的技术指标进行测试。我们通过自主设计电路和软件来完成,解决一些实际问题。而且开放性创新实验,给了我们一个完全自由发挥的平台。在这里,我们利用所有资源实现自己的创意,提高了主动学习的积极性。但是我觉得最好不要和学长学
27、姐合作,容易产生依赖的心理。并且产品的系统最好不是一方面的东西,不能直视软件方面的开发,或者只是模电知识。 7参考文献【1】康华光,邹寿彬.电子技术基础(数字部分)(第五版).高等教育出版社.2005【2】康华光,邹寿彬.电子技术基础(模拟部分)(第五版).高等教育出版社.2005【3】李朝青单片机原理及接口技术M北京:北京航空航天大学出版社.2005【4】朱勇单片机原理与应用技术清华大学出版社.2006【5】张毅刚,彭喜元等新编MCS-51单片机应用设计(第二版) 哈尔滨工业大学出版社.2006【6】潭博学,苗江静集成电路原理及应用北京:电子工业出版社.2003【7】高峰. 单片微机应用系统设计及实用技术M.北京:机械工业出版社.2004【8】楼然苗,李光飞51系列单片机设计实例北京航空航天大学出版社.2006 【9】何书森,何华斌.实用电子线路设计速成.福州:福建科学技术出版社,2006 【10】陈欢庆. 电子制作理论与实践M.浙江大学出版社.2005【11】马淑华、王凤文、张美金.单片机原理及接口技术.北京邮电大学出版社.2005.10【12】杨金岩,郑应强,张振仁8051单片机数据传输接口扩展技术与应用实例人民邮电出版社.2005【13】王文杰基于逻辑数字电路的抢答器设计-毕业论文(20
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1