Ⅰ 51單片機測方波占空比,下面是我寫的程序,在模擬的時候計算的結果在液晶上不顯示啊,大神們幫我看看啊。
我寫兩個程序,占空比為50%周期為500微妙的大鉛程序 P1口輸出測的話示波器直接測,幹嘛那麼復雜。滾改好
中斷方法殲悄: ORG 0000H
LJMP START
ORG 000BH
LJMP TLINT
ORG 001BH
START: MOV SP,#30H
MOV TMOD,#01H
MOV TH0,#0FFH
MOV TL0,#83H
SETB EA
SETB ET0
SETB TR0
SJMP $
TLINT: MOV TH0,#0FFH
MOV TL0,#83H
CPL P1
RETI
END
查詢方法: ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#30H
MOV TMOD,#01H
SETB TR0
LOOP:
SETB P1.0
MOV TH0,#0FFH
MOV TL0,#83H
JNB TF0,$
CLR P1.0
CLR TF0
MOV TH0,#0FFH
MOV TL0,#83H
JNB TF0,$
CLR P1.0
CLR TF0
SJMP LOOP
END
Ⅱ 51單片機產生40KHZ方波
程序為:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Waveout=P1^0;
uchar
void main()
{
TMOD=0x01;
TH0=0xFF;
TL0=0xE8; //TL0=(65536-24)%256=232,即E8
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_time() interrupt 1
{
TH0=0xFF;
TL0=0xE8;
Waveout=!Waveout;
}
(2)51單片機方波模擬擴展閱讀
使用方法
1.將模擬器插入需模擬的用戶板的CPU插座中,模擬器由用戶板供電;
2.將模擬器的串列電纜和PC機接好,打開用戶板電源;
3.通過KeilC 的IDE開發模擬環境UV2 下載用戶程序進行模擬、調試。
硬體說明
1、使用用戶板的晶振:模擬器晶振旁有兩組跳線用來切換內部晶振和用戶板晶振,當兩個短路塊位於模擬器晶振一側時,默認使用模擬板上的晶振(11.0592MHz), 當兩個短路塊位於電容一側時,使用用戶板的晶振。
2、為便於調試帶看門狗的用戶板,模擬器的復位端未與用戶板復位端相連;故模擬器的復位按鈕只復位模擬器,不復位用戶板;若要復位用戶板,請使用用戶板復位按鈕。
參考資料來源:網路-51單片機
Ⅲ 請問如何用51單片機生成頻率可調的方波請給出方案或者修改我的方案(如下)
P0 口,應該加上上拉電阻。山瞎
AD 轉換的結果,應該是:0~255。
使用真實的硬體,結果是多少?
可以在 P2 口,接上八個 LED,當場顯示出來看看。
另外,對於這一批數據,你所期望得到的頻逗族空率范圍,究穗叢竟是多少?
還有,採用軟體定時,並不準確。
Ⅳ 新手求助!!用51單片機產生20KHZ的方波,不知怎麼模擬不出結果
程序除
sbitp1_0=p1^0要寫成
sbitp1_0=P1^0;
外其它沒錯。你在proteus中沒首禪打亮睜開虛擬示波敬芹歲器吧,每格50us,剛好20kHZ
Ⅳ 關於51單片機產生方波信號
如果單片機有PWM的功能就可以用PWM產生方波,如果沒有也可能用I/O口先輸出高電平延時,再輸出低電平,就可以得到所要的方波了,要改變幅度 頻率 空佔比可調,可以設置幾個按鍵開關,按一次就可以改變延時時間,這樣就可以改頻率了。其它要調的也可是如此
Ⅵ 程序問題:51單片機如何精確產生頻率占空比可調的方波
首先選擇一個i/o設置為輸出模式,這個模輪就是用於輸出腔慧方波的硬體介面。
頻率可調,可以根據你要想要的頻率,換算成中斷周期,實質上是一個計數器。建議弄一個300k的中斷服務。那麼可以這樣整:如果要30k的頻率,那麼每10次中斷視為一次完整的周期,執行一次你要的處理。
占空比問題,比如30%的占空比,那麼你前三次中斷都把狀態設置為1,後面七次都設置為0狀態。照這個思路就實現你的占空比了。當然這些中斷次數的旦圓信依據需要你自己對占空比的要求進行換算得到。在中斷服務程序中去操作i/o口狀態,當然你還可以在該程序結束的時候或者開始的時候,再次修改中斷時間從而調整輸出頻率。
Ⅶ 51單片機用定時器輸出1HZ方波 為什麼我的程序模擬以後io口狂閃 並不是1HZ 12M晶振
你的if語句後多加了一個分號或差,所以單片機一個仔手while循衫戚皮環就一直在執行led=~led,所以io就狂閃
Ⅷ 急!!!!!希望實現利用C51單片機輸出頻率及占空比可調的方波,我需要protues模擬的電路圖及源代碼。我
//P2^0和P2^1;接2個按鈕,
//P2^0控制頻率10HZ到50HZ,按壓改變
//P2^1控制佔比10%到90%,按壓改變
//假設晶振為12MHz
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
uintt=0,f=100,w=50;
sbitP10=P1^0;//輸出端
sbitKF=P2^0;//改變頻率按鈕
sbitKW=P2^1;//改變占寬按鈕
voidinit()
{
TMOD=0x21;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
EA=1;
}
voidtime0()interrupt1
{
TH0=(65536-1000)/256;廳橋飢
TL0=(65536-1000)%256;
t++;//t為1ms
if(t>=f)t=0;
}
voidmain()
{
init();
while(1)
{
if(KF==0)//改變頻率
{f=f-10;
if(f<=10)f=100;
while(KF==0);
w=f/10;
}
if(KW==0)//改變佔比
{w=w+f/10;
if(w>=f)w=f/10;
while(KW==0);
}
if(t<w)P10=1;//單個周期
elseP10=0;
}
}
如果圖片看不清,請先「查看大圖」,此時另存到你的電腦里,再查看更大的圖片。
****************************
後補充:根據你的「問題補充」,需要增扮返加一個AD轉換器,常用的並口有ADC0809,串口有ADC0834,單片機掃描AD轉換輸出的數據,送到上述的頻率f和佔比w兩個變數。就可以改變。幅度改變很簡單消塌,用電位器的分壓直接輸出就可以了。要把整個寫出來,需要一定的篇幅,上面給你提供思路,望你自己多動手電筒腦,得到滿意的結果。
Ⅸ 用51單片機產生方波
這個就不需要什麼電路了吧,有個51最小系統板+LCD1602液晶+幾個按鍵就OK了,因為你是輸出脈沖嘛,51也就只能輸出高低電平的脈沖了,外加一個液晶顯示即可。你到網上查一下液晶的連接電路就OK,一大把的。
另外你說的程序也並不難啊,頻率這么低,用定時計數器就可以實現了。可以做一個公式,用頻率或者占空比算出具體的定時器的計數值。公式嘛,當然也是你想一下了,呵呵。
綜合來看,難點就在於鍵盤控制而已,要讀入鍵盤值,然後進行數據整合處理。
Ⅹ 幫忙解決下:使用51單片機,產生方波、鋸齒波、三角波等波形,頻率可調。並且能實現在protues中的模擬
基本知識點:
1、定時器
2、PWM
方波、三角波的實現方法:
1、PWM固定占空比1:1,實現對稱方波輸出
2、方波後連接積分電路,可將方波變為同頻率的三角波。
實現以上功能較容易,且可實現的頻率范圍較寬。
鋸齒波實現方法:
鋸齒波實現方法稍顯麻煩,不過硬體電路原理與三角波類似。
區別在於鋸齒波在一個周期內輸出若干個占空比不同的方波,每個方波的占空比除了最後一個點之外,呈線性遞增。這樣出來的信號還不是鋸齒波,需要經過積分電路才能轉變為鋸齒波。由於一個周期需要輸出多個方波(個數越多,精度越高),因此,鋸齒波的頻率不能太高。
鋸齒波個人建議採用AD或專用的信號發生器電路。