专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

三维坐标调整的单片机实验

作者:佚名   来源:本站原创   点击数:  更新时间:2013年11月13日   【字体:

 今天终于把三维坐标调整的单片机实验完成,通过实验及编程,今天成功使用了指针和数据比较,完成数据调整和比较,程序如下,实验图如下:

  如有需要实验源文件的可以QQ我,有想在商业应用的,可以付一点辛苦费,将程序修改为合适的。本人在找工作,也随便把单片机方面搞得更精通点!

程序图:





程序代码:

DEDA  DATA  55H
 YANS DATA 56H             
 MXQ DATA 60H
 MXB DATA 61H
 MXS DATA 62H 
 MXG DATA 63H
 MYQ DATA 64H
 MYB DATA 65H 
 MYS DATA 66H
 MYG DATA 67H
 MZQ DATA 68H 
 MZB DATA 69H
 MZS DATA 6AH
 MZG DATA 6BH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 LXQ DATA 30H
 LXB DATA 31H
 LXS DATA 32H 
 LXG DATA 33H
 LYQ DATA 34H
 LYB DATA 35H 
 LYS DATA 36H
 LYG DATA 37H
 LZQ DATA 38H 
 LZB DATA 39H
 LZS DATA 3AH
 LZG DATA 3BH
;;;;;;;;;;;;;;;;;;;;;;;;;
 LSQ DATA 40H
 LSB DATA 41H
 LSS DATA 42H
 LSG DATA 43H
;;;;;;;;;;;;;;;;;;;;;;;;
 LSQ1 DATA 50H
 LSB1 DATA 51H
 LSS1 DATA 52H
 LSG1 DATA 53H
;;;;;;;;;;;;;;;;;;;;;;;;
 LS  DATA 70H
 LSL DATA 71H
 LSD DATA 72H
;;;;;;;;;;;;;;;;;;;;;;;
 QD BIT P0.0   ;按键位定义
 GI BIT P0.1
 GD BIT P0.2
 SI BIT P0.3
 SD BIT P0.4
 YX BIT P0.5

;;;;;;;;;;;;;;;;;;;;;;;;;
 ORG   0H                        ;程序代码由地址0开始执行
MAIN:                              
;;;;;;;;;;;;;;;;;;;;;;;;;;;;启动数据显示
SX: JB YX,XX1
  JNB YX,$
  AJMP B_J
XX1: JB QD,XX2
  JNB QD,$
  AJMP S_T_D
XX2:  LCALL LSLED
  AJMP SX
   RET
;;;;;;;;;;;;;;;;;;;;;;;;;运行时数码管显示
LSLED:
; LCALL LED1
; LCALL LED2
; RET
 MOV P3,#0D0H
 LCALL LED_1
 INC P3
 LCALL LED_2
 INC P3
 LCALL LED_3
 INC P3
 LCALL LED_4
 INC P3
 LCALL LED_5
 INC P3
 LCALL LED_6
 INC P3
 LCALL LED_7
 INC P3
 LCALL LED_8
 INC P3
 LCALL LED_9
 INC P3
 LCALL LED_10
 INC P3
 LCALL LED_11
 INC P3
 LCALL LED_12
 INC P3
 LCALL LED_13
 INC P3
 LCALL LED_14
 INC P3
 LCALL LED_15
 INC P3
 LCALL LED_16
 INC P3
 LCALL LED_17
 INC P3
 LCALL LED_18
 INC P3
 LCALL LED_19
 INC P3
 LCALL LED_20
 INC P3
 LCALL LED_21
 INC P3
 LCALL LED_22
 INC P3
 LCALL LED_23
 INC P3
 LCALL LED_24
 RET
LED1:
 MOV LSL,#0D0H
 MOV R1,#60H 
LED1_1:
 MOVX A,@R1
 MOV P3,LSL
 LCALL LED
 INC LSL
 INC R1
 MOV A,LSL
 CJNE A,#0DFH,LED1_1
 MOV R1,#30H
 MOV A,LSL
 CJNE A,#0E7H,LED1_1
 RET
;;;;;;;;;;;;;;;;;;;;;;;;;;运行数据调用
B_J:  JB YX,B_J_0
   JNB YX,$
   AJMP SX
