8051单片机抢答器C程序
声明
***********************************************************************/
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 = da
* 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)
DA
else
DA
CLK=1;//八个bit都传递完成后变为高电平,锁存
}
}
/***********************************************************************
* MAX7219_Write()
*
* 描述: 向 MAX7219 写命令
* Arguments : reg_number = register to write to
* dataout = da
* 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);
8051单片机抢答 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)