当前位置:文档之家› 基于AT89S51的单片机无线双显示抢答器

基于AT89S51的单片机无线双显示抢答器

基于AT89S51的单片机无线双显示抢答器
基于AT89S51的单片机无线双显示抢答器

基于AT89S51的单片机无线双显示抢答器

1关于抢答器

1.1目前常见的抢答器有以下几种类别:

(1) 数字电路:只要使用555定时电路作为时序触发,配合相应的数字电路实现。

(2) 单片机式:以单片机为作为总控制单元利用单片机的扫描读取外部输入, 并进行相应的判断以及数据处理。

(3) 电脑程序实现的:以电脑作为上位机,利用USB端口或者串口编程技术实现,逻辑上面的判断以及处理均由程序来完成。这种抢答器可以在电脑上面显示并且可以与相应的由高级语言完成答题系统一起使用,配合单片机控制能力强的优势,将会是完美的结合,这也是我们追求的目标。

1.2抢答器的常见功能:

(1) 判断抢答端的序号。

(2) 判断是否犯规并且在主机显示。

(3) 在抢答端显示犯规或是抢答成功。

(4) 设定倒计时时间并显示倒计时时间。

(5) 显示各组分数。

(6) 主持人的控制。既主持人可以开始和取消倒计时。

(7) 无线抢答端的实现

(8) 电脑显示抢答情况

(9) 选择抢答方式。一种是有倒计时有犯规的倒计时结束开始答题的,另外一种是无倒计时无犯规可以直接答题的,比如说像Lucky52那样的,两种只是在程序逻辑以及显示上面稍有区别。

1.3功能实现的选择

我们的抢答器选择了上面的(1),(2)(3)(4)(6)(7)(8)进行实现。

抢答的逻辑具体流程如下图:

2主要芯片及设备的选择:

2.1 AT89S51芯片

很熟悉的ATMEL公司的51单片机,主要具有一下功能:

40个引脚

4k Bytes Flash片内程序存储器

128 bytes的随机存取数据存储器(RAM)

32个外部双向输入/输出(I/O)口

5个中断优先级2层中断嵌套中断

2个16位可编程定时计数器

2个全双工串行通信口

看门狗(WDT)电路

片内时钟振荡器

2.2 Max7219芯片

MAX7219是一种串行接口的8位数码管显示驱动器。它与通用微处理器只有3根串行线相连,最多可驱动8个共阴数码管或64个发光二极管。它内部有可存储显示信息的8×8静态RAM,动态扫描电路,以及段、位驱动器。

它的特点有:串行接口的传输速率可达10MHz;独立的发光二极管段控制;译码与非译码两种显示方式可选;数字、模拟两种亮度控制方式;可以级联使用。

2.3 Max232芯片

Max232用于TTL电平向RS-232串口电平转换。该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口rs232电平是-10v +10v,而一般的单片机应用系统的信号电压是ttl电平0 +5v,max232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供

TIA/EIA-232-F电平。

2.4 PT2262/2272芯片

PT2262和PT2272是CMOS三态编码集成芯片,这组器件广泛用于各种遥控器件上,只需较低的+3V电压就能工作(本机选用12V作为发射电压)。PT2262 是发射编码芯片,PT2272是接收解码芯片,两者的地址必须配对,而且振荡电阻必须符合要求。PT2262的TE端是发射允许端,接受低电平时,17脚DOUT

端输出一串编码。该串编码在载波上发送出去,被接收端接受和解调,输入PT2272的14脚,当地址配对时,VT解码有效端输出高电平,数据端口就会输出与PT2262发射端口一致的数据,从而实现遥控功能。

2.5 超再生无线发射模块(F04P)与接收模块(J04V)

2.5.1 超再生低功耗射频发射模块(315Hz)

主要特点:

低功耗发射,声表稳频,无数据时发射电流为零,较宽的工作电压范围

发射电路:

2.5.2超再生低功耗射频接受模块(315Hz)

主要特点:

(0.15mA)特低功耗超再生接收模块,输出无噪声干扰,接收灵敏度高,具有接受锁存功能

接受电路于发射电路基本相似。

2.5.3 发射接收简要原理

通过引脚的接地,悬空或者接高电平设置好发射模块的发射地址,当发射使能端从高电位到低点位变化时,奖发射地址和发射的数据组成16为编码发射。

2.6 ULN2003达林顿管阵列

ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。

达林顿管又称复合管。它将二只三极管适当的连接在一起,以组成一只等效的新的三极管。这等于效三极管的放大倍数是二者之积。在电子学电路设计中,达林顿接法常用于功率放大器和稳压电源中。

最大的作用与特点是每路可以介绍500mA的灌流,这也是我们使用的目的。

2.7 USB转串口模块(USB/RS232)

采用USB转串口的标准芯片PL2303和RS232电平接口芯片MAX211的组合。

2.8高亮度Super Red四寸共阴极数码管

正常发光电压约5--6V, 正常导通电流约40--80mA

3硬件电路的实现以及各个部分的作用

3.1 硬件电路图(Proteus仿真图)

3.2各个模块的说明与简介

3.2.1 单片机最小系统:

这个不用多说,可惜是买别人的。上面得是提供的是12MHz的晶振,与程序中的保持一样.因为在计算定时的时候,要用到晶振的大小。

3.2.2 Max7219模块

这个,还是买的别人做的PCB,我们自己用面包版连了,可以不行,怀疑是没有选择正确的电容的问题,或者说,我们不会选择电容。

3.2.3 无线抢答端发射模块

无线抢答端采用PT2262发射编码芯片+F05P发射模块的组合,另外使用一根拉直的长24CM的天线。

关于按钮,买的不知道用来控制什么的按钮,反正正和我们意,买这个的时候要注意手感,要让使用者用的舒适。从院科协L同学那里淘来的半圆形按钮外壳。

3.2.4无线接收模块

无线抢答端采用PT2272发射编码芯片+F04V接收模块的组合。Pt2272与PT2262要设置为地址相同,电阻匹配。接受到的信号传至单片机中。

3.2.5 主持人控制按键

这里有两个按钮,分别为OK/START,CANCEL/CLEAR. 前者是用来设置完毕抢答倒计时时间和开始倒计时,后者是用来取消抢答和清理数码管并显示倒计时开始时间,用来等待再次开始抢答。

3.2.6 设置倒计时时间的拨码开关

仿“8421”码设置的“2321”码,全部低位的时候为“1”,四个开关可以设置1-9任何数字。缺点就是买的拨码开关小了点。

3.2.7 译码器以及抢答端的发光二极管

译码器从单片机得到输入,然后低位选通发光二极管。

3.2.8 位选反向驱动

说不清了,这样的了。

3.2.9 段选反向驱动

两个反向驱动的本意在于,虽然Max7219驱动的是共阴极数码管,但是从datasheet上面可以看出来,段选的拉流不可以满足这种型号的数码管,位选的灌流也不能接受,所以这里配合ULN2003来使用。因为ULN2003的特点,高位接受灌流,低位为高阻,所以要使用反向驱动。这里,段选的反向驱动在程序里面的反向了,而对于位选,用于是该芯片自己进行的,所以程序控制不了,所以在Max7219位选的下游使用了一个与非门来当作反向器来使用。

3.3.10 上位机接口

采用MAX232芯片进行RS232-TTL电平转换,输出至串口,然后再通过USB转串口模块连接至上位机。

3.2.11 大尺寸数码管

这个前面说过了。

4硬件实现的步骤

4.1硬件实现的各个步骤

(1) 通过实验板来验证各个主要功能模块的正确实现。

这个就是在实验板接线,来分开的检测各个部分的正确性,当然有的部分还是没有办法验证的。

(2) 仿真器+面包板上面的插线实验

恩,仿真器很好使。就是上面的限流电阻给不小心被烧了,郁闷。

(3) 最小系统+面包板上面插线实验

