收藏 分享(赏)

实验四 单键识别与计数中断(3课时).doc

上传人:精品资料 文档编号:10335649 上传时间:2019-10-31 格式:DOC 页数:5 大小:31.50KB
下载 相关 举报
实验四 单键识别与计数中断(3课时).doc_第1页
第1页 / 共5页
实验四 单键识别与计数中断(3课时).doc_第2页
第2页 / 共5页
实验四 单键识别与计数中断(3课时).doc_第3页
第3页 / 共5页
实验四 单键识别与计数中断(3课时).doc_第4页
第4页 / 共5页
实验四 单键识别与计数中断(3课时).doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

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 口为高电平,S2 键一端接地另

3、一端接 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 #define uchar unsigned char#define u

5、int unsigned intsbit BY1=P34;/S2uchar count;void delay_ms(uint t)/延时 msuint i;for(t;t0;t-)for(i=114;i0;i-);void keyscan()/对独立键盘 S2 键的按键次数进行统计if(BY1=0)delay_ms(10);if(BY1=0)count+;if(count=256)count=0;while(BY1=0);void display()/以二进制形式显示出来P1=count;void main(void)/maincount=0;P1=0xff;while(1)keyscan()

6、;display();利用 T1 计数中断方式实现对独立键盘 S3 键,每按 2 次(非双击,2 次按键要有一定的时间间隔)切换 P1 口相连的八个发光二极管的一种显示方式(方式 1:间隔 300ms 一个管亮,循环流动,方式 2:间隔 300ms 两个管亮,循环流动) 。源程序:#include #define uchar unsigned char#define uint unsigned intbit flag=0;/用于显示方式切换uchar temp;void delay_ms(uint t)/延时uint i;for(t;t0;t-)for(i=114;i0;i-);void di

7、splay()/循环显示uchar i;for(i=0;i8;i+)P1=temp;delay_ms(150);temp=temp1;P1=0xff;delay_ms(150);void main()/main T1 计数器TMOD=0x50;TH1=0xff;TL1=0xfe;EA=1;ET1=1;TR1=1;while(1)if(flag=0)temp=0x01;/方式 1:间隔 300ms 一个管亮,循环流动display();elsetemp=0x03;/方式 2:间隔 300ms 两个管亮,循环流动display();void T1_int(void) interrupt 3/中断函数?TH1=0xff;/按键 2 次 65536-2TL1=0xfe;flag=flag;4.心得体会:本次实验可以说是一次小综合实验,有一定的难度,特别第二题。应用了独立按键 S2和 S3,并结合了中断和计数器的应用,起初卡在了显示方式一和方式二的切换方法,最后想到用 bit 来定义变量 flag,我也上网查询了一些算法,本实验中另一种初值的设定方法(TH1=(65536-50000)/256;TL1=(65536-50000)%256) 。并且强化了前几次实验的基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报