一.硬件方案
以STM32单片机为核心的八路抢答器采用了数字显示器LCD1602,自动锁存显示结果设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LCD1602显示,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键。
主要由STM32F103C8T6单片机+LCD1602液晶显示+5路按键组成,主要的设计功能为
1.当系统上电后,系统开始计时;当按键按下时,计时停止,显示屏显示当前时间及按键的号数;
2.设置有五个按键,分别为1、2、3、4、5号位,按下时显示对应号数;
3.液晶只能显示1个数字。
4.按下复位按键后,则开始新一轮的抢答。
二.设计电路图
(1)原理图如下:
原理图资料:https://pan.baidu.com/s/1s_f_9o0CFFO83Uzw9ciMhw?pwd=tcdx
提取码:tcdx
三.主程序源码
int main(void)
{
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为115200
TIM3_Int_Init(499,7199);//50ms
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init();
Lcd_GPIO_init();
Lcd_Init();
while(1)
{
if(keyFlag == 0)//按键无任何按下
{
CheckKey(); //按键设置
}
if(disFlag==1) //显示
{
disFlag = 0;
if(keyFlag == 0)
{
Dtimes++;
sprintf(tab1," N ");//没有人按键
}
else
{
sprintf(tab1," %d ",keyFlag);//显示按键的值
}
Lcd_Puts(0,1,(unsigned char *)tab1); //初始化显示
sprintf(tab0,"time :%5.1fs ",(float)Dtimes/10); //显示时间
Lcd_Puts(0,0,(unsigned char *)tab0); //初始化显示
}
}
}