- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
谢谢指导! 汇报完毕 * * * * * 4,按键与外部事件中断 (1)IT0:设置为1,选择外部中断0由下降沿触发,即当出现一个下降沿表示有一个外部中断0的请求信号。为什么将IT0设置为1呢?任务1学习得知(图6-3),按键按下将会产生一个从高电平到低电平的边沿跳变(称为“下降沿”),按键松开产生从低电平到高电平的边沿跳变(称为“上升沿”)。因此1次按键信号(产生一次下降沿)正好转化成外部中断0信号。 (2)IE0:无需初始,它由硬件自动设置。 (3)EX0:设置为1,即允许CPU响应外部中断0请求。 (4)EA:设置为1,允许CPU响应所有中断请求。 1. Proteus电路设计 2. Keil C51程序设计 3. Proteus-Keil联合调试仿真 任务实施 硬件电路图 (1)程序流程 主程序根据标志位状态,无限循环执行LED流水灯程序;按键的判断转化成中断处理,按下按键则意味着一次中断事件发生,单片机处理按键任务,即跳转到INT0中断处理程序中,交替将LED流水灯标志位置1/清0。 主程序设计: void main() { IT0 = 1; //设置外部中断0触发方式位,1为边沿触发 EX0 = 1; //外部中断0中断允许位 EA = 1; //允许总中断标志位 while(1) { if(run_flag==0) //判断运行标志位状态 { P1 = led_light1[i++]; delay(); if(i==8)i=0; } else { P1=led_light2[i++]; //点亮LED流水灯 delay(); //点亮延时 if(i==7)i=0; } } } 中断程序: void int0() interrupt 0 //中断服务函数入口 { EX0 = 0; i=0; run_flag =~run_flag; //每按一下按键,行标志位取反 EX0 = 1; } 运行 Proteus-Keil联合调试仿真 任务3 矩阵式键盘设计 任务描述: 任务分析: 当嵌入式产品、设备中的按键数目较多时,将采用更普遍的按键设计方法—矩阵式键盘。本任务要求运用矩阵式键盘的设计方法设计9个按键控制点亮1个数码管分别显示1~9。 独立式键盘的每个按键都要独占一位I/O,当按键较多就会严重耗费单片机的I/O资源。比如计算机的键盘功能有100多个,如果采用独立式方法设计,就需要100多个I/O,因此独立式键盘设计在按键较多的情况下不再适合。本任务将探讨新的方法—矩阵式键盘设计,尽可能少占用I/O资源又保证设计的效果。 矩阵式键盘工作原理及应用 矩阵式键盘是利用几根I/O口线作为列,几根作为行,行跟列相交叉,在交叉点用按键连接列和行的I/O口线。 2 3 4 1 扫描循环 矩阵式键盘的工作原理是单片机通过定时扫描的方式来查询按键的状态,如先从行扫描,在扫描第一行的时候查询在这一行上与列相交叉的按键有没有被按下,如果没有按键按下就以扫描第一行的方式扫描第二行,这样循环扫描所有的行,如果有就作出相应的处理,处理实现后再继续重新扫描。由于在扫描第1行的时候P2.3=0,但行P2.3与列P2.7交叉处的按键被按下时,P2.7就会从本来的高电平变为低电平,从而确定是哪个按键被按下. 应用举例:例5-5 #define Portkey P2 //键盘控制端 列线P2.0 P2.1 #define KeyColm1 P2_2 //行线 P2.2 P2.3 Portkey=0xff; //矩阵按键全输出1 KeyColm1=0; //选择扫描第一行 key_temp=Portkey; //读按键控制端 key_temp=key_temp0x03; //0000,0011 读取列线键值 if(key_temp!=0x03) //如果键值不等于0x03 { key_delay(); //去抖延时 key_temp=Portkey; //读按键控制端 key_temp=key_temp0x03; //0000,0111 读取列线键值 if(key_temp!=0x03) //如果键值仍不等于0x03 { switch(key_temp) //对读取的键盘分配相应键码 { case 0x02: //0000 0010,key0被按下 break; case 0x01: //0000 0001,key1被按 break; } } }
您可能关注的文档
- LEED认证实施方案报告书.doc
- L型混凝土挡墙专项工程施工设计方案.doc
- M1等级大砝码标准装置计量标准技术报告.doc
- matlab进行图像变换域分析报告书.doc
- MATLAB数学计算器课程设计报告书.doc
- NBA的运营模式和对CBA的启示.doc
- PAL解码器电路原理框图设计说明书.doc
- PCM编码与传输实验设计说明书.doc
- PCR实验室设计说明书.ppt
- PID和模糊控制算法.ppt
- 2025年河北省新乐市事业单位考试(中小学教师类D类)职业能力倾向测验试卷1套.docx
- 2025年河北省新乐市事业单位考试(中小学教师类D类)职业能力倾向测验知识点试题必考题.docx
- 2025年河北省新乐市事业单位考试(中小学教师类D类)职业能力倾向测验知识点试题学生专用.docx
- 2025年河北省新乐市事业单位公开招聘考试职业能力倾向测验(D类)(中小学教师类)真题及答案1套.docx
- 2025年河北省新乐市事业单位公开招聘考试职业能力倾向测验(D类)(中小学教师类)真题及答案1套.docx
- 地质灾害及其防御教案.docx
- 2025年河北省新乐市事业单位考试(中小学教师类D类)职业能力倾向测验重点难点精练试题新版.docx
- 2025年河北省新乐市事业单位考试(中小学教师类D类)职业能力倾向测验知识点试题学生专用.docx
- 2025年河北省新乐市事业单位公开招聘考试职业能力倾向测验(D类)(中小学教师类)真题及答案1套.docx
- 地质导向工程师现场服务行为规范.docx
文档评论(0)