使用仿真器的时候用的是电脑提供的+5V电压,可能和用自己的供电的不太一样,尤其是同时也在使用+12V电源的时候,电脑给出的+5V可能的比较低,这样一来会有些不必要的问题,而用最小系统则没有这些问题。

(4) 焊接万能板

这个很有趣也很关键。

(5) 仿真器+电路板的实现

用来验证电路板上的各个部分是否焊接成功。

(6) 最小系统+电路板的实现

恩这个就是最后的验证了。

4.2一个原则

由上可见,在实验过程中,总体上也采取单变量原则,这样方便有效地对于每一部分进行检验。另外,如果在检验焊接板上面的错误的话,要配合着面包板使用才行,也是保证单变量,这样对比出来面包上

成功的时候和现在失败的时候只有哪个地方不同,那百分之九十就是这个地方了。

5软件实现(单片机上的软件)

5.1程序编写

模块化,使整个程序的每个部分具有较好的可移植性。

5.2程序测试

在Keil Uvision + Proteus联调环境下进行逻辑的测试,不过这个只是逻辑上面的测试,距离能成功还有很远。

5.3最终代码

最后的代码将在另见。

6电脑端(上位机)显示程序

电脑端使用C#编写程序,利用了.Net的SerialPort类对电脑端口检测和接受数据。这个将会另有介绍。

7 后续工作和几个问题

(1) 电源还需优化, 可以采用三稳压管电源。

(2) 电阻发热问题: 我们使用的3W的大功率电阻竟然不到1.5W的情况下就发热了,还没有搞懂。

(3) 我们的74HC00与非门在未加高电平的情况下就已经正常工作了,不清楚这是什么情况。

(4) 可以考虑增加抢答模式与小组积分,实现按着使用者的要求对于程序进行选择。

(5) 无线端抢答端电池的问题。因为目前的设计是电池如果没有取出的话,将一直对发射系统供电,这样会消耗电池,但采用一次按键先后接通电路,发射编码的方法,总是不稳定

#include

#include

/******************************************************************

* 自定义Macro

*******************************************************************/

//编码的均为反向编码

#define CLEAR 0x7f //定义清空的反码

#define LED_BEGIN 0x01 // 定义开始时数码管的显示

#define LED_FOUL 0x38 // 犯规后显示字母"F",数码管编码

#define LED_C 0x31 // 字母"C"的编码

#define LED_L 0x71 // 字母"L"的编码,两个用来在主持人取消之后显示"CL"--cancel

#define GET 1 // 这个是作为一个函数的参数来混的,就是成功抢答的意思

#define FOUL 0 // 和上面的参数一起混的,犯规---这两个的用法在后面体现

#define READY 0x7e

//下面是给上位机发送的指令,对应的是cmdID

#define _STRING_READY_ 9//调整好抢答倒计时,准备开始抢答

#define _STRING_START_ 8//读秒结束,抢答开始

#define _STRING_CANCEL_ 7//取消抢答

#define _CHANGE_TIME_ 6//每次读秒

//发送1--4的指令代表抢答端的序号

//因为在板子上面采用的是12M的晶振,仿真时候采用的是11.0529M的晶振,为了方便不同时候编译方便,这里与后面的条件编译一起使程序修改参数比较方便

//#define CLOCK_FREQUENCY_12M 1

/******************************************************************

* 自定义数据类型

*******************************************************************/

typedef unsigned char Byte; // 一个字节

typedef unsigned int Word; // 一个字,两个字节

typedef bit Bool; // 模仿布尔型变量

//typedef sbit Port; // 本想用自定义一个端口类型的变量,比较方便,但是这句话步知道为何通不过编译

/******************************************************************

* 定义MAX7219寄存器

*******************************************************************/

#define REG_NO_OP 0x00 // 定义空操作 register

#define DIG_1 0x01 // 定义数码管1 register

#define DIG_2 0x02 // 定义数码管2 register

#define DIG_3 0x03 // 定义数码管3 register

#define DIG_4 0x04 // 定义数码管4 register

#define DIG_5 0x05 // 定义数码管5 register

#define DIG_6 0x06 // 定义数码管6 register

#define DIG_7 0x07 // 定义数码管7 register

#define DIG_8 0x08 // 定义数码管8 register

#define REG_DECODE 0x09 // 定义解码控制 register

#define REG_INTENSITY 0x0a // 定义显示亮度 register

#define REG_SCAN_LIMIT 0x0b // 定义扫描限制 register

#define REG_SHUTDOWN 0x0c // 定义"shutdown"模式 register

#define REG_DISPLAY_TEST 0x0f // 定义"display test"模式 register

#define INTENSITY_MIN 0x00 // 定义最低显示亮度

#define INTENSITY_MAX 0x0f // 定义最高显示亮度

/*********************************************************************

* 定义硬件引脚连接

**********************************************************************/

sbit DATA=P2^0; // MAX7219的数据口

sbit LOAD=P2^1; // MAX7219的锁存端口

sbit CLK=P2^2; // MAX7219的时钟端口

sbit HOST_START=P0^0; //主持人按键,用来重新开始的按键 start

sbit HOST_CANCEL=P0^1; //主持人用来取消抢答的按键 clear

sbit SWITCH1_3=P1^4; // 调节倒计时时间的拨码开关,下划线前面的号代表开关的序号,下划线后面的号代表该开关的数值

sbit SWITCH2_2=P1^5; // 同上

sbit SWITCH3_2=P1^6; // 同上

sbit SWITCH4_1=P1^7; // 同上

sbit BEEP=P0^7; //定义蜂鸣器端口

#ifdef USE_SOUND //可以通过define来选择要不要使用仿真时候的声音

sbit LS138_C=P2^4; //定义译码器输入端

sbit LS138_B=P2^5; //同上

sbit LS138_A=P2^6; //同上

sbit LS138_E1=P2^7; //定义译码器使能端

#endif

/*********************************************************************

* 定义全局变量

**********************************************************************/ Byte data intrCounter; // 计时器中断次数

Byte data beginNum; // 开始倒计时的时间

Byte data counterBack; // 将中断次数放在里面以备后用

Byte data showNum; // 数码管正在显示的时间

Bool data isStart; // 是否开始抢答

Bool data isFoul; // 是否犯规

Bool data isPressed; // 是否有抢答的键按下

Byte data number_temp; // 用来记录P1口上次状态的一个变量

Bool data needResetTimes;//记录是否需要重设Timer0的溢出次数

code unsigned char C51BOX2[3] _at_ 0x43; //使用C51Box时候防止程序跑丢

/*********************************************************************** * 共阴极七段数码管显示对应段查询表(数字0-9分别对应code_table[0]-[9])

***********************************************************************/ Byte code code_table_zheng[10]=

{0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};

Byte code code_table[10]=

{0x01,0x4f,0x12,0x06,0x4c,0x24,0x20,0x0f,0x00,0x04};

/*********************************************************************** * 函数声明

***********************************************************************/ void MAX7219_SendByte (Byte dataout);

void MAX7219_Write (Byte reg_number, Byte dataout);

void MAX7219_DisplayChar(Byte digit, Byte character);

void MAX7219_Clear (void);

void MAX7219_SetBrightness (Byte brightness);

void MAX7219_DisplayTestStart (void);

void MAX7219_DisplayTestStop (void);

void MAX7219_ShutdownStart (void);

void MAX7219_ShutdownStop (void);

void MAX7219_Init (void);

void Delay10ms(void);

Bool GetHostStartKey (void);

Bool GetHostCancelKey (void);

void GetCounter(void);

Byte GetPressed(Byte KeyState);

Byte GetPressedWireless(Byte KeyState);

void IT0_Init(void);

void Timer0_Overflow();

void PressedHandle(Byte keyPressed);

void GetOrFoulHandle(Bool state);

void CancelHandle();

void SPEAKER_count (void); //声明倒计时声音函数

void SPEAKER_start(void); //声明开始抢答声音函数

void SPEAKER_get(void); //声明抢到声音函数

void SPEAKER_foul(void); // 声明犯规声音函数

void initialSerial();