B_J_0: LCALL L_S_X_L
   LCALL B_J_L
   LCALL L_S_L_X
   LCALL L_S_Y_L
   LCALL B_J_L
   LCALL L_S_L_Y
   LCALL L_S_Z_L
   LCALL B_J_L
   LCALL L_S_L_Z
   MOV YANS,#5;;;;;;;;;;;;;;;;;;;;;加一数据延时赋值
B_J_LED: LCALL LSLED
   DEC YANS
   MOV A,YANS
   CJNE A,#0,B_J_LED
   AJMP B_J
;;;;;;;;;;;;;;;;;;;;;;;数据调用;;;;;;;;;;;;;;;;;;;;;;;;;
L_S_X_L: MOV LSQ,MXQ
   MOV LSB,MXB
   MOV LSS,MXS
   MOV LSG,MXG
   MOV LSQ1,LXQ
   MOV LSB1,LXB
   MOV LSS1,LXS
   MOV LSG1,LXG
   RET
L_S_Y_L: MOV LSQ,MYQ
   MOV LSB,MYB
   MOV LSS,MYS
   MOV LSG,MYG
   MOV LSQ1,LYQ
   MOV LSB1,LYB
   MOV LSS1,LYS
   MOV LSG1,LYG
   RET
L_S_Z_L: MOV LSQ,MZQ
   MOV LSB,MZB
   MOV LSS,MZS
   MOV LSG,MZG
   MOV LSQ1,LZQ
   MOV LSB1,LZB
   MOV LSS1,LZS
   MOV LSG1,LZG
   RET
L_S_L_X: MOV LXQ,LSQ1
   MOV LXB,LSB1
   MOV LXS,LSS1
   MOV LXG,LSG1
   RET
L_S_L_Y: MOV LYQ,LSQ1
   MOV LYB,LSB1
   MOV LYS,LSS1
   MOV LYG,LSG1
   RET
L_S_L_Z: MOV LZQ,LSQ1
   MOV LZB,LSB1
   MOV LZS,LSS1
   MOV LZG,LSG1
   RET
;;;;;;;;;;;;;;;;;;;;;数据比较;;;;;;;;;;;;;;;;;;;;;;
B_J_L:
 MOV A,LSQ
 CJNE A,LSQ1,B_J_LD
 MOV A,LSB
 CJNE A,LSB1,B_J_LD
 MOV A,LSS
 CJNE A,LSS1,B_J_LD
 MOV A,LSG
 CJNE A,LSG1,B_J_LD
 RET
B_J_LD:  JC  B_J_LQ_X

B_J_LQ_D: INC LSG1
    MOV A,LSG1
    CJNE A,#10,B_J_END
    MOV LSG1,#0
    INC LSS1
    MOV A,LSS1
    CJNE A,#10,B_J_END
    MOV LSS1,#0
    INC LSB1
    MOV A,LSB1
    CJNE A,#10,B_J_END
    MOV LSB1,#0
    INC LSQ1
    MOV A,LSQ1
    CJNE A,#10,B_J_END
    MOV LSQ1,#9
    MOV LSB1,#9
    MOV LSS1,#9
    MOV LSG1,#9
    AJMP B_J_END
B_J_LQ_X: DEC LSG1
    MOV A,LSG1
    CJNE A,#-1,B_J_END
    MOV LSG1,#9
    DEC LSS1
    MOV A,LSS1
    CJNE A,#-1,B_J_END
    MOV LSS1,#9
    DEC LSB1
    MOV A,LSB1
    CJNE A,#-1,B_J_END
    MOV LSB1,#9
    DEC LSQ1
    MOV A,LSQ1
    CJNE A,#-1,B_J_END
    MOV LSQ1,#0
    MOV LSB1,#0
    MOV LSS1,#0
    MOV LSG1,#0
    AJMP B_J_END
B_J_END:
    RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;光标操作
;;;;;;;;;;延时赋值;;;;;;;;;;;;;;;;;;;
FU_Z: MOV R4,#10
  MOV YANS,#10
  RET
;;;;;;;;;;;;;;;指针值;;;;;;;;;;;;;;;;;;;;
S_T_D:MOV R0,#60H
  MOV LS,@R0
S_T_D_0:
  MOV @R0,LS
  JB QD,S_T_D_B
  JNB QD,$
  AJMP SX
S_T_D_B:
  LCALL FU_Z
