基于单片机的四路抢答器设计资料 - 图文

更新时间:2023-11-10 20:29:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于单片机的四路抢答器

设计资料

第一章 任务要求

1.1任务简介

13.3 基于MCS-51单片机的四路抢答器

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。本节介绍一种利用8951单片机作为核心部件进行逻辑控制及信号产生的四路抢答器。

本设计的题目是四路抢答器,本设计论文是以单片机为核心设计的。

1.2任务要求

1,设计4组参赛的抢答器,每组设置一个抢答按钮.

2,电路具有第一抢答信号鉴别功能,抢答成功后,显示组别,发出声音.

3,设置记分电路,每组开始预置0分,抢答后由单片机记分,答对一次加1分.

1.3任务目的

一,了解单片机的工作原理;

二,掌握多位共阳数码管动态扫描显示驱动及编码;

三,掌握AT89S51的工作原理;

四,掌握用C语言的设计思想;

五,掌握原理图及及工作原理;

六,通过思四路抢答器语言设计,提高团队合作精神;

第二章 方案论证与分析

2.1抢答器的设计分析

传统的抢答器都是静态扫描,受现场环境影响很大.本文介绍的4路无线抢答器,是以89s51单片机为核心制成的,其功能为连续可调的0到9位的加分 ,抢答有效有蜂鸣铃声并显示组别00分,答对为加1分 ,由主持人手动复位 ,所以此抢答操作方便,在很多的场所都可以使用,并且给人的视觉效果非常好.

123456DD12345678S1S2SW-PBS3SW-PBS4SW-PBSW-PBP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.739383736353433322122232425262728R1R2200R3200R4200R5200R6200R7200R8200200R9R104.7kR114.7kR124.7kR134.7kR144.7kR154.7kR164.7k4.7kbit9bit10bit11bit12bit13bit14bit15bit16bit17bit18bit19bit20bit21bit22bit23bit24bit92bit16010bit11bit182bit173bit13411bit15bit196abcdegdpv4v3v2egdbcdpegdbcdpegdbcedpgdbcdpabcdegdpabcdpeav1DPYav4v3v2v1aaa101112131415RXDTXDINT0INT1T0T1EA/VPX1X2RESETRDWR89S51bit92bit16010bit11bit182bit173bit13411bit15bit196DPYagdbcdpe12bit1bit2bit312CQ11Cbit41145bit54bit65bit7bit8agbcdpegdgdbcedpdU2LED7-4U3LED7-4Y1CRYSTALB31191891716ALE/PPSEN3029VCCBQ?PNPbit17Q1PNPbit18Q2PNPbit19Q3PNPbit20Q4PNPbit21Q5PNPbit22Q6PNPbit23Q7PNPbit24Q8PNPLS?bit1bit2bit3bit4bit5bit6bit7bit8SPEAKERATitleASizeBDate:File:12345NumberRevision7-Jan-2010 H:\\CAD\\CAD考试\\16.DdbSheet of Drawn By6

13.3 基于MCS-51单片机的四路抢答器

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。本节介绍一种利用8051单片机作为核心部件进行逻辑控制及信号产生的四路抢答器。

13.3.1 硬件设计

硬件电路应能完成以下功能:参加竞赛者对主持人提出的问题要在最短的时间内作出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示此竞赛者的号码并进行声音提示,同时电路将其他抢答按键封锁,使其不起作用。若有人在可以抢答之前按键,应该有违规提示。电路应该具有倒计时功能,倒计时时间可以设置并显示,在规定时间内没有人抢答则本题作废。回答完或超时后,由主持人将所有按键恢复,重新开始下一轮。

完成上述功能的电路包括时间设定开关、声光显示、按键控制以及按键锁存等部分,如图13.6所示。 各电路模块的功能如下。

· 单片机部分:通过读取P3.7~P3.3的状态决定倒计时时间;通过读取P1.3~P1.0的状态读取按键情况;通过P2.4~P2.2控制显示模块以显示按键者的号码和倒计时所剩时间;通过P0.1控制蜂鸣器。

· 时间设定模块:以拨码开关U3作为倒计时时间的选择信号。若P3.7通过U3接地,倒计时时间为10s;若P3.6通过U3接地,倒计时时间为8s,若P3.5通过U3接地,倒计时时间为6s,若P3.4通过U3接地,倒计时时间为4s。判断时P3.7优先级最高,P3.4优先级最低。

· 按键模块:KEY1~KEY4的信息可以直接传输到P1.3~P1.0。单片机一旦检测到有按键按下,立即将P1.4置为低电平,将按键信息锁存,以免后来的按键对其产生影响。KEY1~KEY4为抢答按键,KEY5为主持人控制按键。