void sendNumber(int number);//串口发送数字,这里发送的是CommandID

void sendString(unsigned char *string);//串口发送字符串

/***********************************************************************

* MAX7219_SendByte()

*

* 描述: 向MAX7219传送一个字节的数据

* Arguments : dataout = data to send

* Returns : none

*************************************************************************/ void MAX7219_SendByte (Byte dataout)

{

Byte i;

for (i=8;i>0;i--)

{

Byte mask=1<<(i-1);//mask是个掩码,取位使用

CLK=0;//MAX7219的位传入是在时钟的上升沿之前,所以在每发一位之前都要变为低电平if (dataout&mask)

DATA=1;

else

DATA=0;

CLK=1;//八个bit都传递完成后变为高电平,锁存

}

}

/***********************************************************************

* MAX7219_Write()

*

* 描述: 向 MAX7219 写命令

* Arguments : reg_number = register to write to

* dataout = data to write to MAX7219

* Returns : none

未完~

***************************************************************************/ void MAX7219_Write (Byte reg_number, Byte dataout)

{

LOAD=0;//也是锁存上升沿之前的,发这两个字节之前要变为低电平

MAX7219_SendByte(reg_number);//发送寄存器地址

MAX7219_SendByte(dataout);//发送数据

LOAD=1;//变为高电平,锁存

}

/************************************************************************** * MAX7219_DisplayChar()

*

* 描述: 使某一位显示一个数字

* Arguments : digit = digit number (0-7)

* character = character to display (0-9, A-Z)

* Returns : none

**************************************************************************/ void MAX7219_DisplayChar(Byte digit, Byte character)

{

MAX7219_Write(digit, character);

}

/************************************************************************** * MAX7219_Clear()

*

* 描述: 清除所有位的显示

* Arguments : none

* Returns : none

***************************************************************************/ void MAX7219_Clear (void)

{

Byte i;

for (i=1; i<=2; i++)

MAX7219_Write(i, CLEAR);//把八个数码管全都清零了,已经写反了^_^

}

/************************************************************************** * MAX7219_SetBrightness()

*

* 描述: 设置数码管显示亮度

* Arguments : brightness (0-15)

* Returns : none

***************************************************************************/ void MAX7219_SetBrightness (Byte brightness)

{

brightness &= 0x0f;

MAX7219_Write(REG_INTENSITY, brightness);

}

/************************************************************************** * MAX7219_DisplayTestStart()

*

* 描述: 进入 test 模式

* Arguments : none

* Returns : none

***************************************************************************/ void MAX7219_DisplayTestStart (void)

{

MAX7219_Write(REG_DISPLAY_TEST, 1);

}

/************************************************************************** * MAX7219_DisplayTestStop()

*

* 描述: 退出 test 模式

* Arguments : none

* Returns : none

***************************************************************************/ void MAX7219_DisplayTestStop (void)

{

MAX7219_Write(REG_DISPLAY_TEST, 0);

}

/************************************************************************** * MAX7219_ShutdownStart()

*

* 描述: 进入 shutdown 模式

* Arguments : none

* Returns : none

***************************************************************************/ void MAX7219_ShutdownStart (void)

{

MAX7219_Write(REG_SHUTDOWN, 0);

}

/************************************************************************** * MAX7219_ShutdownStop()

*

* 描述: 退出 shutdown 模式

* Arguments : none

* Returns : none

***************************************************************************/ void MAX7219_ShutdownStop (void)

{

MAX7219_Write(REG_SHUTDOWN, 1);

}

/************************************************************************** * MAX7219_Init()

*

* Description: MAX7219初始化模块; 应该先于其他MAX7219函数而被调用

* Arguments : none

* Returns : none

***************************************************************************/

void MAX7219_Init (void)

{

DATA=1;

CLK=1;

LOAD=1;

MAX7219_Write(REG_SCAN_LIMIT,1);//这里设置的是扫描两个数码管

MAX7219_Write(REG_DECODE, 0x00);

MAX7219_SetBrightness(INTENSITY_MAX);//设置最大亮度显示

MAX7219_DisplayTestStart();

MAX7219_DisplayTestStop();

MAX7219_ShutdownStop();

MAX7219_Clear();

}

/************************************************************************** * Delay_100us()

*

* 描述: 延时100us,主要用在消除开关抖动时

* Arguments : none

* Returns : none

***************************************************************************/ void Delay10ms(void)

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

/************************************************************************** * GetHostStartKey()

*

* Description: 取得主持人开始按键的键值

* Arguments : none

* Returns : 1-->主持人按键; 0-->主持人未按键

***************************************************************************/ Bool GetHostStartKey (void)

{

if (HOST_START ==1)

return0;

else

Delay10ms ();//如果发现主持人按键接通,要先延时100us,防止抖动if (HOST_START==1)

return0;

else

return1;//延时时候还是接通,则判断为该键确实按下

}

/************************************************************************** * GetHostCancelKey()

*

* Description: 取得主持人取消按键的键值

* Arguments : none

* Returns : 1-->主持人按键; 0-->主持人未按键

***************************************************************************/ Bool GetHostCancelKey (void)

{

if (HOST_CANCEL ==1)

return0;

else

Delay10ms ();//如果发现主持人按键接通,要先延时100us,防止抖动if (HOST_CANCEL ==1)

return0;

else

return1;//延时时候还是接通,则判断为该键确实按下

}

/************************************************************************** * GetCounter

*

* Description: 取得预先设置的倒计时时间

* Arguments : none

* Returns : none

***************************************************************************/ void GetCounter(void)

{

beginNum=1;//在所有开关都没有拨动的时候倒计时为1秒,比设置为0秒要好

intrCounter=20;//每一秒对应的中断次数为20次

if (SWITCH1_3==1)

{

beginNum+=3;

}

if (SWITCH2_2==1)

{

beginNum+=2;

}

if (SWITCH3_2==1)

{

beginNum+=2;

}

if (SWITCH4_1==1)

{

beginNum+=1;

}//以上判断语句为判断拨码开关状态

intrCounter=20*beginNum;//计算总扫描次数

}

/************************************************************************** * GetPressed

*

* Description: 从P2口连接抢答端的四位来判断抢答情况

* Arguments : Byte KeyState-->P2 state

* Returns : 抢答端的号码 ; 0-->没人抢答

***************************************************************************/ Byte GetPressed(Byte KeyState)

{

Byte key;//记录抢答端的号码

KeyState&=0xf0;//取P1口的低四位

switch (KeyState)

{

case0xf0: key=0;break;//全高,无人抢答

case0xe0: key=1;break;//只有P1.1,key1抢答

case0xd0: key=2;break;//只有P1.2,key2抢答

case0xb0: key=3;break;//只有P1.3,key3抢答

case0x70: key=4;break;//只有P1.4,key4抢答

}

/*

switch (KeyState)

{

case 0x00: key=0;break;//全高,无人抢答

case 0x01: key=1;break;//只有P1.0,key1抢答

case 0x02: key=2;break;//只有P1.1,key2抢答

case 0x04: key=3;break;//只有P1.2,key3抢答

case 0x08: key=4;break;//只有P1.3,key4抢答

}

*/

//上面是在用高电平来判断抢答状态时的程序,经证明不知道为何无效

return key;

}

/************************************************************************** * GetPressedWireless

*

* Description: P2口的高四位于Pt2272接受模块相连,该方法用来判断无线抢答序号

* Arguments : Byte KeyState-->P2 state

* Returns : 抢答端的号码 ; 0-->没人抢答

***************************************************************************/ Byte GetPressedWireless(Byte KeyState)

