導航:首頁 > 操作系統 > 用單片機對干簧管通斷次數計數

用單片機對干簧管通斷次數計數

發布時間:2025-06-22 08:49:45

㈠ 51單片機和干簧管怎麼連接,怎麼用

干簧管,當有磁鐵靠近干簧開關時(反之亦然)干簧片就會關閉

在單片機中的應用一般是用來作檢測干簧管狀態(開關的通斷)來完成某種功能的檢測。

㈡ 如何將干簧管脈沖信號通過單片機實現到數碼管顯示

將干簧管脈沖信號通過單片機實現到數碼管顯示:


/********************************************************************

*文件名:TLC549.c

*描述:該程序實現了對TLC549的控制。通過TLC549把電壓轉換為數字信號並通過數碼管顯示出來。實際工作中進行AD采樣時,一般都要把AD信號處理後再用。在這里,採集了30次,去掉最大和最小的5個,中間20個取平均值,最大限度的保證了所要採集AD的准確性。

***********************************************************************/

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitAD_Out=P3^2;//TLC549輸出端

sbitCS=P1^0;//TLC549片選信號

sbitAD_In=P1^1;//TLC549輸入端

ucharcodetable[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

ucharcodetable_d[10]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};//帶點數碼管顯示

/********************************************************************

*名稱:AD_Change(void)

*功能:TLC549驅動程序,在「視頻及教程」中有講解。

*輸入:無

*輸出:temp(電壓值)

***********************************************************************/

ucharAD_Change(void)

{

uchari,temp=0;

CS=0;

_nop_();

_nop_();

_nop_();

_nop_();

for(i=0;i<8;i++)

{

AD_In=1;

_nop_();

_nop_();

temp=temp<<1;

if(AD_Out==1)temp+=1;

AD_In=0;

_nop_();

_nop_();

}

CS=1;

returntemp;

}

/********************************************************************

*名稱:Delay()

*功能:延時,延時時間為1ms*del

*輸入:del

*輸出:無

***********************************************************************/

voidDelay(uintdel)

{

uchari,j;

for(i=0;i

for(j=0;j<=148;j++)

;

}

/***********************************************************************

*名稱:Average()

*功能:中位值平均濾波法,取一共三十個數據,最大和最小的五個數據不要

對中間的二十個數據求平均值

*輸入:三十個待處理的值

*輸出:得到一個中位的平均值

***********************************************************************/

uintAverage(uintbuffer[30])

{

uchari,j;

uinttemp;

for(i=1;i<30;i++)////先對整個數組的三十個值進行從小到大的排列

for(j=29;j>=i;--j)

{

if(buffer[j-1]>buffer[j])

{

temp=buffer[j-1];

buffer[j-1]=buffer[j];

buffer[j]=temp;

}

}

////對數組進行處理,去掉一個最大值和一個最小值,中間的二十個值再來求平均值

temp=0;

for(i=5;i<25;i++)

{

temp+=buffer[i];

}

temp=(uint)(((float)temp)/20+0.5);

return(temp);

}

/***********************************************************************

*名稱:AD_Filter()

*功能:進行AD採集30次,並進行濾波處理

*輸入:三十次AD採集值

*輸出:經過處理後的AD值

***********************************************************************/

uintAD_Filter()

{

uintDate_Buffer[30]={0},temp;

uchari;

for(i=0;i<30;i++)

{

Date_Buffer[i]=AD_Change();

Delay(1);//延時1毫秒採集一次。這里可以根據工作需要調整時間。

}

temp=Average(Date_Buffer);

return(temp);

}

/********************************************************************

*名稱:Main()

*功能:主函數

*輸入:無

*輸出:無

***********************************************************************/

voidMain()

{

uinti=0,temp;

uintj;

P2=0x00;

P1=0xff;

while(1)

{

temp=AD_Filter();

j=temp*2;

for(i=0;i<40;i++)

{

P0=table_d[j/100];

P2=0x04;

Delay(10);

P0=table[j/10%10];

P2=0x02;

Delay(10);

P0=table[j%10];

P2=0x01;

Delay(10);

}

}

}

閱讀全文

與用單片機對干簧管通斷次數計數相關的資料

熱點內容
怎麼用正形紙做解壓玩具 瀏覽:32
ev3編程表演 瀏覽:203
cg100編程器軟體下載 瀏覽:744
怎麼爬手機app數據 瀏覽:111
如何構建linux分布式伺服器 瀏覽:252
解密碼壓縮軟體 瀏覽:461
陳鼓應老子今注今譯pdf 瀏覽:2
linuxmysql查詢版本 瀏覽:688
編程什麼是P和C的意思 瀏覽:980
安卓手機方塊里邊一個問號怎麼打 瀏覽:300
http伺服器如何接收圖片 瀏覽:376
pdf文件無效 瀏覽:106
如何低價購買阿里雲伺服器 瀏覽:489
交通銀行卡app怎麼顯示卡號 瀏覽:529
命令手語教案 瀏覽:498
連梁兩側加密長度 瀏覽:614
永忠pdf 瀏覽:673
用到哪些演算法 瀏覽:266
為什麼淘寶老是顯示伺服器出錯 瀏覽:493
程序員怎麼替換微信圖標 瀏覽:404