『壹』 51單片機方波發生器
40khz方波是周期為25us的方波,可以正負電平各延時大約12us 51單片機P1口輸出40khz方波,匯編程序如下: L1:CLR A MOV P1,A LCALL DELAY SETB A MOV P1,A LCALL DELAY SJMP L1 DELAY:MOV R1,#6 L1:DJNZ R1,L1
『貳』 kile4利用51單片機計時器輸出1.5Hz的方波脈沖
Klla 4 BO 5是單片機計算計時器,輸出1.5赫茲的方波脈沖你的計算器計算等設定的輸出蟎蟲
『叄』 如何編程實現51單片機每隔 t 時間發出一個脈沖求C語言詳細編程。。。
給你個基本框架,根據你的具體要求再修改吧。使用定時1中斷實現,精度比較高。
#include <reg52.h>
#define PERIODH (65536l-10000l)/0X100 //設10ms中斷1次TH1初值
#define PERIODL (65536l-10000l)%0X100 //設10ms中斷1次TL1初值
sbit P1_1 = 0x91; //假設從P1.1輸出脈沖
unsigned int iCount; //延時間隔時間變數
unsigned int iPulseCount; //脈沖脈寬時間變數
void timer1() interrupt 3 using 1
{//定時器每0.01秒一次中斷
TH1 = PERIODH;
TL1 = PERIODL;
if(iCount)
{//計數未到0,計數器-1
iCount--;
}
if(iPulseCount)
{//計數未到0,計數器-1
iPulseCount--;
}
}
main()
{
TMOD = 0X10;//方式1
EA = 1;//總中斷允許
ET1 = 1;//定時器1中斷允許
TR1 = 1;//啟動定時器1
P1_1 = 0; //脈沖輸出埠,假設輸出正脈沖,預置為低電平
while(1)
{
iCount = 200;//每間隔200*10ms = 2秒一個脈沖,t值變化改此處
while(iCount);//等待2秒中
P1_1 = 1; //置為高電平,輸出正脈沖
iPulseCount = 10;//每間隔10*10ms = 100ms一個脈沖,脈寬變化改此處
while(iPulseCount);//高電平保持100ms
P1_1 = 0; //置為低電平,輸出正脈沖結束
}
}
『肆』 用51單片機產生方波
這個就不需要什麼電路了吧,有個51最小系統板+LCD1602液晶+幾個按鍵就OK了,因為你是輸出脈沖嘛,51也就只能輸出高低電平的脈沖了,外加一個液晶顯示即可。你到網上查一下液晶的連接電路就OK,一大把的。
另外你說的程序也並不難啊,頻率這么低,用定時計數器就可以實現了。可以做一個公式,用頻率或者占空比算出具體的定時器的計數值。公式嘛,當然也是你想一下了,呵呵。
綜合來看,難點就在於鍵盤控制而已,要讀入鍵盤值,然後進行數據整合處理。
『伍』 如何用51系列單片機發射脈沖
51單片機本身就有兩個自帶的可編程定時器/計數器T1,T2有四種工作方式,只要寫入控制字和設置記數初值,就可以輸出不同頻率的脈沖.51單片機的為6M
HZ,所以存入的值可以計算的為0F0H,選用方式1,控制字
MOV
TMOD,#01H
;選用方式1
MOV
TL0,#0F0H
;裝入初值
SETB
TR0
;啟動
SETB
ET0
;允許中斷
SETB
EA
;CUP開放中斷
『陸』 關於51單片機產生方波信號
如果單片機有PWM的功能就可以用PWM產生方波,如果沒有也可能用I/O口先輸出高電平延時,再輸出低電平,就可以得到所要的方波了,要改變幅度 頻率 空佔比可調,可以設置幾個按鍵開關,按一次就可以改變延時時間,這樣就可以改頻率了。其它要調的也可是如此
『柒』 大神你好,我用的是帶環形脈沖分配器的那種驅動器,你說要控制51單片機給方波脈沖,這種怎麼編程啊
這更簡單
for(j=0;j<4;j++)
{
for(i=0;i<12;i++)
{
clock=1;
delayms(2);
clock=0;
delayms(2);
}
delayms(5000);
}
當然有一個方向控制端要設置,有的還有使能端要置為1
『捌』 怎樣用51單片機產生方波
可以用定時器中斷實現這樣的處理,這種方法重點在於根據你的晶振頻率計算出定時器中斷的參數,然後就可以很好的控制定時器中斷觸發的時間了.只要在中斷處理過程里不斷的讓I/O口取反,就可以實現這樣的方波。
『玖』 求高手 用51單片機輸出產生方波的程序
#include"reg52.h"
sbit PWM=P1^0;//定義輸出腳
void main()
{
TMOD=0x01; //定時器0工作方式1
TH0=(65536-10000)/256; //12M晶振10MS計時常數
TL0=(65536-10000)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
while(1);
}
//中斷函數,啟動後每10MS進入一次中斷
void T0_time(void) interrupt 1
{
TH0=(65536-10000)/256; //12M晶振10MS計時常數
TL0=(65536-10000)%256;
if(PWM)PWM=0; //輸出腳取反
else PWM=1;
}
『拾』 51單片機:T1用作定時器在p1.0產生方波脈沖,輸出到T0,T0用作計數器,記錄該方波的下降沿個數,如下所述
void main(void)
{uint temp1,temp2,counter;
initial();
for(;;) //產生周期為1000us的方波
{
TH1=0Xf0; // 重新裝載計數初值
TL1=0X0c;
while(!TF1); //你是用查詢的方式產生方波,但原程序的這個部分有問題
FB=!FB;
TF1=0;
if(loop1=1)
TR0=1; //開始計數
if(loop2=1) //停止計數
{TR0=0;
temp1=TL0;temp2=TH0;
couter=(temp2<<8)+temp1; //記錄計數的次數
}
}
}