{

Byte key;//记录抢答端的号码

KeyState&=0xf0;//取P2口的高四位

/*

switch (KeyState)

{

case 0x0f: key=0;break;//全高,无人抢答

case 0x0e: key=1;break;//只有P1.1,key1抢答

case 0x0d: key=2;break;//只有P1.2,key2抢答

case 0x0b: key=3;break;//只有P1.3,key3抢答

case 0x07: key=4;break;//只有P1.4,key4抢答

}

*/

switch (KeyState)

{

case0x00: key=0;break;//全低,无人抢答

case0x10: key=1;break;//只有P1.0,key1抢答

case0x20: key=2;break;//只有P1.1,key2抢答

case0x40: key=3;break;//只有P1.2,key3抢答

case0x80: key=4;break;//只有P1.3,key4抢答

}

return key;

}

/**************************************************************************

* IT0_Init

*

* Description: 初始化计时器T0的状态

* Arguments : none

* Returns : none

***************************************************************************/

void IT0_Init(void)

{

TMOD=0x21;//设置T0在方式1下工作,同时还要保证T1,也就是波特率所学的定时器的正常工作

#ifdef CLOCK_FREQUENCY_12M//对使用哪种晶振进行条件编译

TH0=0x3C;//12M晶振时的装入值

TL0=0xAF;

#else

TH0=0x4C;//11.0529M晶振时装入值

TL0=0x00;

#endif

ET0=1;//使T0中断可以溢出

EA=1;//开启总中断

TF0=0;//溢出位清零

TR0=1;//开启T0

}

/**************************************************************************

* Timer0_Overflow() interrupt 1

*

* Description: 中断溢出服务程序, 采用的是中断方式1, 后面最好不加using选择寄存器组以免与系统用在主程序的寄存器冲突

* Arguments : none

* Returns : none

***************************************************************************/

void Timer0_Overflow() interrupt 1

{

static Byte times=20;//溢出次数,用20次中断来判断1秒

//这里存在重大bug,到由于有相应而停止Timer0后,再次启用时,这里的second没有回归原值

if (needResetTimes==1)

{

times=20;

needResetTimes=0;//已重设,不需要再次重新设置溢出次数

}

#ifdef CLOCK_FREQUENCY_12M//对使用哪种晶振进行条件编译

TH0=0x3C;//12M晶振时的装入值

TL0=0xAF;//这两个寄存器存的是计数器的计数开始的值,计算发现这两个值累加至溢出后正好是50ms #else

TH0=0x4C;//11.0529M晶振时装入值

TL0=0x00;//同理,这两个寄存器存的是计数器的计数开始的值,计算发现这两个值累加至溢出后正好是50ms #endif

times--;

intrCounter--;

/* 原来使用的方法

if (times==0)//每隔一秒的操作

{

MAX7219_DisplayChar(DIG_2,code_table[--showNum]); //要避免用上面的会造成显示"0"后面一秒钟,才进入开始

times=20;//重新赋值每秒计数器

if (intrCounter==0)

{

TR0=0;//关闭T0计数器

isStart=1;//计时结束,进入正常抢答

//SPEAKER_start();//开始抢答的声音

}

//待显示"0"以后就开始抢答

else

{

//SPEAKER_count();//倒计时声音

}

}

*/

if (times==0)//每隔一秒的操作

{

//if (showNum!=1) SPEAKER_count();//倒计时声音

//else SPEAKER_start();//开始抢答的声音

MAX7219_DisplayChar(DIG_2,code_table[--showNum]);//显示数字

sendNumber(_CHANGE_TIME_);//给上位机发送要显示数字的命令

times=20;//重新赋值每秒计数器

}//待显示"0"以后就开始抢答

if (intrCounter==0)

{

TR0=0;//关闭T0计数器

isStart=1;//计时结束,进入正常抢答

}

}

/**************************************************************************

* PressedHandle

*

* Description: 按键处理

* Arguments : Byte keyPressed-->按下的按键

* Returns : none

***************************************************************************/

void PressedHandle(Byte keyPressed)

{

MAX7219_Clear();//LED clear

MAX7219_DisplayChar(DIG_2,code_table[keyPressed]);//在右侧数码管显示抢答选手号码,此时没有去判断是否犯规

//给上位机发抢答选手的号码

sendNumber(keyPressed);

}

/**************************************************************************

* GetOrFoulHandle(Bool state)

*

* Description: 正常抢答或是犯规处理

* Arguments : Bool state-->是GET和FOUL两个宏的取之之一

* Returns : none

***************************************************************************/

void GetOrFoulHandle(Bool state)

{

if (!state)

{

MAX7219_DisplayChar(DIG_1,LED_FOUL);//如果是犯规的话左边的LED要显示"F",foul

}

}

/**************************************************************************

* CancelHandle()

*

* Description: 处理主持人取消倒计时

* Arguments : none

* Returns : none

***************************************************************************/

void CancelHandle()

{

MAX7219_DisplayChar(DIG_1,LED_C);

MAX7219_DisplayChar(DIG_2,LED_L);//主持人取消倒计时之后,两个数码管显示"CL"-->cancel

}

/************************************************************************** * delayus()

*

* Description: 延时程序

* Arguments : t-->us

* Returns : time delayed

***************************************************************************/ void delayus(unsigned char t )

{

unsigned char j;

for(;t>0;t--)

for(j=19;j>0;j--);

}

/************************************************************************** * SPEAKER_count/start/foul/get()

*

* Description: speaker发声程序->计数/开始/犯规/抢答四种声音

* Arguments : none

* Returns : none

***************************************************************************/ void SPEAKER_count(void)

{

unsigned char i;

for (i=0;i<10;i++)

{

BEEP =1; //点亮

delayus(20);

BEEP =0; //熄灭

delayus(20);

}

}

void SPEAKER_start(void)

{

unsigned char i;

for(i=0;i<200;i++)

{

BEEP =1; //点亮

delayus(10);

BEEP =0; //熄灭

delayus(10);

}

}

void SPEAKER_foul(void)

