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

📄 adc0831.c

📁 TI的ADC0831驱动程序。keil c上调试通过
💻 C
字号:
#include<reg51.h>
#include<intrins.h>

#define uint unsigned int
#define uchar unsigned char


/****数码管为共阳**-0----1----2----3----4----5----6----7----8---9---全选-**/
uchar code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
/******************-1----2----3----4----5----6----7----8---全选-***********/
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff};
uchar k[9]={0,0,0,0,0,0,0,0,10}; 

sbit cs=P1^0;		  //0831片选信号,低电平开始一次转换,高电平结束转换
sbit clk=P1^1;		  //0831时钟信号
sbit dat=P1^2;		  //0831数据输出

sbit SCK=P2^0;		  //595时钟信号 11脚
sbit RCK=P2^1;		  //595锁存信号	12脚
sbit SER=P2^2;		  //595数据输入	14脚


/****************************************
             延时函数
****************************************/
void delay()
{
	uchar j;
	for(j=248;j>0;j--);
}

/****************************************
             595显示函数
*****************************************/
void In595(uchar m,uchar n)
{ 
  uchar i,temp;
  temp=duan[m];                   //先传段
  if(n==4)  temp=temp&0x7f;		  //加小数点
  for(i=0;i<8;i++)
  { 
  	SCK=0;
    SER=temp&0x80;
	temp<<=1;
    SCK=1;
   } 
  temp=wei[n];                    //再传位
  for(i=0;i<8;i++)
  { 
  	SCK=0;
    SER=temp&0x80;
	temp<<=1;
    SCK=1;
   }

   RCK=0;						  
   RCK=1;						   //传完后锁存
}

/**********************************
             ADC0831 
***********************************/
uint ADC_read()
{
	uchar i;
	uint  dig=0;
	cs=0;
	delay();
	clk=1;			  
	clk=0;			  //第一个时钟,下降沿触发
	for(i=8;i>0;i--)
	{
		clk=1;
    	clk=0;
		dig=dig|dat;
		dig=dig<<1;
		_nop_();
	}
	cs=1;			  //转换结束
	delay();
	return(dig);
}
 

/**********************************
            主函数
***********************************/
void main(void)			  
{ 

   uint temp,vot;
   uchar j;	
   while(1)	 
  { 							 
	temp=ADC_read();
//	temp=0xff;
    vot=temp*5.0*10000/0xff;
	k[0]=vot%10;
	k[1]=vot/10%10;
	k[2]=vot/100%10;
	k[3]=vot/1000%10;
	k[4]=vot/10000%10;
//  k[5]=vot/100000%10;
//	k[6]=vot/1000000%10;
//	k[7]=vot/10000000;
    for(j=0;j<9;j++) 
    {  
	 
	   In595(k[j],j);
	
   }
}
}


















⌨️ 快捷键说明

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