单片机矩阵键盘实验实验报告范文矩阵键盘实验心得.docx
- 文档编号:5788093
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:22
- 大小:21.95KB
单片机矩阵键盘实验实验报告范文矩阵键盘实验心得.docx
《单片机矩阵键盘实验实验报告范文矩阵键盘实验心得.docx》由会员分享,可在线阅读,更多相关《单片机矩阵键盘实验实验报告范文矩阵键盘实验心得.docx(22页珍藏版)》请在冰豆网上搜索。
单片机矩阵键盘实验实验报告范文矩阵键盘实验心得
[单片机矩阵键盘实验实验报告范文]矩阵键盘实验心得
实验五矩阵键盘实验
一、实验内容
1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。
按其它键退出。
2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。
可定义“A”键为“+”键,“B”键为“=”键。
二、实验目的学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
三、实验说明
1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
行反转法识别按键的过程是:
首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0某F0;假如此时没有人按键,从P1口读出的值应仍为0某F0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0某B0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0某BF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0某BE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。
四、接线方法
键盘连接成4某4的矩阵形式,占用单片机P1口的8根线,行信号是P1.0-1.3,列信号是P1.4-1.7。
五、实验电路
参考学习板说明书P14。
六、参考程序
程序一:
/某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某
功能:
4某4矩阵键盘,LED显示所按的键
时间:
2022-04
版本:
V1.0
某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某/
#include
#defineuintunignedint
#defineucharunignedchar
bitwei1=P2^0;
ucharcodetable[]={0某C0,0某F9,0某A4,0某B0,
0某99,0某92,0某82,0某F8,
0某80,0某90,0某88,0某83,
0某C6,0某A1,0某86,0某8E};//共阳数码管码表
//全局变量
ucharnum,temp,num1;
//函数声明
voiddelay(uintz);
ucharkeycan();
voiddiplay(ucharaa);
voidmain()
{
num=1;
wei1=0;
P0=0某C0;
while
(1)
{
diplay(keycan());
}
}
voiddiplay(ucharaa)
{
P0=table[aa-1];
}
ucharkeycan()
{
P1=0某fe;
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
delay(5);
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
temp=P1;
witch(temp)
{
cae0某ee:
num=1;
break;
cae0某de:
num=2;
break;
cae0某be:
num=3;
break;
cae0某7e:
num=4;
break;
}
while(temp!
=0某f0)
{
temp=P1;
temp=temp&0某f0;
}
}
}
P1=0某fd;
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
delay(5);
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
temp=P1;
witch(temp)
{
cae0某ed:
num=5;
break;
cae0某dd:
num=6;
break;
cae0某bd:
num=7;
break;
cae0某7d:
num=8;
break;
}
while(temp!
=0某f0)
{
temp=P1;
temp=temp&0某f0;
}
}
}
P1=0某fb;
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
delay(5);
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
temp=P1;
witch(temp)
{
cae0某eb:
num=9;
break;
cae0某db:
num=10;
break;
cae0某bb:
num=11;
break;
cae0某7b:
num=12;
break;
}
while(temp!
=0某f0)
{
temp=P1;
temp=temp&0某f0;
}
}
}
P1=0某f7;
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
delay(5);
temp=P1;
temp=temp&0某f0;
while(temp!
=0某f0)
{
temp=P1;
witch(temp)
{
cae0某e7:
num=13;
break;
cae0某d7:
num=14;
break;
cae0某b7:
num=15;
break;
cae0某77:
num=16;
break;
}
while(temp!
=0某f0)
{
temp=P1;
temp=temp&0某f0;
}
}
}
returnnum;
}
voiddelay(uintz)
{
uint某,y;
for(某=z;某>0;某--)
for(y=110;y>0;y--);
}
程序二:
#include
#defineU8unignedchar
#definekey_portP1
codeU8kcode[]={0某b7,0某be,0某de,0某ee,0某bd,0某dd,0某ed,0某bb,0某db,0某eb,0某d7,0某e7};
//反转码对应键值0123456789AB
codeU8dip[]={0某a0,0某bb,0某62,0某2a,0某39,0某2c,0某24,0某ba,0某20,0某28,0某ff};
U8buf[4]={0,0,0,0};
U8cnt=0;
U8cn[]={0某7f,0某bf,0某df,0某ef};//先点亮左边一个数码管
voiddelay_m(U8m)
{U8i,j;
for(i=0;i<100;i++)
{for(j=0;j } U8key(void) {U8a,r; delay_m(20);//延时20毫秒,消除按键抖动 if(key_port==0某f0)gotorn; a=key_port; key_port=a|0某0f; delay_m(20); a=key_port; for(r=0;r<=11;r++) {if(a==kcode[r])break;}; if(r>11)r=0某ff;//0某ff表示无效 rn: key_port=0某f0; returnr; } voidmain(void) {U8k,i,pf;//pf为按过加号键的标志 intp,p1,p2,//p1,p2为两个加数,p为和 TMOD=0某01;//设定时器0为模式1(16位) TH0=0某ee;//晶振11.0592MHz,5mS TL0=0; TR0=1;//开始计数 EA=1;//允许中断 ET0=1;//定时器0中断允许 key_port=0某f0; pf=0;//清除加号标志 p=0; delay_m(20); while (1)//循环 {if(key_port! =0某f0) {k=key(); if(k<10) {if((p1==0)&&(p2==0))for(i=0;i<=3;i++)buf[i]=0;//清空显示缓冲区 elefor(i=1;i<=3;i++)buf[i-1]=buf[i];//数字左移一位 buf[3]=k;//在个位显示刚按的数字 if(pf==0)p1=p1某10+k; elep2=p2某10+k; } ele {if(pf==1) {p=p1+p2; p1=1000; for(i=0;i<3;i++) {buf[i]=p/p1; p=p-p1某buf[i]; p1=p1/10; } buf[3]=p; p=0; p1=0; p2=0; pf=0; } ele {pf=1; p2=0; for(k=0;k<=3;k++)buf[k]=0; } } while(key_port! =0某f0);//等待按键抬起 delay_m(20); while(key_port! =0某f0); } } } {unignedchari,; TH0=0某ee;//设置定时器时间常数 TL0=0; i=cnt&0某03;//求应点亮的LED号(从左到右依次为0,1,2,3) P0=dip[buf[i]];//笔划代码送P0口 P2=cn[i];//控制扫描码送P2口 cnt++; } 七、实验小结 亲爱的朋友,上文已完,为感谢你的阅读,特加送另一篇范文, 矿井水灾事故专项应急演练方案 1应急演练目的、意义和目标 1.1应急演练目的①评估我矿水灾事故的应急准备状态,发现并修改我矿水灾事故专项应急预案和执行程序中存在的缺陷和不足; ②评估我矿在发生水灾事故时的应急能力,识别处理水灾事故的资源需求,澄清相关单位和人员的应急职责,改善水灾事故应急救援中的组织协调问题; ③检验应急响应人员对水灾事故应急预案及执行程序的了解程度和实际操作技能;同时,通过调整演练难度,进一步培训和提高应急响应人员的业务素质和能力; ④提高全员安全意识。 1.2应急演练意义: 为了进一步增强煤矿应对水灾事故的快速反应能力、应急处理能力和协调作战能力,提高米田煤矿的应急救援水平,切实保障人民生命和公司财产的安全,米田煤矿特组织本次应急救援演练。 1.3应急演练目标 1.3.1报警 1.3.2接警处警 调度室接到事故报警后,调度室调度员立即向当天矿值班长和应急救援领导小组组长(矿长)汇报,同时通知水灾应急演练指挥部有关人员到调度室待命,根据指挥部意见,启动水灾应急救援预案。 1.3.3应急指挥 ①基层单位: 一旦发生矿井水灾事故,现场施工单位立即成立水灾事故现场处置小组,掘进队当班第一责任者为小组长。 ②矿级应急指挥: 矿调度室接到事故报警后,矿成立矿井水灾事故应急演练小组,指挥部设在矿调度室。 1.3.4应急行动 ①基层单位应急行动 现场组织人员按照避灾路线撤离至安全地点。 模拟底板涌水的疏、排; ②矿级应急行动 矿调度室通知相关泵房,由开泵人员立即开动工作、备用水泵开始排水;同时检查检修水泵的完好状况,保证检修水泵能够随时投入运转。 2应急演练原则 ①安全第一、以人为本的原则。 ②统一领导、分级负责的原则。 ③反应迅速、措施果断的原则。 ④部门配合、分工协作的原则。 3应急演练类型和时间地点 3.1应急演练类型 本次演练演练为实战检验性演练 3.2应急演练时间 本次演练时间2022年3月10日八点班9: 00-10: 35。 如果演练当日出现特殊情况,应急预案演练可顺延或提前。 3.3应急演练地点 ①110401运输巷工作面 ②矿调度室 4应急演练组织机构 4.1应急演练领导小组 组长: 陈 仕 副组长: 董永海 成员: 孔家稳何兴八张蛮敖成卫胡荣兴 黄志党李登学牛建毕封志平 职责: 负责水灾事故应急演练活动全过程的组织领导,审批决定演练的重大事项。 4.2策划部 ①总策划: 彭家福 职责: 负责演练准备、演练实施、演练总结的组织实施。 ②文案组 组长: 孔家稳 ③协调组 组长: 陈 仕 ④控制组 组长: 董永海 4.3评估组 共设四个评估组,每组2人。 (评估组建议由安监队人员组成,每组2人,1人评估,1人记录) 第一组: 位置: 110401运输巷工作面 记录和评估水灾演练现场报警、现场处置小组成立及现场应急处置情况 第二组: 位置: 调度室记录和评估主井采区工作。 记录和评估调度室接警、处警、矿井水灾应急演练小组成立、应急指挥部人员到位、应急指挥、协调情况。 5演练情景设计 5.1应急演练概述: 2022年3月10日下午3: 00时,安全矿长组织召开矿井水灾应急演练预备会议,进一步确认各演练情景准备情况,确认准备完毕后,安全副矿长要求各参演单位及装备务必于2022年3月10日上午8: 30分准时到位,2022年3月10日上午9: 00时准时开始演练。 2022年3月10日上午9: 00时,该巷工作面后138m,发生掘进工作面滞后突水,突水水量60m3/h。 2022年3月10日9: 00,演练总指挥宣布应急演练开始。 5.2演练情景1报警、现场处置小组成立及现场处置 地点: 110401运输巷工作面 5.2.1水灾事故发生撤人 9: 05分,当班第一责任者在掌子头后130m处发现巷道顶板地鼓,随后发生巷道顶板突水,当班第一责任者喊“顶板出水了,人员赶快撤离”,并且立即通知班长,班长带领全部人员撤离到运输石门盘口,当班第一责任者最后撤离,由当班第一责任者在运输石门盘口清点人数。 5.2.2报警 当班第一责任者清点人数后,当班第一责任者立即向调度室汇报模拟水灾的具体情况。 汇报内容为: 顶板突水位置、顶板突水大致水量、顶板突水人员撤出情况、支援需要以及现场处置方法。 5.2.3现场处置小组成立 当班第一责任者报警后,立即着手成立水灾事故现场处置小组 组长: 当班第一责任者 副组长: 当班班长 成员: 当班全体人员 5.2.4水灾事故现场处置 110401运输巷顶板突发性涌水,突水点不易堵,应采取疏导措施,现场人员应尽量使涌水沿水沟流入水仓,同时清理水沟及两侧的浮煤、杂物,减少进入水仓的杂物。 5.3演练情景2调度室接警、处警、矿井水灾应急演练小组成立、应急指挥、协调情况。 地点: 调度室 5.3.1接警、处警 9时10分,调度室接到现场报警后,迅速向值班矿长和应急救援领导小组组长(矿长)汇报,同时通知水灾应急演练指挥部有关人员到调度室待命,根据指挥部意见,启动水灾应急演练方案。 5.3.2矿井水灾应急演练小组成立 9时20分,矿井应急演练领导小组成员接到通知后到达调度室,矿井应急演练小组随即成立。 5.3.3应急指挥 5.6应急结束: ①10时00分,中央水仓向救援小组汇报: 中央水仓工作、备用水泵工作正常。 ②10时20分,1191机巷汇报: 排水路线(自流)沿途浮渣、浮煤、杂物已清理干净,机巷底板突水沿水沟流入井底水仓。 ④调度室接到各处水灾应急演练情况汇报,立即报告应急演练小组,应急救援小组经过认真研究分析,认为本次水灾应急演练目标已全部实现,宣布水灾应急演练全部结束,恢复正常状态。 6演练工作准备 6.1分析演练需求 ①人力资源需求 掘进队20人(其中一名跟班干部,三名班长,井下11名职工,井上5名职工),机电队2人,安检队10人,调度室3人、机电队中央水仓水泵司机2人。 ②场地资源需求 110401运输巷 调度室 ③物资器材需求 A、110401运输巷掌子头后5m,供水管路安装三通一个,演练开始后,打开阀门作为模仿水灾水源; B、铁锨、镐各5把(1191机巷演练挖水沟、请浮渣用) 采掘工程平面图1套 6.2确定演练范围 本次应急演练为矿一级应急演练,包括: ①1191机巷水灾事故现场,掘进队处理水灾事故的应急演练; ②调度、指挥系统处理水灾事故应急演练; 7演练实施 7.1演练过程控制 ①演练启动方式 7.2演练实施的步骤 ①演练启动; ②掘进队通知调度室: 110401运输巷发生老窑突水位置、突水大致水量、老窑突水人员撤出情况、支援需要以及现场处置方法; ③掘进队突水现场疏、堵、排措施的落实; ④调度室的应急响应调度、指挥系统成立; ⑤应急演练小组根据各演练场地汇报决定演练是否结束 7.3、应急演练记录的要求 演练记录由演练评估组人员填写,演练评估组人员可根据演练具体情况增加内容,演练记录要求做到客观真实,演练记录由调度室负责保存。 应急演练记录表格如下: 应急演练记录(场景1) 演练时间 2022年3月10日 地点 110401机巷 参演单位 掘进队 水灾事故发生撤人: 1、当班第一责任者发现老窑突水,立即通知班长撤人,通知的时间; 2、班长带领全部人员撤离到回风石门,撤人的速度及时间; 3、当班第一责任在人员全部撤出后,最后撤离,当班第一责任者撤至运输石门盘口的时间; 4、由当班第一责任者在运输石门盘口清点人数,清点人数后,记录撤人所用的时间及人员撤出情况; 报警: 老窑突水位置; 老窑突水大致水量; 老窑突水人员撤出情况; 支援需要以及现场处置方法。 现场处置小组成立: 当班第一责任者报警后,负责成立水灾事故现场处置小组: 组长: 当班第一责任者 副组长: 当班班长 成员: 当班全体人员 水灾事故现场处置 现场处置小组分两队,第一队由当班第一责任者带领,第二队由当班班长带领。 1、第一队负责从老窑突水位置至回风上山段清理。 2、第二队负责从回风石门交叉口至水仓入水口段清理。 记录现场处置小组的分队情况,水沟的清理情况及水灾演练涌水流入水仓是否夹有杂物; 记录人签名 应急演练记录(场景2) 演练时间 2022年3月10日 地点 调度室 参演单位 调度室 接警、处警 调度室调度员接到现场报警后,向值班矿长汇报事故情况; 调度员向矿长汇报事故情况; 调度员通知应急演练指挥部人员到调度室待命; 水灾应急演练指挥部人员到位情况; 记录调度员接到事故报警后,通知水灾应急演练指挥部人员的时间,所通知人员到达调度室的时间 矿井水灾应急演练小组成立 记录水灾应急演练小组成立的时间,演练小组成立后,分析判断灾情,此次演练灾情不足以水淹矿井,矿井排水系统有能力排水,决定立即中央水仓工作及备用水泵全力排水。 应急指挥: 应急结束: ①记录中央水仓向救援小组汇报: 中央水仓工作、备用水泵工作正常,检修水泵是否能够随时更换。 ②记录1191机巷汇报: 排水路线(自流)沿途浮渣、浮煤、杂物已清理干净,机巷老窑突水沿水沟流入井底水仓。 ③④记录调度室接到各处汇报,调度员将情况汇报应急演练小组,应急演练小组经过综合分析,确定应急演练目的已到达,具备应急演练结束的条件应急演练小组长宣布应急演练结束,现场矿领导安排参演队伍回到本职岗位,各工作地点恢复到正常状态。 记录人签名 7.4应急演练结束与终止 7.4.1应急演练结束的条件 110401运输巷,演练涌水。 8应急演练评估 8.1应急演练评估方法 应急演练采用表格评估法,评估人员利用提前设计评估表,进行跟踪评定。 演练评估报告有策划部文案组编写; 演练评估报告的主要内容一般包括演练执行情况、预案的合理性与可操作性、应急指挥人员的指挥协调能力、参演人员的处置能力、演练目标的实现情况、对完善预案的建议等。 8.2应急演练评估标准 水灾应急演练评估表 序号 演练目标 评价标准 评价分数 演练得分 好 中 差 场景1 水灾事故发生撤人 当班第一责任者发现老窑突水,立即通知班长撤人。 2 1.5 1 班长带领全部人员撤离到轨道石门盘口,撤人的速度及时间。 3 2 1 当班第一责任在人员全部撤出后,最后撤离,当班第一责任者撤至轨道石门盘口的时间。 3 2 1 由当班第一责任者在轨道石门盘口清点人数,清点人数后,记录撤人所用的时间及人员撤出情况。 2 1.5 1 报警 报警的及时性 2.0 1.0 0.5 报警内容 底板突水位置 1.0 0.8 0.5 底板突水大致水量; 1.0 0.8 0.5 底板突水人员撤出情况 1.0 0.8 0.5 支援需要以及现场处置方法 1.0 0.8 0.5 现场处置小组成立 现场处置小组成立的及时性 2.0 1.5 1 在灾害面前,现场处置小组应急状态(好、坏、差) 3.0 2 1.5 水灾事故现场处置 现场处置小组处理灾情的分工 3 2.5 1.5 现场处置小组处理灾情的积极性 2 1.5 1 水沟清理情况 3 2.5 1.5 演练涌水进入水仓前是否有杂物 2 1.5 1 场景2 接警、处警 调度室调度员接到现场报警后,向值班矿长汇报事故情况; 3 2.5 2 调度员向矿长汇报事故情况; 2 1.5 1.0 调度员通知应急演练指挥部人员到调度室待命 3 2.5 1.5 水灾应急演练指挥部人员到位情况; 2 1.5 1.0 矿井水灾应急演练小组成立 水灾应急演练小组成立的及时性 3 2.0 1.5 水灾应急演练小组分析判断灾情的正确性 3 2.0 1.5 110401机巷汇报: 排水路线(自流)沿途浮渣、浮煤、杂物已清理干净,机巷底板突水沿水沟流入主井水仓。 2 1.5 1.0 调度室接到各处汇报,调度员将情况汇报应急演练小组,应急演练小组经过综合分析,确定应急演练目的已到达,具备应急演练结束的条件,应急演练小组长宣布应急演练结束。 3 1.5 1.0 合计 9演练安全注意事项 为确保演练参与人员的安全,应急演练必须遵守以下规定: 1、演习过程中所有消息或沟通必须以“这是一次水灾事故应急演练”作为开头或结束语,以便保证演习人员和可能受其影响的人员都知道这是一次模拟紧急事件; 2、参与演练的所有人员必须遵守有关规章制度和安全技术措施,严禁违章作业。 3、各参演队伍和人员在演练过程中必须听从现场领导的统一指挥,在指定的安全处待命,并不得阻断人行道。 4、现场参演人员不得随意开动各种机电设备。 5、当出现真实的紧急情况时,现场人员要在现场领导的统一安排下迅速回到本职岗位。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 矩阵 键盘 实验 报告 范文 心得