行数据采集;
二 设计要求:
将实验箱DJ598上的ADC0809作为A/D转换器,用实验箱上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,在利用DAC0832 D/A数模转换器输出,通过数码管显示出结果,构成一个简易数字电压表。 设计内容:
使用ADC0809的0通道(IN0),进行0~5V直流电压的A/D转换,并通过DAC0832输出相似的电压值。 0通道的电压输入由实验箱模拟量产生模块的电位器调整,电压测试点为AOUT1。顺时针旋转,电压增大,最大5V;逆时针旋转电压减小,最小为0V。将DAC0832得AOUT 的输出接数字电压表,使DAC0832的输出电压为0~5V。实验中采用延时方式或查询方式等待A/D转换结果。
三 硬件及其连接图
1 DAC0832逻辑结构图
2 ADC0809 内部逻辑结构
1单片机与ADC0809实验接线图
2.单片机与DAC0832实验接线图
四 程序设计
对ADC0809的0通道(IN0)进行A/D转换, 并把转换结果通过DAC0832输出。
采用延时方式等待A/D转换结束,电压输入值由电位器调整。 ORG 0000H DAC0832 EQU 0FF90H ADC0809_0 EQU 0FF80H
LJMP STRAT ORG 0100H START: MOV SP,#60H
MOV A,#81H MOV DPTR,#0FF23H MOVX @DPTR,A ;初始化显示缓冲区
MOV 7EH,#00H MOV 7DH,#08H MOV 7CH,#00H MOV 7BH,#09H MOV 7AH,#10H MOV 79H,#10H
LO18:LCALL SSEE ;显示A/D转换的结果 MOV DPTR,#ADC0809_0 MOV A,#00H MOVX @DPTR,A ;启动A/D转换 MOV R7,#0AH
DELAY:NOP ;延时100μS,等待A/D转换结束 NOP NOP DJNZ R7,DELAY NOP
;读取A/D转换的结果
MOVX A,@DPTR NOP
;可在此处设置断点,观察累加器A中 MOV DPTR,#DAC0832 MOVX @DPTR, A NOP
;将结果写入DAC0832转换成电压输出,可测量输出点AOUT ;可在此设置断点,比较AOUT1和AOUT得值是否相同 MOV R0,#79H
LCALL PTDS ; 送累加器A中A/D转换的值到显示缓冲区 SJMP LO18
ORG 05D0H
PTDS:MOV R1,A ;拆送累加器A中A/D转换的值显示缓冲区 ACALL PTDS1 MOV A,R1 SWAP A
PTDS1:ANL A,#0FH
MOV @R0,A INC R0 RET
ORG 0D50H ;显示A/D转换的值子程序 SSEE:SETB RS1 ;切换工作区 MOV R5,#05H SSE2:MOV 30H,#20H MOV 31H,#7EH MOV R7,#06H SSE1:MOV R1,#20H MOV A,30H CPL A
MOVX @R1,A ;字位送入 MOV R0,31H MOV A,@R0
MOV DPTR,#DDFF
MOVC A,@A+DPTR ;取字形代码 MOV R1,#21H
MOVX @R1,A ;字形送入 MOV A,30H
RR A ;右移 MOV 30H,A DEC 31H
MOV A,#0FFH
MOVX @R1,A ; 关显示
DJNZ R7,SSE1 ; 六位显示完了吗? DJNZ R5,SSE2 ; 5次显示完了吗? CLR RS1 RET
;’0’~’F’字符字型代码表
DDFF:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END
五 总结体会
这次实习让我收获颇丰,不管从学问上还是其他的各个方面。课堂上从来没有见过真正的单片机,只是从理论的角度去理解,枯燥没趣。但在实习中见过以致使用了单片机及其零
碎,可以理论联系实践的学习,开阔了眼界,进一步了解单片机的有关知识,受益匪浅。 单片机是很重要的一门课程,老师和一些劳动的朋友都曾说过,假如学好一门单片机,就能凭这门手艺找一个好工作。尽管我们在课堂学到的内容很有限,但我们会在接下来的日子里继续努力的学习,学好了单片机也就多了一项生存的本钱。最后谢谢老师