专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机键盘程序

作者:佚名   来源:本站原创   点击数:  更新时间:2008年05月20日   【字体:

这里给大家介绍一个群里面朋友的单片机键盘程序,详细内容请见下面:
               
 org  0030h
 ljmp  main
    
main: 
            mov   p1,#0ffh
            mov   p3,#0ffh
      mov   p0,#80h
      mov   p2,#0ffh
 k0:        setb  p0.7
            mov  a,p3
            ANL  a,#11000000b
   cjne a,#00000000b,k1
   ljmp   kk0      ;跳转去执行RMA236的程序
 k1:        cjne a,#01000000b,k2
            ljmp  kk1      ;跳转去执行RMA463、464、490、491的程序
 k2:        cjne a,#10000000b,k3
            ljmp  kk2      ;跳转去执行RMA570的程序
 k3:        cjne a,#11000000b,k0
            ljmp  kk3      ;跳转去执行RMA227、236成品程序
         ;键盘程序的4个按键
   
  kk0:    jnb  p0.7,pp1       ;跳转去执行RMA236的程序
     ljmp  kk0
  pp1:      mov  p0,#06h   ;按按键 1 2 3 4 5 6 #键
         clr p2.0
   clr p1.0
   lcall  delay
   setb  p2.0
   setb  p1.0
   lcall  delay

   mov  p0,#5bh
   clr  p2.1
   clr  p1.1
   lcall  delay
   setb  p2.1
   setb  p1.1
   lcall  delay

   mov  p0,#4fh
   clr  p2.2
   clr  p1.2
   lcall  delay
   setb   p2.2
   setb   p1.2
   lcall  delay

   mov   p0,#66h
   clr   p2.3
   clr   p1.3
   lcall  delay
   setb   p2.3
      setb   p1.3
   lcall  delay

   mov   p0,#6dh
   clr  p2.4
   clr  p1.4
   lcall  delay
   setb    p2.4
      setb    p1.4
   lcall  delay

   mov   p0,#7dh
   clr  p2.5
   clr  p1.5
   lcall  delay
   setb   p2.5
      setb   p1.5
   lcall  delay

   mov   p0,#76h
   clr  p2.6
   clr  p3.3
   lcall  delay
   setb   p2.6
   setb   p3.3

 ppx1: mov  P0,#06h
            clr p2.0
   lcall  delay1
   setb  p2.0

   mov  p0,#5bh
   clr  p2.1
   lcall  delay1
   setb  p2.1

   mov  p0,#4fh
   clr  p2.2
   lcall  delay1
   setb   p2.2

   mov   p0,#66h
   clr   p2.3
   lcall  delay1
   setb   p2.3
 
   mov   p0,#6dh
   clr  p2.4
   lcall  delay1
   setb    p2.4
 
   mov   p0,#7dh
   clr  p2.5
   lcall  delay1
   setb   p2.5

   mov   p0,#76h
   clr  p2.6
   lcall  delay1
   setb  p2.6
   jnb   p0.7,pp2
   ljmp  ppx1