{

unsigned char i;

for(i=0;i<250;i++)

单片机试题库分章节答案解析(C语言)

第1部分单片机概述及数学基础 一、填空题 1、十进制255的二进制是11111111,十六进制是FF 。 2、单片机是将CPU、存储器、特殊功能寄存器、定时/计数器和输入/输出接口电路、以及相互连接的总线等集成在一块芯片上。 3、十进制127的二进制是 1111111,十六进制是7F。 4、+59的原码是 00111011,-59的补码是11000101。 5、十进制数100转换为二进制数是1100100;十六进制数100转换为十进制数是256。 6、十进制数40转换为二进制数是101000;二进制数10.10转换为十进制数是 2. 5。 7、十进制99的二进制是 1100 011,十六进制是63。 二、判断题 (×) 1、AT89S51是一种高性能的16位单片机。8位机 (×) 2、有符号正数的符号位是用1表示的。 三、选择题 ()1、计算机中最常用的字符信息编码是( A) A. ASCII B.BCD码 C. 余3码 D. 循环码 四、简答题 1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 第2部分 51单片机硬件结构、存储系统及

I/O接口 一、填空题 1、AT89S51单片机共有 4 个8位的并行I/O口,其中既可用作地址/数据口,又可用作一般的I/O口的是P0。 2、若采用12MHz的晶振,则MCS-51单片机的振荡周期为__1/12 μS__ ,机器周期为____1μS __。 3、AT89S51单片机字长是___8___位,有___40根引脚。 4.89S51单片机是 8位单片机,其PC计数器是16位。 5.若单片机使用的晶振频率是6MHz,那么一个振荡周期是1/6μS,一个机器周期是2μSμS。 6.89S51单片机是+5 V供电的。4.0-5.5V 7.堆栈是内部数据RAM区中,数据按先进后出的原则出入栈的。8.MSC-51系列单片机具有 4 个并行输入/输出端口,其中_P0_口是一个两用接口,它可分时输出外部存储器的低八位地址和传送数据,而_P1__口是一个专供用户使用的I/O口,常用于第二功能的是P3 口。 9.当单片机系统进行存储器扩展时,用P2口的作为地址总线的高八位,用P0作为地址总线的低八位。 10.半导体存储器分为___ROM___和__RAM__两大类,其中前者具有非易失性(即掉电后仍能保存信息),因而一般用来存放系统程序,而后者具有易失性,因而一般用来存放经常变动的用户程序.中间结果等。 11.MCS-51系列单片机对外部数据存储器是采用_DPTR___作为指针的,其字长为_16__位,因而可寻址的数据存储器的最大空间为_64K_字节。

基于51单片机8路抢答器设计

创新实践课 课程名称:创新实践课 实践题目:基于51单片机8路抢答器设计学院:信息工程与自动化学院 专业:生物医学工程 年级:2014级 学生:4 丽莎2海星 指导教师:嘉林 日期:2016-12-30 教务处制

目录 一、前言 (3) 二、电路原理图设计 (3) 三、印制版图设计 (7) 四、软件设计 (9) 五、测试数据及分析 (16) 六、总结 (18)

一、前言 目前,抢答器已经作为一种必不可少的工具广泛应用于各种智力和知识竞赛场合,但一般的抢答器可靠性低,使用寿命短,介于这些不方便因素,此次设计提出了用51单片机为核心控制元件,设计一个简易的八路抢答器。本方案以51单片机作为主控核心,与晶振、数码管、蜂鸣器等通过外围接口实现的八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时器/计数器等,设计的八路抢答器不仅具有实时显示抢答选手的和抢答时间的功能,同时还利用汇编语言编程,使其实现复位、定时和报警的功能。本次设计的系统实用性强、判断精确、操作简单、扩展功能强。 功能:以STC89C52RC单片机作为主控核心,与晶振、数码管、蜂鸣器等通过外围接口实现的八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路等,设计的八路抢答器不仅具有实时显示抢答选手的和抢答时间的功能,同时还利用汇编语言编程,使其实现复位和报警的功能。 此系统是基于51单片机,led发光二极管,一位共阳数码管,蜂鸣器,按键,等分立元件设计而成。 元件设计的意义:关于按键:共设计了10个独立按键,其中8个分别为八位选手抢答输入用,另外两个分别为开始和停止按键!只有裁判按下了开始键才进入正常抢答,否则属于犯规抢答,抢答完毕,裁判按下停止,数码管显示0。关于led发光二极管:共设计了9个发光二极管,其中一个为电源指示,其他8个为选手抢答状态指示,正确抢答时led发光二极管缓慢闪烁,犯规抢答时,快速闪烁。关于数码管:选手按下自己的按键时显示相应的选手编号!裁判按下开始键时数码管显示倒计时,

智能抢答器的设计

| 沈阳航空航天大学 课程设计 (说明书) 智能抢答器的设计 ^ 班级 / 学号 /20 … 学生姓名王纪尧

指导教师李智慧

沈阳航空航天大学 课程设计任务书 课程名称电子线路课程设计 课程设计题目智能抢答器的设计 课程设计的内容及要求: 》 一、设计说明与技术指标 用数字电路设计一个具有锁存与显示功能的8人抢答逻辑电路。 接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置于“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“清除” 和“开始”状态开关。 二、设计要求 1.在选择器件时,应考虑成本。 2.根据技术指标,通过分析计算确定电路和元器件参数。 3.画出电路原理图(元器件标准化,电路图规范化)。 ! 三、实验要求 1.根据技术指标制定实验方案;验证所设计的电路,用软件仿真。 2.进行实验数据处理和分析。 四、推荐参考资料 1. 童诗白,华成英主编.模拟电子技术基础.[M]北京:高等教育出版社,2006年 五、按照要求撰写课程设计报告

成绩指导教师日期?

一、概述 在各种智力竞赛场合,抢答器是必不可少的最公正的用具。在我们各种竞赛中我们也经常能看到有抢答的环节,某些举办方采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性,而抢答器的应用就能避免这种弊端。 今天随着科技的不断进步抢答器的制作也更加追求精益求精,人们摆脱了耗费很多元件仅来实现用指示灯和一些电路来实现简单的抢答功能,使第一个抢答的参赛者的编号能通过指示灯显示出来,避免不合理的现象发生。但这种电路不易于扩展,而且当有更高要求时就无法实现,例如参赛人数的增加。随着数字电路的发展,数字抢答器诞生了,它易于扩展,可靠性好,集成度高,而且费用低,功能更加多样,是一种高效能的产品。而如今在市场上销售的抢答器大多采用可编程逻辑元器件,或利用单片机技术进行设计,本次设计主要利用常见的74LS系列集成电路芯片和555芯片,并通过划分功能模块进行各个部分的设计,最后完成了八路智力竞赛抢答器的设计。 二、方案论述 图1 智能抢答器电路的原理框图

基于PLC四路抢答器的设计毕业设计

毕业设计设计任务书 设计题目: 基于PLC四路抢答器的设计 设计要求: 1. 抢答器可同时供四组选手参加比赛 2. 主持人有三个控制按钮,用来控制抢答开始、复位和答题计时的开始。 3.每当主持人发出开始抢答指令后,那组选手最先按下抢答按钮,则数码管1就显示该组的编号,同时绿色指示灯亮,音响电路给出信箱提示信号(持续3S),以指示抢答成功,并对其后的抢答信号不再响应。选手答题完毕后,由主持人按下复位按钮,系统才能开始下一轮抢答。 4.违规抢答:若选手在未开时抢答试题时抢答了,则视为违规,违规时数码管1显示其编号,同时红灯亮,音响电路发出声响。 5.抢答限时:当主持人按下开始按钮后,定时器T0开始计时(设定30S)。若30S时限到仍无人抢答,则黄灯亮、音响电路3发出声响,以示选手放弃该题。 6.答题限时:在抢答成功后,主持人按下答题计时开始按钮,同时数码管2、3上显示答题倒计时时间(该时间设定为50S),选手必须在设定的时间内完成答题。否则,音响电路发出答题超时报警信号 设计进度要求: 第一、二周:确定题目,查阅资料,根据要求分析抢答器的设计、工作原理。 第三、四周:根据工作原理画流程图并编译梯形图,并进行硬件设计。 第五、六周:对软件设计,进行上机调试,找出问题,进行修改,并改进设计。 第七、八周:撰写论文,毕业答辩。 指导教师(签名)

摘要 近年来随着科技的飞速发展, PLC的应用不断地走向深入,同时带动传统的控制检测技术的不断更新,可编程控制器由于其优良的控制性能,极高的可靠性,在各行各业中的应用日益广泛普及。对于抢答器其广泛用于电视台、商业机构、企事业工会组织、俱乐部及学校等单位组织举办各种知识、技术竞赛及文娱活动时作抢答之用,为竞赛增添了刺激性、娱乐性,在一定程度上丰富了人们的业余生活,并且给人的视觉效果非常好,是各单位开展素质教育、精神文明、娱乐活动的必备产品。 本次设计是利用PLC(Programmable Logic Controller)对PLC控制的四路智力抢答器进行控制。首先,选择这个题目之后,我对本次设计进行了全面的思考。使自己对本次设计有一个大致的总体思路,然后仔细分析PLC控制的四路智力抢答器的工作原理,以及它的一些工作过程,分析后得出它主要需要完成主持人的控制、选手的抢答、报警、计时及输出显示功能等。考虑到只是PLC控制的四路智力抢答器则输出端口需要25个,输入端口需要7个,由于PLC具有可靠性高、体积小、通用性、使用方便等优点,因此,我决定选用SIMATIC S7-200 系列的CPU226和数字量扩展模块EM223作为本次设计的PLC。具有方便灵活,维护使用方便等特点。 关键词:智力控制,四路抢答器, PLC

at89s51单片机试题

一、填空题(37 分) 1. AT89S51单片机芯片共有40个引脚,MCS-51系列单片机为8位单片机。 2. AT89S51的异步通信口为全双工(单工/半双工/全双工), 3. AT89S51内部数据存储器的地址范围是00H-7FH,位地址空间的字节地址范围是20H-2FH, 对应的位地址范围是00H-7FH,外部数据存储器的最大可扩展容量是 64K字节。 4. 单片机也可称为微控制器—或嵌入式控制器。 5. 当MCS-51执行MOVC A @A+P指令时,伴随着 PSEN控制信号有效。 6. 当单片机复位时PS辟00 H,这时当前的工作寄存器区是_____________________ 0区, R4所对应的存储单元地址为04 Ho 7. MCS-51系列单片机指令系统的寻址方式有—寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址加变址、位寻址。(相对寻址也可) 8. 51系列单片机的典型芯片分别为AT89S51 > 8031、AT89C51 o 9. AT89S51的 P3 口为双功能口; 10. 由AT89S51组成的单片机系统在工作时,EA*引脚应该接—地(或0); 11. AT89S51外部程序存储器的最大可扩展容量是64K ,其地址范围是 0000H - FFFFH。ROMS片2764的容量是 _8 KB,若其首地址为 0000H,则其末地址 1FFFH。 12. AT89S51的中断源有夕卜中断0, T0 ,外中断1,T1,串行口,有_2个中断优先级。 13. AT89S51唯一的一条16位数据传送指令为MOV DPTR data16。 14. LJMP 的跳转范围是64K, AJMP的跳转范围是2K B, SJMP的跳转范围是土128 B (或256B)。 15. 若A中的内容为68H,那么P标志位为 1 o 二、简答题(13分) 1. 采用6MHZ勺晶振,定时2ms用定时器方式1时的初值应为多少?(请给出计算过程)(6 分)答: (1) Ts=2us (216 —X)x 2us=2ms 从而X= 64536 .......... 4分 ⑵ 64536 = FC18H .......... 2 分 2. AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突, 为什么?( 4分) 答:

基于单片机的四路无线抢答器

基于单片机的四路无线抢答器 摘要 抢答器作为一种公正的裁决工具,已经广泛应用于各种智力和知识竞赛场合。本文介绍了一种用315MHZ多用途DF无线数据收发模块、PT2262编码芯片及常用单片机AT89C51芯片设计的数码显示四路无线抢答器的电路组成、设计思路及功能。该抢答器除具有基本的抢答功能外,还具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒),定时器进行减计时。参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示0。 关键词:AT89C51,PT2262,无线收发模块