· 数码管显示模块:数码管显示模块由一片MAX7219和3个数码管组成。其中U5用来显示按键者的编号,U6、U7在倒计时时显示还有多长时间,如果有人犯规抢答,U6~U7显示“FF”。

· 蜂鸣器模块:蜂鸣器在主持人发出可以抢答信号、有人按下抢答按键和倒计时时间到等3种情况下发出蜂鸣声。

13.3.2 程序设计

抢答器工作过程如下。

}

void isr_t0(void) interrupt 1 //T0中断服务函数 {

TH0=TIMER_HBYTE; //定时时间为50ms TL0=TIMER_LBYTE;

intr_counter--; //中断次数 if(intr_counter==0) //倒计时时间到 {

time_over_flg=1; //设置超时标志 TR0=0;//禁止T0运行 } }

void delay_20ms(void) //延时20ms {}

void max7219_reset(void) //初始化MAX7219 {}

void write_reg(uchar reg,uchar sdata) //写入命令 {}

void write_digit(uchar digit,uchar number) //显示数字 {}

void send_data(uchar byte) //MAX7219的驱动程序 {}

13.3 基于MCS-51单片机的四路抢答器

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。能够实现抢答器功能的方式有多种。

曾经咱们用的是可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。

本次我们单片机作为核心部件进行逻辑控制及信号产生的四路抢答器。

13.3.1 硬件设计

硬件电路应能完成以下功能:参加竞赛者对主持人提出的问题要在最短的时间内作出判断,并按下抢答按键回答问题。

当第一个人按下按键后,则在显示器上显示此竞赛者的号码并进行声音提示,同时电路将其他抢

答按键封锁,使其不起作用。若有人在可以抢答之前按键,应该有违规提示。电路应该具有倒计时

功能,倒计时时间可以设置并显示,在规定时间内没有人抢答则本题作废。回答完或超时后,由主持人将所有按键恢复,重新开始下一轮。

完成上述功能的电路如图13.6所示。 各电路模块的功能如下。

· 单片机部分:通过读取P3.7~P3.3的状态决定倒计时时间;通过读取P1.3~P1.0的状态读取按键情况;通过P2.4~P2.2控制显示模块以显示按键者的号码和倒计时所剩时间;通过P0.1控制蜂鸣器。

· 时间设定模块:以拨码开关U3作为倒计时时间的选择信号。若P3.7通过U3接地,倒计时时间为10s;若P3.6通过U3接地,倒计时时间为8s,若P3.5通过U3接地,倒计时时间为6s,若P3.4通过U3接地,倒计时时间为4s。判断时P3.7优先级最高,P3.4优先级最低。

· 按键模块:KEY1~KEY4的信息可以直接传输到P1.3~P1.0。单片机一旦检测到有按键按下,立即将P1.4置为低电平,将按键信息锁存,以免后来的按键对其产生影响。KEY1~KEY4为抢答按键,KEY5为主持人控制按键。

· 数码管显示模块:数码管显示模块由一片MAX7219和3个数码管组成。其中U5用来显示按键者的编号,U6、U7在倒计时时显示还有多长时间,如果有人犯规抢答,U6~U7显示“FF”。

· 蜂鸣器模块:蜂鸣器在主持人发出可以抢答信号、有人按下抢答按键和倒计时时间到等3种情况下发出蜂鸣声。

13.3.2 程序设计

抢答器工作过程如下。

· 首先主持人选定倒计时时间,单片机扫描U3以获取此信息。如果没有人为设置,默认为10s。

· 在按下抢答按键之前,3个数码管全部显示“0”。

· 按下抢答按键之后,蜂鸣器响一声,单片机开始倒计时,数码管U6和U7显示倒计时时间,数码管U5显示“0”。

· 如果有竞赛者率先在规定时间内按键,则蜂鸣器响一声,数码管U5显示该竞赛者的编号,U6和U7停止更新。

· 如果在主持人未按下抢答按键的时候有选手抢答,则此时蜂鸣器响一声,U5显示犯规者的编号,U6和U7显示“FF”以指示有人犯规。

· 如果在规定时间内无人按键,则U5显示“0”,U6和U7显示“EE”以指示无人按键。

· 无论是在规定时间内有人按键、在规定时间内无人按键或者是有人犯规,都需要主持人再按一下抢答按键,之后单片机根据U3状态决定倒计时时间,3个数码管全部显示“0”,恢复到初始状态,准备下一轮抢答。 程序流程如图13.7所示。

