⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guiyihua2.c

📁 基于51单片机的ADC0809工程。在KEIL C中已经编译通过
💻 C
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit Addr0 = P2^0;			 //8通道选择位
sbit Addr1 = P2^1;
sbit Addr2 = P2^2;
sbit OE    = P2^3;			//转换数据输出位
//sbit CLK   = P2^4;
sbit ST    = P2^5;		   //开始位,地址锁存位
sbit EOC   = P2^6;		   //转换结束位

uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
							0x82,0xF8,0x80,0x90};  //段码0-9
uchar DispBuf[4];     //显示缓存区
sfr LedPort=0x80;	  //P0口接段码
sfr DataPort = 0xB0;

sbit LED0=P1^0;		  //数码管控制位
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;

uint Data,count,Getdata;

void Delay(uchar i)		  //延时
{
	for(;i>0;i--)
		{
			uchar j=244;
			while(--j);
		}
}



void Display()		 //显示子程序
{
	P1 = 0xff;       //关所有的位选
	LedPort = DispBuf[1]&0x7f;		  //动态扫态
	LED1 = 0;
	Delay(1);
	LED1 = 1;

	LedPort = DispBuf[2];
	LED2 = 0;
	Delay(1);
	LED2 = 1;

	LedPort = DispBuf[3];
	LED3 = 0;
	Delay(1);
	LED3 = 1;	
}


void main()
{
	TMOD=0x01;					 //利用定时器,定时1S转换一次数据
	TH0=(65536-50000)/256;		 //对定时器0,赋初值
	TL0=(65536-50000)%256;
	TR0=1;
	ET0=1;
	EA=1;



	while(1)
		{
			Addr0 = 0;			 //选通ADC0809的IN0
			Addr1 = 0;
			Addr2 = 0;

			OE    = 0; 
			ST    = 0;
			ST    = 1;			 //	初始化ADC0809
			Delay(1);
			ST    = 0;			// 开始转换数据
			Delay(1);
		    while(!EOC);	  //等待ADC0809转换数完成
            OE = 1;				//送出转换得的数据
			Getdata = DataPort;	//将转换得的数据赋值给Getdata
            OE = 0;
			ST = 1;
			Data=Getdata*49/25;			 //将ADC0809送来的数据,转化作对应的电压值
//			Data = Getdata;
			Display();
					
		}
}

void Timer0() interrupt 1
{

	TH0 = (65536-50000)/256;			  //再次赋值
	TL0 = (65536-50000)%256;
	
	count++;
	if(count==20)
	{
	count = 0;
	DispBuf[1]=DispTab[Data/100];
	DispBuf[2]=DispTab[(Data%100)/10];
	DispBuf[3]=DispTab[(Data%100)%10];
	
	}		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -