单片机课程设计例题检测微动开关输入.pdf_第1页
单片机课程设计例题检测微动开关输入.pdf_第2页
单片机课程设计例题检测微动开关输入.pdf_第3页
单片机课程设计例题检测微动开关输入.pdf_第4页
单片机课程设计例题检测微动开关输入.pdf_第5页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

VIP免费下载

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

文档简介

单片机课程设计 例题例题5检测微动开关输入检测微动开关输入 单片机课程设计 检测微动开关输入检测微动开关输入 ? P2.1引脚连接1支微动开关 程序执行时,每单击开关一次 码管显示的数字加1。数字会从 ? 1教学目的: ? (1)学会使用开关输入数据 ? (2)编写延时函数delay() 除开关抖动。 ? (3)观察P1口的输出状态 ? (4)在循环程序中,学习一种当条件满足时跳出 循环的方法。 4.2.5例题例题5检测微动开关输入检测微动开关输入 支微动开关,P1口连接1支数码管。 每单击开关一次,连接在P1口的数 数字会从0到9循环往复显示。 学会使用开关输入数据 delay(),实现用延时程序消 口的输出状态,学习使用软件仿真。 学习一种当条件满足时跳出 检测微动开关输入检测微动开关输入 2.电路图 图图424检测微动开关输入电路图检测微动开关输入电路图 DS1 +5V g f e d c b a e d c g f dp a b 330 x 8 R1 R2 R3 R4 R5 R6 R7 12MHz R8 10K C1 4.7u C2 30p C3 30p Y1 +5V 检测微动开关输入电路图检测微动开关输入电路图 R9 10K +5V SW1 +5V 12MHz 17 16 15 14 13 12 9 RST AT89S51 EA/VPP 31 PSEN 29 ALE/PROG 30 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P2.7 28 P2.6 27 P2.5 26 P2.4 25 P2.3 24 P2.2 23 P2.1 22 P2.0 21 39 P0.0 38 P0.1 37 P0.2 36 P0.3 35 P0.4 34 P0.5 33 P0.6 32 P0.7 1 P1.0 2 P1.1 19 XTAL2 18 XTAL1 8 P1.7 7 P1.6 6 P1.5 5 P1.4 4 P1.3 3 P1.2 IC1 3.相关知识 ? 用软件消除按键开关抖动原理 ? 按键开关在电路的连接如图4-25 处接P2.1。按键开关未按下时, 下后,P2.1引脚为低电平。电路通过 关状态。由于按键开关的结构为机械弹性元件 开的瞬间会产生接触不稳定,引起 4-25(b)所示,造成CPU对一次按键操作进行多次处理的情况 可能产生错误。 SW P2.1 +5V R 图425按键开关的键抖动 (a) 25(a)所示,电阻R与开关SW连接 , P2.1引脚为高电平5V;按键按 电路通过P2.1脚向CPU传递按键的开 由于按键开关的结构为机械弹性元件,触点在闭合和断 引起P2.1引脚电平的不稳定,如图 对一次按键操作进行多次处理的情况, 前沿抖动 按键稳定 后沿抖动 松开键 按下键 按键开关的键抖动 (b) ? 由于键盘的抖动时间一般为 一次检测到按键按下后, 屏蔽掉按键抖动的影响, 实按下,如果P2.1引脚仍然是低电平就表示按键 确实按下,否则就表示无效信息 消除了按键抖动的影响。 由于键盘的抖动时间一般为1020ms, 可以在第 ,执行延时20 ms子程序, ,然后再确认按键是否确 引脚仍然是低电平就表示按键 否则就表示无效信息,不予理睬从而 。 4.程序设计 (1)流程图 开始 N Y 开关按下? 延时 Y N N 结束 开关确实按下? 开关释放? 延时 Y (a)按键函数 开始 按键函数 加1操作 送P1口 初始化 (b)主程序 ? (2 2)C语言程序 C语言程序 ? #include ? code LED_seg10=0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x83,0xF8,0x80, ? 0x98 ? void delay (void) ? ? unsigned char i,j ? for (i=0i LED_seg10=0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x83,0xF8,0x80, for(j=0j120j+) ? /函数函数sw_pressed(),检查按键是否按下 检查按键是否按下 按键 按键 ? /释放去抖释放去抖。 。 ? int sw_pressed (void) ? ? P2_1=1 ? while(1) ? ? while(P2_1=1) ? delay ( ) ? if(P2_1=0) ? while(P2_1=0) ? delay ( ) ? return 1 ? ? ? 检查按键是否按下检查按键是否按下。按键按下去抖,。按键按下去抖, while(P2_1=0) ? void main (void) /主程序 主程序 ? ? int c=0 ? P1=LED_segc/ 初始化显示器 初始化显示器 ? do ? ? if (sw_pressed() ) c+ ? if(c=10) c=0 ? P1= LED_segc ? ? while(1) ? 主程序 主程序 初始化显示器初始化显示器 if (sw_pressed() ) c+ ? (3)程序说明 程序说明 ? 主程序中if (sw_pressed() ) c+ sw_pressed的返回值1作为 式,只要按键没按下, ? sw_pressed函数中的返回值 带回。 if (sw_pressed() ) c+ 语句, 作为if语句的判断表达 ,程序就在此等待。 函数中的返回值,使用return语句 5.程序仿真 ? 在Keil集成开发环境中,输入上述源程序并命名为 5.c,建立名为lm4-5的工程并将 编译、链接后进入调试状态。 开P1、P2口对话框,用鼠标单击 记 取消,模拟开关按下, 记出现,模拟开关断开见图 的输出变化情况。在仿真运行中每 关按下后又断开),P1口输出一个段码 输入上述源程序并命名为lm4- 的工程并将lm4-5.c加入工程中,经 。单击工具栏上运行按钮,打 用鼠标单击P2口的P2.1引脚位,使标

温馨提示

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

评论

0/150

提交评论