求C51单片机控制sca60c倾角传感器的程序,最好有注释~~~~

求C51单片机控制sca60c倾角传感器的程序,最好有注释~~~~,第1张

传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形穗咐式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。

传感器的特点包括:微型游好化、数字化、智能化、多功能化、系统化、网络化猜磨纯。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。

附件一:

总程序源程序

**************说咐型明***************************************************

** P1.1为左边传感器输入 P1.0为右边传感衡隐猜器输入 **

** P1.6检测车身前倾 P1.7检测车身后倾 **

** 秒表端口定义: **

** A(P2.1):启动/停止计时 B(P2.3):各段记录时间回放**

** C(P2.3):分段计时标志/清零(停止状态下) **

*********************************************************************

ORG0000H

************主程序***************************************************

JBGN:

LCALL TC 停车

LCALL CSZT 设置初始状态

*************车身平衡检查******************

CGQ:

LCALL QJ 前进3S,第一次不检查A端黑线

LCALL QL 秒表置零

LCALL QDJS 启动秒表

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

LCALL TC 停车

LCALL DELAY30消除摆动

JXPD:JNB P1.6,MBXS如果前倾(到达C点附近),转秒表显示AC段行车时间

LCALL QJ前进

LCALL DELAY

LCALL TC

LCALL DELAY30消除摆动

LJMP JXPD继续判断是否到达C点附近

MBXS:

LCALL QDJS

LCALL CDSL5 停车5S,读取AC段行车时间

LCALL QL 秒表清零

LCALL QDJS 启动计时,记录平衡调整时间

CGQJC:

JNB P1.6,JBZHT 如果前倾,转慢速后退

JNB P1.7, JBWW 如果后仰,转慢速前进携世

LCALL DELAY1S延时判断是否真正平衡

LCALL DELAY1S

LCALL DELAY1S

JNB P1.6,CGQJC 如果前倾,转继续调整平衡

JNB P1.7,CGQJC 如果后仰,转继续调整平衡

LCALL TC 停车

LCALL QDJS 停止计时,显示平衡调整所用时间

CLR P2.5 蜂鸣器鸣叫

CLR P2.4 七彩灯亮

LCALL CDSL5 转到车灯闪亮5次,表示5S时间

LCALL CSZT

LJMP CDB 转C到B程序前进

***********转长跳***********

JBZHT:

LJMP JBTPH

JBWW:

LJMP JBWWW

***********调整平衡*********

JBTPH:

LCALL DELAY30消除传感器摆动

JBTP: LCALL HT

lcall delay

LCALL TC

LCALL DELAYTC消除传感器摆动

JNB P1.6,JBTP

LJMP CGQJC

JBWWW:

LCALL DELAY30

JBWG:LCALL QJ

LCALL DELAY

LCALL TC

LCALL DELAYTC消除传感器摆动

JNB P1.7,JBWG

LJMP CGQJC

*********从C点到B端程序**********

CDB:

LCALL QL 秒表置零

LCALL QDJS

LCALL QJ

DT: JB P1.0, DT 如果右边遇到黑线,则检查左边(顺序执行),否则继续检查左边

JB P1.1, DT

LCALL TC

LCALL QDJS 停止计时,显示从C到B的时间

LCALL CDSL5 延时5S

LCALL HT 停车5S时间到,转后退返回

LCALL QL

LCALL QDJS

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

DDTT:JB P1.0, DDTT 如果右边遇到黑线,则检查左边(顺序执行),否则继续检查左边

JB P1.1, DDTT

INC A

CJNE A,#2H,DDTT 从B端返回A端时,不用检测B端黑线

LCALL TC 已经返回A端,停车

LCALL QDJS停止计时,显示从B返回A所用时间

************************基本功能与发挥部分的程序接口*************************************

LCALL CDSL5 延时5S,等待进入发挥部分程序

LCALL CSZT

CLR P2.4 状态灯亮5S

LCALL DELAY1S

LCALL DELAY1S

CLRP2.5 蜂鸣器叫3S

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

LCALL CSZT 关状态灯,进入发挥部分程序

**********************发挥部分主程序*********************************************

FHBF:

LCALL QJ

QJXHX:

JNB P1.1,JX1若P1.1为0(黑线),则继续查询P1.0 (左边遇到黑线,则检查右边的状态)

JNB P1.0,JX2若P1.0为0(黑线),则继续查询P1.1 (右边遇到黑线,则检查左边的状态)

LJMP QJXHX

JX1:

JNB P1.0,PHCL

LJMP CZZW 若P1.0也为黑线,则平衡处理,否则左转弯

JX2:

JNB P1.1,PHCL

LJMP CYZW

CZZW:

LCALL ZZW

LCALL ZWSJ 转弯时间

LCALL TC

LCALL DELAY30

LCALL QJ

LJMP QJXHX

