这里给大家介绍一个群里面朋友的单片机键盘程序,详细内容请见下面:
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 ,加一个输入信号,通过键盘,然后让它显示