logo资料库

AD574 & 8051高精度数字电压表 仿真及源程序(转).doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
RP1 10k VCC 1 23456789 19 18 9 29 30 31 1 2 3 4 5 6 7 8 U1 XTAL1 XTAL2 RST PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 GND U2 D0 D1 D2 D3 D4 D5 D6 D7 OE LE 74LS373 3 4 7 8 13 14 17 18 1 11 2 5 6 9 12 15 16 19 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 RV4(3) +10V RV4 % 5 5 1k U5 -10V OP1P 50% RV1 100 RV2 100 50% ? 5 6 4 3 2 28 27 26 25 24 23 22 21 20 19 18 17 16 R/C CE A0 CS 12/8 STS DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -15V 1 1 VEE AGND 10VIN 20VIN BIPOFF REFIN REFOUT VAS 7 LCD1 LM016L +15V U3 9 13 14 12 10 8 AD1674 1 2 U4:A 74LS00 VCC 3 S S V D D V E E V S R W R E 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 1 2 3 4 5 6 7 8 9 0 1 1 1 2 1 3 1 4 1 LCD_CMD_WR EQU LCD_DATA_WR EQU LCD_BUSY_RD EQU LCD_DATA_RD EQU 00E0H 00E1H 00E2H 00E3H ;******************************** EQU 00E0H EQU 00E8H EQU 00E4H EQU 00ECH ;********************************* AD_12CMD_WR AD_8CMD_WR AD_8HB_RD AD_4LB_RD GND ;初始化为 12 位转换器 ;初始化为 8 位转换器 ;高 8Bit 输出 ;低 4Bit 输出 ORG 0000H LJMP MAIN ORG 0030H ;========================================= MAIN: MOV SP,#60H CLR RS0 CLR RS1 ACALL INIT ;LCD 初始化 ;======================================= ;参数设置 ;======================================= AD574: MOV DPTR,#AD_12CMD_WR MOVX @DPTR,A SETB P3.0 ;启动转换
LOOP: NOP JB P3.0,LOOP MOV DPTR,#AD_8HB_RD MOVX A,@DPTR MOV R2,A MOV DPTR,#AD_4LB_RD MOVX A,@DPTR MOV R3,A ;======================================== ;数据处理(参数)传递 ;R2R3=(ABC0) ;处理后 R2R3=(0ABC) ;======================================== ;高低交换 ; MOV A,R2 SWAP A MOV R5,A ANL A,#0F0H MOV R4,A MOV A,R3 SWAP A ORL A,R4 MOV R3,A MOV A,R5 ANL A,#0FH MOV R2,A ;======================================== ;入口参数:被减数在 R2R3 中,减数在 R6R7 中 ;出口参数:差值在 R2R3 中 ;======================================== ;============= ;无借位,直接运算 ;取反 MOV R6,#08H MOV R7,#00H CLR C MOV A,R2 SUBB A,R6 JNC SUBI SETB 02H MOV A,R2 CPL A ANL A,#0FH MOV R2,A MOV A,R3 CPL A MOV R3,A ;===========================
;计算 ;========================== SUBI: CLR C MOV A,R3 SUBB A,R7 MOV R3,A MOV A,R2 SUBB A,R6 MOV R2,A ;========================================== ;乘以 10 计算 ;=========================================== MOV R1,#00H MOV A,R3 LCALL MUL10 MOV 49H,A MOV A,R2 LCALL MUL10 MOV 48H,A ;======================================== ;============================================ ;除法运算 ;============================================ ;============================ ;整数部分 ;============================ MOV R0,#30H LCALL DIVD0 MOV A,40H MOV @R0,A INC R0 MOV A,#2EH MOV @R0,A INC R0 ;========================== ;小数部分 ;========================== MOV 45H,#05H ALUDEF: MOV A,42H LCALL MUL10 MOV 47H,A MOV A,41H LCALL MUL10 MOV 46H,A
;========================== ;确定小数 ;========================== LCALL DIVD1 MOV A,40H MOV @R0,A INC R0 DJNZ 45H,ALUDEF MOV A,#05H CLR C SUBB A,40H JC DV53 SJMP DV54 DV53: INC 40H DEC R0 MOV A,40H MOV @R0,A LOPJ: CJNE @R0,#0AH,DV54 MOV @R0,#00H DEC R0 INC @R0 INC R0 SJMP LOPJ DV54: CLR OV INC R0 MOV @R0,#56H ;RET ;==================== ;=========================== ;显示 ;=========================== MOV A,#01H ACALL C51 MOV A,#81H ACALL C51 MOV DPTR,#TAB1 LCHIN: CLR A MOVC A,@A+DPTR INC DPTR LCALL C51DDR JNZ LCHIN MOV A,#0C3H ACALL C51 JNB 02H,LOP_ MOV A,#2DH
LCALL C51DDR LOP_: MOV R0,#30H MOV A,@R0 LCALL CHASCII INC R0 LCALL C51DDR MOV A,@R0 INC R0 LCALL C51DDR MOV R1,#06H LOPXS: MOV A,@R0 LCALL CHASCII LCALL C51DDR INC R0 DJNZ R1,LOPXS MOV R2,#5 DELL1ms:LCALL DEL DJNZ R2,DELL1ms MOV A,#01H ACALL C51 MOV A,#0C3H ACALL C51 CLR 02H LJMP AD574 ;============================ ;计算子程序 ;============================= DIVD0: CLR 00H PUSH PSW SETB RS0 CLR RS1 MOV R4,48H MOV R5,49H ACALL DIVD POP PSW RET DIVD1: SETB 00H PUSH PSW SETB RS0 CLR RS1 MOV R4,46H MOV R5,47H DIVD: MOV R2,#00H MOV R3,#00H ;========================
MOV R6,#08H MOV R7,#00H CLR C MOV A,R3 SUBB A,R7 MOV A,R2 SUBB A,R6 JC DVD1 SETB OV POP PSW RET CLR C DVD1: MOV B,#10H DVD2: MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A XCH A,R2 RLC A XCH A,R2 MOV F0,C CLR C SUBB A,R7 MOV R1,A MOV A,R2 SUBB A,R6 ANL C,/F0 JC DVD3 MOV R2,A MOV R0,A MOV A,R1 MOV R3,A INC R5 DVD3: DJNZ B,DVD2 MOV A,R2 MOV R0,A MOV 40H,R5 MOV 41H,R0 MOV 42H,R1
CLR OV JNB 00H,DIED POP PSW RET DIED: ;============================================ INIT: MOV A,#3CH A,#0CH A,#06H LCALL C51 MOV LCALL C51 MOV LCALL C51 RET DDW: PUSH ACC MOV DPTR,#LCD_BUSY_RD DDW1: ACC.7,DDW1 MOVX A,@DPTR JB POP ACC ;ACALL DELAY RET C51: ACALL DDW MOV DPTR,#LCD_CMD_WR MOVX @DPTR,A RET C51DDR: PUSH DPH PUSH DPL ACALL DDW MOV DPTR,#LCD_DATA_WR MOVX @DPTR,A POP DPL POP DPH RET ;FLASH: MOV A,#08H ;关闭显示 ;ACALL C51 ;ACALL DELAY4 ;MOV A,#0CH ;ACALL C51 ;ACALL DELAY4 ;DJNZ R4,FLASH ;RET ;DELAY: PUSH PSW ;开显示,关闭光标
;SETB RS0 ;SETB RS1 ;MOV R6,#1 ;延时子程序 2.5ms。 ;5 ;D1: MOV R7,#1 ;248 ;DJNZ R7,$ ;DJNZ R6,D1 ;POP PSW ;RET ;DELAY4: PUSH PSW ;SETB RS0 ;SETB RS1 ;MOV R5,#1 ;DL6: ;MOV R6,#1 ;DL7: ;MOV R7,#1 ;DL8: ; DJNZ R7,DL8 ;DJNZ R6,DL7 ;DJNZ R5,DL6 ;POP PSW ;RET ;0.81ms. ;40 ;100 ;100 DEL: PUSH PSW ;延时 50ms ;200 ;123 SETB RS0 SETB RS1 MOV R7,#200 DEL1: MOV R6,#123 NOP DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 POP PSW RET HASC: MOV B,A LCALL HAS1 XCH A,B SWAP A HAS1: ANL A,#0FH ADD A,#90H DA A ADDC A,#40H DA A RET CHASCII:MOV A,@R0 ORL A,#30H
分享到:
收藏