① 51單片機計數器怎麼使用
設置T0模式 為計數模式就行了 就是TMOD的C/T位置1;
脈沖從T0輸入 T0就計數了
你讀取TH0和TL0就曉得脈沖個數了
有了這個脈沖個數 輸出到數碼管即ok
② 單片機計數
timez[0]-timez[2],是三滴之間的時間差。
也就是滴下兩滴所用的時間。單位,大概是 ms ?
2400(timez[0]-timez[2]),是滴下 4800 滴,所需要的時間。
③ 單片機的計數器,每計數一次是多少時間
定時器/計數器本質上都是計數器,只不過數的東西不一樣.
定時器/計數器做為定時器來用的時候,是數的單片機時鍾的脈沖個數,也就是說,單片機的時鍾做為定時器/計數器的時鍾源,因為單片機的時鍾一般比較固定,因此,我們就知道一個脈沖佔多長時間,因為根據脈沖的個數,就能推算出時間,就能做定時器用.
比如:12MHz的傳統51單片機,一個脈沖周期是1us,如果定時器數了10個脈沖周期就中斷了,說明10us時間到了.
而作為計數器的時候,數的是來自引腳上的脈沖,也就是說,是引腳上的脈沖做為定時器/計數器的時鍾源,如果這個脈沖是規律的,周期是固定的,那麼,也可以實現定時,比如,如果引腳的脈沖是10KHz的,那麼,一個脈沖周期是100us,如果定時器/計數器數了10個脈沖周期就中斷,說明1ms時間到了.
但是,如果引腳上的脈沖頻率不固定,時高時低,那麼,就沒辦法根據脈沖個數算出時間來,此時,就只是單純的計數功能.
總而言之,定時器/計數器本質都是對脈沖計數,只是作為定時器,數的是內部的脈沖,做為計數器,數的是外部的脈沖,如果脈沖固定,外部脈沖也可以用來定時.贊同0|評論
④ 51單片機的計數器怎麼用
給你一個時鍾的源程序吧 是完全使用計數器來實現的:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit up_m=P3^0; //秒按鍵設置
sbit up_f=P3^1; //分按鍵設置
sbit up_s=P3^2; //時按鍵設置
uchar const smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar i,j,k;
void delay(uint cnt)
{
while(--cnt);
}
void delayms(uint a)
{
uchar i;
while(--a)
{
for(i=0;i<125;i++);
}
}
void init()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void keyboard()
{
P3=0xff;
if(up_m==0)
delayms(40);
if(up_m==0)
{
i++;
if(i>=60)
{
i=0;
}
delayms(40);
}
if(up_f==0)
delayms(40);
if(up_f==0)
{
j++;
if(j>=60)
{
j=0;
}
delayms(40);
}
if(up_s==0)
delayms(40);
if(up_s==0)
{
k++;
if(k==23)
{
k=0;
}
delayms(40);
}
}
void init_smg()
{
P2=2;
P0=0x40;
delay(5);
P2=5;
P0=0x40;
delay(5);
}
main()
{
i=0;
init();
while(1)
{ init_smg();
P2=2;
P0=0x40;
P2=5;
P0=0x40;
P0=0x00;
keyboard();
P2=7;
P0=smg[i%10];
delay(3);
P0=0X00;
P2=6;
P0=smg[i/10];
delay(3);
P0=0x00;
P2=4;
P0=smg[j%10];
delay(3);
P0=0X00;
P2=3;
P0=smg[j/10];
delay(3);
P0=0x00;
P2=1;
P0=smg[k%10];
delay(3);
P0=0X00;
P2=0;
P0=smg[k/10];
delay(3);
P0=0x00;
}
}
void time () interrupt 1
{
unsigned char a;
a++;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
if(a==20)
{
a=0;
i++; //秒控制
if(i==60)
{
i=0;
j++;//分控制
}
if(j==60)
{
j=0;
k++;//時控制
if(k>23)
k=0;
}
}
}
這是我初學是自己寫的時鍾 你調點看看就知道了 但是建議你去找本單片機的書看看會好多的,裡面的那些標志位你才知道是代表什麼
⑤ 單片機的定時和計數有什麼 區別
1、觸發來源不同:定時器的觸發來源是外部脈沖,而計數器的觸發來源是時鍾信號。
2、計數對象不同:定時器實際上也是計數器,只是計數的是固定周期的脈沖;計數器只是計數時間。
單片機也被稱為單片微控器,屬於一種集成式電路晶元。在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數據採集與控制系統能夠讓單片機完成各項復雜的運算,無論是對運算符號進行控制,還是對系統下達運算指令都能通過單片機完成。
由此可見,單片機憑借著強大的數據處理技術和計算功能可以在智能電子設備中充分應用。簡單地說,單片機就是一塊晶元,這塊晶元組成了一個系統,通過集成電路技術的應用,將數據運算與處理能力集成到晶元中,實現對數據的高速化處理。
(5)單片機計數擴展閱讀:
單片機的應用
1、節能控制
由於智能電子設備可能會被經常攜帶外出,因此對這些設備的能耗要求是非常高的,所以經常會設計一些節能控制模塊,從而提高智能電子設備的待機時長。
單片機技術在節能控制中的應用主要分為以下幾個方面:第一,智能電子設備在外出狀態下,大部分是處於輕負載的模式,這時候就需要通過節能控制,確保其基礎功能的前提下,進一步降低電量的消耗。
單片機通過對智能電子設備中數據的收集,可以大致推斷當前設備處於較低的負載,這時可以降低電壓及電流的輸出,達到節能的目的;第二,單片機可以控制能耗的節奏,例如:在小米手環中,收集人體的心率、睡眠和運動步數等數字,這些數字收集後會在本地進行存儲,然後以分鍾級的頻率進行上報。
信息未上報時,設備處於低能耗的狀態,信息上報時,會出現一些網路傳輸方面的消耗,單片機可以控制能耗的節奏,將手環的大部分時間控制在低能耗的狀態下,可以使得待機時間長達七十二小時以上。
2、智能語音設備
為了更好地提高智能電子設備的智能性,可以允許人類通過簡單的語言進行控制,實現語音人機交互的目的。目前,語音處理晶元已經開發完成,並開始運用到智能電子設備中。單片機在智能語音設備中的應用,主要分為以下兩個部分。
第一,軟體設置方面,由於單片機可以通過編程的方式,處理一些業務邏輯,因此就能夠對智能語音處理過程進行操作。例如:在導航智能電子設備中,可以將其中的一些道路名稱、距離等進行提取,然後進行播報;同時,還可以選擇不同的名人口吻進行播報,真正實現智能化的定製操作,更好地滿足用戶的需求。
第二,硬體設計方面,由於智能語音設備對資源的消耗比較大,因此為了更好地延長產品的待機時間,會使用單片機技術動態控制產品的功率,進一步降低對電量的消耗。同時,還可以通過單片機技術,提高硬體的響應時間,進一步提高用戶的體驗。
3、報警控制
對於部分電子設備來講,會擁有自動報警的設置,報警控制也是單片機技術經常使用的領域,主要體現在以下幾個方面:第一,對於一些自動報警裝置來講,例如:家裡經常使用的火災報警器,就是在外界環境達到一定條件下開啟智能報警的設備。
如果室內的煙霧濃度到達某種水平,或者是收集外界的數據達到某種狀態時,就會自動觸發報警設置,從而實現智能報警的功能;第二,對於一些智能電子設備來講,如果外在環境超過設備的工作環境范圍時,或者是設備存在一些異常情況時,就會觸發自身的報警機制,讓用戶能夠及時了解設備的運作詳情,並且根據報警信息提供解決方案。
4、醫療設備
隨著醫療設備技術的不斷提升,單片機開始在醫療設備中進行廣泛的應用,主要體現在:第一,對病人的身體特徵數據進行智能監控,可以將一些醫療設備安裝在病人身上,並對其身體的數據進行收集,然後與後台的控制系統進行交互,如果發現病人的身體特徵異常時,會及時產生報警。
⑥ 單片機計數程序
#include <reg52.h>
sbit Switch = P2^0;
sbit P3_0 = P3^0;
sbit P3_1 = P3^1;
#define uchar unsigned char
#define uint unsigned int
bit key_state;
//***********************************************************
void mDelay(uint temp)
{uint i;
while(temp!=0)
{temp--;
for(i=0;i<5000;i++);
}
}
//************************************************************
//************************主程序******************************
void main()
{ uchar count=0;
P3_0=1;
P3_1=1;
while(1)
{
if(Switch==1) key_state=1; else key_state=0;
if((Switch==0)&&(key_state==1))
{key_state=0;
count+=1; if(count==10)
{
P3_1=0;mDelay(200);//調括弧的數來完成1S。
P3_0=0;
}
}
}
}
//此程序沒有經過實際驗證.給你一個參考吧.是按你的功能寫的.你可以下載進試驗,有問題請告知.應該能達到你的要求.不行加我的網路HI啊
⑦ 51單片機頻率計數。
這個是需要修改的 51接12M晶振就是為了精確程序運行時間 內部是經過 12分頻的這樣運行一條一般的指令就是1us 至於單片機開發板一般可能是11.0592的 因為一般的開發板有串口 而用串口就必須用11.0592不然波特率不準
⑧ 單片機 計數器 設定計數初值
1、定時器和計數器都是計數,前者是計的內部時鍾脈沖的計數器,用於定時控制;後者是對外部脈沖的計數,比如計產品的數量。
2、他的數據存儲單元的數字在變化呀,如果用一個數碼管接出來的話你就可以看到了。
3、設定的初值不是用手輸入的,是用數字編入程序的。
4、這個要按具本的實際需要來選用哪一個。
能實際做幾個實例就明白了,或者用模擬也可以
⑨ 單片機計數器是怎麼計數的
有定時器和計數器模式的區別,所謂定時器,就是對機器內部頻率計數,可以做時鍾,如果為計數器模式,就是對P3.4,P3.5所接受到得脈沖計數,可以設置低電平或者下降沿觸發……
⑩ 51單片機的計數器程序
你得在P3.5引腳外部加計數脈沖信號呀,T1才能計數的。就用你的程序,模擬的結果如下圖,並用數碼管顯示了TL1=1的狀態了。