图13.7 四路抢答器程序流程图

程序如例13-4所示。

【例13-4】用8051单片机控制的四路抢答器程序。限于篇幅,这里没有给出显示程序,参见12.2.2节中例12-5。

#include

typedef unsigned char uchar; sbit LE=P1^4;

sbit KEY5=P3^7;

sbit DIN=P2^4; //定义P2.5控制MAX7219的串行数据输入端 sbit LOAD=P2^3; //定义P2.4控制MAX7219的载入使能端 sbit CLK=P2^2; //定义P2.3控制MAX7219的时钟信号 sbit BUZ=P0^1;

#define TIMER_HBYTE -50000/256 //定时50ms

#define TIMER_LBYTE -50000%6

uchar intr_counter; //设定的时间用需要产生的中断次数表示 uchar bdata byte; //在bdata区定义一个变量,便于位操作 sbit byte_7=byte^7;

bit foul_flg; //是否有人犯规标志 bit time_over_flg; //是否倒计时超时标志

bit key_flg; //是否有人在规定时间内按键标志 void max7219_reset(void); //初始化MAX7219 void write_reg(uchar,uchar); //向控制寄存器写数据 void write_digit(uchar,uchar); //向字型寄存器写数据 void send_data(uchar); //底层的硬件驱动

uchar set_time(void); //函数功能:设置倒计时时间 bit control_key(void); //函数功能:检测主持人是否按键 uchar get_key_num(void); //函数功能:检测哪个参赛者按键 void display_time(void); //函数功能:显示倒计时剩余时间 void foul_handle(uchar); //函数功能:犯规处理 void key_handle(uchar); //函数功能:按键处理 void time_over_handle(void); //函数功能:超时处理

void init_t0(void); //函数功能:初始化T0定时器

void delay_20ms(void); //函数功能:延时20ms,按键去抖动 void buz_on(void) //函数功能:蜂鸣器响500ms void main(void) {

uchar key_number;

max7219_reset(); //初始化MAX7219 while(1) {

foul_flg=0; //设置初始环境

time_over_flg=0;

TR0=0; //禁止T0运行

write_digit(DIGIT0,LED_code[0x0]);//上电后3个数码管全部显示0 write_digit(DIGIT1,LED_code[0x0]);

write_digit(DIGIT2,LED_code[0x0]);

while((control_key()==1)&&(foul_flg==0)) //如果主持人没有按键

{

key_number=getkey_num(); //检查是否有人犯规 if(key_number==0) //如果没有,进行下一次循环 continue;

else //如果有人犯规 {

foul_handle(); //犯规处理 foul_flg=1; //设置犯规标志 }

}

if(foul_flg==1) //如果有人犯规

{

while(control_key()==1); //等待主持人按键以进入下一轮 continue; //主持人按键后进入下一轮

}

else //如果没有人犯规,必定是主持人允许答题 {

intr_counter=set_time(); //读取倒计时时间 init_t0(); //定时器T0开始计时 buz_on(); //蜂鸣器响500ms

while(time_over_flg==0&&key_flg==0) {

key_number=getkey_num(); //在规定时间内检查是否有按键 if(key_number!=0) //如果有

{

key_handle(key_number);//按键处理

key_flg=1; //设置有人按键答题标志 TR0=0; //停止T0运行 }

else //否则循环检测 {

display_time(); //并显示剩余时间 continue; }

}

if(key_flg==1) //如果有人在规定时间内答题 {

while(control_key==1); //等待主持人按键以进入下一轮 continue; //主持人按键后进入下一轮 }

else //倒计时时间到仍无人按键

{

time_over_handle(); //超时处理

while(control_key==1); //等待主持人按键以进入下一轮 continue; //主持人按键后进入下一轮 } } }

}

bit control_key(void) //检测主持人是否按键

{

if(KEY5==1) //如果KEY5为高,说明没有按键 return 1; //返回1,表示没有按键动作

else //如果KEY5为低,说明可能有按键动作 delay_20ms(); //延时20ms,去抖动

if(KEY5==1) //如果20ms后KEY5变为高电平,是干扰 return 1; //返回1

else //如果20ms后仍为低电平,确认有按键动作 return 0; //返回0

}

uchar set_time(void) //根据设置决定倒计时时间 {

uchar intr_counter;

if(P3^6==0) intr_counter=200; //10s else if(P3^5==0) intr_counter=160; //8s else if (P3^4==0) intr_counter=120; //6s

else if (P3^3==0) intr_counter=80; //4s

else intr_counter=200; //如果没有设置,默认为10s return intr_counter; }

uchar get_key_num() //检测哪个参赛者按键 {

uchar key_state=0;

key_state=P1;

key_state&=0x0f; //读取P1端口的低4位 if(key_state==0x0f) //若均为高电平,说明无人按键 return 0; //返回1 else

{

key_state^=0xff;

if(key_state&0x01) return 1; //如果KEY1被按下,返回1

else if(key_state&0x02) return 2; //如果KEY2被按下,返回2 else if(key_state&0x04) return 3; //如果KEY3被按下,返回3 else return 4; //如果KEY4被按下,返回4 }

}

void foul_handle(uchar key_number) //犯规处理 {

write_digit(DIGIT0,key_number); //显示犯规者号码 write_digit(DIGIT1,0x0f); //显示“FF” write_digit(DIGIT2,0x0f);

buz_on(); //蜂鸣器响 }

void time_over_handle(void) //超时处理 {

write_digit(DIGIT0,0x0); //显示“0” write_digit(DIGIT1,0x0e); //显示“EE” write_digit(DIGIT2,0x0e);

buz_on(); //蜂鸣器响

}

