- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
输入功能—按键检测 分析IO口电路就可以得出一个结论,这种具有上 拉的准双向IO口,如果要正常读取外部信号的状态 ,必须首先得保证自己内部输出的是1,如果内部 输出0,则无论外部信号是1还是0,这个引脚读进来 的都是0。因此,输入数据时,应先向端口写1,使 场效应管截止,然后方可作为输入。(注:P0口作为 通用IO口使用时需加上拉电阻,其他IO口内部有上 拉电阻,不需外接上拉电阻) 输入功能—按键检测 2.2.2 独立按键扫描 单独的按键扫描程序执行后看不到任何现象,为了有个直 观的效果,我们可以将之前的点亮LED灯的程序加进来,当 K1键按下时点亮一个LED灯(如板子最右侧的LED2)。 1、构建独立按键 若要将K1变为独立 按键,只需KeyOut1 端接地即可,因此, 只要将单片机的P2.3 (KeyOut1接至P2.3端 口)端口输出低电平, 就可以将K1看成是 一个独立按键。 输入功能—按键检测 2、独立式按键的软件设计 开 始 初始化 按键是否按下? 延时去抖 点亮LED Y N 输入功能—按键检测 3、按键消抖 在键盘的软件设计中还要注意按键的去抖动问题。由于 按键一般是由机械式触点构成的,在按键按下和断开的瞬 间均有一个抖动过程,时间大约为5ms~10ms,可能会造 成单片机对按键的误识别。按键消抖一般有两种方法,即 硬件消抖和软件消抖。软件消抖方式经济实惠,且操作简 单,因此应用广泛。在软件设计中,当单片机检测到有键 按下时,可以先延时一段时间越过抖动过程再对按键识别。 输入功能—按键检测 实际应用中,一般希望按键一次按 下单片机只处理一次,但由于单片 机执行程序的速度很快,按键一次 按下可能被单片机多次处理。为避 免此问题,可在按键第一次按下时 延时10ms之后再次检测按键是否按 下,如果此时按键仍然按下,则确 定有按键输入。这样便可以避免按 键的重复处理。 输入功能—按键检测 2.2.3源程序编写 #includereg52.h //包含特殊功能寄存器定义的头文件 sbit LED0=P0^0; //位地址声明 sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3=P1^3; sbit ENLED=P1^4; sbit KeyIn1=P2^4; sbit KeyOut1=P2^3;? void delay10ms(void) // 延时10ms 子函数 { unsigned char i,k; // 变量定义 for(i=20;i0;i--) // for语句循环体 for(k=250;k0;k--); } 输入功能—按键检测 void main() //主程序 { KeyIn1 = 1; //向输入端口写1,为输入做准备 KeyOut1 = 0; //将K1作为独立按键使用 ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while(1) { if(KeyIn1 == 0) //判断K1键是否按下 { 输入功能—按键检测 delay10ms(); //延时去抖 if(KeyIn1 == 0) { while(KeyIn1==0); //等待按键释放 LED0 = 0; //点亮LED灯 } } } } 程序写完以后,按照Keil写程序的过程,建立工程-保存工 程-建立文件-添加文件到工程-编写程序-编译-下载 程序。程序下载完成以后,可以发现,按K1键,松开以后 开发板上最右侧的LED灯(LED2)点亮。 项目二 输入/输出功能 项目描述 我们所熟悉的电脑的输入设备有键盘、鼠标、麦克风等, 输出设备有显示器、音响等。如同电脑,输入/输出是单片 机最基本的功能,单片机最常用的输入设备为按键,最常 用的输出设备为发光二极管LED、数码管以及液晶显示器 LCD。本项目基于KST-51开发板,通过编程实现独立按 键检测与LED灯点亮功能。 输出功能──点亮LED灯 2.1.1 LED灯介绍 LED(light-emitting diode),即发光二极管,俗称LED小 灯,我们板子上用的是普通的贴片发光二极管,其正向导 通电压是1.8V到2.2V之间,工作电流一般在1mA~20mA之 间。当电流在1mA~5mA之间变化时,随着通过LED的电 流越来越大,我们的肉眼会明显感觉到这个小灯越来越亮 ,而当电流从5mA~20mA之间变化时,我们看到的发光二 极管的亮度变化就不是太明显了。当电流超过20mA
您可能关注的文档
- 基础会计课件第七章财产清查.pptx
- 基础会计课件第三章会计科目与账户.pptx
- 基础会计课件第十章会计工作组织.pptx
- 基础会计课件第四章复式记账与借贷记账法.pptx
- 基础会计课件第五章会计凭证.pptx
- 基础会计课件第一章绪论.pptx
- 家具设计电子教案.ppt
- 金融理论与实务模块八金融市场.pptx
- 金融理论与实务模块二信用.pptx
- 金融理论与实务模块九通货膨胀与通货紧缩.pptx
- 单片机原理及应用项目化教程(C语言版)项目九AD与DA转换.ppt
- 单片机原理及应用项目化教程(C语言版)项目六LCD1602显示原理及实现.ppt
- 单片机原理及应用项目化教程(C语言版)项目七I2C总线与EEPROM.ppt
- 单片机原理及应用项目化教程(C语言版)项目三数码管基础与矩阵键盘扫描.ppt
- 单片机原理及应用项目化教程(C语言版)项目十实时时钟DS1302.ppt
- 单片机原理及应用项目化教程(C语言版)项目十一红外与步进电机.ppt
- 单片机原理及应用项目化教程(C语言版)项目四定时器与数码管动态显示.ppt
- 单片机原理及应用项目化教程(C语言版)项目五外部中断与串行通信.ppt
- 单片机原理及应用项目化教程(C语言版)项目一介绍.ppt
- 单选-电气一次设计题库(按设计流程整理).doc
原创力文档


文档评论(0)