找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3328|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC12C54系列單片機頭文件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75926 發(fā)表于 2015-4-3 01:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include"STC12C5410AD.H"    //STC12C54系列單片機頭文件
#define uchar unsigned char
#define uint unsigned int
void delayms(uint xms)   
{
uint i,j;
for(i=xms;i>0;i--)        //i=xms即延時約xms毫秒
  for(j=110;j>0;j--);
}
void AD_Init()
{
P1M0=0x0f;//0000 1111 設(shè)置P1口低4位為開漏模式,用來AD采集
P1M1=0x0f;//0000 1111
ADC_CONTR=0xe0;//1110 0000 開啟AD轉(zhuǎn)換器電源,設(shè)置最高轉(zhuǎn)換速度
delayms(100);
}
int GetAD(unsigned char channel) //channel為要取的通道號(0~7)
{
unsigned char AD_finished=0;
int result;
ADC_CONTR|=channel;   //選擇AD通道號
ADC_CONTR|=0x08;      //啟動AD轉(zhuǎn)換
while(AD_finished==0) //等待AD轉(zhuǎn)換結(jié)束
{
  AD_finished=(ADC_CONTR&0x10);//查詢ADC_FLAG位是否置1
}
result=ADC_DATA*4+ADC_LOW2;//讀走AD轉(zhuǎn)換結(jié)果,由于ADC_DATA中存儲12位中的
//高8位,當(dāng)要轉(zhuǎn)換成10進制時,需將ADC_DATA中的數(shù)左移2位,即相當(dāng)于*4
ADC_CONTR&=0xf7;     //清除轉(zhuǎn)換結(jié)束標(biāo)志
return (result);    //返回結(jié)果給函數(shù)
}
float Ad_Av(uchar channel)    //求100次采集電壓的平均值
{
float Val_Av=0;
uchar num;
for(num=100;num>0;num--)
{
  Val_Av+=GetAD(channel);//100次采集求和
}
Val_Av/=100.0;            //求平均值
Val_Av=Val_Av*5.0/1024;  //單片機電源為5V,求的真實電壓值
return (Val_Av);          //返回給函數(shù)
}
void main()
{
float ad1,ad2,ad3,ad4;
AD_Init();
ad1=Ad_Av(1);
ad2=Ad_Av(2);
ad3=Ad_Av(3);
ad4=Ad_Av(4);
while(1);
}                                                                                                                    
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表