基于STM32单片机抢答器时间显示设计

一.硬件方案

本设计出以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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值