AD转换器的应用.PPTVIP

  • 70
  • 0
  • 约7.42千字
  • 约 49页
  • 2019-08-04 发布于湖北
  • 举报
例:对8路模拟信号轮流采样一次,并依次把转换结果存储到片内RAM以DATA为起始地址的连续单元中。 MAIN:MOV R1,#DATA ;置数据区首地址 MOV DPTR,#7FF8H  ;指向0通道 MOV R7,#08H     ;置通道数 LOOP:MOVX @DPTR,A   ;启动A/D转换 HER: JB P3.2,HER ;查询A/D转换结束 MOVX A,@DPTR    ;读取A/D转换结果 MOV @R1,A      ;存储数据 INC DPTR        ;指向下一个通道 INC R1        ;修改数据区指针 DJNZ R7,LOOP    ;8个通道转换完否? … … ADC0809的软件编程 2、中断方式 读取IN0通道的模拟量转换结果,并送至片内RAM40H~47H单元中。 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0F MAIN:MOV R0,#40H ;内部数据指针指向40H单元 MOV DPTR,#7FF8H ;选通IN0 SETB IT0 ;设置下降沿触发 SETB EX0 ;允许中断 SETB EA ;开中断总允许 MOVX @DPTR,A ;启动A/D转换 LJMP $ ;等待转换结束中断 ADC0809的软件编程 INT0F:MOVX A,@DPTR ;取A/D转换结果 MOV @R0,A ;存结果 INC R0 ;内部指针下移 INC DPTR ;外部指针下移,指向下一通道 CJNE R0,#48H,NEXT ;未转换完8路,继续转换 CLR EX0 ;关中断允许 RETI ;中断返回 NEXT:MOVX @DPTR,A ;启动下一路A/D转换 RETI ;中断返回,继续等待下一次 ADC0809的软件编程 6.4.2 指针与A/D转换器接口的C51程序设计 C51中定义外部RAM或扩展I/O端口的方法 #includeabsacc.h //绝对地址访问头文件 #define IN0 XBYTE[0x7FF8] //设置ADC0809的通道0地址 C51中的指针 (1)指针变量的定义 (2)指针运算符 ①取地址运算符“” ②取内容运算符“*” (3)指针变量的赋值运算符“=” ①把一个变量的地址赋予指向相同数据类型的指针变量。 ②把一个指针变量的值赋予指向相同类型变量的另一个指针变量。 数据类型 *指针变量名; 例:int i,j,*i_ptr; 例:i_ptr=i; 例:j=*i_ptr; 【例6-5】用C51语言完成设计 #includereg52.h #includeabsacc.h //绝对地址访问头文件 #define IN0 XBYTE[0x7FF8] //设置ADC0809的通道0地址 unsigned char i; //通道选择控制 unsigned char x[8]; //存放8个通道的A/D转换数据 unsigned char xdata *ad_adr; //存放通道地址 void int0_isr(void) interrupt 0 { x[i]=*ad_adr; //存转换结果 ad_adr++; //下一通道 i++; while(i==8)EA=0; //8个通道转换完毕,关中断 } 九江职业技术学院电气工程系 九江职业技术学院电气工程系 教学目标 知识目标: 1、了解单片机的总线结构。 2、掌握A/D转换的基本知识。 3、掌握ADC0809与单片机的硬件连接。 4、掌握A/D转换器的程序设计方法。 技能目标: 1、掌握模数转换芯片的调试方法。 2、掌握单片机外围扩展电路的连接方法。 智能化电子仪器及仪表 工作任务 设计一个简易数字电压表,要求能测量0~5V之间的直流电压值,并通过4位数码管实时显示该电压值。 6.1 A/D转换基本知识 A/D转换的功能是把模拟量转换为n位数字量。 ①输入A/D转换器

文档评论(0)

1亿VIP精品文档

相关文档