微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 8051单片机抢答器C程序

8051单片机抢答器C程序

时间:11-13 来源:互联网 点击:

声明

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

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);

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); // 声明犯规声音函数

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

* 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);

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top