找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9771|回复: 4
收起左侧

单片机按键检测实验报告

[复制链接]
ID:161768 发表于 2017-8-13 02:31 | 显示全部楼层 |阅读模式
实验二:按键一、实验目的
  •      掌握单片机I/O的工作方式
  •      熟悉51单片机的汇编指令。
  •      掌握单片机以串行口方式0工作的LED显示
  •      掌握键盘和LED显示的编程办法
二、实验设备
STC89C52单片机实验板、串口下载线、USB连接线、电脑
三、实验原理及内容
利用一个与P0-0引脚连接的按键控制P2-0连接LED的亮、灭两种状态,按p24,p27,p26,p27,p2口,8个灯分别作 左移动,右移动,停止,右移,左移。

实验原理
89C52一般有四组共32个IO口,每一个IO口均可以程序控制其输出电平为高(1)或低(0),在LED的正极接VCC,负极接89C52的IO口,通过控制IO口的输出为低电平(0V),则VCC经LED与89C52的IO形成电流回路,LED点亮。

实验步骤:
软件操作过程参考实验一。

实验接线图:

连接方法:JP10(P2) 与 J12 (LED灯)连接,JP11(P0) 与 JP5(按键接口)连接

1.012.jpg

独立按钮电路图:

1.013.jpg

程序代码(汇编版):

亮灯控制程序:

              ORG     0000H

              LJMP    START

              org              0030h

主 程 序 :

  1. <font color="rgb(0, 0, 0)">START:
  2.               MOV P3,       #0FFH
  3.                     JNB       P0.7,FUN0              ;   检测按键
  4.                     JNB       P0.4,FUN1
  5.                     JNB       P0.5,FUN2
  6.                     JNB       P0.6,FUN3                 ;关闭按纽
  7.                     AJMP                START
  8. FUN0:              LCALL      DL10MS       ;消岸抖动
  9.                    JB         P0.7,START
  10. WAITL0:              JNB        P0.7,WAITL0  ;等待键释放
  11. FUN01:              LCALL      FUN00
  12.               AJMP                 START
  13. FUN1:              LCALL      DL10MS       ;消岸抖动
  14.               JB         P0.4,START
  15. WAITL1:              JNB        P3.3,WAITL1  ;等待键释放
  16. FUN10:              LCALL      FUN11
  17.               AJMP                 START
  18. FUN2:              LCALL      DL10MS       ;消岸抖动
  19.                    JB         P0.5,START
  20. WAITL2:              JNB        P0.5,WAITL2  ;等待键释放
  21. FUN20:              LCALL      FUN22
  22.               AJMP                 START

  23. FUN3:              LCALL      DL10MS       ;消岸抖动
  24.                    JB         P0.6,START
  25. WAITL3:              JNB        P0.6,WAITL3  ;等待键释放
  26.                    MOV        P2,#0FFH     ;关显示
  27.                    LJMP       START

  28. FUN00:              MOV        A,#0FEH              ;左移子程序
  29. FUN000:              MOV        P2,A
  30.                     LCALL      DL05S
  31.                     JNB        ACC.7,OUT              ;检测是否结束
  32.                     RL         A
  33.                     AJMP       FUN000
  34. OUT:                RET

  35. FUN11:              MOV        A,#07FH              ;右移子程序
  36. FUN111:              MOV        P2,A
  37.                     LCALL      DL05S
  38.                     JNB        ACC.0,OUT              ;检测是否结束
  39.                     RR         A
  40.                     AJMP       FUN111

  41. FUN22:MOV         A,#0AAH              ;间隔显示子程序
  42.       MOV         P2,A
  43.       LCALL       DL30S
  44.       CPL         A
  45.       MOV         P2,A
  46.       LCALL       DL30S
  47.       RET

  48. 延时程序 :
  49. DL512:MOV       R2,#0FFH              ;延时500US
  50. LOOP1: DJNZ     R2,LOOP1
  51.        RET

  52. DL10MS:MOV      R3,#14H                            ;延时10MS
  53. LOOP2: LCALL    DL512
  54.        DJNZ     R3,LOOP2
  55.        RET

  56. DL05S:MOV       R4,#0AH                            ;延时100MS
  57. LOOP3: LCALL    DL10MS
  58.        DJNZ     R4,LOOP3
  59.        RET

  60. DL30S:MOV       R5,#03H                            ;延时300MS.
  61. LOOP4:LCALL     DL05S
  62.       DJNZ      R5,LOOP4
  63.       RET   

  64. end</font>
复制代码


4、实验收获与体会
从实验结果来看,本次实验成功完成了实验要求。
实验刚开始,由于对实验本身原理,电路图等的不熟悉,导致我们犯了一些小错误,在询问了同学后很快得到了改正,也从中获益匪浅。不仅熟悉了新知识,加强了动手实践能力,而且成功完成试验更让我们对学习充满了热情。并且,做实验时要有十足的耐心,当发现有问题时要一点一点的检查排除,手忙脚乱更容易出错。

完整单片机实验报告下载(word格式 可编辑):
http://www.51hei.com/bbs/dpj-88784-1.html



回复

使用道具 举报

ID:474677 发表于 2019-2-4 10:59 | 显示全部楼层
按键程序,消抖是关键和难点……
回复

使用道具 举报

ID:686502 发表于 2020-3-20 22:02 | 显示全部楼层
消抖延时200毫秒再判断一次按键是否按下就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表