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

📄 14位ad转换试例.c

📁 由器件MAX121即十四位AD转换实现对电压的精确测量
💻 C
字号:
#include<reg52.h>	// 由器件MAX121即十四位AD转换实现对电压的精确测量
#include<intrins.h>
#define uchar unsigned char	   //运用ALE产生2MHZ的时钟信号,并且试验成功
#define uint unsigned int
sbit convst=P1^0;                   //下降沿启动转化
sbit sfrm=P1^1;                      //开始转化置低,转化结束置高
sbit fstrt=P1^2;                       //先持续一个时钟高电平,下降沿开始启动数据传输
sbit sclk=P1^3;                       //串行时钟输出
//sbit clkin=P1^4;                    //提供0.1~05MHZ的时钟信号,本实验采用的2MHZ
sbit sdata=P1^5;                    //数据串行输出口
sbit led1=P2^2;
sbit led2=P2^3;
sbit led3=P2^4;
sbit led4=P2^5;
sbit led5=P2^6;
//sbit led6=P2^7;	 
float tt;
uchar code table[]={0x40,0x79,0x24,
0x30,0x19,0x12,0x02,0x78,0x00,0x10};
uchar count=0,b_0,b_1,b_2,b_3,b_4;
//uchar a[]={0,0,0,0};
uint vdata,j,b,d;
void start();
void read();
void delay(uchar z);
void display();
main()
{       /*EA=1;
	    TMOD=0x01;		  //定时器T0工作方式1
	   	ET0=1;
	   	TH0=(65536-8)/256;			 
        TL0=(65536-8)%256;
		TR0=1; 
		clkin=1;*/
		sfrm=1;
	    start();
		while(1)
		{
			if(sclk==1)
	   	    {   
		   	 	  _nop_();
			 	  read();
				  while(1)
				  {
				      display();
				  }
			 }
		} 
}	   
/*void timer0()  interrupt 1
{  TH0=(65536-8)/256;			 
   TL0=(65536-8)%256;
   clkin=~clkin;
}*/			   
void start()
{  convst=1;
  _nop_();
  convst=0;
  fstrt=0;
  _nop_();
  fstrt=1;
   
   delay(1);
   fstrt=0;
   sfrm=0; 
}
void  read()
{ 
	uchar i;
   for(i=0;i<16;i++)
   {	
   		vdata<<=1;
   		if(sdata==1)
		{		
		 _nop_();
		 _nop_();
   	    	vdata=vdata|0x01;
		 }
	} 
		if(vdata&0x8000)
   		vdata=~vdata+1;
   		d=vdata>>2;		 
}
void display()
{
	tt=d*5/8192.0;
	b=tt*10000;
	b_0=b/10000;
	b_1=b%10000/1000;
	b_2=b%1000/100;
	b_3=b%100/10;
	b_4=b%10;
	P0=table[b_4];
	led1=0;
	delay(5);
	led1=1;
	P0=table[b_3];
	led2=0;
	delay(5);
	led2=1;
	P0=table[b_2];
	led3=0;
	delay(5);
	led3=1;
	P0=table[b_1];
	led4=0;
	delay(5);
	led4=1;
	P0=table[b_0];
	led5=0;
	delay(5);
	led5=1;
}
void  delay(uchar z)
{	uchar x,y;
	for(x=z;x>0;x--)
    for(y=10;y>0;y--);
}	
		 

⌨️ 快捷键说明

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