void key_handle(uchar key_number) //按键处理 {

write_digit(DIGIT0,key_number); //显示按键者号码 buz_on();

}

void display_time(void) //显示倒计时剩余时间 {

uchar number;

write_digit(DIGIT0,LED_code[0]);

number=int_counter/20; //秒数

write_digit(DIGIT1,number/10); //秒数的十位数字 write_digit(DIGIT2,number); //秒数的个位数字 }

void buz_on(void) {

uchar i;

BUZ=0; //开蜂鸣器 for(i=1;i<=25;i++) //延时500ms delay_20ms;

BUZ=1; //关蜂鸣器 }

void init_t0(void)

{

TMOD=0x01; //T0选择工作方式1,16位定时器 TH0=TIMER_HBYTE; //定时时间为50ms TL0=TIMER_LBYTE;

EA=1; //使能CPU中断 ET0=1; //使能T0溢出中断 TR0=1; //T0运行

}

void isr_t0(void) interrupt 1 //T0中断服务函数 {

TH0=TIMER_HBYTE; //定时时间为50ms TL0=TIMER_LBYTE;

intr_counter--; //中断次数 if(intr_counter==0) //倒计时时间到 {

time_over_flg=1; //设置超时标志 TR0=0;//禁止T0运行 } }

void delay_20ms(void) //延时20ms {}

void max7219_reset(void) //初始化MAX7219 {}

void write_reg(uchar reg,uchar sdata) //写入命令 {}

void write_digit(uchar digit,uchar number) //显示数字 {}

void send_data(uchar byte) //MAX7219的驱动程序 {}

抢答器的设计 一,设计要求 1,画出电路原理图; 2,元件及参数选择;

3,SCH文件生成与打印输出; 二, 技术指标

1,设计6组参赛的抢答器,每组设置一个抢答按钮.

2,电路具有第一抢答信号鉴别与锁存功能,抢答成功后,显示组别,发出声音.

3,设置记分电路,每组开始预置100分,抢答后由主持人记分,答对一次加10分,答错一次减10分. 4,设置犯规电路,对提前抢答或超时抢答的组别发出声音.

抢答器的设计

摘要:传统的抢答器都是导线布线,受现场环境影响很大.本文介绍的六路无线抢答器,是以8051单片机为核心制成的,其功能为连续可调的0到9秒的 ,抢答有效有高频铃声并显示组别,抢答无效有低频铃声也是显示组别,并且有计分功能,预置100分,答对为加10分,答错为减10分,由主持人手动复位,加减分,所以此抢答操作方便,在很多的场所都可以使用,并且给人的视觉效果非常好. 关键字:抢答器,智能抢答器,无线编解码,单片机. 一,引言

抢答器广泛用于电视台,商业机构及学校,为竞赛增添了刺激性,娱乐性,在一定程度上丰富了人们的业余生活. 二,总体设计方案 1.设计思路

本课题我主要采用单片机电路来实现的.主要设计思路是:在主持人下达命令后,能够准确判断出第一抢答信号并将其锁存,同时将输入信号封锁,使其它抢答无效.主持人没有下达命令时抢答视为犯规.并显示犯规组别,发出低频铃声,抢答成功后对第一信号译码,显示组别并发出高频铃声.定时电路由设置的时间为9秒.计分电路有三个数码管显示.下次抢答时必须由主持人再次操作清除和开始状态开关. 2.总体设计框图

图1总体框图 3.设计原理分析

整个流程过程主要四大块:显示部分,计时部分,预置部分,控制部分.电源用正5伏,8051主控制器,当主持人按下复位键后,定时器开始计时,在0~9秒的时间内如果没有人抢答则为弃权,如果有人按键定时器停止计时间,自动显示组别并发出高频铃声,如果答对主持人按键加10分,答错则减10分,然后按复位键开始下一轮抢答.

三,主要元件介绍分析

1.8051芯片:8051芯片含有40个管脚,其中32个管脚是P0,P1,P2,P3,四个I/O接口,两个时钟电路引脚XTAL1,XTAL2,四个控制引脚RST, ALE,PSEN和EA,一个电源引脚和一个接地引脚.其中XTAL1,XTAL2引脚用来控制时钟电路,RST是复位信号输入端,当此输入端保持两个机器周期的高电平时,就可以完成复位操作,ALE端是地址锁存允许信号端,PSEN程序存储允许输出信号端,EA外部程序存储器地址允许输入端.

2.74LS373:74LS373含有20个接口,8个输入端,8个输出端,一个电源接口和一个接地口,LE和OE接口.

3.数码管:数码管有8个输入接口和一个共阴极端,8个输入端分别接A,B,C,D,E,F,G七个显示管和一个小数点端DP. 图2数码管

4.扬声电路:该电路由一个作为驱动作用的三极管,一个电阻和一个喇叭组成.

5.计分电路:该集成电路具有\清零\预置数,加计数和减计数四个功能.进行预置时,在P0口输入100,当抢答成功的时候手动加10分,不成功时候减10分.当需要加分时,按键使P0口输入高电平,在程序寄存器中送入10,则显示器个位进1,显示加10分.当需要减分的时,按键使P0口输入低电平在程序寄存器中送入10,则显示器十位减10分,则显示少10分. 四,程序介绍

1.定时整定:复位键复位以后,处理器收到整定时间的信号,这样给片内用于定时设置的单元连续的加1操作,其过程的状态显1位显示器显示,当断开整定开关程序转入下一步的访问.

2.组别显示:当有人抢答时,则停止定时显示组别,抢答有效发出高频铃声(输出2KHZ脉冲),无效为低频铃声(输出为1KHZ脉冲),此处用了一个键操作程序,还有一个脉冲信号输出程序.

3.加减分程序:先预置100分,若抢答成功,主持人按键加10分,若回答错误则减10分,若犯规则执行显示组别,发出低频铃声.

4.消噪子程序:以防止误动作,查询得到组别号码,暂存于单片机内指定单元,同时完成下述操作:关闭定时钟,封闭抢答查询,以保证以后 抢答无效. Y N Y N Y N Y N

图3程序流程图 五,源程序清单: ORG 0000H AJMP MAIN ORG 000BH AJMP MAIN ORG 3000H

MAIN:MOV SP,#2FH MOV B,#5AH ;中断90次 MOV TOMD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 SETB ET0 SETB EA SJMP $

RE: MOV TL0,#0B0H MOV TH0 #3CH DJNA B,LOOP CLR TR0

LOOP: SETB RESET LJMP MAIN ORG 2000H SETB TOMD MOV TMOD #01H CPL P0

MOV DPTR,#7F04H ;把地址送到DPTR MOV A,#0BH ;送10次循环 MOV @DPTR,A

INC DPTR MOV A,#40H MOV @DPTR,A MOVX DPTR,#7F00H RESET ORG4000H

MOV A,#00H ;向数据输出输入口送0 MOV SUBF,A KL0: JNB TI,KL0 CLR TI

KL1: JNB P1.0,PK1 ;P1.0键是否按下 JB P1.1,KL1

PK1: ACALL D10MS ;延时10秒 JNB P1.1,KL2 KL2: ACALL D10MS JNB P1.2,KL3 KL3: ACALL D10MS KL4: JNB P1.0,KL4 JNB P1.1,KL4 JNB P1.2,KL4 MOV A,R4 ;取键号 ADD A,R3

SUBB A,#0AH ;是命令键吗 JNC KL6 ;转向命令键处理

MOV DPTR,#TABL #TABL ;字型码表初值送DPTR ADD A,#0AH ;恢复键号

MOVC A,@A+DPTR ;取字型数据 MOV R0,60H ;取显示缓冲区指针 MOV @R0,A ;将字型码入显示缓冲区 INC R0 ;显示缓冲区地址加1

CJNE R0,#60H,KD ;判断是否到最高位 MOV 60H,#58H ;保存显示缓冲区地址 KD : MOV 60H,R0

KD1: ACALL LED ;调用显示子程序 RET

KL6: MOV B,#03 ;修正命令键地址转移表指针 MUL AB

MOV DPTR,LTB ;地址表转移指令送DPTR LJMP @A+DPTR

TABL: DB CCH,86H,92H,CFH DB 80H,8FH,E0H,A4H LED: SETB P0 ;开放显示器 MOV R7,#03 ;显示位数送R7 LED1: MOV A,@R0 ;送显示数据

MOV SUBF,A LED2: JNB TI,LED2 CLR TI INC R0 DJNZ R7,LED1 CLR P0 RET ORG 5000H

MOVX @DPTR,#100H MOV A,@DPTR MOV P0,DPTR LED: SUBB P0,#10H AJMP KF 0RG 6000H

KE: MOV A,#0B6H ;输入控制字 MOVX @DPTR,A ;方式控制字输入 MOV DPTR,#7FFEH ;指向计数器 MOV A,#0D0H ;1MS周期计数值 MOV @DPTR,A MOV A,#02H

MOV @DPTR,A ;1KHZ方波输出 KF: MOV A,#0B6H MOVX @DPTR,A MOV DPTR,#7FFFH MOV A,#0E0H MOV @DPTR,A MOV A,#02H

MOV @DPTR,A ;2KHZ方波输出 ORG 7000H SETB P0.7 MOV R7,#1EH DL: MOV R6,DL1 DJNZ R7,DL CLR P0.7 RESET P0.7 ORG 8000H START: LJMP MAIN LJMP PG INT0 NOP NOP LJMP ERR LJMP PGT0 NOP NOP

LJMP ERR RESET END 总结与体会

经过近两周的努力,在老师和同学的帮助下,我基本上完成了设计任务.通过这次课程设计,我充认识到了自学的重要性,以及学以致用的道理.我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用.在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识.也使我加深了对单片机及接口技术的理解和应用.由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正.

最后衷心感谢老师的悉心指导和同学门的热心帮助! 参考文献:

[1]李朝青主编,《单片机原理与接口技术》,北京航天航空大学出版社,1994 [2]何立民主编,《单片机应用与设计》,北京航天航空大学出版社,1990 [3]邹逢兴编著,《计算机硬件技术基础实验教程》,高等教育出版社,1994

本设计是采用单片机设计的多人比赛用记分抢答器系统。它具有电路简

单、功能齐全、制作成本低、性价比高等特点,是一种经济、实用的比赛用抢答器。硬件部分主要由单片机、 74LS377锁存器、CC4511译码器、LED显示器、声音报警器、主持人操作键盘和其它基本外围电子电路组成 。软件部分采用51系列单片机通用汇编语言精心设计编写。该记分抢答器不仅能实时显示各选手当前得分情况、主持人按键指示,而且具有抢答30秒倒计时、违例抢答报警、直接对某选手进行加减分操作,并能通过串行口实时将比赛现场数据传送到计算机上显示。

关键词:单片机、抢答、记分、30秒倒记时、违例抢答报警

目 录

前 言 1

第一章 总体方案设计 2

1.1 提出方案 2

1.2 方案论证 3

1.3 方案选择 4

第二章 抢答器硬件部分设计 5

参考资料:http://

2.1 振荡电路 5

2.2 复位电路 5

2.3 抢答电路 6

2.4 主持人键盘操作电路 6

2.5 选手得分与指示牌译码显示电路 7

2.6 报警电路 8

2.7 主要器件介绍 9

第三章 单片机与PC机的通讯 11

3.1 硬件连接电路 11

3.2 单片机与PC机串口通信软件设计 11

第四章 PC机接收显示数据 14

4.1 PC机接收显示数据 14

4.2 计算机接收数据分析 15

4.3 扩展部分 15

第五章 软件部分 16

5.1 单片机内部数据存储单元分配 16

5.2 加减子程序 16

5.3 选手子程序 18

5.4 “开始”键子程序 18

5.5 “数字”键子程序 19

5.6 “确定”键子程序 21

5.7 “抢答按键”扫描子程序 23

5.8 指示牌和各选手得分显示子程序 25

5.9 数据发送PC子程序 26

5.10 主持人“键盘”扫描子程序 28

5.11 延时子程序 30

5.12 30秒倒记时子程序 31

5.13 主 程 序 32

第六章 系统功能与说明 35

6.1 系统功能 35

6.2 系统可扩展性 36

第七章 总 结 37

参考文献 38

附录一 程序清单 39

附录二 总电路图 48

附录三 外文文献翻译 49

www.ybzsz.cn/cjy/521.doc

供四人用的智力竞赛抢答器装置线路,用以判断抢答优先权。它有四部分构成:图中F1为四D触发器74LS175,它具有公共置0端和公共CP端;F2为双4输入与非门74LS20,一块芯片中有两个独立的与非门;F3是由74LS00组成的多谐振荡器,在74LS00的一块芯片中有四个独立的与非门;F4是由74LS74组成的四分频电路,F3、F4组成抢答电路中的CP时钟脉冲源,抢答开始时,由主持人清除信号,按下复位开关S,74LS175的输出Q1~Q4全为0,所有发光二极管LED均熄灭,当主持人宣布“抢答开始”后,首先作出判断的参赛者立即按下开关,对应的发光二极管点亮,同时,通过与非门F2送出信号锁住其余三个抢答者的电路,不再接受其它信号,直到主持人再次清除信号为止. 优先判决电路是用来判断哪一个预定状态优先发生的电路,如判断知识竞赛中谁先抢答,K1,K2,K3,K4为抢答人按钮,S为主持人复位按钮。当无人抢答时,K1-K4均未按下,D1—D4菌为低电平,在555电路的时钟脉冲作用下,74LS175的输出端Q1—Q4均为零,LED发光极管不亮,74LS20输出为低电平。蜂鸣器不发声。当有人抢答时,例如,K1被按下时,D1输入端为高电平,在时钟脉冲上升时,Q1翻转为1,对应的LED发光二极管亮。同时Q1非=0,使74LS20输出为1,蜂鸣器发声。74LS20输出经74LS00反相后变为低电平,将

脉冲封锁,此时74LS175的输出不在变化,其他的抢答者再按下按钮也不起作用了,从而实现了优先判决。若要清楚,则要主持人按下S按钮完成,并为下一次抢答做好准备。然后下面就进入了抢答时间倒计时,时间为100秒完成后抢答者的灯自动熄灭,同时报警器发声。这就完成了整个抢答过程。

[目录]

一、设计目的 二、设计要求 三、设计方案 四、设计器材 五、设计原理

六、设计电路的组成与各部分的功能 七、设计调试

八、Protel99se软件介绍 九、设计体会

十、主要参考文献

[原文]

一、设计目的

1.学习数字电路中D触发器,分频电路,多谐振荡器,CP时钟脉冲源等单元电路的综合运用。

2.熟悉智力竞赛抢答器的工作原理。

3.了解简单数字系统设计,调试及故障排除方法。 二、设计要求

1.设计一个可容纳四个人参赛的数字式抢答器,具有1抢答优先权。每组设一个按纽,供抢答使用。

2.抢答器具有第一信号鉴别和锁定功能,在主持人的两次复位的时间间隔内,使除第一抢答者外的按钮不起作用。

3.设置一个主持人“复位”按纽,他在固定的时间间隔操作复位按纽。

4. 主持人复位后,开始抢答,第一位号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出音响。

5.设置一个计分电路,每组开始预置100分,由主持人操纵,答对一次加10分,答错一次减10分。

6.设置犯规电路,对提前抢答和超时答题的组别鸣喇叭示警,并由组别显示电路显示出犯规组别,并切断其电路。要求回答问题时间为30秒,并以倒计时形式显示,若超时就切断其电路。

7.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答 三、设计方案

1.此设计问题的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到信号后将输入封锁,使其它组的抢答信号无效。 2 .形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,用第一抢答信号控制一个具有2种工作频率交替变化的音频振荡器工作,推动扬声器发出2种笛音音响。

3. 计分电路采用十进制加/减计数器、数码管显示,由于每次都是加/减10分,

所以个位始终为零,只要十位、百位进行加/减运算即可。

4. 倒计时电路由脉冲产生器(555定时器)和两个十进制计数器(74LS192)及两个译码器(74LS48)及显示器组成组成。主持人复位开始时,脉冲信号送入计数器,开始倒计时并显示在显示屏上。 ......

[参考资料]

(1)這部分電路要求將編碼電路送入8421碼,譯為十進制數(對應各個搶答者的編號)並驅動七段數碼顯示管顯示出答題者的編號。CD4511是一塊BCD-十進制譯碼/驅動器,並帶有鎖存端口。其引腳排列圖如圖所示:

CD4511引腳排列圖:

(2)顯示電路如下:

4.控制電路

1.這部分電路的作用完成三個任務:一是分辨出選手按鍵的先後,並鎖存優先搶答者的編號,同時譯碼顯示電路顯示編號;二是使其他選手按鍵操作無效;三是防止提前按鍵。 2.控制電路圖

按下未按下“開始”按鈕前,CD4511BLANKING引腳為低電平,CD4511不工作,可防止搶答者提前按鍵。當“開始”按下後,當所有搶答者開關均未按下時,鎖存器輸出全為低電平,該信號作為鎖存器使能端LD的控制信號,使鎖存器處于等待接收觸發輸入狀態;當任一開關按下時,輸出信號中必有一路為高電平,經邏輯或運算後U1A輸出為高電平。一但有高電平輸入,不管另一輸入端狀態如何,輸出保持高電平不變,這個電平控制CD4511鎖存端使其他按鍵操作無效。當搶答完成後,按下“清除”按鈕強行使U1B輸出置零,CD4511鎖存解除,開始新一輪搶答。

5.蜂嗚器發聲電路

該電路主要負責當有搶答信號輸入時,SP發出聲音以提醒其它人已經有人先搶答了。用集成555定時器組成多諧振蕩器。當電路剛接通時,由于電容C1上的電壓不會突變,故IC1-2腳為低電平(0V),導致3腳輸出高電平。

當電源經R1、R2對C1充電到Vc≥2/3Vcc時,OUT腳輸出由高變低,放電管(7腳內的VT23)導通,電容C1經R2和IC1-7腳內導通的VT23進行放電,當Vc≤1/3時,OUT腳輸出有低變高,電容器C1再次充電。

上述過程周而複始,從而就形成了振蕩,産生的脈衝信號從OUT腳供使用。

NE555振蕩電路的有關計算如下:

(1)充電時間t充

t充=(R1+R2)*C1*ln(

0.693(R1+R2)*C1=0.693*(12K+5.1K)*1uF≈11.85S

)≈

(2)放電時間t放

t放=R2*C1*ln(

)≈0.693R2*C1=0.693*5.1K*1uF≈3.53S

(3)振蕩周期T

T=t 充+t放≈0.693(R1+2R2)*C1=15.38S (4)占空比DY

DY=t充/T=(R1+R2)/(R1+2R2)=77%

五、完整電路原理圖和仿真圖

(1)原理圖

(2)仿真圖如下:

六、元器件選擇 七、電路仿真調試

在完成電路的初步設計後,再對電路進行仿真仿真調試,目的是為了觀察和測量電路的性能指標並調整部分元器件參數,從而達到各項指標的要求。

(1)PCB圖設計與生成

「1」 由仿真電路直接生成網絡表;

「2」 調用Protel 99 se PCB,並進行元器件合理布局;

「3」 調用網絡表(由于使用了不同的EDA軟件,元件封裝可能會有很多不同之處,這就需要自己調整),並自動布線;自動布線好了以後還要進行人工調整以達到最佳效果. 「4」 PCB圖的打印輸出。

「5」熱轉印.制作電路板.

(2)電路焊接與裝配;元器件老化與抽樣檢測;元器件預處理;基于PCB板的元器件焊接與電路裝配。

(3)實際電路測試與改進 選擇測量儀表與儀器,對電路進行實際測量與調試,調整電路參數,並解決存在的問題或電路故障等。 八、心得體會

通過這次設計,我對數字電路設計中的邏輯關系、分壓關系、拉電流控制等有了一定的認識。同時也對軟件的靈活應用有了更好的掌握. 附:

由于此設計使用了不同的EDA軟件,元件封裝可能會有很多不同之處,而且布線時也涉及很多處的調整,這裏就不多羅列網絡表了. 本文所有內容均可在http://hi.http://m.wodefanwen.com//liyanya中查閱. 技術資料下載www.liyanya.ic37.com 歡迎你的光臨! 參考PCB:

3D:

最近有不少網友提到元件清單的事.呵呵,你們自己也可以列一下嘛.

我急急忙忙列了一下,你們自己對一下看看有沒有少什麼. 輕觸開關:5個 IN4007 :6個 電阻20K :6個 電阻330 :8個 電阻12K :1個 電阻51K :1個 電阻20 :1個 電容1uF :1個 電容103 :1個 9013 :1個 蜂嗚器 :1個 50K可調 :1個 CD4001 :1片 CD4511 :1片 NE555 :1片 數顯管 :1個 PCB板子 :1塊

[1]谢自美. 电子线路设计设计测试(第二版)[M]. 武昌:华中科技大学出版社.2000

本文来源:https://www.bwwdw.com/article/7j0v.html

Top