微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机毕业设计

单片机毕业设计

时间:10-02 整理:3721RD 点击:
各位大侠,帮忙看下这个程序,1路ad转换用数码管显示
P1ASF                EQU 9DH                ;定义P1ASF 口,P1 口模拟功能
ADC_CONTR            EQU 0BCH               ;定义AD 转换控制寄存器
ADC_RES              EQU 0BDH               ;定义AD 转换结果寄存器高
ADC_RESL             EQU 0BEH               ;定义AD 转换结果寄存器低
ADC_FLAG             EQU 10H                ;AD转换完成标志位
DBUF0                EQU 38H                ;定义待显示十进制第0 位存储单元       
DBUF1                EQU 39H                ;定义待显示十进制第1 位存储单元                    
DBUF2                EQU 3AH                ;定义待显示十进制第2 位存储单元
DBUF3                EQU 3BH                ;定义待显示十进制第3 位存储单元
AUXR1                      EQU 0A2H               ;定义AUXR1寄存器
JSDY                 EQU 20H                ;计数单元
ADC_Channel          data 21h               ;设置存放通道号的寄存器
     ORG          0000H
     LJMP         MAIN
     ORG         002BH
     LJMP         ADC_ISR
     ORG         0030H
MAIN:MOV           SP,#3fH
     MOV           PSW,#00H
     mov        ADC_Channel,#06H
     mov           R0,#40H
     MOV           R1,#41H
     MOV           JSDY,#00H
     LCALL        INIT_UART
     LCALL        INIT_ADC
     ORL        AUXR1,#00000100B                  ;定义AUXR1寄存器中ADRJ位为1,取到高2位和低8位
     MOV        IE,#0A0H
lOOP:MOV        A,JSDY
     CJNE        A,#8,LOOP
     CLR        JSDY
     MOV        R0,#40H
     MOV        R1,#41H
     LCALL        QHPJ
     LCALL        HBCD
     LCALL        DISP1
     SJMP       LOOP


;.求和取8次平均子程序.
;;功能:将AD对应通道转换出来的结果进行累加然后把结果除以8
;入口参数:R0,R1
;出口参数:R0,R1
QHPJ:  MOV        R7,#7
L6:    MOV        A,@R0
       INC        R0
       INC        R0
       ADD        A,@R0
       MOV        @R0,A
       MOV        A,@R1
       INC        R1
       INC        R1
       ADD        A,@R1
       MOV        @R1,A
       JNC        L8
       INC        @R0
L8:    DJNZ        R7,L6
       MOV        R7,#3
L9:    CLR        C
       MOV        A,@R0
       RRC        A
       MOV        @R0,A
       MOV        A,@R1
       RRC        A
       MOV        @R1,A
       DJNZ        R7,L9
       RET
;.将十六进制数转换成BCD码子程序HBCD...
;功能:将单字节十六进制整数转换成单字节BCD码整数
;入口参数:单字节十六进制整数在累加器A中
;出口参数:转换后的BCD码千位在DBUF3中,百位在DBUF2中,十位在DBUF1中,个位在DBUF0中
HBCD:
     MOV        A,@R0
     ANL        A,#0F0H
     MOV        DBUF3,A
     MOV        A,@R0
     ANL        A,#0FH
     MOV        DBUF2,A
     MOV        A,@R1
     SWAP        A
     ANL        A,#0FH
     MOV        DBUF1,A
     MOV        A,@R1
     ANL        A,#0FH
     MOV        DBUF0,A
     RET

