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

数码管显示(可调用三按键,可加减,模式选择)

[复制链接]
yunfei7370 发布时间:2008-12-11 09:49
                                               程序说明$ h/ Q4 q: Z9 Y! A
  此程序通过键盘扫描实现了时钟可调的功能,键盘使用行列式扫描的方法,并且将扫描到的按键值用用来调表!& _. e3 T/ c9 N$ C& D' S
  利用键盘上的值来调表, 利用键盘上的值来调表,按键2为模式选择位,模式1调秒、模式2调分、模式3调小时,
( u' J7 X- W. j) C) U                         如果模式为4则让模式为0,计数器使能,时钟开始工作3 l. G) T( D: i, O- i
*          按键3让时钟加1调表的时候systick定时器、计数器被失能,时钟停止;
$ Z% ^: y/ V0 F*          按键4让时钟减1调表的时候systick定时器、计数器被失能,时钟停止;。
5 Q! |0 d" Y% I           此时钟用数码管,时钟显示方式为“时时分分秒秒”。
! A0 b! y( g/ @. o) h; W8 K  1.其中键盘的分布如下所示:8 a1 w: H$ k. [% d- b- X2 ~
                                键盘) J& Y: d) A+ H6 W  E
      
5 ~4 R% P8 a& h# x  -8------————9------————A-------------B------GPIO_Pin_7
1 A% @$ |$ @9 r2 [/ Y   |              |              |             |2 p- d" n4 o+ N( o' o' @
   |              |              |             |
/ T% q7 I' T5 n2 U! B  -4------————5-------——---6-------------7------GPIO_Pin_6+ }0 F  T1 l3 I2 a. ^; P
   |              |              |             |* s& c+ h4 R) t# |6 w& X2 a
   |              |              |             |
6 P. A6 h+ ]: b6 T( v7 H) D" \, L  -0------————1--------------2-------------3------GPIO_Pin_5
3 C+ d- k: _2 A+ j. a& ?  GPIO_Pin_1  GPIO_Pin_2     GPIO_Pin_3   GPIO_Pin_4
2 i0 ]8 X% N' G% _  2.有关键盘的扫描按如下方法扫描:9 ^. {7 x8 ^: C9 [  o
                                       键盘扫描函数0 z% S- n- T7 u7 r7 m0 d% Y
           ①.先将 GPIO_Pin_5设置为低电平,GPIO_Pin_6、GPIO_Pin_7设置为高电平
+ ?6 x/ m; M1 \: w3 K( ^*              依次扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1为0,说明有键按下,
( ]; l# U4 W: e) n+ S1 ^+ C% ]           查表得键值0x00,若不为0则扫描GPIO_Pin_2;
/ ?  v  c- _! M5 K5 I( J               扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,
5 K. L0 x: |4 p5 D, ]           查表得键值0x01,若不为0则扫描GPIO_Pin_3;. Y# X% c' Y5 M- F4 E% \0 v2 D) S3 ]
               扫描GPIO_Pin_3 ,判断GPIO_Pin_3是否为0,若GPIO_Pin_3 为0,说明有键按下,
+ K( X. J- J) v           查表得键值0x02,若不为0则扫描GPIO_Pin_4;2 Q* o' \. e# ]5 M0 O3 W+ \8 o
               扫描GPIO_Pin_4 ,判断GPIO_Pin_4 是否为0,若GPIO_Pin_4为0,说明有键按下,
5 c5 U  x$ C( b  {& j/ c3 v! f) u; c           查表得键值0x03,若不为0则进行下一轮扫描;
5 B1 ]# {4 B$ k. Y# ~8 d7 @          ②. 再将 GPIO_Pin_6设置为低电平,GPIO_Pin_5、GPIO_Pin_7设置为高电平+ p0 e4 `) L& s1 O3 Q
*             依次扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1为0,说明有键按下,: `; p. Q! j4 k% y6 \  v
           查表得键值0x04,若不为0则扫描GPIO_Pin_2;
& L8 }6 g3 A# {* J  g- o) L               扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,- i, {2 |$ c2 d  {5 m3 m+ P9 f' Q
           查表得键值0x05,若不为0则扫描GPIO_Pin_3;/ Y; k  r6 s9 O- u1 U
               扫描GPIO_Pin_3 ,判断GPIO_Pin_3是否为0,若GPIO_Pin_3 为0,说明有键按下,# q8 V# `" E0 \1 t  @( Q: \" ~3 Z
           查表得键值0x06,若不为0则扫描GPIO_Pin_4;
( t2 W+ k/ h7 R2 B               扫描GPIO_Pin_4 ,判断GPIO_Pin_4 是否为0,若GPIO_Pin_4为0,说明有键按下,
. s, T' ^$ `3 S( d6 L5 w           查表得键值0x07,若不为0则进行下一轮扫描;- l/ n. t+ @3 ^1 @
          ③. 再将 GPIO_Pin_6设置为低电平,GPIO_Pin_4、GPIO_Pin_5设置为高电平: p5 u9 }; O& L
*               依次扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1为0,说明有键按下,* v. j/ y9 P/ D& w0 d
           查表得键值0x08,若不为0则扫描GPIO_Pin_2;
+ ?* d- P( K* O" H: _               扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,
- z* m2 T' ?" v' Q' G           查表得键值0x09,若不为0则扫描GPIO_Pin_3;2 r; j2 D. W; c  k- T6 c
               扫描GPIO_Pin_3 ,判断GPIO_Pin_3是否为0,若GPIO_Pin_3 为0,说明有键按下,
4 L6 l1 k5 T! @8 M8 w: W) t. f           查表得键值0x0A,若不为0则扫描GPIO_Pin_4;" v% f% n/ w2 K* o; `
               扫描GPIO_Pin_4 ,判断GPIO_Pin_4 是否为0,若GPIO_Pin_4为0,说明有键按下,
3 Z. X: W2 v  E           查表得键值0x0B,若不为0则进行下一轮扫描;    & l: h% v" l+ _/ f$ I3 s# @' f
      若要显示则只需将变量jianzhi送入到lcd显示程序中去即可: U  `8 @2 k. x2 g
  3。以下是键盘扫描函数:
7 ~  _6 h: T9 {. A6 t6 K0 |      void jiansao(void)3 H% z; q! H# @! B, v! v
      {
# c6 d1 k9 i  U) ^0 ~0 x6 I       
+ }3 _1 ^$ d6 u& }7 n, Z         GPIO_WriteBit(GPIOD,GPIO_Pin_6|GPIO_Pin_7, Bit_SET);
1 k& c0 \, N. z$ s         GPIO_WriteBit(GPIOD, GPIO_Pin_5, Bit_RESET);
3 R; A8 E6 R- R( q         kongzhi=0;
+ L4 N, n) N: h% ~# u  a3 E         for(i=0;i
赞 收藏 评论1 发布时间:2008-12-11 09:49

举报

1个回答
得蜜 回答时间:2008-12-11 23:02:49

RE:数码管显示(可调用三按键,可加减,模式选择)

欢迎分享,给个精化鼓励原创。

所属标签

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