帮我设计单片机课程设计实验,用c语言程序写,题目是:抢答器,要求制作一个四人抢答器,4个灯跑马循环

帮我设计单片机课程设计实验,用c语言程序写,题目是:抢答器,要求制作一个四人抢答器,4个灯跑马循环,谁先按下,相对应的灯亮起,同时蜂鸣器发声,

#define PlayerKey1_IO (P0.1)
#define PlayerKey2_IO (P0.2)
#define PlayerKey3_IO (P0.3)
#define PlayerKey4_IO (P0.4)
#define PlayerLED1_IO (P1.1)
#define PlayerLED2_IO (P1.2)
#define PlayerLED3_IO (P1.3)
#define PlayerLED4_IO (P1.4)
#define BuzzerEnable_IO (P1.5)
void SysInit(void)
{
//设置Key_io为上拉输入
//设置LED_io为通用输出
//设置BuzzerEnable_io为通用输出
}
unsigned char KeyScan(void)
{
if (PlayerKey1_IO == 0) return 1;
if (PlayerKey2_IO == 0) return 2;
if (PlayerKey3_IO == 0) return 3;
if (PlayerKey4_IO == 0) return 4;
return 0;
}
void Delay_Ms(unsigned char Nms)
{
volatile unsigned short tempcnt;
while (Nms--)
for (tempcnt = 0; tempcnt < 500; tempcnt++);//按照相应的参数配置计数上限,此处设为500
}
void main(void)
{
unsigned char MarqueeStep=0;
unsigned char KeyValue=0;
SysInit();
while (1)
{
Delay_Ms(400);
KeyValue = KeyScan(); //无按键去抖
if (KeyValue == 0)
{
MarqueeStep++;
if (MarqueeStep > 4) MarqueeStep = 0;
BuzzerEnable_IO = 0; // 按键取消停止蜂鸣器发声
}
else
{
MarqueeStep = KeyValue;
BuzzerEnable_IO = 1; //蜂鸣器发声
}
PlayerLED1_IO = 0;
PlayerLED2_IO = 0;
PlayerLED3_IO = 0;
PlayerLED4_IO = 0;
if (MarqueeStep == 0)
PlayerLED1_IO = 1;
else if (MarqueeStep == 1)
PlayerLED2_IO = 1;
else if (MarqueeStep == 2)
PlayerLED3_IO = 1;
else if (MarqueeStep == 3)
PlayerLED4_IO = 1;
}
}
基础框架是这样。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-27
你写完了吗 我也需要
第2个回答  2015-12-28
你好!原理图有了吗?需不需要倒计时呢追问

没有要求用倒计时,设计成等到主持人按复位键就可以了

追答

留下你的,-企-,-鹅-,-号-,吧

追问

18.....1 680 44 。 6 9

本回答被网友采纳
第3个回答  2015-12-28
难度不大 有需要可以找我追问

嗯嗯,先加个好友吧详谈0,0