你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32单片机抢答器时间显示设计

[复制链接]
STMCU小助手 发布时间:2022-5-11 13:59
一.硬件方案
9 W1 h# }* {5 q: O0 @4 c- V/ m本设计出以STM32单片机为核心的八路抢答器。我们采用了数字显示器LCD1602直接指示,自动锁存显示结果设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LCD1602显示,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,。% N+ V6 G3 y! u0 I' [' H
主要由STM32F103C8T6单片机+LCD1602液晶显示+5路按键组成;;如图:
/ e3 I- s. y& {& @: e! f/ D2 Q- m( i% q% A# c: g
5%KN]GNV89{7VGFKHUU~P.png * X/ G4 k. t8 U4 r
3 |3 m( b0 {/ ~/ _- g  X" w+ L9 s
二.设计功能

* n6 l/ @' k: I& W  Z. D. L2 x(1)当系统上电后,系统开始计时;当按键按下时,计时停止,显示屏显示当前时间及按键的号数;
1 L# D5 F9 t, U# {* m( Y(2)设置有五个按键,分别为1、2、3、4、5号位,按下时显示对应号数;
/ O4 p7 q: v: v+ H(3)液晶只能显示1个数字。
" o% }( [! ]/ @3 I(4)按下复位按键后,则开始新一轮的抢答。
! C! k0 T8 ]* x: W6 p4 Z7 |- l& D
三.设计原理图
/ Q- Q: X) r) k8 H+ `(1)原理图主要采用AD软件进行设计,如图:8 }) H6 X  T6 N8 [

  d1 F# y$ R: q1 M ZQ)DJ~LI12F~GW)6XZ]Y[J2.png
+ A' F/ I% ~' H8 i; g! K* k$ B  \6 D" H4 M+ j! P0 ]
(2)PCB图如下:
; ^+ T( O" \6 C# i6 o# z3 F3 M0 D; N4 a2 L, Y' I! a( Y, t  C
ZDZ)L93(G(JHY3D5GE5QXT9.png : A2 q- w' j2 n6 x# r7 H7 B+ d% {

+ T# `2 Z# \: U' Q  h四.软件设计1 V# @* g3 u3 @+ g4 t8 S1 _
(1)程序流程图9 f( g" P# Q5 E3 w5 r
  Y3 w- f1 S8 N2 F1 m7 H
3YMXOS`CBCCO6V`~Q86O0TE.png
) X) _; I1 C' O7 U. Z. x# t/ o' g; {; K& i3 L* a8 d% V1 d8 S
(2)主程序源码
4 n1 {$ m0 b! A6 I, n: f; V% C8 |& u8 v/ Q; J2 C
  1. int main(void)
    / Y7 |: K6 w- N2 n8 m& k4 E
  2. { ( ?7 E8 m8 M$ N) T2 u7 l. x+ u$ z# ?0 b
  3.         delay_init();                     //延时函数初始化         
    3 B! A/ ?3 ?7 c- B
  4.         uart_init(9600);                 //串口初始化为115200
    & r% ?$ g7 b( Z, H8 n2 }4 x
  5. //        uart2_init(9600)        ;
    ( ^% d& d0 R' w; l
  6.   TIM3_Int_Init(499,7199);//50ms - ]: b' h3 t* T' H# O# ]5 s4 G  c! I
  7.          7 J" ?0 Q! F4 B: X: c& M& r
  8. //        LED_Init();                                  //初始化与LED连接的硬件接口
    2 R; f& B, y% R
  9.         KEY_Init();
    6 y+ l4 \- w& i' \- Z7 p
  10.          
    , E/ a" d: m! [
  11.         Lcd_GPIO_init();  
    0 [' e+ r" T  ]
  12.         Lcd_Init();        1 W5 p* S/ U/ ?1 R
  13.         , @% l1 q  ^7 f- {' w. \, U( t4 z8 x
  14.         while(1)3 x) O" \1 q! {
  15.         {# I. [9 C# e2 p$ V
  16.                 if(keyFlag == 0)//按键无任何按下
    % M' h2 `' z/ k6 j+ Q5 M3 h
  17.                 {
    . ~  T' T- [0 f/ T1 w
  18.                         CheckKey();  //按键设置, z5 I# A/ F! P9 X- [
  19.                 }               
    / t: i6 k0 a- }$ L, G+ l; |$ c2 h
  20.                
    - E9 o" P8 I" ]3 o" L, X- P! U* a
  21.                 if(disFlag==1)                                        //显示- z3 \( c! f- j' b4 v  k
  22.                 {$ s$ _) a6 y' h3 e+ ]* w1 N  ]
  23.                         disFlag = 0;        
    . q0 |* d/ R- N' c, u, F: `9 F6 B
  24.                         if(keyFlag == 0)
    & s: r; h& R- [5 k; D
  25.                         {
    ! j3 e; I3 ?& x0 X
  26.                                 Dtimes++;                                8 r; O- y$ z/ g% E
  27.                                 sprintf(tab1,"    N     ");//没有人按键
    , V3 F& h0 j0 q" h" w, t& H
  28.                         }0 w* C4 g% N8 ]: a7 ?6 t
  29.                         else
    # `* p0 |4 n" O. a: Y1 S
  30.                         {, j) w0 R% d4 z2 b# Z6 c, o/ f: Z) \
  31.                                 sprintf(tab1,"    %d     ",keyFlag);//显示按键的值7 b( X7 l, ~8 }6 w
  32.                         }        0 k: l, _5 P' u& G$ j% B. f6 v2 o
  33.                         Lcd_Puts(0,1,(unsigned char *)tab1);        //初始化显示 # Z9 p% y6 y' L5 W8 I, X
  34.                         sprintf(tab0,"time :%5.1fs     ",(float)Dtimes/10);                //显示时间               
    5 H" F; s0 D, @% f% M& F# K
  35.                         Lcd_Puts(0,0,(unsigned char *)tab0);        //初始化显示                                           ]+ c! c! z# c: F! o5 P
  36.                 }
    & C8 |0 d5 r  `' ]' h
  37.         }                                                                                            
    , E7 z) j. e' w$ h1 d3 a8 a
  38. }        0 |3 i3 G+ k8 w( \
  39. 3 j6 f9 l# \+ Z2 W" C8 {% c8 |2 n; c

  40. & |4 A7 l* g4 K0 ^3 `2 e
复制代码

! r% v- a! J7 P8 G' ?" `4 L
赞 收藏 评论0 发布时间:2022-5-11 13:59

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版