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

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

[复制链接]
yunfei7370 发布时间:2008-12-11 09:49
                                               程序说明, r7 H, J8 m+ T! N' w
  此程序通过键盘扫描实现了时钟可调的功能,键盘使用行列式扫描的方法,并且将扫描到的按键值用用来调表!
3 ]8 C+ i4 e/ e9 f* ^; t, n' d7 l  利用键盘上的值来调表, 利用键盘上的值来调表,按键2为模式选择位,模式1调秒、模式2调分、模式3调小时,0 ?: @/ q/ _" Y
                         如果模式为4则让模式为0,计数器使能,时钟开始工作
! B0 z+ s: i) i2 o/ G7 U*          按键3让时钟加1调表的时候systick定时器、计数器被失能,时钟停止;  m8 H0 M- N  H' e
*          按键4让时钟减1调表的时候systick定时器、计数器被失能,时钟停止;。& I8 D8 |1 A  a9 X' j
           此时钟用数码管,时钟显示方式为“时时分分秒秒”。
" `  i9 R1 I1 y2 `; o0 }* }  1.其中键盘的分布如下所示:9 u7 d0 M! O) t$ O- {
                                键盘
0 p* b. E% a, e4 X5 o7 r( ^# w      - U: |  Y: v1 P
  -8------————9------————A-------------B------GPIO_Pin_7
% D" T0 s: g* Z, z2 r6 `: S  n   |              |              |             |  A/ c' R' J/ n, I% o3 A% Q
   |              |              |             |
6 {" v0 n9 O/ ]1 n3 L) x5 D  -4------————5-------——---6-------------7------GPIO_Pin_6( l7 A) ?( ~. g
   |              |              |             |4 f6 U) }6 i  ?9 a9 P1 D
   |              |              |             |6 U. q  |* q! x* K6 o
  -0------————1--------------2-------------3------GPIO_Pin_54 D: V, K5 ~8 X5 g9 Q
  GPIO_Pin_1  GPIO_Pin_2     GPIO_Pin_3   GPIO_Pin_4
9 v3 [' j/ l  s3 e  2.有关键盘的扫描按如下方法扫描:
0 n! L* c3 O+ ~! Q2 E6 t& W& A                                       键盘扫描函数
1 K: R* _9 M2 r           ①.先将 GPIO_Pin_5设置为低电平,GPIO_Pin_6、GPIO_Pin_7设置为高电平
: T! q5 e( s4 Y*              依次扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1为0,说明有键按下,3 q' K1 F8 R) K+ |
           查表得键值0x00,若不为0则扫描GPIO_Pin_2;' G, A1 d5 y! F7 [
               扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,
0 j3 `! Y- o8 F  k           查表得键值0x01,若不为0则扫描GPIO_Pin_3;; X; F2 `1 o: n$ {
               扫描GPIO_Pin_3 ,判断GPIO_Pin_3是否为0,若GPIO_Pin_3 为0,说明有键按下,
6 M  p! ]) j/ Y+ y4 B/ D% S. R           查表得键值0x02,若不为0则扫描GPIO_Pin_4;1 a0 w8 j% A. o  O* b8 K6 d/ ]. c/ T( i
               扫描GPIO_Pin_4 ,判断GPIO_Pin_4 是否为0,若GPIO_Pin_4为0,说明有键按下,& R, X  M3 }2 p$ R
           查表得键值0x03,若不为0则进行下一轮扫描;
# F; R# s2 T& |( w% ~% L, u+ b          ②. 再将 GPIO_Pin_6设置为低电平,GPIO_Pin_5、GPIO_Pin_7设置为高电平
* N. o( K% b' N% N+ g+ o5 L) g: X*             依次扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1为0,说明有键按下,: V3 }5 [- W; P7 @0 H' P
           查表得键值0x04,若不为0则扫描GPIO_Pin_2;% i. U: i, j$ o1 F' b: ]3 ?) S( j5 X
               扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,
) [* z/ v: ?, S6 R4 _: U- N0 s( \           查表得键值0x05,若不为0则扫描GPIO_Pin_3;
3 ?" H( _, b! r% d7 X# H  O               扫描GPIO_Pin_3 ,判断GPIO_Pin_3是否为0,若GPIO_Pin_3 为0,说明有键按下,% f) T$ C3 T; R: ]
           查表得键值0x06,若不为0则扫描GPIO_Pin_4;
4 R2 S* j; b1 x& P/ D               扫描GPIO_Pin_4 ,判断GPIO_Pin_4 是否为0,若GPIO_Pin_4为0,说明有键按下,
, B# q! e' z/ y" K           查表得键值0x07,若不为0则进行下一轮扫描;1 a9 ~$ f8 a6 e4 u
          ③. 再将 GPIO_Pin_6设置为低电平,GPIO_Pin_4、GPIO_Pin_5设置为高电平6 u' I# u6 H: q
*               依次扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1为0,说明有键按下,$ F' R/ [3 U) K$ e" H% M8 x
           查表得键值0x08,若不为0则扫描GPIO_Pin_2;
' {0 |/ \+ s) w) Q0 [5 ^* n8 i1 N               扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,* Q+ |7 U, ]; \
           查表得键值0x09,若不为0则扫描GPIO_Pin_3;
" T6 z! i4 K& ~! @               扫描GPIO_Pin_3 ,判断GPIO_Pin_3是否为0,若GPIO_Pin_3 为0,说明有键按下,
' g/ t( L8 l" ]           查表得键值0x0A,若不为0则扫描GPIO_Pin_4;
2 e' `) ], S7 L               扫描GPIO_Pin_4 ,判断GPIO_Pin_4 是否为0,若GPIO_Pin_4为0,说明有键按下,
" D5 g3 `" x$ l" n           查表得键值0x0B,若不为0则进行下一轮扫描;    
  G+ u4 o% e0 S2 O      若要显示则只需将变量jianzhi送入到lcd显示程序中去即可
& K5 r, t9 ~, h; I' K  3。以下是键盘扫描函数:( h; u4 S& O8 Q1 {. l6 Z
      void jiansao(void)
7 G0 Z8 Y( u2 P5 O      {8 i  u/ g  S7 i6 m; d$ d0 E8 Y9 |
       ) |# Z- I8 ]5 n+ J) K/ F2 N
         GPIO_WriteBit(GPIOD,GPIO_Pin_6|GPIO_Pin_7, Bit_SET);: y% N" U3 d" k, j
         GPIO_WriteBit(GPIOD, GPIO_Pin_5, Bit_RESET);) [; [3 M4 f% x! S+ ~: S
         kongzhi=0;
' G* z7 O2 v7 m- R: D% r         for(i=0;i
收藏 评论1 发布时间:2008-12-11 09:49

举报

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

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

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

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版