pp2:        mov   p0,#07h     ;按按键7 4 * 1 2 3 4 5 6 # 键
         clr  p2.0
   clr  p1.6
   lcall  delay
   setb   p2.0
   setb  p1.6
   lcall  delay
        
   mov   p0,#66h
   clr  p2.1
   clr  p1.3
   lcall  delay
   setb   p2.1
   setb   p1.3
            lcall  delay

   mov  p0,#36h
   clr  p2.2
   clr  p3.1
   lcall  delay
   setb   p2.2
   setb   p3.1
    lcall  delay

   mov  p0,#06h
         clr p2.3
   clr p1.0
   lcall  delay
   setb  p2.3
   setb  p1.0
    lcall  delay

   mov  p0,#5bh
   clr  p2.4
   clr  p1.1
   lcall  delay
   setb  p2.4
   setb  p1.1
    lcall  delay

   mov  p0,#4fh
   clr  p2.5
   clr  p1.2
   lcall  delay
   setb   p2.5
   setb   p1.2
    lcall  delay

   mov   p0,#66h
   clr   p2.6
   clr   p1.3
   lcall  delay
   setb   p2.6
      setb   p1.3
    lcall  delay

   mov   p0,#6dh
   clr  p2.7
   clr  p1.4
   lcall  delay
   setb    p2.7
   setb    p1.4
    lcall  delay

   mov   p0,#7dh
   clr  p3.5
   clr  p1.5
   lcall  delay
   setb   p3.5
   setb   p1.5
    lcall  delay

   mov   p0,#76h
   clr  p3.4
   clr  p3.3
   lcall  delay
   setb   p3.4
   setb   p3.3

    ppx2: mov   p0,#07h  
         clr  p2.0
   lcall  delay1
   setb   p2.0

   mov   p0,#66h
   clr  p2.1
   lcall  delay1
   setb   p2.1
 
   mov   p0,#36h
   clr  p2.2
   lcall  delay1
   setb   p2.2

   mov  p0,#06h
         clr p2.3
   lcall  delay1
   setb  p2.3

   mov  p0,#5bh
   clr  p2.4
   lcall  delay1
   setb  p2.4

   mov  p0,#4fh
   clr  p2.5
   lcall  delay1
   setb   p2.5

   mov   p0,#66h
   clr   p2.6
   lcall  delay1
   setb   p2.6

   mov   p0,#6dh
   clr  p2.7
   lcall  delay1
   setb    p2.7

   mov   p0,#7dh
   clr  p3.5
   lcall  delay1
   setb   p3.5

   mov   p0,#76h
   clr  p3.4
   lcall  delay1
   setb   p3.4
   jnb  p0.7,pp3
   ljmp  ppx2

  pp3:    mov   p0,#5bh    ;按按键 2 * 7 8 9 0 0 0 # 键
         clr  p2.0
   clr  p1.1
   lcall  delay
   setb   p2.0
   setb   p1.1
    lcall  delay

   mov   p0,#36h
   clr   p2.1
   clr   p3.1
   lcall  delay
   setb    p2.1
   setb    p3.1
    lcall  delay

   mov   p0,#07h
   clr  p2.2
   clr  p1.6
   lcall  delay
   setb   p2.2
   setb   p1.6
    lcall  delay

   mov   p0,#7fh
   clr  p2.3
   clr  p1.7
   lcall  delay
   setb   p2.3
   setb   p1.7
    lcall  delay

   mov   p0,#6fh
   clr  p2.4
   clr  p3.0
   lcall  delay
   setb   p2.4
   setb   p3.0
    lcall  delay

   mov   p0,#3fh
   clr  p2.5
   clr  p3.2
   lcall  delay
   setb   p2.5
   setb   p3.2
   lcall  delay

   mov   p0,#3fh
   clr  p2.6
   clr  p3.2
   lcall  delay
   setb   p2.6
   setb   p3.2
   lcall  delay

   mov   p0,#3fh
   clr  p2.7
   clr  p3.2
   lcall  delay
   setb   p2.7
   setb   p3.2
    lcall  delay

   mov   p0,#76h
   clr  p3.5
   clr  p3.3
   lcall  delay
   setb   p3.5
   setb   p3.3

  ppx3: mov   p0,#5bh  
         clr  p2.0
   lcall  delay1
   setb   p2.0

   mov   p0,#36h
   clr   p2.1
   lcall  delay1
   setb    p2.1

   mov   p0,#07h
   clr  p2.2
   lcall  delay1
   setb   p2.2

   mov   p0,#7fh
   clr  p2.3
   lcall  delay1
   setb   p2.3

   mov   p0,#6fh
   clr  p2.4
   lcall  delay1
   setb   p2.4

   mov   p0,#3fh
   clr  p2.5
   lcall  delay1
   setb   p2.5

   mov   p0,#3fh
   clr  p2.6
   lcall  delay1
   setb   p2.6

   mov   p0,#3fh
   clr  p2.7
   lcall  delay1
   setb   p2.7
 
   mov   p0,#76h
   clr  p3.5
   lcall  delay1
   setb   p3.5
   jnb   p0.7,pp4
   ljmp  ppx3

  pp4: mov   p0,#07h    ;按按键 7 8 9 0 0 0 # 键
   clr  p2.0
   clr  p1.6
   lcall  delay
   setb   p2.0
   setb   p1.6
    lcall  delay

   mov   p0,#7fh
   clr  p2.1
   clr  p1.7
   lcall  delay
   setb   p2.1
   setb   p1.7
    lcall  delay

   mov   p0,#6fh
   clr  p2.2
   clr  p3.0
   lcall  delay
   setb   p2.2
   setb   p3.0
    lcall  delay

   mov   p0,#3fh
   clr  p2.3
   clr  p3.2
   lcall  delay
   setb   p2.3
   setb   p3.2
   lcall  delay

   mov   p0,#3fh
   clr  p2.4
   clr  p3.2
   lcall  delay
   setb   p2.4
   setb   p3.2
   lcall delay

   mov   p0,#3fh
   clr  p2.5
   clr  p3.2
   lcall  delay
   setb   p2.5
   setb   p3.2
    lcall  delay

   mov   p0,#76h
   clr  p2.6
   clr  p3.3
   lcall  delay
   setb   p2.6
   setb   p3.3

   ppx4:   mov  p0,#07h  
   clr  p2.0
   lcall  delay1
   setb   p2.0

   mov   p0,#7fh
   clr  p2.1
   lcall  delay1
   setb   p2.1

   mov   p0,#6fh
   clr  p2.2
   lcall  delay1
   setb   p2.2

   mov   p0,#3fh
   clr  p2.3
   lcall  delay1
   setb   p2.3

   mov   p0,#3fh
   clr  p2.4
   lcall  delay1
   setb   p2.4

   mov   p0,#3fh
   clr  p2.5
   lcall  delay1
   setb   p2.5

   mov   p0,#76h
   clr  p2.6
   lcall  delay1
   setb   p2.6
   jnb   p0.7,pp5
   ljmp  ppx4

    pp5: mov   p0,#07h    ;按按键 7 8 9 0 0 0 # 键
   clr  p2.0
   clr  p1.6
   lcall  delay
   setb   p2.0
   setb   p1.6
    lcall  delay

   mov   p0,#7fh
   clr  p2.1
   clr  p1.7
   lcall  delay
   setb   p2.1
   setb   p1.7
    lcall  delay

   mov   p0,#6fh
   clr  p2.2
   clr  p3.0
   lcall  delay
   setb   p2.2
   setb   p3.0
    lcall  delay

   mov   p0,#3fh
   clr  p2.3
   clr  p3.2
   lcall  delay
   setb   p2.3
   setb   p3.2
   lcall  delay

   mov   p0,#3fh
   clr  p2.
