當(dāng)前位置: 首頁 > 工業(yè)電子產(chǎn)品 > 集成電路(ICs) > IC傳感器
發(fā)布日期:2022-05-11 點擊率:43
單片機(jī)進(jìn)行傳感器計數(shù)
單片機(jī)源程序如下:
#include
bai=dispcount/100; //求百位
shi=dispcount%100/10; //求十位
ge=dispcount%10; //求個位
dula=1; //打開段選
P0=table[bai]; //百位輸給P0口
dula=0; //關(guān)閉段選
wela=1; //打開位選
P0=0xfe; //P0口輸給第一位
wela=0; //關(guān)閉位選
delay(1);
dula=1;
P0=table[shi];
dula=0;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[ge];
dula=0;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
void init()
{
wela=0;
dula=0;
EX0=1; //int0外部中斷打開。
IT0=0; //低電平有效,3.0口,不設(shè)置也沒關(guān)系
// ET0=1; //t0定時中斷。即IE=0x82;
// TMOD=0x01; //t0啟動方式為方式1,16位
// TR0=1; //啟動定時器0
// TH0=0x4c;
// TL0=0x00;
EA=1; //開總中斷
}
void main()
{
// aa=0;
// TH0=0x4c;
// TL0=0x00;
init();
while(1)
{
display(dispcount);
}
}
void ExtInt0() interrupt 0 //外部0中斷服務(wù)程序
{
delay(200);
date++;//每按一次中斷按鍵,計數(shù)加一
dispcount=date;
if (dispcount==999) //計數(shù)范圍0-999
{
dispcount=0;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
傳感器計數(shù).rar
(26.47 KB, 下載次數(shù): 13)
2017-12-19 15:08 上傳
點擊文件名下載附件
xgy1982
沒有四種聲音的頻率庫,其他的給你做個示范吧:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
SETB EA
SETB ET0
SETB ET1
LOOP:
LCALL KEYSCAN
MOV A,R2
JNZ LP1
MOV DPTR,#TAB110
SJMP LPRUN
LP1:
DEC A
JNZ LP2
MOV DPTR,#TAB119
SJMP LPRUN
LP2:
DEC A
JNZ LP3
MOV DPTR,#TAB120
SJMP LPRUN
LP3:
DEC A
JNZ LP4
MOV DPTR,#TABBOMB
SJMP LPRUN
LP4:
LJMP LOOP
LPRUN:
MOVX A,@DPTR
MOV TL0,A
INC DPTR
MOVX A,@DPTR
MOV TH0,A
............;時長控制也可以做到表里,計算后賦值給T1
LJMP LOOP
END
評論
取消
評論
#include “reg52.h” //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include"temp.h" //這里面有個溫度的函數(shù)
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//code的作用是告訴單片機(jī),我定義的數(shù)據(jù)要放在ROM(程序存儲區(qū))里面,其實是相當(dāng)與匯編里面的尋址MOVX(好像是),因為C語言中沒辦法詳細(xì)描述存入的是ROM還是RAM(寄存器),所以在軟件中添加了這一個語句起到代替匯編指令的作用,對應(yīng)的還有data是存入RAM的意思
//Ds18b20ReadTemp()這個函數(shù) 就是頭文件里的 應(yīng)該是省略了一些物理的計算
類似于 電流的大小 電壓 在根據(jù)產(chǎn)品的材料 算出 溫度的值 傳給你
這個值還是要處理一下
邏輯不必去思考 畢竟這是人家算好給出來的值 既然它讓我們?nèi)ミ@么處理 我們就這么處理
//留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
//后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
//算加上0.5,還是在小數(shù)點后面。
這句話 其實有點重要 c語言會自動幫你做類型轉(zhuǎn)化
所以四舍五入就沒有用函數(shù) 我記得js還要MATH函數(shù)處理 下次我也這么寫四舍五入
會不會出問題不太清楚
void DigDisplay()
{
u8 i;
for(i=0;i<6;i++)
{
switch(i) //位選,選擇點亮的數(shù)碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
}
P0=DisplayData[5-i];//發(fā)送數(shù)據(jù)
delay(100); //間隔一段時間掃描
P0=0x00;//消隱
}
}
這個函數(shù) 就是一秒執(zhí)行幾百次
然后 你就能看到多個數(shù)組
像我這種動態(tài)視力優(yōu)秀的人 看著 就是一堆閃爍的燈 花里胡哨的
人類的動態(tài)視力真弱 這就被欺騙了;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
這三個 只要用到了數(shù)碼管
三個數(shù)字 就是2的三次方 就是 有八種情況 然后這八種情況對應(yīng)一個數(shù)字
一個數(shù)字有八個二極管
所以就是
P0=DisplayData[5-i];就是 1111 1110 ,隨便寫的 控制八個燈的亮的方式
就是用三個開關(guān)控制8個燈的開關(guān) ;
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
所以這里是設(shè)計好的10個亮燈的方式 ;
這個可以看出溫度給出的是個四位數(shù)字 再把這個四位數(shù)字拆出來 放到led里面顯示
P0=0x00;//消隱 這個我不太了解 他是加我就加吧
SW-420 常閉型震動模塊簡介
感應(yīng)震動力大小將感應(yīng)結(jié)果傳遞到電路裝置,并使電路啟動工作的電子開關(guān)。
用于各種震動觸發(fā)作用,報盜報警,智能小車,地震報警,摩托車報警等。本模塊與常開型震動傳感器模塊相比、震動觸發(fā)的時間更長、可以驅(qū)動繼電器模塊。
工作原理
平時任何角度開關(guān)都是接通狀態(tài),受到振動或移動時,開關(guān)內(nèi)導(dǎo)通電流的滾軸會產(chǎn)生移動或振動,從而導(dǎo)致通過的電流斷開或電阻阻值的升高而觸發(fā)電路。這種開關(guān)的特點是平時一般處于導(dǎo)通狀態(tài)耐振動時會短暫斷開,所以它的靈敏度很高,通過IC的設(shè)置,客戶可按自
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原