急求!用单片机测倾角的程序(最好用汇编语言,C语言也可以)

用水银开关和单片机最小系统板实现用LCD显示出来... 用水银开关和单片机最小系统板实现
用LCD显示出来
展开
 我来答
zhidao_ceo
2009-11-04 · TA获得超过993个赞
知道小有建树答主
回答量:345
采纳率:0%
帮助的人:330万
展开全部
你的问题问得太粗了,没一点实际设计目的,只有拿我做的实例给你参考了。下面程序是我完成07年电子设计竞赛中小车走跷跷板平衡问题的实例,正是用的水银开关解决倾角判断测量问题,其中包含有一段水银开关测倾角的子程序(标有注释自己读吧),供你参考。
因为程序涉及我的版权,只好删掉一些无关紧要的地方,所以不能让你编译成功,仅供你阅读,请谅解!

更多电子问题请关注我!zhidao_ceo竭诚为您解答!

NOWSTEP EQU 28H
BEGINSPEED EQU 29H
DFSPD EQU 2AH
NOWANGLE EQU 2BH
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTR_0
ORG 0013H
LJMP INTR_1
ORG 。。。。。

MAIN: DJNZ R0,$
MOV SP,#70H
MOV P1,#0FFH
MOV P3,#0FFH
MOV BEGINSPEED,#80D ;起始速度

STEP_TABLE:MOV 20H,#11111011B ;1
MOV 21H,#11111001B ; 2
MOV 22H,#11111101B ; 3
MOV 23H,#11110101B ; 4
MOV 24H,#11110111B ; 5
MOV 25H,#11110110B ; 6
MOV 26H,#。。。。。。 ; 7
MOV 27H,#11111010B ; 8

MOV R0,#20H
MOV NOWSTEP,R0
;yyf07year
NOP

SPEED_UP1:
;步数=256*(B-1)+A

MOV A,#70D
SPU1: MOV B,#32D
SPU2: LCALL RUNZ
LCALL DELAY_UP
DJNZ B,SPU2
DJNZ ACC,SPU1

NEAR_CENTRE:

MOV A,#70
NR1: MOV B,#12
NR2: MOV DFSPD,#7
LCALL RUNZ
LCALL DELAY_DF
DJNZ B,NR2
DJNZ ACC,NR1
MOV A,#40
NR3: MOV B,#6
NR4: MOV DFSPD,#20
LCALL RUNZ
LCALL DELAY_DF
;yyf07year
DJNZ B,NR4
DJNZ ACC,NR3
MOV A,#30
NR5: MOV B,#3
NR6: MOV DFSPD,#50
LCALL RUNZ
LCALL DELAY_DF
DJNZ B,NR6
DJNZ ACC,NR5

CHECK_BALANCE: ;水银开关检测角度
MOV P1,#0FFH
MOV A,P1
JNB ACC.0,FAST_BACK ;倾斜角度1
JNB ACC.1,FAST_BACK ;倾斜角度2
JB ACC.2,FAST_BACK ;倾斜角度3
JB ACC.3,FAST_BACK ;倾斜角度4

MOV DFSPD,#165
LCALL RUNZ
LCALL DELAY_DF
JMP CHECK_BALANCE

FAST_BACK:
MOV DFSPD,#80
MOV A,#6
FB1:LCALL RUNF
LCALL DELAY_DF
DJNZ ACC,FB1
MOV DFSPD,#18
MOV A,#12
FB2:LCALL RUNF
LCALL DELAY_DF
DJNZ ACC,FB2
MOV DFSPD,#7
MOV A,#75
FB3:LCALL RUNF
LCALL DELAY_DF
DJNZ ACC,FB3
MOV DFSPD,#90
;yyf07year
MOV A,#13
FB4:LCALL RUNF
LCALL DELAY_DF
DJNZ ACC,FB4

;..............
JMP KEEP_BALANCE
KEEP_BALANCE:
LCALL DELAY_SEC
LCALL DELAY_SEC
MOV A,P1
JB ACC.0,CHECK_BALANCE
JB ACC.3,GOBACK
JMP ALARM
MOV DFSPD,#160
LCALL DELAY_DF
GOBACK:MOV A,#255
MOV DFSPD,#20
LCALL RUNF
DJNZ ACC,GOBACK
JMP CHECK_BALANCE

ALARM: CLR P3.0
CLR P3.7
CLR P3.1
NOP
。。。。。
NOP
NOP
SETB P3.1
SETB P3.7
DELAY_10SEC:
MOV R0,#100
DLS51: MOV R1,#200
DLS52: MOV R2,#250
DJNZ R2,$
DJNZ R1,DLS52
DJNZ R0,DLS51
SETB P3.0
CLR P3.1
NOP
SETB P3.1
TOPOINTB: MOV A,#70
TB1: MOV B,。。。。。。。。
TB2: MOV DFSPD,。。。
LCALL RUNZ
LCALL DELAY_DF
DJNZ B,TB2
DJNZ ACC,TB1

LCALL DELAY_SEC
LCALL DELAY_SEC
LCALL DELAY_SEC
LCALL DELAY_SEC
LCALL DELAY_SEC

TOPOINTA: MOV A,#70
TA1: MOV B,。。。。。。。。。
TA2: MOV DFSPD,#8
LCALL RUNF
LCALL DELAY_DF
DJNZ B,TA2
DJNZ ACC,TA1

CLR P3.1
NOP
SETB P3.1

KSTAY: NOP
JMP KSTAY

TOCHECK_BALANCE:
LJMP CHECK_BALANCE

RUNZ: PUSH 00H
MOV R0,NOWSTEP ;正向转动;NOWSTEP为上次步进后,当前步位
INC R0
CJNE R0,#28H,RTOZ
MOV R0,。。。。
RTOZ: MOV P2,@R0
MOV NOWSTEP,R0
POP 00H
RET

RUNF: PUSH 00H
MOV R0,NOWSTEP ;反向转动;NOWSTEP为上次步进后,当前步位
DEC R0
CJNE R0,#1FH,RTOF
MOV R0,#27H
RTOF: MOV P2,@R0
MOV NOWSTEP,R0
POP 00H
RET
;yyf07year
DELAY_UP: PUSH ACC
PUSH B

PUSH 00H ;BEGINSPPED为起始速率寄存器
PUSH 01H
PUSH 02H
MOV R0,BEGINSPEED
CJNE R0,#3,TOU1
JMP TOU2
TOU1: DEC R0
MOV BEGINSPEED,R0
TOU2: MOV R1,BEGINSPEED
DLU2: MOV R2,#100
DLU3: DJNZ R2,DLU3
DJNZ R1,DLU2
POP 02H
POP 01H
POP 00H
POP B
POP ACC
RET

DELAY_DF: ;自定义速度
PUSH 00H ;DFSPD为自定义速率寄存器
PUSH 01H
PUSH 02H

MOV R1,DFSPD
DLD2: MOV R2,#100D
DLD3: DJNZ R2,DLD3
DJNZ R1,DLD2
POP 02H
POP 01H
。。。。
RET
DELAY_SEC: PUSH 00H
PUSH 01H
PUSH 02H
MOV R0,#250
DLS1: MOV R1,#200
DLS2: MOV R2,#10
DJNZ R2,$
DJNZ R1,DLS2
DJNZ R0,DLS1
POP 02H
POP 01H
POP 00H
RET

INTR_0: NOP
;yyf07year

INTR_1: NOP

toend: nop
END

更多电子问题请关注我!zhidao_ceo竭诚为您解答!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式