Abstract Responder is a fair ruling tool, has been widely used in all kinds of intelligence and knowledge competitions.In this paper, a 315 MHZ multi-purpose DF wireless data transceiver module, and the commonly used microcontroller AT89C51 chip PT2262 encoding chip design of the digital display four way wireless vies to answer first circuit composition, function and design ideas. The responder addition to a basic function, also has the timing responder function, and one answer in the time set by the host (such as 30 seconds), the timer to reduce the time. Contestants answer, in setting the time vies to answer first, the timer stops working, the number of players displayed on the display. If the time has come, no contest, this contest null and void, and to prohibit answer alarm system, from time to time display shows 0. Keywords:AT89C51,PT2262,The wireless transceiver module

基于80C51单片机的八路抢答器设计分析

专业论文 题目:基于80C51单片机的八路抢答器设 计

摘要:八路智力抢答器是一个可供八个参赛组进行智力竞赛的电路装置,该装置主要是由单片机最小系统、控制电路(八个选手抢答按钮;三个主持人控制按钮;四个修改按钮)、数码显示电路与蜂鸣器电路组成的。单片机(MCU)是目前在电气控制技术中广泛应用的重要元件。它具有体积小,稳定性高,应用范围广,控制能力强,升级改造容易等诸多优点。本论文介绍采用ATMEL公司AT89S52单片机设计八路智能抢答器。软件采用汇编语言编程,汇编语言属于计算机领域的低级语言,具有简明易懂,执行效率高等的优点。智能八路抢答器具有抢答时间与答题时间调整,抢答错误报警提示等功能,可以广泛应用于各类知识竞赛。 关键词:抢答器;单片机;硬件系统;软件编程

基于80C51单片机的八路抢答器设计 一、系统概述与原理方框图 在文中,我对八路抢答器的总体设计及其主要的功能特点进行简单的分析,并给出它的特点,实现的功能以及系统的简单操作,以对单片机及其控制系统的了解。 (一)单片机技术发展的概述与系统问题的提出 目前,单片机正朝着高性能和多品种方向发展,单片机的发展正朝着 CMOS化,低功耗,小体积,大容量,高性能,低价格和外围电路的内装化等 几个方面 发展。近几年,由于某种原因CHMOS技术的进步,大大地促进了单片机的CMOS 化,此种芯片除了低功耗外,还具有功耗的可控性,使单片机可以工作在功 耗精细管理状态,特别是IIC,API等串行总线的引入,可以使单片机的引脚 设计得更少,单片机系统结构更加简化及规范化。 我们设计出的8路抢答器是一种基于MCS-51单片机的硬件和软件设计及 实现方法,这种电路设计具有按键有效提示,输入错误提示,控制报警电路, 在线修改功能等多种功能,保密性强,灵活性高,特别适用于家庭!办公室!学 生宿舍及宾馆等场所。它具有全集成化,智能化,高精度,高性能,高可靠 性和低价格等优点,是一个值得推广的一种方法。接下来我们就对方案与设 计原理方框图进行比较分析。 (二)设计思路与系统组成及主要特点 为了使设计更具有针对性,使用性更强,我对其进行精心的设计,在设 计过程中,我们想到了很多的设计方案。 1.设计思路 设计一个八路抢答器,可同时供8名选手或者8个代表队参加比赛,他 们的编号分别为1——8,各用一个抢答器按钮,按钮的编号与选手的编号相 对应,分别设为S1…S8。节目主持人设置一组控制开关,用来控制系统的清 零和抢答器的开始,修改抢答时间与答题时间,如果想调节抢答时间或答题 时间,按"抢答时间调节"键或"答题时间调节"键进入调节状态。并且抢答器具 有数据锁存和显示的功能,抢答开始,若有选手按动抢答按钮,编号立即锁

无线抢答器系统设计

数字通信系统课程设计论文题目:无线抢答器系统设计 指导老师: 专业:电子信息工程 班级:D0842 姓名: 学号:

