求 AD0809的8路模拟信号循环采集电路原理图及相应的程序代码,汇编或c均可,江湖救急啊!!!

发布网友 发布时间:2022-04-25 22:13

我来回答

1个回答

热心网友 时间:2023-10-15 22:41

/*  名称:ADC0809 数模转换与显示 

  说明:ADC0809 采样通道 3 输入的

模拟量,转换后的结果显示在数码管上。*/ 

#include<reg51.h> 

#define uchar unsigned char 

#define uint unsigned int 

//各数字的数码管段码(共阴) 

uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 

sbit CLK=P1^3;  //时钟信号 

sbit ST=P1^2;  //启动信号 

sbit EOC=P1^1;  //转换结束信号 

sbit OE=P1^0;  //输出使能 

//延时 

void DelayMS(uint ms) 

 uchar i; 

 while(ms--) for(i=0;i<120;i++); 

//显示转换结果 

void Display_Result(uchar d) 

 P2=0xf7;  //第4 个数码管显示个位数 

 P0=DSY_CODE[d%10];

DelayMS(5); 

 P2=0xfb;  //第3 个数码管显示十位数 

 P0=DSY_CODE[d%100/10]; 

 DelayMS(5); 

 P2=0xfd;  //第2 个数码管显示百位数 

 P0=DSY_CODE[d/100]; 

 DelayMS(5); 

//主程序 

void main() 

 TMOD=0x02;  //T1 工作模式 2 

 TH0=0x14;   

 TL0=0x00; 

 IE=0x82; 

 TR0=1; 

 P1=0x3f;  //选择 ADC0809 的通道3(0111)(P1.4~P1.6) 

 while(1) 

 { 

  ST=0;ST=1;ST=0;  //启动 A/D转换 

  while(EOC==0);  //等待转换完成 

  OE=1; 

  Display_Result(P3); 

  OE=0; 

 } 

//T0 定时器中断给 ADC0809 提供时钟信号 

void Timer0_INT() interrupt 1 

 CLK=~CLK; 

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com