《单片机实验——利用AD完成电压测量及显示(共6页).doc》由会员分享,可在线阅读,更多相关《单片机实验——利用AD完成电压测量及显示(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上单片机实验利用AD完成电压测量及显示1.实验目的(1)掌握A/D转换器的基本原理和使用方法。(2)掌握二进制数和BCD码之间的数值转换方法。2.预习要点(1)A/D转换器的基本原理和使用方法(2)二进制数和BCD码之间的数值转换方法3.实验设备计算机、单片机实验箱,万用表。4.实验内容基本要求:利用电位器,在05V范围调节A/D转换器0809的输入端ADIN3的电压,在显示电路上显示0050数值。扩展要求:相同输入条件下,在显示电路上显示-25+24的数值实验6 ORG 0000H SJMP MAIN;* ;主程序 ORG 0030H MAIN:MOV SP,#70H
2、 ;显示缓存区 MOV 32H,#11 ;为了兼容之前的显示程序,所以就通过改变 MOV 33H,#11 ;字型的方式让第3-8个数码管不亮,只显示前两位 MOV 34H,#11 MOV 35H,#11 MOV 36H,#11 MOV 37H,#11 ;初始化8155 MOV DPTR,#0100H MOV A,#03H MOVX DPTR,A LOOP:MOV DPTR,#6000H ;AD的地址,应接CS3 MOV A,#00H ;选择通道0 IN0 MOVX DPTR,A ;启动AD,开始转换 LCALL DELAY ;延时,等待转换完成,一般转换时间为100us左右 LCALL ADC
3、ON ;读取数据并处理 LCALL DISPLAY ;数码管显示 SJMP LOOP;* ;读取数据并处理子程序ADCON: MOVX A,DPTR ;读取AD的输出X MOV B,#51 ;把00H-FFH之间的数据转换为0-50的数据 DIV AB ;这个我会给大家讲讲,很简单的,这里就不注释了 MOV 30H,A MOV A,B MOV B,#5 DIV AB MOV 31H,A RET;* ;显示子程序DISPLAY: MOV R0,#30H MOV R3,#0FEH LD0:MOV DPTR,#0102H ;送字位 MOV A,R3 MOVX DPTR,A MOV DPTR,#DTA
4、B ;查表,送字形 MOV A,R0 MOVC A,A+DPTR MOV DPTR,#0101H MOVX DPTR,A LCALL DELAY INC R0 MOV A,R3 JNB ACC.7,LD1 RL A MOV R3,A LJMP LD0 LD1:RET;* ;字形表DTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;数字0-9 DB 40H,00H ;40H为 - 00H为不亮;* ;延时1msDELAY: MOV R7,#02H DEL1:MOV R6,#0FFH DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RE
5、T;* ;显示子程序(另一种) ;这里给大家写本实验的另一种显示方法: ;这种方法就是30H和31H分别写显示程序,显示完31H之后就 ;退出程序,很easy的啦,大家还可以多多试试自己编写别的程序 ;注:本子程序在主程序中并没有调用 DISPLAY1: MOV DPTR,#0102H MOV A,#0BFH MOVX DPTR,A MOV DPTR,#DTAB MOV A,30H MOVC A,A+DPTR MOV DPTR,#0101H MOVX DPTR,A LCALL DELAY MOV DPTR,#0102H MOV A,#7FH MOVX DPTR,A MOV DPTR,#DTAB
6、 MOV A,31H MOVC A,A+DPTR MOV DPTR,#0101H MOVX DPTR,A LCALL DELAY RET;*;实验6扩展 ORG 0000H SJMP MAIN;* ;主程序 ORG 0030H MAIN:MOV SP,#70H ;显示缓存区 MOV 32H,#11 ;为了兼容之前的显示程序,所以就通过改变 MOV 33H,#11 ;字型的方式让第3-8个数码管不亮,只显示前两位 MOV 34H,#11 MOV 35H,#11 MOV 36H,#11 MOV 37H,#11 ;初始化8155 MOV DPTR,#0100H MOV A,#03H MOVX DPT
7、R,A LOOP:MOV DPTR,#6000H ;AD的地址,应接CS3 MOV A,#00H ;选择通道0 IN0 MOVX DPTR,A ;启动AD,开始转换 LCALL DELAY ;延时,等待转换完成,一般转换时间为100us左右 LCALL ADCON ;读取数据并处理 LCALL DISPLAY ;数码管显示 SJMP LOOP;* ;AD数据读取并处理子程序ADCON:MOVX A,DPTR ;读取AD的输出X CJNE A,#128,NEXT ;产生Cy NEXT:JC NEXT1 ;判断要转化为0-25还是-25-0,然后决定要不要加负号 CLR C ;因为后面用到减法,所
8、以先要清零Cy SUBB A,#128 MOV 30H,#11 ;为0-25之间,符号位什么都不显示 SJMP NEXT2NEXT1:CLR C ;因为后面用到减法,所以先要清零Cy MOV 62H,A MOV A,#128 SUBB A,62H MOV 30H,#10 ;为-25-0之间,符号位显示负号 NEXT2:MOV B,#51 ;下面是把0-128的数转换为0-25的数,十位存到31H里,各位存到32H里 DIV AB ;这个和实验6一样的 MOV 31H,A MOV A,B MOV B,#5 DIV AB MOV 32H,A RET;* ;显示子程序DISPLAY: MOV R0,
9、#30H MOV R3,#0FEH LD0:MOV DPTR,#0102H ;送字位 MOV A,R3 MOVX DPTR,A MOV DPTR,#DTAB ;查表,送字形 MOV A,R0 MOVC A,A+DPTR MOV DPTR,#0101H MOVX DPTR,A LCALL DELAY INC R0 MOV A,R3 JNB ACC.7,LD1 RL A MOV R3,A LJMP LD0 LD1:RET;* ;字形表DTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;数字0-9 DB 40H,00H ;40H为“ 00H为不亮;* ;延时1msDELAY: MOV R7,#02H DEL1:MOV R6,#0FFH DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET;*专心-专注-专业