CYZW:

LCALL YZW

LCALL ZWSJ 转弯时间

LCALL TC

LCALL DELAY30

LCALL QJ

LJMP QJXHX

*****************平衡调整*******************

PHCL:

LCALL QJ 前进3S

LCALL DELAY1S

LCALL DELAY1S

LCALL DELAY1S

LCALL TC

LCALL DELAY30 消除传感器摆动

FHPHTZ:

JNB P1.6,FHZHT如果前倾,转慢速后退

JNB P1.7,FHZQJ如果后仰,转慢速前进

LCALL DELAY1S 延时判断是否真正平衡

LCALL DELAY1S

LCALL DELAY1S

JNB P1.6,FHPHTZ 如果前倾,转继续调整平衡

JNB P1.7,FHPHTZ 如果后仰,转继续调整平衡

LCALL TC 停车

LCALL QDJS停止计时,显示平衡调整所用时间

CLR P2.5 蜂鸣器鸣叫

CLR P2.4 七彩灯亮

LCALL CDSL5 转到车灯闪亮5次,表示5S时间

LJMP FHPHTZ 转平衡调整

***********转长跳***********

FHZQJ:

LCALL CSZT 初始状态关报警

LJMP FHWWW

FHZHT:

LCALL CSZT 初始状态关报警

LJMP FHTPH

***********调整平衡*********

FHTPH:

LCALL DELAY30 消除传感器摆动

TP: LCALL HT

LCALL DELAY

LCALL TC

LCALL DELAYTC 消除传感器摆动

JNB P1.6,TP

LJMP FHPHTZ

FHWWW:

LCALL DELAY30 消除传感器摆动

DH: LCALL QJ

LCALL DELAY

LCALL TC

LCALL DELAYTC 消除传感器摆动

JNB P1.7,DH

LJMP FHPHTZ

******************子程序****************************************************

*******设置初始状态*************

CSZT:

SETB P2.6 关灯

SETB P2.7

SETB P2.4

SETB P2.5 关蜂鸣器

RET

***********停转*******************

TC:

CLR P1.2

CLR P1.3

CLR P1.4

CLR P1.5

RET

***********前进********************

QJ:

CLR P1.2

SETB P1.3

CLR P1.4

SETB P1.5

RET

**********后退********************

HT:

SETB P1.2

CLR P1.3

SETB P1.4

CLR P1.5

RET

*********左转弯******************

ZZW:

CLR P1.2

CLR P1.3

CLR P1.4

SETB P1.5

RET

*********右转弯******************

YZW:

CLR P1.2

SETB P1.3

CLR P1.4

CLR P1.5

RET

**********秒表控制************************

*******启动/停止计时**********

QDJS:

CLR P2.1

LCALL DELAY10

LCALL DELAY10

LCALL DELAY10

LCALL DELAY10

SETB P2.1

RET

************显示清零*************

QL:

CLR P2.3

LCALL DELAY10

LCALL DELAY10

LCALL DELAY10

LCALL DELAY10

SETB P2.3

RET

************延时程序*********************

*****延时1秒****

DELAY1S:

MOV R3,#02H

DEL1: MOV R2,#0FAH

DEL2: MOV R1,#0FAH

DEL3: DJNZ R1,DEL3

NOP

DJNZ R2,DEL2

DJNZ R3,DEL1

RET

*****延时10毫秒*****

DELAY10:

MOV R2,#20

DB1:MOV R1,#248

DB2:DJNZ R1,DB2

DJNZ R2,DB1

RET

*********前进或后退时间**********

DELAY:

MOV R2,#30

DD1:MOV R1,#200

DD2:DJNZ R1,DD2

DJNZ R2,DD1

RET

***********停车时间****************

DELAYTC:

MOV R2,#100

D11:MOV R1,#200

D22:DJNZ R1,D22

DJNZ R2,D11

RET

*********延时程序****************

*********延时0.5秒****

DELAY30:

MOV R2,#250

DL2: MOV R1,#250

DL1: DJNZ R1,DL1

DJNZ R2,DL2

RET

*********转弯时间32MS**********

ZWSJ:

MOV R2,#50

D1:MOV R1,#100

D2:DJNZ R1,D2

DJNZ R2,D1

RET

****延时约250毫秒(12M晶振)****

DELAY250:

MOV R3,#2

L3: MOV R2,#250

L1: MOV R1,#250

L2: DJNZ R1,L2

DJNZ R2,L1

DJNZ R3,L3

RET

*****用状态灯显示终点停车5S时间(亮5次)*****

CDSL5:

MOV R5,#5H

PY: SETB P2.6

SETB P2.7

LCALL DELAY250

LCALL DELAY250

CLR P2.6

CLR P2.7

LCALL DELAY250

LCALL DELAY250

DJNZ R5,PY

RET

END


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12353748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存