资源描述
/*****************************************************
文件名:AD采样及频率显示
文件描述:使用51开发板
创建人:
版本号:V1.0
修改: 2010.6.18
*****************************************************/
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint num;
uchar port,m;
uchar ge,shi,bai,qian;
sbit AD_eoc=P1^0;
sbit AD_clk=P1^1;
sbit AD_add=P1^2;
sbit AD_dat=P1^3;
sbit AD_cs=P1^4;
//单片机引脚配置
uchar code led7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9共阴极代码
//uchar code ledd7[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //0~9带小数点的共阴极代码
/*******************************************************
函数名:延时函数delay ,带参数
参数:j,k
返回值:无
功能描述:延时几毫秒
*******************************************************/
void delay(uint z) //延时程序 ms级别
{
uint k;
for(z;z>0;z--)
for(k=110;k>0;k--);
}
/*******************************************************
函数名:显示函数 void display()
参数:num
返回值:无
功能描述:显示某个数字
*******************************************************/
void display()
{
qian=num/1000%10;
bai=num/100%10;
shi=num/10%10;
ge=num%10;
P0=led7[qian];
P2=0xFE;
delay(5);
P0=0x00;
P0=led7[bai];
P2=0xFD;
delay(5);
P0=0x00;
P0=led7[shi];
P2=0xFB;
delay(5);
P0=0x00;
P0=led7[ge];
P2=0xF7;
delay(5);
P0=0x00;
}
/*******************************************************
函数名:AD采样函数 void ADC(uchar chn1)
参数:chn1
返回值:ADresult
功能描述:将AD采样的电压值送出
*******************************************************/
uint ADC(uchar chn1)
{
uchar i;
uchar addr8; //通道地址
uint ADresult; //转换码
AD_eoc=1;
AD_cs=0;
_nop_();
addr8=chn1;
addr8<<=4;
/* for(i=0;i<10;i++)
{
AD_clk=0;
_nop_();
AD_add=(bit)(addr8&0x80);
_nop_();
AD_clk=1;
_nop_();
addr8<<=1;
}*/
for(i=0;i<4;i++)
{
AD_add=(bit)(addr8&0x80);
AD_clk=1;AD_clk=0;addr8<<=1;
}
for(i=0;i<6;i++)
{
AD_clk=1;
AD_clk=0;
}
AD_cs=1;
while(!AD_eoc);//查询到转换结束
_nop_();
ADresult=0;
AD_cs=0; //CS falling edge 开始传数据
for(i=0;i<10;i++)
{
AD_clk=1;
ADresult<<=1;
m=AD_dat;
ADresult+=m;
AD_clk=0;
}
AD_cs=1;
return(ADresult);
}
/*******************************************************
函数名:void main()
参数:无
返回值:无
功能描述:主函数
*******************************************************/
void main()
{
while(1)
{
port=0x0a;
num=ADC(port);
display();
}
}
展开阅读全文