;...LED动态显示子程序.
;功能:用四位LED显示0.00-5.00数字
;入口参数DBUF0、DBUF1、DBUF2、DBUF3
DISP1:MOV        DPTR,#TAB      ;设置不含小数点显示字符表首地址
      MOV        A,DBUF3
      MOVC        A,@A+DPTR      ;取显示字符
      SETB      P1.1           ;屏蔽百位显示
      SETB        P1.3           ;屏蔽个位显示
      SETB        P1.2           ;屏蔽十位显示
      CLR        P1.0           ;选择千位显示
      MOV        P0,A           ;送千位显示字符
      ACALL        DELAY30MS
      MOV        DPTR,#TAB      ;设置不含小数点显示字符表首地址
      MOV        A,DBUF2
      MOVC        A,@A+DPTR      ;取显示字符
      SETB        P1.0           ;屏蔽千位显示
      SETB        P1.3           ;屏蔽个位显示
      SETB        P1.2           ;屏蔽十位显示
      CLR        P1.1           ;选择百位显示
      MOV        P0,A           ;送百位显示字符
      ACALL        DELAY30MS
      MOV        DPTR,#TAB      ;设置不含小数点显示字符表首地址
      MOV        A,DBUF1
      MOVC        A,@A+DPTR      ;取显示字符
      SETB        P1.3           ;屏蔽个位显示
      SETB        P1.1           ;屏蔽百位显示
      SETB        P1.0           ;屏蔽千位显示
      CLR        P1.2           ;选择十位显示
      MOV        P0,A           ;送十位显示字符
      ACALL        DELAY30MS
      MOV        DPTR,#TAB      ;设置不含小数点显示字符表首地址
      MOV        A,DBUF0
      MOVC        A,@A+DPTR      ;取显示字符
      SETB        P1.2           ;屏蔽十位显示
      SETB        P1.1           ;屏蔽百位显示
      SETB        P1.0           ;屏蔽千位显示
      CLR        P1.3           ;选择个位显示
      MOV        P0,A           ;送个位显示字符
      ACALL        DELAY30MS       
      RET
;......断服务程序.....
ADC_ISR:PUSH        ACC
        PUSH        PSW
        INC     JSDY
              ANL   ADC_CONTR,#NOT ADC_FLAG                      ;中断标志位
        MOV        A,ADC_RES                                    ;把高2位送到寄存器A
        MOV        @R0,A                                        ;暂存高2位的结果
        MOV     A,ADC_RESL                                   ;把低8位送到寄存器A
        MOV     @R1,A                                        ;暂存低8位的结果
        INC        R0
        INC        R0
       CJNE        R0,#50H,L21
       MOV        R0,#40H
L21:   
        INC        R1
        INC        R1
        CJNE        R1,#51H,L22
        MOV        R1,#41H
L22:
        mov        a,ADC_Channel
        ANL        A,#07H
        MOV        ADC_Channel,A
        ORL        A,#88H
        MOV        ADC_CONTR,A
        POP    PSW
        POP    ACC
        RETI
;.ADC初始化......
INIT_ADC:
         MOV        P1ASF,#01000000B
         MOV        ADC_RES,#0
         MOV        ADC_RESL,#0
         MOV        A,ADC_Channel
         ORL        A,#88H
         MOV        ADC_CONTR,A
         MOV        A,#2
         LCALL        DELAY1MS
    RET
;.设置串口工作方式.....
INIT_UART:MOV        SCON,#50H                     ;设置串行通信方式1
          MOV        PCON,#00H
               MOV        TMOD,#20H                     ;设置定时器1定时工作方式2
               MOV        TH1,#0FDH                     ;波特率9600定时器初值
               MOV        TL1,#0FDH
               SETB        TR1                           ;启动定时器1
               RET


;..延时子程序...
DELAY1MS: MOV        R2,A
          CLR        A
          MOV        R3,A
          MOV        R4,A
DELAY1:   DJNZ        R3,DELAY1
          DJNZ        R4,DELAY1
          DJNZ        R2,DELAY1
          RET
DELAY10MS:  
    MOV R7,#01H
DL2:
    MOV R6,#26H
DL1:
    MOV R5,#82H
    DJNZ R5,$
    DJNZ R6,DL1
    DJNZ R7,DL2
    RET
DELAY30MS:
    MOV R6,#65H
DL0:
    MOV R5,#93H
    DJNZ R5,$
    DJNZ R6,DL0
    RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH   ;字型码0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top