一.硬件方案
本设计出以STM32单片机为核心的八路抢答器。我们采用了数字显示器LCD1602直接指示,自动锁存显示结果设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LCD1602显示,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,。
主要由STM32F103C8T6单片机+LCD1602液晶显示+5路按键组成;
二.设计功能
(1)当系统上电后,系统开始计时;当按键按下时,计时停止,显示屏显示当前时间及按键的号数;
(2)设置有五个按键,分别为1、2、3、4、5号位,按下时显示对应号数;
(3)液晶只能显示1个数字。
(4)按下复位按键后,则开始新一轮的抢答。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)PCB图如下:
四.软件设计
主程序源码
int main(void)
{
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为115200
// uart2_init(9600) ;
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); //初始化显示
}
}
}
资料链接:https://pan.baidu.com/s/1tA3-0ypZABU71WuveZZTMA?pwd=dtgw
提取码:dtgw