STM32单片机的抢答器设计

一.硬件方案

         以STM32单片机为核心的八路抢答器采用了数字显示器LCD1602,自动锁存显示结果设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LCD1602显示,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键。
   主要由STM32F103C8T6单片机+LCD1602液晶显示+5路按键组成,主要的设计功能为
1.当系统上电后,系统开始计时;当按键按下时,计时停止,显示屏显示当前时间及按键的号数;
2.设置有五个按键,分别为1、2、3、4、5号位,按下时显示对应号数;
3.液晶只能显示1个数字。
4.按下复位按键后,则开始新一轮的抢答。

二.设计电路图

(1)原理图如下:

STM32单片机的抢答器设计_第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);    //初始化显示                     
        }
    }                                                
}    

你可能感兴趣的:(单片机,stm32,嵌入式硬件)