⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 (2).txt

📁 用单片机进行速度与里程的计数,就像出租车的计价器一样可以显示总里程,实时行驶速度等.
💻 TXT
字号:
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;                                                                      &
;                                                                      &
;                      《速度里程计》                                  &
;                                                                      &
;   功能说明:                                                         &
;                    实时显示行驶总时间                                &
;                    实时显示行驶总路程                                &
;                    实时显示行驶速度                                  &
;                    实时显示功能指示灯                                &
;                    实时实现超速报警(V>15m/s)                       &
;                                                                      &
;                                                                      &
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;#######################################################################
;                    变量定义 空间分配
;#######################################################################
;####################按键##########################
DISTANCEBUTTON BIT P1.2            ;里程按键
SPEEDBUTTON    BIT P1.7            ;速度按键
TIMEBUTTON     BIT P3.7            ;时间按键
;###############显示位选###########################
SHOWONES       BIT P2.0            ;显示个位
SHOWTENS       BIT P2.1            ;显示十位
SHOWHUNDREDS   BIT P2.2            ;显示百位
SHOWKILOS      BIT P2.3            ;显示千位
;###############外中断INT0输入#####################
INT0EDGE       BIT P3.2            ;采集下降沿
;###############显示的存储空间#####################
SHOWLED0       EQU 30H
SHOWLED1       EQU 31H
SHOWLED2       EQU 32H
SHOWLED3       EQU 33H
SHOWLED4       EQU 34H
SHOWLED5       EQU 35H
;##############时 分 秒的存储空间##################
SECOND         EQU 36H
MINUTE         EQU 37H
HOUR           EQU 38H
;##########未转化的速度的存储空间##################
SPEEDLOW       EQU 39H
SPEEDHIG       EQU 3AH
;#########速度经BCD转化后存储空间##################
BCDSPEEDL      EQU 3CH
BCDSPEEDM      EQU 3DH
BCDSPEEDH      EQU 3EH
;########未转化的距离的存储空间####################
DISTANLOW      EQU 3FH
DISTANHIG      EQU 40H
;########距离BCD转化后的存储空间###################
BCDDISTANL     EQU 41H
BCDDISTANM     EQU 42H
BCDDISTANH     EQU 43H
;########脉冲(圈数)计数的存储空间################
CIRCLESL       EQU 44H ;自行车圈数存储单元低位
CIRCLESH       EQU 45H ;自行车圈数存储单元高位
;########定时器计数中间变量的存储空间##############
TEMP           EQU 46H
TEMP0          EQU 47H ;(自减10次 10*100MS=1S)
TEMP1          EQU 48H
;#############放大倍数的存储空间###################
MULTP0         EQU 49H
MULTP1         EQU 4AH
;#########采集时间标志的存储空间###################
FLAG           EQU 4BH ;(是否是首次采集时间参数)
;################定时器T1的存储空间################
COUNTLOW       EQU 4CH ;T1定时溢出存储单元低位
COUNTHIG       EQU 4DH ;T1定时溢出存储单元高位
;################小数点的存储空间##################
DECIMAL        EQU 4EH ;小数点位数单元 DECIMAL
DECIMAL1       EQU 4FH ;此位小数是处理小数点的关键
;#######################################################################
;#######################################################################
;                              主 程 序 段
;#######################################################################
;#######################################################################
        ORG    0000H
        SJMP   MAIN
        ORG    0003H             ;外部中断0程序入口地址
        AJMP   INTEX0
        ORG    000BH             ;T0中断(时钟定时100ms)
        AJMP   INT0TIME
        ORG    001BH             ;T1中断(速度计数1ms)
        AJMP   INT1CONT
        ORG    0030H
