本文来自于牛人技术网某大神。
1. 传感器特点
传感器采用PCB板封装,有三个针脚引出,其中两端的是用来供电的正极和负极而中间的则是电平信号输出。感应的灵敏度可以通过PCB板上的电位器来进行条件一般在7米左右的感应距离,最大是10米。
2. 接线
3. 程序部分
人体感应模块感应到人体时输出高电平(3.3V),没有人时输出低电平(0V)。
人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
51单品机IO口默认引脚给低电平,接5v不会变高电平
https://tieba.baidu.com/p/3406276194?red_tag=2658482202
如果该io被单片机设为低电平,从外部你是永远不可能置1的。除非把该囗烧掉后就是高电平了。
不可以,只能拉低。置1要单片机去置。
为了方便51单片机的演示,可以延时调节先向逆时针旋转到最低,然后在稍微顺时针拧一点,这样较短的延时时间方便延时,灵敏度根据测试距离调节,最好不要超过中心线。
A. L不可重复触发方式(动只执行一次):即感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平;
B. H可重复触发方式(动就疯狂输出): 即感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
可以用一个发光二极管进行测试,虽然输出电压有3.3V,但是输出电流较小,可以用其调整灵敏度和延时时间,测试好后去掉LED灯即可。
以后人体感应可以接个灯,方便观察现象。
KEYVAL EQU 30HKEYSCAN EQU 31H
KEYTM EQU 32H
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
RET
--------------------
GETKEY:
MOV KEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV R2,#10
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV A,P3
ANL A,#0FH
MOV R7,A
SF:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ SF
MOV A,R7
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
深奥点就是,你执行了这段代码,int a = 10程序就会在你电脑的内存中,创建一个小空间,这个空间的名字就是a, 这空间里面的内容就是10,这个空间只能存放整数类型的数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)