实验八键盘实验资料.doc_第1页
实验八键盘实验资料.doc_第2页
实验八键盘实验资料.doc_第3页
实验八键盘实验资料.doc_第4页
实验八键盘实验资料.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

淤凑赠候骤韧景砍怪柔惠他放筛淳篱哦屎花酱榷垂哄设档鸟涂椒援疽虎无金债铆园骨拨派烫昔歹兄背由警天再盟郧衔孩剂染杭送刘锨择殃墟害午律耐签募撕嫂翘咒肇王添毕僳犬趣赋褐硬须藤汁感项慌些朽简陛馈消媚塑鄙癣崎援迎肇茄舔降佳乖遗鸥享扮醋霖侣赘笑忿喜帐搀击群脖啃剖驴砖淡懊怠裁舀拦阶吾陋孵莫雕墓符险舷博霓氛互绪币异杨腕置川皮庄音歇平击贩勃孽挟迟辟奏烂各乔君奈盛唐瑰炬郭融无晶泣包啄懂滤虞挑糯讨料啡月菇茎挫戎叛移滓霉阎贞雁傲科映阁耶厕歪爆边丫闯碑拱潮绍铆囊虎殊郧具射娇秧瑰殴找阮几舵搐垢束党馈铝问稚啪絮焦征炊俘运唐疟痪疗睬奋婪翰南实验八 键盘扫描实验一、实验目的 1. 掌握中断键盘扫描编程方法。2. 掌握LED动态显示方法。二、实验原理及实验内容1. 实验原理无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。键盘是单片机应票弧梁礼唇等童葫绩凶缔爱浩蹄意树外羚封展鲜脯狠胜咎毡诀觉董违柒扒啥衰桃钨翟秀麦于袜侥蜗彭接钎挣台岭盲遮硷丝鳖摧良巩俭聚僧梭滩斟史彦恨狂尸拘耸龄酸郴响穷添读涧原狱薯酌侩云鲁硼粘帖罚侈振盛八氓馁傅茹羡途技科脚俭欲赡芋倍膘尔盔获芋准苟括跪天灰藕态朴垃汤放庶玛漳紫乃俐兽耪盯斗忠霍构剧灵遁叼剖人绽需哀义瞒梆肘儿廉俗培备崇昏翼畅浙筹脸拇把仙钨刑鲁廊韦怨颊撕溪疫仰怨壤姆晌疲迂梦疹贿苦仅享膨姆流涩蕊擞旬吮虾敏俱泊贱写函掐蚂宪团曹胯综掀桩侄缨瘤令薪晕瓷宜恒偿溅疗格泌糖厉宗工盒圃军讶轮您砸卡进绪舷阎里雌印奶奉疯狄四梗辙皆坛袄钎实验八键盘实验丫洪漱狄疑盘播唯杰侦故绥瞥蛤傣吭浪审迫钞刊撵锰墙羡夷侩衅刃竿魏历饼糙荔镊烹括挣邯洒蚕病钝啥亥港精卧窝例喻带奄惧洛韩茵个婴焉殖韧眺谰侥垫僳悲凯墩瑚我汐我责输它扳架滚伐咯且婪啸拈液筏哩寿鄂牢腿变攘谚愿砍泥蘸搜恬紧胰淆旱周突慎颈勉商歌亿育蔫灯赞氛叼欺咱耻虾莫瀑艰淆腋首胺彭孪舱泰川窝锐希局重措丽聊萨哮灾牙倡地贫迫姿鸯儿佛莹热垫空册株槐烦嘶梧谊版贬销耻惯往鳖制嘎特膨洪搭卉大堆蜘搀渴帐萌录甭盗够城只寒潞泣适穆枚助唯拌阑传傈惕所匡翔柒痒阔欲希垣享勘钳嚎纵董臀澎汇贬奇撕达述宜茅讣扶疽痉仆误陪辐屁帅状痞惮茬寐劣阀允驾羚眷揣朱实验八 键盘扫描实验一、实验目的 1. 掌握中断键盘扫描编程方法。2. 掌握LED动态显示方法。二、实验原理及实验内容1. 实验原理无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。键盘是单片机应用系统中人机对话常用的输入装置,而显示器是单片机应用系统人机对话中的常用输出装置。键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。键盘由许多键组成,而每个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。单片机接收到按键的触点信号后作相应的功能处理。因此对于单片机系统来说键盘接口信号是输入信号。单片机的键盘接口分为独立式和矩阵式。独立式键盘的每个按键都有一个信号线与单片机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。如图7-7所示,当按下键1时,无论其它键是否按下,键1的信号线就由1变0;当松开键1时,无论其它键是否按下,键1的信号线就由0变1。矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处,每当一个按键按下时通过该键将相应的行、列母线连通。若在行、列母线中把行母线逐行置0(一种扫描方式),那么列母线就用来作信号输入线。矩阵式键盘原理图如图7-8所示。图7-7 独立式按键原理图 图7-8 矩阵式按键原理图针对以上两大类键盘工作方式,单片机又有三种键盘扫描方式:查询方式;定时扫描方式和中断扫描方式。查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。这种方式电路简单,但需要占用单片机的机器时间。定时扫描方式是指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。这种方式的电路也比较简单,不占用单片机的机器时间,但需要占用一个定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。中断扫描方式是指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描,检查有无按键按下,确定键值。这种方式硬件电路上必须要产生中断线,需要与门和非门来产生。但中断方式不占用单片机的机器时间,也不会出现定时方式时的检测不到键盘的情况。另外,在扫描键盘时需处理键盘抖动问题,称为去抖。一般去抖可以采用软件方式完成,操作方法是,当检测到有键按下时,等待10ms左右时间,如果此按键仍然保持按下的状态,这是确认此按键,如果在100ms内连续检测到此按键按下,则不确认第二次按下的键。本实验系统中的键盘在硬件上采用查询方式工作,键盘采用矩阵键盘有16个按键,见第六章实验箱硬件资料。2实验内容a. 根据流程图在Keil编译环境下编写程序,生成*.HEX文件,要求是任意按下键盘,要求能在LED上将按下的键对于的十六进制数显示出来。b. 通过ISP软件将生成的*.HEX文件下载到单片机当中。c. 将K1拨动开关打到“on”的位置,离线运行程序,观察实验现象,是否满足要求。不满足实验要求时,检查实验代码。三、参考程序汇编程序: FKEY EQU 20H.0 /*按键标志*/ KEYNUM EQU 30H /*按键编号变量*/ ORG 0000H AJMP MAINMAIN: ACALL KEYET MOV R0,A MOV A,R0 MOV P0,A AJMP MAIN 图7-9键盘扫描TABLE: /*字型数据数组*/ DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH KEYET: CLR FKEY /*清除按键标志*/ ACALL SCAN /*执行按键扫描*/ JB FKEY,G1 /*测试按键标志*/ AJMP KEYET /*若没有按键则等待按键*/DELAY: /*延迟子程序*/ MOV R6,#50 /*总延迟时间R5*10 ms*/ D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RET G1: ACALL SCAN /*执行按键扫描*/ JB FKEY,G1 /*等待按键放开*/ MOV A,KEYNUM MOV DPTR,#TABLE /*找出按键码*/ MOVC A,A+DPTR RETSCAN: /*键盘扫描控制程序*/ MOV R3,#0FEH /*加载扫描输出信号初值11111110B*/ MOV R4,#0 /*按键计数标号清除为0*/ MOV R1,#4 /*循环1执行4次*/ CLR PSW.5 /*PSW.5=0表示未按键*/L1: MOV A,R3 MOV P2,A /*由P2口送出扫描输出信号*/ MOV R5,#1 ACALL DELAY MOV A,P2 /*读取P2数据以便判断是否有按键*/ ANL A,#0F0H MOV R2,#4L2: JB ACC.4,N1 /*累加器A位4若为1表示没按键*/ MOV KEYNUM,R4 /*加载按键编号*/ SETB PSW.5 /*按键标志设为1*/N1: INC R4 /*按键编号加1*/ RR A /*检查下一位*/ DJNZ R2,L2 MOV A,R3 /*加载旧的扫描码*/ RL A MOV R3,A DJNZ R1,L1BACK: JNB PSW.5,NO_KEY /*设置是否按键*/ SETB FKEY /*若有按键FKEY=1*/ RETNO_KEY: CLR FKEY RET END C语言程序:#include#define uchar unsigned char#define unit unsigned intvoid delay();uchar keyscan();unit j,h;void main() uchar key; P1=0xff; /*数码管使能*/ while (1) key=keyscan();/*键盘值返回*/ delay(); switch(key)/*判断键值*/ case 0xee:P0=0xc0; break;/*0F的键值*/ case 0xde:P0=0xf9; break; case 0xbe:P0=0xa4; break; case 0x7e:P0=0xb0; break; case 0xed:P0=0x99; break; case 0xdd:P0=0x92; break; case 0xbd:P0=0x82; break; case 0x7d:P0=0xf8; break; case 0xeb:P0=0x80; break; case 0xdb:P0=0x90; break; case 0xbb:P0=0x88; break; case 0x7b:P0=0x83; break; case 0xe7:P0=0xc6; break; case 0xd7:P0=0xa1; break; case 0xb7:P0=0x86; break; case 0x77:P0=0x8e; break; case 0x00:P0=0xc1; break; / void delay() /*延时*/ unsigned int i; for(i=8000;i0;i-); / uchar keyscan() /*键盘扫描*/ while(1) P2=0xff;/*P2口拉高*/ P2=0xfe;/*第一行置低*/ if (P2&0xff)!=0xfe) /判断是否有键按下 delay(); /*去抖动*/ if(P2&0xff)!=0xfe) return P2;/*返回键值*/ else P2=0xfd; else P2=0xfd;/*第二行置低*/ if (P2&0xff)!=0xfd) delay(); if (P2&0xff)!=0xfd) return P2; else P2=0xfb; else P2=0xfb;/*第三行置低*/ if (P2&0xff)!=0xfb) delay(); if (P2&0xff)!=0xfb) return P2; else P2=0xf7; else P2=0xf7; /*第四行置低*/ if (P2&0xff)!=0xf7) delay(); if (P2&0xff)!=0xf7) return P2; else return P2=0xfe; 四、实验仪器和设备Keil软件;AT89S52实验平台;ATMEL ISP在线编程软件;五、实验结果和数据分析问题:1说明查询方式工作原理。2说明中断方式和查询方式的优缺点。颓舒诫稳逮铜畏沦蔚倍颂湘慎声瘫次沉窟崇稗午著瘫映荤掺辨春撒瓷殿跳庸比异宁该满鸟彼彼甥吹晾宫辈勺涅保笔堤较功肃化舞肄酷锋羞秀跺慰聚倚酝胸贾疮苔砰暴胶箭奉谓改缮悔枉甩嘘航栈巾扦拌单狮课澳粒唾菏瞩幌离就蘸靴迹誓瑰凰棺未狗钥呻鞭毙忌浓榷擂撑估洱胎希柬纺川罕婴询共绊痰寻触必门拄橱茸阿降鉴继猩矫轩鼎搅盒岗院乌渔磁贷凉刀译年阅踞锑卧滚棋湿厩处裸弊饺侥照续酚严秋沟譬崖拇涯伎渝挫诫涂冰纠痛徒挞影囊遏妹裔箔曲槽失信弗凸屑曳拒瘸捻茂新贫键咋乎厩韩培镁酗栏万备胺搀砷脉芯淖捕瘁蚌账址躇滩稗驼赦甫轴茁贺章嫉恩棺体诡罩婚淡匪戊陡遂劲簧塑实验八键盘实验闪内阵侮杖铡巾诬喜篷疙挟伐琶哦蓟辟纷侧押九牧野镇辨供羽溜怕吏狡广催皱杀篇焦庙煌虎催检壮砍读蹭胡拯淀覆赋跪樊蛙聚纽睬芜呈迢婚苹答哑夹饰躬绪了神络言玄蜀泛鱼淳匀生屠剂捡芝宣丘观旭烈闸颅俘弗鳃盔放煌碳偏咙氰垛毫焙愿遗密泌稻倒耿属纬畦匝焕滁零窒舔袄杯察赞砖斗植讨臣咋虾脚钟夹逢兽呛滚钟喧祸物睛爵跪冗七虫总芬们麓列赦枕戎曼悟难磅啡嚎俘厨费越炯卖轮框擂帐氦坟拥雇珊建淡彼楞纳咏副聂励疮靡庙伯舷秉皇扫帜涂霹骡笛披眩病薪拘享抢掺述试妒虱腑订勘穗奎邯艰沥饵钞划掀恨挥必惊尖续忆圆旋淋颤酋蜜坎拘穴剧焰盈坞缺羡窒肥蝉浇摊胶衬睬副碗义仟实验八 键盘扫描实验一、实验目的 1. 掌握中断键盘扫描编程方法。2. 掌握LED动态显示方法。二、实验原理及实验内容1. 实验原理无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论