摘要 进入二十一世纪,无线数据通讯技术在我国蓬勃发展,也得到了信息产业部以及各行各业的高度重视,因为任何有线数据传输网络只能是网状覆盖,而无线数据传输网可达到真正的面覆盖。目前主要的短距离无线数据传输技术主要有蓝牙、Zigbee、IEEE802.11x、微功率短距离无线通讯技术[,与已具备相当规模的无线长距离通讯网络(比如蜂窝移动通讯网、卫星数据通讯)相比,短距离无线通讯系统在基本结构、服务范围、应用层次以及通讯业务(数据、话音)上,均有很大不同。下面分别介绍这几种无线传输技术。 蓝牙技术(Bluetooth)主要面对网络中的各种数据和语言设备,通过无线方式将它们连接起来,从而方便快速的实现数据传输,它使用2.4GHZ的ISM频段,最大传输率1Mbit/s;IEEE802.11x的技术标准是无线局域网的国际标准,也是用2.4GHZ的ISM频段,协议主要在OSI的物理层和数据链路层,虽然传输速度快,但此类设备比较昂贵,技术复杂;Zigbee是一种新型的短距离、低速度、低功耗无线网络技术,是一种介于无线标记技术和蓝牙之间的技术,基于IEEE 无线个人区域网标准,数据传输速率通常为10kb/s到250kb/s,有效覆盖范围10到75米,由于其协议简单、成本低、网络容量大等优点,使其在无线传感网络中得到广泛的应用。 在未来,短距离无线数据传输将向着更高传输速率、更高传输精确度的方向发展,而且传输设备的成本也会进一步降低,传输协议也会进一步简单,从而是短距离无线通讯走入我们的生活,给我带来更多方便。 本次设计的课题是无线抢答器的设计,用NRF24L01作为2.4G无线通信模块,采用单片机AT89C51作为主控器,并利用ZLG7289作为显示键盘驱动芯片。来设计无线收发的抢答器电路。本次设计只是较简单的一种,应尽量用最简洁的语言写出所需功能的程序。 关键字:通信技术、无线收发、NRF24L01

AT89C51单片机复习题答案(原创)

单片机综合实验总复习题 ———(yuanchuang:mei、fang)1(a)、程序文件名有什么规定? 答:文件名不能用中文,只能用英文字符、下划线及数字作为文件名,其字符总数不能大于8。 将试验箱与计算机联通有哪些操作步骤?连接失败如何处理 答:复位、编译、调试、运行;重新复位。 1、(b)程序在运行时出现下面提示,要消除提 示框应如何操作? 2、IN6接模拟量,Y4接地址线,写出启动0809进行A/D转换及读入数据的指令 MOV A,#6 MOV DPTR,#0C000H MOVX @DPTR,A MOVX A,@DPTR (注:8个地址线:Y0——8000H Y7——F000H) 3、欲将8255PA、PB口设为输入(方式0),PC口设为输出,写出相关指令。 MOV DPTR ,#0FF2BH MOV A,,#92H MOVX @DPTR,A 4、已知0809参考电压为5V,输入的模拟电压为3.5V,经A/D转换后,对应的数字量是多少? B3H 5、已知00H~FFH对应的0832输出模拟量是 -5V~+5V,若要输出2.5V,写出相应指令。(0832片选端接Y4)。 MOV DPTR ,#0C000H MOV A,#0C0H MOVX @DPTR,A 6、用定时/计数器1延时277.1ms,写出其初始化程序。 MOV TMOD ,#10H MOV TH1,#0C9H MOV TL1,#0E1H MOV R0,#10 SETB EA SETA ET1 SETB TR1 7、编写出软件延时270ms的延时子程序(6mhz晶振) DELAY:MOV R6,#27 DELAY1:MOV R6,#10 DELAY2:MOV R7,#250 DJNZ R7,$ DJNZ R6,DELAY2 DYNZ R5,DELAY1 RET ?8、a、计算下列延时子程序的延时时间。 DELAY: MOV R0, #0 1 DEL: NOP 1 NOP 1 DJNZ R0, DEL 2 RET 2 (1+256*4+2)*2us=2.05ms 9、欲在数码管上显示“-5”,写出相应程序指令。 ORG 0000H AJMP START ORG 0030H START:MOV SCON,#00H MOV SBUF,#0B6H MOV R6,#5 DJNZ R6,$ MOV SBUF,#02H END 10、每0.331s读一次开关,当开关K=0时在数码管 上显示片外7003H单元的数据,K=1时显示片内10H单元的数据。用定时器定时。 ORG 0000H AJMP MAIN ORG 001BH AJMP IN_T0

无线抢答器设计

无线抢答器设计 无线抢答器的设计 摘要 当代社会知识竞赛举办频繁,抢答器的使用也比较多。普通抢答器,在显示方面还存在不足,个人原因占据大部分,在竞赛活动中无法保证公平。所以针对这类现象采用

了无线抢答器。无线抢答器系统采用无线传输模块,连接选手电路和主持人电路。无线抢答器功能强大,可以根据比赛的要求显示抢答时倒计时,选手的分数,显示该题的分数。这样就可以保证比赛的公平和公正。一套标准无线抢答系统就可以为不同的比赛提供从抢答、评分、计时到屏幕显示分数、统计分数等功能。普通抢答器在活动现场安装比较复杂,而无线抢答器就比较方便,省去了布线的麻烦。举办方选用无线抢答器可以更大的节约成本,优化流程,减少失误,为活动带来更大的影响力。 关键词:无线抢答器无线传输模块倒计时 Abstract In today's society,knowledge contest activities are more and more frequent.So the demand of Answer will become increasingly common. Answer devices such as ordinary, on display are still insufficient, individual reason occupies the majority,in the competition activities cannot assure fair. So for this phenomenon,we can use answer wireless device. Answer wireless device use wireless transmission module, links player circuit and host circuit.Answer wireless device is very good, it can according to match requirements display answer in the countdown, the players' scores, showed that the topic the scores . This would ensure fairness and justice of the match. A set of standard wireless answering system can provide for different matches from vies to answer first, score, timing to screen scores, statistical scores etc. Function. Answer devices such as ordinary,in the active site installation is more complex, and the wireless answer device is more convenient,reduce the wiring of trouble. Host machine can choose wireless answer device can more cost savings, optimize the process, reduce mistakes for activities to bring greater influence. Keywords:Answer wireless device Wireless transmission module Count down 目录 第一章绪论 .......................................................... - 1 -

基于C51单片机的八路无线抢答器毕业设计

摘 要 能够实现抢答器功能的方式有多种,可以采用前期的模拟电路,数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异的更新,利用单片机实现的抢答器也变得功能强大,结构简单,本文介绍一种利用单片机设计的八路无线抢答器,它功能不是特别多,但非常适合学校 抢答器的设计与制作方法在很多电子类媒体都能看到,但遗憾的是这些设计有的是原理性的,缺乏实用价值,而且不容易制作成功:有的电路设计过于复杂,不必要的功能太多。在这些设计中,主持人控制电路和选手控制电路之间一般都是用电缆连接,以达到相互之间通讯的目的,这种方法在实际使用时存在线缆连接可靠性的问题,并且安装和保管不方便,使用无线传输来传递各抢答器电路之间的信号,则可以有效避免有线传输信号的弊端。 关键词:抢答器;单片机;AT89C51;Keil c51;Proteus

引 言 单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。 而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。 无论是学校、工厂、军队还是益智性电视节目.都会举办各种各样的智力竞赛,都会用到抢答器。目前市场上已有各种各样的智力竞赛抢答器.但绝大多数是早期设计的,以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。这部分抢答器已相当成熟,但功能越多的电路相对来说就越复杂,且成本偏高.故障高,显示方式简单(有的甚至没有显示电路),无法判断提前抢按按钮的行为,不便于电路升级换代。近年来随着科技的飞速发展·单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异。本设计就是利用微电恼芯片(单片机)作为核心部件进行逻辑控制及信号的产生,用单片机本身的优势使竞赛真正达到公正、公平、公开。

AT89S51单片机期末考试复习资料

单片机复习资料 一、填空题 1. 80C51的Po 口作为输出端口时,每位能驱动_8 ________ 个SL型TTL负载。 2. 当80C51引脚ALE _______ 信号有效时,表示从Po 口稳定地送出了低8位地址。 3. 一个机器周期等于_6 _____ 个状态周期,振荡脉冲2分频后产生的时钟信号的周期定 义为状态周期。 4. 在80C51单片机内部RAM中字节地址范围是20H ~ 2FH的区域称为位寻址区,而 字节地址范围是30H ~ 7FH的一段区域称为通用RAM区____________ 。 5. 80C51系列单片机内部数据存储器,即内RAM中位寻址区的地址范围是20H~2FH 工作寄存器区的地址范围是00H“FH。内ROM中寻址区的地址范围是 OOOOH~OFFFH _______ 。 6. 80C51有__4_________ 个并行1\0 口,其中P0~P3是准双向口,所以由输出转输入时必 须先写入_J ____________ 。 7. 80C51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器_ SCON _______ 加以选择。 8. 若不使用80C51片内存器引脚_EA _________ 必须接地。 9. 80C51的堆栈是软件填写堆栈指针临时在片内RAM 内开辟的区域。 10. 80C51有4组工作寄存器,它们的地址范围是00H7FH 。 11. 80C51片内20H~2FH 范围内的数据存储器,既可以字节寻址又可以位寻址。 12. 计算机的系统总线有数据总线、地址总线、控制总线。 13. 80C51在物理有_4 ______ 个独立的存储空间。 14. 程序状态标志字寄存器PSW中的PSW.7的含义是进/借位标志;PSW.0的含义是_ 奇偶标志位。 15. 通常单片机上电复位时PC= 0000H SP= 07H,通用寄存器采用第0组,这一 组寄存器的地址范围是从00H?07H。 16. 单片机的存储器设计采用哈佛结构,它的特点是将程序存储器空间和数据存储器空间在 物理上截然分开,分别寻址 ___________ 。 17. 单片机系统的复位方式有上电复位和手动按键复位两种。 18. 80C51单片机的内部硬件结构包括了:运算器、控制器、存储器、和寄存 器—以及并行I/O 口、串行口、中断控制系统、时钟电路、位处理器等部件,这些部件通过总线相连接。 19. 80C51单片机的P0~P3 口均是准双向I/O 口,其中的P0 口和P2 口除了可以进行数 据的输入、输出外,通常还用来构建系统的地址线和数据线。 20. 80C51单片机的时钟电路包括两部分内容,即芯片内的振荡器___________ 和芯片外跨接的 晶振与电容。 二、判断题 1. 程序存储器和数据存储器的作用不同,程序存储器一般用存放数据表格和程序,而数据 存储器一般用来存放数据。(对) 2. 80C51的特殊功能寄存器分布在60H~80H(80~FFH地址范围内。(错) 3. 8051单片机的P0 口既可以做数据口线又可以做为地址口线。(对)

AT89S51单片机

AT89S51单片机

AT89S51 AT89S51单片机的硬件组成 单片机内硬件组成结构如图2-1所示。 图2-1 AT89S51单片机片内结构有如下功能部件和特性: (1)8位微处理器(CPU); (2)数据存储器(128B RAM); (3)程序存储器(4KB Flash ROM); (4)4个8位可编程并行I/O口(P0口、P1口、P2口 和P3口); (5)1个全双工的异步串行口; (6)2个可编程的16位定时器/计数器; (7)1个看门狗定时器; (8)中断系统具有5个中断源、5个中断向量; (9)特殊功能寄存器(SFR)26个; (10)低功耗模式有空闲模式和掉电模式,且具有掉电 模式下的中断恢复模式;

(11)3个程序加密锁定位。 与AT89C51相比,AT89S51有更突出的优点: (1)增加在线可编程功能ISP(In System Program),字节和页编程,现场程序调试和修改更加方便灵活;(2)数据指针增加到两个,方便了对片外RAM的访问过程; (3)增加了看门狗定时器,提高了系统的抗干扰能力;(4)增加断电标志; (5)增加掉电状态下的中断恢复模式。 单片机内各功能部件通过片内单一总线连接而成(见图2-1),基本结构依旧是CPU 加上外围芯片的传统微机结构。 CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,Special Function Register)的集中控制方式。单片机内部件功能 1)CPU(微处理器) 8位的CPU,与通用CPU基本相同,同样包括了运算器和控制器两大部分,还有面向控制的位处理功能。 2)数据存储器(RAM) 片内为128B(52子系列为256B),片外最多可扩64KB。片内128B的RAM以高速RAM的形式集成,可加快单片机运行的速度和降低功耗。 3)程序存储器(Flash ROM) 片内集成有4KB的Flash存储器(AT89S52 则为8KB;AT89C55片内20KB),如片内容量不够,片外可外扩至64KB。

