|
<font size="7"><font size="2">下面是 程序说明 6 D. _8 ]2 j3 } 具体的程序参看附件 程序说明 此程序实现了键盘扫描的功能,键盘使用行列式扫描的方法,并且将扫描到的按键值用开发板上的lcd显示出来! 1.其中键盘的分布如下所示: 键盘 -8------————9------————---------------------GPIO_Pin_6 | | | |/ _# M- p" {: r4 `; e | | | |7 ^) S: U0 _: E; [6 G' e -4------————5-------——---6-------------7------GPIO_Pin_50 |* m2 {6 [2 ~/ _+ W | | | |, c, `6 I6 ?1 G' h0 e | | | |) ]- q( C8 `8 U M8 b5 {3 H/ ^& y5 W -0------————1--------------2-------------3------GPIO_Pin_4; F- P: j- c% @( Y8 Z3 ~ GPIO_Pin_7 GPIO_Pin_1 GPIO_Pin_2 GPIO_Pin_3 ! C/ b. J# I/ t" v 2.有关键盘的扫描按如下方法扫描: 键盘扫描函数& V8 t4 b+ Z. f: U% E* R* E/ ] 1.先将 GPIO_Pin_4设置为低电平,GPIO_Pin_5、GPIO_Pin_6设置为高电平 * 依次扫描GPIO_Pin_7 ,判断GPIO_Pin_7 是否为0,若GPIO_Pin_7 为0,说明有键按下,: e9 F; D8 b, M- P 查表得键值0x00,若不为0则扫描GPIO_Pin_1;5 H# _! O" {- B. a w& T 扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1 为0,说明有键按下, 查表得键值0x01,若不为0则扫描GPIO_Pin_2; 扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下, 查表得键值0x02,若不为0则扫描GPIO_Pin_3; 扫描GPIO_Pin_3 ,判断GPIO_Pin_3 是否为0,若GPIO_Pin_3为0,说明有键按下," O! t5 e* a4 _! `+ T9 r! _ 查表得键值0x03,若不为0则进行下一轮扫描; 2. 再将 GPIO_Pin_5设置为低电平,GPIO_Pin_4、GPIO_Pin_6设置为高电平 * 依次扫描GPIO_Pin_7 ,判断GPIO_Pin_7 是否为0,若GPIO_Pin_7 为0,说明有键按下,! G# |/ a0 e. e1 { 查表得键值0x04,若不为0则扫描GPIO_Pin_1; 扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1 为0,说明有键按下,' g Q3 b! I+ X( E4 l" A/ a9 Y6 \ 查表得键值0x05,若不为0则扫描GPIO_Pin_2;- A9 g" v/ X# p' t* c& q( { 扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下,5 ?* E" s1 v; s& n& U; I3 p) \ 查表得键值0x06,若不为0则扫描GPIO_Pin_3; 扫描GPIO_Pin_3 ,判断GPIO_Pin_3 是否为0,若GPIO_Pin_3为0,说明有键按下,9 x' }- }& ^7 I, p @ 查表得键值0x07,若不为0则进行下一轮扫描; 3. 再将 GPIO_Pin_6设置为低电平,GPIO_Pin_4、GPIO_Pin_5设置为高电平% m" v& A% [0 l8 l7 u * 依次扫描GPIO_Pin_7 ,判断GPIO_Pin_7 是否为0,若GPIO_Pin_7 为0,说明有键按下, 查表得键值0x08,若不为0则扫描GPIO_Pin_1;) ~: r d7 K/ J9 n& g) R X 扫描GPIO_Pin_1 ,判断GPIO_Pin_1 是否为0,若GPIO_Pin_1 为0,说明有键按下,6 T, z4 t5 C7 |: b' N2 I) s 查表得键值0x09,若不为0则扫描GPIO_Pin_2;1 q2 F) \/ r$ \" t4 q" H& ~% d, Q 扫描GPIO_Pin_2 ,判断GPIO_Pin_2 是否为0,若GPIO_Pin_2 为0,说明有键按下, 查表得键值0x10,若不为0则扫描GPIO_Pin_3; 扫描GPIO_Pin_3 ,判断GPIO_Pin_3 是否为0,若GPIO_Pin_3为0,说明有键按下," m* S9 z! u. f6 l9 Q0 V: i- A 查表得键值0x11,若不为0则结束扫描,回到主函数; 若要显示则只需将变量jianzhi送入到lcd显示程序中去即可 以下是键盘扫描函数: void jiansao(void) { unsigned char kongzhi,scan,i; GPIO_WriteBit(GPIOD,GPIO_Pin_5|GPIO_Pin_6, Bit_SET); GPIO_WriteBit(GPIOD, GPIO_Pin_4, Bit_RESET);) b9 j% J/ o$ _ kongzhi=0;2 W8 _/ M' v& Y1 y for(i=0;i |
systickæ¶éï¼ä¸å¯è°ï¼.rar
下载625.25 KB, 下载次数: 42
微信公众号
手机版
RE:用systick定时器写的时钟
回复:用systick定时器写的时钟