编辑: 黎文定 | 2019-07-03 |
初始化 MOV R7,#0FFH MOV IE,#81H MOV TCON,#01H MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H MOV 36H,#00H MOV 37H,#00H MOV 38H,#00H MOV 39H,#00H A_D: MOV DPTR,#4000H ;
取数 MOVX @DPTR,A CJNE R7,#00H,$ LCALL QUSU LCALL XIAN MOV R7,#0FFH LJMP A_D QUSU: MOV R0,A MOV A,R0 MOV B,#50 DIV AB MOV 31H,A ;
电压整数位 MOV A,B MOV B,#5 DIV AB MOV 32H,A ;
电压小数的个位 MOV A,B RL A MOV 33H,A ;
电压小数的十位 MOV A,33H ;
电压小数的十位变成实际电压 MOV B,#2 MUL AB MOV 34H,A CLR C SUBB A,#10 JNC L AJMP Z L: MOV A,34H ADD A,#6 MOV 34H,A Z: MOV A,34H MOV 33H,A MOV A,32H ;
电压小数的个位 MOV B,#2 MUL AB MOV 35H,A CLR C SUBB A,#10 JNC LL AJMP ZZ LL: MOV A,35H ADD A,#6 MOV 35H,A ZZ: MOV A,35H MOV 32H,A MOV A,31H ;
电压的个位 MOV B,#2 MUL AB MOV 30H,A CLR C SUBB A,#10 JNC LLL AJMP ZZZ LLL: MOV A,30H ADD A,#6 SWAP A ANL A,#0FH MOV 39H,A ;
电压的百位 MOV 30H,#00H AJMP PPP ZZZ: MOV 39H,#00H PPP: MOV A,33H ;
显示值 ANL A,#0FH MOV 36H,A ;
显示值的小数位 MOV A,33H ANL A,#0F0H SWAP A MOV 37H,A MOV A,32H ANL A,#0FH ADD A,37H MOV 37H,A ;
显示值的个位 MOV A,32H ANL A,#0F0H SWAP A MOV 38H,A MOV A,30H ADD A,38H MOV 38H,A ;
显示值的十位 RET XIAN: MOV P2,#0FFH ;
数码管 送值显示 MOV A,39H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#11111110B ;
显示整数百位 MOV P1,A LCALL DELAY1S MOV A,38H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#11111101B ;
显示整数十位 MOV P1,A LCALL DELAY1S MOV A,37H MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV P2,#11111011B ;
显示整数个位 MOV P1,A LCALL DELAY1S MOV A,36H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#11110111B ;
显示小数位 MOV P1,A LCALL DELAY1S RET INT_0: MOV DPTR,#4000H ;
中断 MOVX A,@DPTR MOV R7,#00H RETI DELAY1S: MOV R2,#04 ;
延时 DL: MOV R3,#255 DL1: DJNZ R3,DL1 DJNZ R2,DL RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;
0,1,2,3,4 DB 92H, 82H,0F8H,80H,90H ;
5,6,7,8,9 TAB1: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H ;
0-9的带小数点的段选码 END ? ? ? ? ? ? ? ? ? ? ? 6.设计原理图及工作原理 ? 图14 设计原理图 如上图,当调整电位器(0-5V)R15时,模/数转换芯片ADC0809的第一个输入通道IN-0所接收的模拟电压值即会改变,通过内部的A/D转换电路,使得输出端口的高低电位也相应改变,即数值的改变.将数值从AT89S51的P0口输入,经过一系列内部电路处理之后,从其P1口和P3口分别输出段码和位码,在数码管上进行显示,从而达到了检测电压并显示的功能.即数字电压表的设计. ? ? ? ? ? ? ? ? ? ? ? 7.综合调试及结论 1).对源程序用WAVE软件进行编写调试,当编译没有错误时进行程序下载. 2).当把程序加载到单片机最小系统板子上的时候,因为不是直接应用的最小系统板,所以要关闭通信下载开关,从而将程序保留在芯片AT89S51当中.然后将其拔出插入到自己所焊的电路板上,发现数码管的显示不完整,可能是显示电路的焊接问题.用万用表检查电路各重要节点的电位及相应电路间的导通与断开. 3).运用例子程序对芯片和最小系统进行调试,当把程序进行加载时,发现数码管上面显示的是乱码,修改........