基于单片机的抢答器的设计

基于51单片机的数字抢答器设计 系别:机械与电子工程学院 专业:电气工程及其自动化 班级:电气1304班 姓名:张宏伟 学号:2013011367 指导教师:吴雪娟 完成日期:2015.12.11 - 1 -

摘要 数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。单片机体积小价格低,应用方便,稳定可靠。单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。 关键字:抢答电路定时电路报警电路 - 2 -

引言:单片机的发展史 单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌式系统独立发展道路上,Intel公司功不可没。 2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展 MCU方面,最著名的厂家当数Philips公司。 Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。 3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。 单片机的发展单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。 第一章数字抢答器的概述及要求 1.1 数字抢答器的概述 对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。 1.2 设计任务与要求 基本要求: 1.给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。 2.抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在 LED数码上显示选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。 发挥部分: 1.抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。当节目主持人启 动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。 2.参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻

基于单片机STC89C52RC的八路抢答器课程设计报告75092282

基于单片机STC89C52RC的八路抢答器课程设计报告75092282

信息与电子工程学院 课程设计报告 课程单片机技术应用 设计题目基于单片机STC89C52RC的八路抢答器专业应用电子技术 班级11级4班 成员姓名学号分工成绩 软件部分 硬件部分

目录 一、课程设计概述.................................................................................................................... - 1 - 1.1课程设计背景 (1) 1.2课程设计内容 (1) 1.3课程设计技术指标 (1) 二、方案的选择及确定............................................................................................................ - 1 - 2.1方案一:集成数字电路 (1) 2.2方案二:单片机 (2) 2.3方案分析比较: (2) 三、硬件设计............................................................................................................................ - 3 - 3.1系统硬件设计 (3) 3.2复位电路的设计 (3) 3.3时钟电路设计 (3) 3.4显示电路设计 (4) 3.5按键电路设计 (5) 3.6报警电路设计 (6) 3.7电源模块设计 (7) 四、系统软件设计.................................................................................................................... - 7 - 4.1系统的功能流程 (7) 4.2主程序流程图 (7) 五、系统调试过程.................................................................................................................... - 9 - 5.1软件调试 (9) 5.2硬件调试 (10) 六、总结.................................................................................................................................. - 13 - 七、遇到的问题及解决方法.................................................................................................. - 13 - 八、参考文献.......................................................................................................................... - 13 - 九、附录.................................................................................................................................. - 14 - 9.1仪器与设备 (14) 9.2元器件清单 (14)

毕业设计169无线智能抢答器

二○○七届学生毕业论文(设计)存档编号: 毕业论文(设计)论文题目无线智能八路抢答器设计 学院高等职业技术学院 专业电子信息工程 姓名胡义杰 学号20043050018 指导教师秦工 年月日 1

无线智能八路抢答器的设计 摘要: 介绍的无线抢答计分器,具有8 路无线抢答判断功能,无须布线,具有移动方便灵活等优点。无线抢答部份选用专用的编解码芯片PT2262/ 2272 构成数据加解密,用FM调制电路构成无线发射器,用FM解调芯片MC3362 构成无线数据接收器,构成了无线编解码抢答电路,使得系统在使用时更可靠,性能价格比方面的指标也得到了加强。控制部份采用74系列常用集成电路设计的数码显示八路抢答器的电路组成、设计思路及功能。该抢答器除具有基本的抢答功能外,还具有定时、计时和报警功能。主持人通过时间预设开关预设供抢答的时间,系统将完成自动倒计时。若在规定的时间内有人抢答,则计时将自动停止;若在规定的时间内无人抢答,则系统中的蜂鸣器将发响,提示主持人本轮抢答无效,实现报警功能。 关键词: 八路抢答器,,无线发射接收,编码、声光控制 2

Topic:The wireless intelligent Chinese red army soldier snatches theanswering design Student: hu yijie Jianghan University School of Higher professional technical institute Guide Teacher: qin gong Jianghan University School of Physics& Information Engineering Abstract: In this paper, Introduces the wireless machine of grabbing for replying and displaying theresult , which has the functionof judgment with 8 channels of grabbing for replying. It does need to distribute the electrical wire , so it is movedexpediently. Chooses the familiar coding - decoding chip PT2262/ 2272 that forms the data coding2decoding circuit . Thewireless emitter is composed of the FM modulate circuit , and the wireless receiver is composed of the FM demodulationchip MC3362. The electric circuit and designing thought of an answering racer based on the common-used series of 74 IC with 8-wire is introduced, and its function is also described. The answering race’s function includes timing, counting, and alarming, besides the basic function of an answering racer. The host sets the provided time for the answering race through the time-setting switch, after this the system will count down the time automatically. If anybody answer the question on time, the counting of time will stop; If nobody answer the question on time, the alarm will give out some sound, helping the host know the race in this turn is of no use, so the function of alarming is achieved. Keywords: The Chinese red army soldier snatches answering , Wireless launch receive,Code,Acousto-optic control 3

相关主题
文本预览
相关文档 最新文档