51单片机 16:56:48
jb p0.7 k
改为
jb p0.7 k
是跳过判断后的程序
风儿 16:57:32
jb p0.7 k
改为
jb p0.7 k
有什么区别吗
风儿 16:57:47
 是jnb
51单片机 16:59:07
jb
51单片机 16:59:14
我的

51单片机 17:00:31
这是你完整的单片机键盘程序,还是一部分
Raul(66686874) 17:00:34
JB  1时跳转  JNB 0跳转
风儿 17:01:00
一部分,还有的现实不出来
风儿 17:01:35
郁闷的是它就怎么不动作
风儿 17:01:56
JB  1时跳转  JNB 0跳转
我知道啊,我的硬件是0跳转
51单片机 17:02:21
是按键去抖动
风儿 17:02:38
我在早也没有加抖动
51单片机 17:03:26
你的原来没有改的,且 成功运行的发过来
风儿 17:04:47
我就在这原程序上修改了,没有了
其实也没什么,现在就增加了比较这一块
k0:        setb  p0.7
            mov  a,p3
            ANL  a,#11000000b
   cjne a,#00000000b,k1
   ljmp   kk0      ;跳转去执行RMA236的程序
 k1:        cjne a,#01000000b,k2
            ljmp  kk1      ;跳转去执行RMA463、464、490、491的程序
 k2:        cjne a,#10000000b,k3
            ljmp  kk2      ;跳转去执行RMA570的程序
 k3:        cjne a,#11000000b,k0
            ljmp  kk3      ;跳转去执行RMA227、236成品程序
风儿 17:05:06
还有相应的程序增加了
风儿 17:07:29
我就是找不到原因现在怎么就不动作
51单片机 17:08:01
你家了你的程序后就改变了原来对数值保护,
还有在按键选择多种操作时并不像你想的那么简单
风儿 17:08:34
那你的意思是错误在哪里呢
51单片机 17:08:51
你能不能还原成原来的程序,还有p3
干什么的


