用PLC设计一个主持人控制的抢答器?

用PLC设计一个主持人控制的抢答器?,第1张

主持人给出题目后,按下抢答按钮,开始抢答信号灯亮后可以抢答,先按下按钮的抢答指示灯亮,后按下抢答按钮的抢答指示灯不亮;如果主持人未按下开始抢答按钮而有人抢答,则对应的抢答指示灯闪烁起来,表示犯规,等主持人按下复位按钮后,则可重新进入抢答环节。

接线图略。

#define PlayerKey1_IO (P01)
#define PlayerKey2_IO (P02)
#define PlayerKey3_IO (P03)
#define PlayerKey4_IO (P04)
#define PlayerLED1_IO (P11)
#define PlayerLED2_IO (P12)
#define PlayerLED3_IO (P13)
#define PlayerLED4_IO (P14)
#define BuzzerEnable_IO (P15)
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;
}
}
基础框架是这样。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13255876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-27
下一篇 2023-06-27

发表评论

登录后才能评论

评论列表(0条)

保存