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

📄 ad0809.c

📁 驱动AD0809并且LED显示,LED用移位寄存器连
💻 C
字号:
#include<AT89X52.H>
#include <intrins.h>
#define DSSJ 5000
#define uchar unsigned char
#define uint unsigned int
#define     pindata     P0       //AD数据口
sbit         pina=P2^0;         //
sbit       pinb=P2^1;         //
sbit       pinc=P2^2;         //
sbit         pinstart=P2^5;  //启动转换信号
sbit  pinoe=P2^6;//输出允许信号,高电平有效
sbit pineoc=P2^7;   //A/D转换结束信号,高电平时转换结束
uchar seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//A/D转换启动程序,参数address表示通道号
void PUTOUT (float dp);
void start_ad()
{
pina=1;
pinb=0;
pinc=0;//输入通道选择
pinstart=0;
pinstart=1;
pinstart=0;
}

//读取A/D转换后的 数据
uint read_ad(void)
{
uint temp;
pinoe=1;
while(!pineoc);
temp=pindata&0xff; 
pinoe=0;
//等待A/D转换结束
return(temp);
}

     void put(uchar ywsz,x)//写入一个数字
{
 uchar i,ch;
 if(x!=128)
 ch=seg[ywsz];
 else ch=seg[ywsz]+x;
 for(i=0;i<8;i++)
 {
 P1_6=ch&0x01;
 P1_5=0;
 P1_5=1;
 ch>>=1;
 }
}
  void PUTOUT (float dp)//显示6位数字
{
unsigned long zh2,b[6];
uint i,point,x=0;

 zh2=dp;
         if(zh2==0) zh2=1;
		 point=0;
         while(zh2)
              {zh2/=10;point++;}  //确定小数点在第几位。


         for(i=0;i<(6-point);i++)
            dp*=10;
            zh2=dp+0.5;//将dp去小数点,化整。


         for (i=0;i<6;i++)
             { b[i]=zh2%10; 
	           zh2/=10; 
		   	 }//将zh2中四位数存放到b[]中。
	  P1_7=0;
         for (i=0;i<6;i++)
             { if(i==(6-point)) x=128;
			 else x=0;
			            put(b[i],x);
				   //小数点修正。
             }          
}
uint timecount=0,i=0,k=1;//i用来记录1秒钟采样次数 ,k用来跳出循环 

unsigned long dy=0;
void main(void)
{  
   TH1=(65536-DSSJ)/256;
TL1=(65536-DSSJ)%256;
ET1=1;//T1中断允许
EA=1; //总中断允许
TR1=1;
pindata=0xff;
 while(k!=0)
       {    
       i++;
	   start_ad();  
	    dy+=read_ad() ;   //读AD数据并给dy
	   
//读数据并显示
       }
}
void t1() interrupt 3//3*974+78us左右 定时1秒
{ 
float DY=0; 
timecount++;
if(timecount==200) {
DY=dy/(i*51.0);
PUTOUT(DY);
timecount=0; i=0; dy=0;  } 
  TH1=(65536-DSSJ)/256;
TL1=(65536-DSSJ)%256;
}

⌨️ 快捷键说明

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