欢迎来到天天文库
浏览记录
ID:46405355
大小:31.50 KB
页数:5页
时间:2019-11-23
《实验四 单键识别与计数中断(3课时)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四单键识别与计数中断(3课时)参考“实验板使用手册P27中的原理图”1.对独立键盘S2键的按键次数进行统计,并在与P1口相连的八个发光二极管上以二进制形式显示出来。(判断是否按下键盘,当单片机上电时所有IO口为高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口直接接地,此时检测P3.4肯定为低电平。)2.利用T1计数中断方式实现对独立键盘S3键,每按2次(非双击,2次按键要有一定的时间间隔)切换P1口相连的八个发光二极管的一种显示方式(方式1:间隔300ms一个管亮,循环流动,方式2:间隔300ms两个管亮,循环流动)。注意:关于按键去抖动
2、的解释,我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。实验报告实验四1.实验目的和要求①对独立键盘S2键的按键次数进行统计,并在与P1口相连的八个发光二极管上以二进制形式显示出来。(判断是否按下键盘,当单片机上电时所有IO口为
3、高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口直接接地,此时检测P3.4肯定为低电平。)②利用T1计数中断方式实现对独立键盘S3键,每按2次(非双击,2次按键要有一定的时间间隔)切换P1口相连的八个发光二极管的一种显示方式(方式1:间隔300ms一个管亮,循环流动,方式2:间隔300ms两个管亮,循环流动)。注意:关于按键去抖动的解释,我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到
4、稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。2.主要仪器设备①笔记本电脑②51单片机3.实验内容①对独立键盘S2键的按键次数进行统计,并在与P1口相连的八个发光二极管上以二进制形式显示出来。(判断是否按下键盘,当单片机上电时所有IO口为高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口直接接地,此时检测P3.4肯定为低电平。)源程序:#include#defineucharunsignedcha
5、r#defineuintunsignedintsbitBY1=P3^4;//S2ucharcount;voiddelay_ms(uintt)//延时ms{uinti;for(t;t>0;t--)for(i=114;i>0;i--);}voidkeyscan()//对独立键盘S2键的按键次数进行统计{if(BY1==0){delay_ms(10);if(BY1==0){count++;if(count==256){count=0;}}while(BY1==0);}}voiddisplay()//以二进制形式显示出来{P1=~count;}voidmain(voi
6、d)//main{count=0;P1=0xff;while(1){keyscan();display();}}②利用T1计数中断方式实现对独立键盘S3键,每按2次(非双击,2次按键要有一定的时间间隔)切换P1口相连的八个发光二极管的一种显示方式(方式1:间隔300ms一个管亮,循环流动,方式2:间隔300ms两个管亮,循环流动)。源程序:#include#defineucharunsignedchar#defineuintunsignedintbitflag=0;//用于显示方式切换uchartemp;voiddelay_ms(uintt)
7、//延时{uinti;for(t;t>0;t--)for(i=114;i>0;i--);}voiddisplay()//循环显示{uchari;for(i=0;i<8;i++){P1=~temp;delay_ms(150);temp=temp<<1;P1=0xff;delay_ms(150);}}voidmain()//mainT1计数器{TMOD=0x50;TH1=0xff;TL1=0xfe;EA=1;ET1=1;TR1=1;while(1){if(flag==0){temp=0x01;//方式1:间隔300ms一个管亮,循环流动display();}els
8、e{temp=0x03;//方式2:间
此文档下载收益归作者所有