51单片机 17:09:41
你要改变别人的程序,一定要是别人的程序变成自己的程序再改
风儿 17:10:05
p3是后面P0.6  P0.7跟我要的状态比较
风儿 17:10:21
是我自己的程序
51单片机 17:11:27
那你系统说明你是要实现的动作
51单片机 17:12:03
按键程序对应这程序扫描
风儿 17:12:05
对啊
地方盛霖 17:12:11
各位大侠:基于单片机人机对话接口 是什么意思??
51单片机 17:12:27
按键和显示,
风儿 17:13:12
是啊
地方盛霖 17:13:25
哦,这样啊
地方盛霖 17:13:49
那我要做设计:该怎么入手啊 ?
51单片机 17:14:23
是否想过 当你按下时单片机键盘程序已经扫描很多次了
51单片机 17:14:49
总体框架图要想好
地方盛霖 17:14:57
按键和显示  什么呢?  
风儿 17:15:10
没有啊,我没按按键的话还在等待我按下啊(一直在扫描)

地方盛霖 17:15:26
哦,总体。。。?
地方盛霖 17:16:20
要简单一点  总体怎么?
51单片机 17:17:08
pp2:        mov   p0,#07h     ;按按键7 4 * 1 2 3 4 5 6 # 键
         clr  p2.0
这是等待
地方盛霖 17:17:21
51单片机  大哥,我该怎么弄?
地方盛霖 17:17:50
好象我也要用啊
51单片机 17:18:17
 
风儿 17:18:28
这个不是啊,这个是显示啊
51单片机 17:18:31
像这样
51单片机 17:18:54
你的等你按键
51单片机 17:18:58
程序呢
地方盛霖 17:19:15
恩,我看看
风儿 17:19:20
 kk0:    jnb  p0.7,pp1       ;跳转去执行RMA236的程序
     ljmp  kk0
风儿 17:19:36
有四个这样的程序啊
风儿 17:19:54
还有kk1  kk2  kk3
51单片机 17:20:37
我知道了
风儿 17:21:02
恩,我比较有四种状态的嘛
51单片机 17:21:06
你 应该把判断加入循环
51单片机 17:21:19
这样a
风儿 17:21:20
我是在循环的啊
51单片机 17:22:03
kk0
51单片机 17:22:12
k0
风儿 17:22:22
对啊,我以前就是一种状态
现在就是我多三种状态,用P3.6  P3.7来判断比较的
51单片机 17:22:52
你在把kk0改为k0

51单片机 17:22:59
运行以下
风儿 17:23:21
没有啊,我的K0和  KK0是不同用处的
李秋章(215637873) 17:23:54
他提示什么错误?
风儿 17:24:07
没有错误,就是按下按键不动作
风儿 17:24:16
烧录OK
地方盛霖 17:24:18
51单片机  大哥,象这样的总体图能实现什么功能 啊,能帮我再构思下吗,?
拜谢了
李秋章(215637873) 17:24:48
没有用过这个单片机,呵呵
风儿 17:24:50
我现在有点事要出去下,帮我想想
有时间回来继续讨论哈
地方盛霖 17:25:48
还有上图是不是有些复杂啊,还要离合器呢? 都不知道是什么东西
地方盛霖 17:26:36
51单片机  大哥  还在吗?

51单片机 17:26:40
那是我的一个设计图,我是让你知道一下什么=是设计图
51单片机 17:26:55
总体结构图
地方盛霖 17:28:08
哦,设计总体图
   这个知道了,谢了啊
那么带键盘和显示  再简单些 能实现什么功能啊?
51单片机 17:28:42
单片机右边是单片机人机对话接口,左边是执行部分
地方盛霖 17:29:37
右边是单片机人机对话接口?
51单片机 17:30:03
反了
模 块 名:恒流源PWM控制
//主要满足: 1、PWM信号的输出。  
//          2、A/D采样的转换。  
//          3、八段码的显示。   
//          4、串口的通信。      
//          5、人机对话及键盘调节。
//          6、数据的存储。
//          7、PID调节。       
//通信协议:波特率:128000bps。大于F0的为指令操作,小于F1为设定值操作。//          通信格式为16进制。接收到的数据为采样电流。发送一个设定值会             //          返回同一个设定值。发送一个指令会返回同一个指令+00+指令。
地方盛霖 17:30:31
饿,我还以为我理解那么差呢
51单片机 17:31:01

51单片机 17:31:04
不错
地方盛霖 17:32:30
您看仅有这几部分行不:
//          2、A/D采样的转换。  
//          3、八段码的显示。   
//          4、串口的通信。      
//          5、人机对话及键盘调节。

51单片机 17:32:50
干什么
地方盛霖 17:33:56
en  ,加一个输入信号,通过键盘,然后让它显示
 

关闭窗口