;################################################################
;                    初 始 化 子 程 序
;################################################################
MAIN:   MOV    SP,#70H          ;栈顶
        MOV    TMOD,#11H        ;设定T1、T0工作于模式1
        MOV    TEMP0,#0AH       ;晶振12M ,10*100ms=1s
        MOV    TEMP1,#0FFH      ;定时器中间变量
        CLR    A                ; 将A清零
        MOV    FLAG,A           ;首次采集时间参数清零
        MOV    SHOWLED0,#0aH    ;将显示的存储空间赋值
        MOV    SHOWLED1,#0aH
        MOV    SHOWLED2,#0aH
        MOV    SHOWLED3,#0aH
        MOV    SHOWLED4,A       ;数码管初始化显示为  ----
        MOV    SHOWLED5,A
        MOV    CIRCLESL ,A      ;圈数计数器存储空间清零
        MOV    CIRCLESH,A
        MOV    HOUR,A           ;时间初始化显示(00时)00分00秒
        MOV    MINUTE,A
        MOV    SECOND,A
        MOV    SPEEDLOW,A       ;未转化的速度计算结果的空间清零
        MOV    SPEEDHIG,A
        MOV    BCDSPEEDL  ,A    ;BCD转化后速度结果存储空间清零
        MOV    BCDSPEEDM  ,A
        MOV    BCDSPEEDH  ,A
        MOV    DISTANLOW,A      ;未转化的距离的存储空间清零
        MOV    DISTANHIG,A
        MOV    BCDDISTANL  ,A   ;BCD转化后距离结果存储空间清零
        MOV    BCDDISTANM,A
        MOV    BCDDISTANH,A
        MOV    COUNTLOW,A       ;T1定时溢出存储单元低位
        MOV    COUNTLOW,A       ;T1定时溢出存储单元高位
        MOV    R1,#SHOWLED3
        SETB   IT0              ;设置外中断0为边沿触发方式
        SETB   ET0              ;开T0中断
        SETB   ET1              ;开T1中断
        SETB   EX0              ;开外中断0
        SETB   EA               ;中断全部开放
        SETB   PT1              ;设置T1为高优先级
        MOV    TH0,#03CH        ;T0初值(100ms)
        MOV    TL0,#0B0H
        MOV    TH1,#0FCH        ;T1初值(1ms)
        MOV    TL1,#018H
;########### 实时显示功能指示灯、实现超速报警各引脚清零##########
        CLR    P1.1             ;时间指示引脚
        CLR    P1.4             ;超速报警引脚
        CLR    P1.5             ;速度指示引脚
        CLR    P1.6             ;里程指示引脚
;################################################################
MAIN0:  ACALL  SHOW             ;开机显示为 - - - -
        SETB   INT0EDGE	        ;外中断0为输入查询方式
        JB     INT0EDGE,MAIN0   ;等待第一个有效脉冲(下降沿)到来
;################################################################
        SETB   TR0              ;开T0、T1定时
        SETB   TR1
        MOV    R1,#SECOND       ;开机按键未按下时显示时钟
        MOV    R2,#SHOWLED3     ;显示指针
        MOV    DECIMAL,#00H     ;不带小数点显示
        SETB   P1.1             ;时间指示灯亮
        CLR    P1.5             ;速度指示不亮
        CLR    P1.6             ;里程指示不亮
;########################显示等待循环############################
NOCMWAIT:ACALL BUTTON              ;扫描按键
        PUSH   01H              ;入栈保护
        PUSH   02H
        MOV    R0,#SHOWLED0     ;BCD码分开后存储位置指针
        ACALL  DIVIDE           ;分开BCD码(6个字节)
        MOV    A,R2
        MOV    R1,A
        ACALL  SHOW             ;调用显示子程序
        POP    02H              ;出栈
        POP    01H
        AJMP   NOCMWAIT         ;按键未按下循环显示等待
;############################按键的采集############################
BUTTON:
      JB  TIMEBUTTON ,BUTTON0    ;时间显示按键(P3.7)
      MOV  R1,#SECOND            ;时间即将被分开的压缩BCD 码指针
      MOV  R2,#SHOWLED3          ;显示指针
      MOV  DECIMAL,#00H          ;小数点位置
      SETB P1.1                  ;时间指示灯亮
      CLR  P1.5                  ;速度指示不亮
      CLR  P1.6                  ;里程指示不亮
      RET
BUTTON0 :JB   SPEEDBUTTON,BUTTON1;速度显示按键(P1.7)
      MOV  R1,#BCDSPEEDL         ;速度计算结果压缩BCD码
      MOV  R2,#SHOWLED4          ;显示指针
      MOV  DECIMAL,#02H          ;小数点位置
      CLR  P1.1                  ;时间指示灯不亮
      SETB P1.5                  ;速度指示亮
      CLR  P1.6                  ;里程指示不亮
      RET
BUTTON1: JB  DISTANCEBUTTON,BUTTON2  ;里程显示按键(P1.2)
      MOV  R1,#BCDDISTANL       ;里程计算结果的压缩BCD码
      MOV  R2,#SHOWLED3         ;显示指针
      MOV  DECIMAL,DECIMAL1     ;小数点位置
      CLR  P1.1                 ;时间指示灯不亮
      CLR  P1.5                 ;速度指示不亮
      SETB P1.6                 ;里程指示亮
      RET
BUTTON2: RET





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -