EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- 独立式键盘实验设计
' t- T! ?7 }5 X3 @- u
使用AT89S52 单片机,设计一个具有8个按键的独立式键盘,每个按键对应一个发光二极管。功能要求:无键按下时,键盘输出全为“1”,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。 独立式键盘电路组成由单片机最小系统;
/ w0 T1 m8 ~ r( ]3 y C8个按键电路;8个LED电路。" x9 p" s; i: q( w% \! x
单片机I/O口引脚分配8个按键接P0口;按键一端接地;另一端接P0口引脚,并通过上拉电阻接+5V。% |; L" k. E3 T- Y3 w" L
8个LED接P1口,LED采用共阳极接法。 独立式键盘电路设计时,每个按键的一端与P0口的一个引脚相连,另一端接地。 无键按下时,P0的8个I/O口均通过电阻接高电平,信息为“1” ,键盘输出全为“1”发光二极管全部熄灭。 有键按下,将使对应的I/O口通过该键接地,信息为“0” ,对应发光二极管点亮。 CPU可以通过检测P0的8个I/O口线哪个是“0”就可以识别是否有键按下,并能识别出是哪一个键按下。 - 实验过程2 k& f* ?# u. p- f% W0 L" Z% Q
- 在keil软件中,新建项目,新建c语言独立式键盘文件,输入代码保存并编译,生成hex文件8 Q: i$ j6 l% r6 i9 `
代码如下:
# c8 o+ u+ g; {) } N独立式键盘功能实现分析
0 S" ]! s8 W! _1 Y' G0 m1 f判断是否有按键按下! a- A& o2 j6 Y+ f
while(x==0xff) //循环判断是否有键按下
; N4 k8 A: ]1 o" C{& Z+ m' w5 B" C' _. z! h* s1 G4 f
x=P0; //读键盘状态
: w2 w& Y4 E( k& l* k4 j9 o) B3 r}4 S# h* Q* U8 P
delay10ms(); //延时10ms去抖动
v( ~) W5 S. ]( ix=P0; //再次读键盘状态- Q% T% a0 m* \. c$ U; ]1 A0 K0 M4 H
if(x==0xff) continue;//如果无键按下则认为是按
: X4 U# d! d3 K //键抖动,重新扫描根据键值点亮对应的发光二极管/ i: z$ n8 I- F: j8 y
switch(~x) ) O- c* J8 [% O& ~8 a- t* f
{' p1 y9 I3 l8 k1 I( n
case 0x01:P1=0xfe; break;//点亮第一个发光二极管2 Y" e+ `: ?4 ~* ~
case 0x02:P1=0xfd; break;//点亮第二个发光二极管
. i2 E! E1 N7 q" z0 G( O case 0x04:P1=0xfb;break;//点亮第三个发光二极管
8 S+ c" A- }; x case 0x08:P1=0xf7; break;//点亮第四个发光二极管6 m l. _3 a6 Q m9 w! w' z
case 0x10:P1=0xef; break;//点亮第五个发光二极管. a3 Q1 D& _8 T, R
case 0x20:P1=0xdf; break;//点亮第六个发光二极管
* W6 Q: Q/ z" u2 A, u8 F0 f8 B E case 0x40:P1=0xbf; break;//点亮第七个发光二极管3 S) j4 H: t) v# H( i$ R
case 0x80:P1=0x7f; break;//点亮第八个发光二极管! [$ V0 M# K8 V9 L5 t) m
default:break;
+ J8 |( Z6 x" K! g# |4 d}
} } - 运行Proteus,新建“独立式键盘”设计文件,放置并编辑ST89C52、CRYSTAL、CAP、CAP-ELEC 、RES 、BUTTON 、LED-YELLOW等元器件.有键按下,其发光二极管点亮。1 f2 ^) V* w5 R7 V, U9 K
- 实验总结
' T, Q! V% y& {, A; }6 i
程序要判断是否有2个或2个以上的键盘同时按下,以免键盘分析错误。
! K" a& c7 D* r% R+ s" x% f
' I2 W8 v6 u- {* x6 w* _给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID 的值是不相同的,所以单片机就很容易识别不同功能的身份了。 D1到D4发光二极管在每个时刻的闪烁的时间是受按键来控制,我们给D1到D4闪烁的时段,定义出不同的ID号,只要每次按下按键时,分别给出不同的ID号我们就能够完成上面的任务了。
# Y" o4 W% \3 {( r
$ X7 q! {7 a+ N- F4 q/ G
( Z) o8 }6 K7 v9 U2 i: V# e6 a3 l' _/ B/ c7 r
|