;;;;;;;;;;;;;;;光标判断;;;;;;;;;;;;;;;;;
S_T_D_A: 
   
  JB GI,S_T_D_1
  JNB GI,$
  MOV @R0,LS
  INC R0
  MOV A,R0
  CJNE A,#6CH,S_T_D_2
  MOV R0,#60H
  AJMP S_T_D_2
S_T_D_1: 
  JB  GD,S_T_D_2
  JNB GD,$
  MOV @R0,LS
  DEC R0
  MOV A,R0
  CJNE A,#5FH,S_T_D_2
  MOV R0,#6BH
;;;;;;;;;;;;;;;;数据判断;;;;;;;;;;;;;;;;
S_T_D_2: 
  MOV A,@R0
  LCALL S_L
  MOV LS,A
  MOV @R0,LS
;;;;;;;;;;;;;;;;;;闪烁判断;;;;;;;;;;;;;
S_T_D_R:
  MOV A,R4
  CJNE A,#0,S_T_D_RD
  LJMP S_T_D_Y
S_T_D_RD:
  DEC R4
  LCALL LSLED
  LJMP S_T_D_A
S_T_D_Y:
  MOV @R0,#10  
  MOV A,YANS
  CJNE A,#0,S_T_D_YD
  LJMP S_T_D_0
S_T_D_YD: 
  DEC YANS
  LCALL LSLED
  MOV @R0,LS
  LJMP S_T_D_A  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;数据判断
S_L: 
  SETB SI
  SETB SD
  JB SI,S_J
  JNB SI,$
  CJNE A,#9,S_E
  MOV A,#9
  AJMP S_J
S_E: INC A
S_J: JB SD,S_E3
  JNB SD,$
  CJNE A,#0,S_E2
  MOV A,#0
  AJMP S_E3
S_E2: DEC A
S_E3:RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;数码管显示
LED:  MOV DPTR,#TABLE
      MOVC A,@A+DPTR
      MOV P1,A
      LCALL DELAY1
  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_1: MOV A,LXQ
        LCALL LED
   RET
LED_2: MOV A,LXB
        LCALL LED
   RET
LED_3: MOV A,LXS
        LCALL LED
   RET
LED_4: MOV A,LXG
        LCALL LED
   RET
LED_5: MOV A,LYQ
        LCALL LED
   RET
LED_6: MOV A,LYB
        LCALL LED
   RET
LED_7:  MOV A,LYS
        LCALL LED
   RET
LED_8: MOV A,LYG
        LCALL LED
   RET
LED_9: MOV A,LZQ
        LCALL LED
   RET
LED_10:  MOV A,LZB
        LCALL LED
   RET
LED_11: MOV A,LZS
         LCALL LED
   RET
LED_12: MOV A,LZG
   LCALL LED            
   RET
LED_13: MOV A,MXQ
        LCALL LED
   RET
LED_14: MOV A,MXB
        LCALL LED
   RET
LED_15: MOV A,MXS
        LCALL LED
   RET
LED_16: MOV A,MXG
        LCALL LED
   RET
LED_17: MOV A,MYQ
        LCALL LED
   RET
LED_18: MOV A,MYB
        LCALL LED
   RET
LED_19:  MOV A,MYS
        LCALL LED
   RET
LED_20: MOV A,MYG
        LCALL LED
   RET
LED_21: MOV A,MZQ
        LCALL LED
   RET
LED_22:  MOV A,MZB
        LCALL LED
   RET
LED_23: MOV A,MZS
         LCALL LED
   RET
LED_24: MOV A,MZG
   LCALL LED            
   RET
TABLE:   
   DB  0C0H        ;"0"
   DB  0F9H        ;"1"
   DB  0A4H        ;"2"
   DB  0B0H        ;"3"
   DB   99H        ;"4"
   DB   92H        ;"5"
   DB   82H        ;"6"
   DB  0F8H        ;"7"
   DB   80H        ;"8"
   DB   90H        ;"9"
 DB  0FFH
 DB  0FFH
 DB  0FFH
 DB  0FFH
 DB  0FFH
 DB  0FFH
DELAY1:
       MOV R7,#10
L1:    MOV R6,#50
     DJNZ R6,$
       DJNZ R7,L1
       RET
    END


关闭窗口

相关文章