導航:首頁 > 操作系統 > 用單片機產生方波

用單片機產生方波

發布時間:2023-06-13 01:59:49

『壹』 求高手 用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;
}

『貳』 如何運用單片機原理製作智能信號發生器,要求產生方波、矩形波、三角波、鋸齒波和正弦波。

#include<reg51.h>

#include<absacc.h>

#include<MAX72191.h>

#defineDAC XBYTE[0x7fff] //P2.7接CS

sbitkey0 = P3^2;// 增減切換鍵

sbitkey1 = P3^3;//個位,十位,百位,千位的控制切換

sbitkey2 = P3^4;// 調整位

sbitkey3 = P3^5;// 波形選擇正弦、三角、矩形波,鋸齒波

unsignedchar i,j;

unsignedint counter,step,flag;

typedefunsigned int uint;

//定時器0初始化

voidInit_Timer0(void)

{

TMOD = (TMOD & 0XF0) | 0X01;//設置工作方式和定時初始值

TH0 = 0xff;

TL0 = 0x00;

TR0 =1; //啟動定時器

ET0 =1;

}

//定義輸出波形的代碼

unsignedchar code type[4][256]={

{ //正弦波代碼

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8,

0x9, 0xb,0xc, 0xd, 0xf, 0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,

0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x39,0x3b,0x3e,0x41,0x43,0x46,0x49,0x4c,

0x4f,0x52,0x55,0x58,0x5b,0x5e,0x61,0x64,0x67,0x6a,0x6d,0x70,0x73,0x76,0x7a,0x7d,

0x80,0x83,0x86,0x89,0x8c,0x8f,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,

0xb1,0xb4,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,

0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xeb,0xed,0xef,0xf0,0xf1,0xf3,0xf4,

0xf5,0xf6,0xf8,0xf9,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,

0xfe,0xfe,0xfe,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf9,0xf8,0xf6,0xf5,

0xf4,0xf3,0xf1,0xf0,0xef,0xed,0xeb,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,

0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,

0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x8f,0x8c,0x89,0x86,0x83,0x80,

0x7d,0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,

0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,

0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0xf,0xd, 0xc, 0xb, 0x9,

0x8,0x7, 0x6, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1, 0x1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

},

{ //三角波代碼

0x2,0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10,0x12,0x14, 0x16, 0x18, 0x1a,0x1c, 0x1e, 0x20,

0x22,0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30,0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40,

0x42,0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50,0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60,

0x62,0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70,0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80,

0x82,0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90,0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0,

0xa2,0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0,0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc,0xbe, 0xc0,

0xc2,0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0,0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc,0xde, 0xe0,

0xe2,0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0,0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc,0xfe, 0xff,

0xfe,0xfc, 0xfa, 0xf8, 0xf6, 0xf4, 0xf2, 0xf0,0xee, 0xec, 0xea, 0xe8, 0xe6, 0xe4,0xe2, 0xe0,

0xde,0xdc, 0xda, 0xd8, 0xd6, 0xd4, 0xd2, 0xd0,0xce, 0xcc, 0xca, 0xc8, 0xc6, 0xc4,0xc2, 0xc0,

0xbe,0xbc, 0xba, 0xb8, 0xb6, 0xb4, 0xb2, 0xb0,0xae, 0xac, 0xaa, 0xa8, 0xa6, 0xa4,0xa2, 0xa0,

0x9e, 0x9c, 0x9a, 0x98, 0x96, 0x94, 0x92, 0x90,0x8e, 0x8c, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x80,

0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x72, 0x70,0x6e, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x62, 0x60,

0x5e, 0x5c, 0x5a, 0x58, 0x56, 0x54, 0x52, 0x50,0x4e, 0x4c, 0x4a, 0x48, 0x46, 0x44, 0x42, 0x40,

0x3e, 0x3c, 0x3a, 0x38, 0x36, 0x34, 0x32, 0x30,0x2e, 0x2c, 0x2a, 0x28, 0x26, 0x24, 0x22, 0x20,

0x1e, 0x1c, 0x1a, 0x18, 0x16, 0x14, 0x12, 0x10,0xe, 0xc,0xa, 0x8, 0x6,0x4, 0x2, 0x00

},

{// 矩形脈沖波代碼

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,

},

{//鋸齒波代碼

0x00,0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,0x08,0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,

0x10,0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,0x18,0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,

0x20,0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,0x28,0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,

0x30,0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,0x38,0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,

0x40,0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,0x48,0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,

0x50,0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,0x58,0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,

0x60,0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,0x68,0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,

0x70,0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,0x78,0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,

0x80,0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,0x88,0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,

0x90,0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,0x98,0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,

0xa0,0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,0xa8,0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,

0xb0,0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,0xb8,0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,

0xc0,0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,0xc8,0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,

0xd0,0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,0xd8,0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,

0xe0,0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,0xe8,0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,

0xf0,0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,0xf8,0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}

};

//顯示子函數

Disp7219(unsignedlong dat)

{

unsigned char i;

unsigned char led[8];

led[7]=dat%10;

led[6]=dat/10%10;

led[5]=dat/100%10;

led[4]=dat/1000%10;

led[3]=dat/10000%10;

led[2]=dat/100000%10;

led[1]=dat/1000000%10;

led[0]=dat/10000000%10;

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

{

max_7219(i+1, led[i]);

}

}

//延時約1m秒

voiddelay_ms(uint n)

{

uchar j;

while(n--)

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

}

//主函數

main()

{

unsigned int f,n,j;

delay_ms(500);

Init_Max7219();//初始化7219

Disp7219(000);

Init_Timer0();

step=18;

EA = 1;

while(1)

{

if(key0 == 0) n=n+1;

if(n==2)n=0;

if(key1==0) j=j+1;

if(j==4) j=0;

if(n==0 && j == 0 &&key2 == 0) if(step<180) step+=18; //個位增

if(n==1 && j == 0 &&key2 == 0) if(step>18) step-=18; //個位減

if(n==0 && j == 1 &&key2 == 0) if(step<1800) step+=180;//十位增

if(n==1 && j == 1 &&key2 == 0) if(step>180) step-=180; //十位減

if(n==0 && j == 2 &&key2 == 0) if(step<18000) step+=1800;//百位增

if(n==1 && j == 2 &&key2 == 0) if(step>1800) step-=1800;//百位減

if(n==0 && j == 3 &&key2 == 0) if(step<54000) step+=18000;//千位增

if(n==1 && j == 3 &&key2 == 0) if(step>18000) step-=18000;//千位減

if(key3==0)flag=flag+1;if(flag==4)flag=0;

while((!key0)||(!key1)||(!key2)||(!key3));

f=step/18;

Disp7219(f);}//顯示頻率

}

// 定時中斷服務

voidTimer0(void) interrupt 1 using 2

{

TH0 = 0xff;

TL0 = 0x00;

counter = counter + step;

DAC=type[flag][(unsignedint)counter>>8];

}

『叄』 用51單片機產生方波

這個就不需要什麼電路了吧,有個51最小系統板+LCD1602液晶+幾個按鍵就OK了,因為你是輸出脈沖嘛,51也就只能輸出高低電平的脈沖了,外加一個液晶顯示即可。你到網上查一下液晶的連接電路就OK,一大把的。

另外你說的程序也並不難啊,頻率這么低,用定時計數器就可以實現了。可以做一個公式,用頻率或者占空比算出具體的定時器的計數值。公式嘛,當然也是你想一下了,呵呵。

綜合來看,難點就在於鍵盤控制而已,要讀入鍵盤值,然後進行數據整合處理。

『肆』 如何用單片機產生正弦波,方波(附圖,程序)

就是讓某一個I/O口輸出高低電平,例如讓P0^0輸出1HZ的方波吧,就是讓它持續500ms的高電平,500ms的低電平,程序如下
#include
sbit
L1=P0^0;
void
delay1ms();
void
main()
{
LI=1;
delay1ms(500)
L1=0;
delay1ms(500);
}

『伍』 如何用C語言編程使單片機產生方波信號

普通51的話需要模擬PWM,如果是加強版51有內置PWM模塊,

PIC和AVR以及430還有STM也有集成PWM的型號!

如果是單純輸出方波的話就簡單了。

程序如下:

//功能,按下P1_0的開關降低頻率,按P1_1為升高頻率

#include<AT89X52.H> //引用AT89X52的庫文件

#defineucharunsignedchar //替換簡稱

#defineuintunsignedint //替換簡稱

ucharsm; //定義臨時變數

voiddelay_ms(uintms) //延時子函數,一個循環12uS

{

while(--ms);

}

voidT0_IRQ(void)interruptTF0_VECTOR //定時器0中斷函數

{

TH0=sm; //將變數賦予定時器0的高位

P2_0=!P2_0; //翻轉IO

}

//寄存器初始化子函數

voidmcu_init()

{

ET0=1; //開定時器0中斷

EA=1; //開總中斷

TMOD=0x01; //設置為16位定時器0

TH0=0xFF; //填充定時器高位

TR0=1; //開定時器0

sm=0xFF; //變數初始化

}

voidmain() //主函數

{

mcu_init(); //調用初始化函數

while(1) //主循環

{

if((!P1_0)||(!P1_1)) //檢測是否有按鍵按下

{

delay_ms(8333); //延時去抖

if(!P1_0) //如果是P1_0按鍵按下

{

while(!P1_0); //等待按鍵放手

if(sm) //檢測變數不為0

{

--sm; //自減1

P2_1=1; //取消邊界LED

}

elseP2_1=0; //到達邊界點亮LED

}

elseif(!P1_1) //否則如果P1_1按鍵按下

{

while(!P1_1); //等待按鍵放手

if(sm<0xFF) //檢測變數小於0xFF

{

++sm; //自加1

P2_1=1;

}

elseP2_1=0;

}

}

}

}

『陸』 用單片機發生方波 程序

假設方波的周期為8微秒 如圖所示 由p1.0引腳產生方波

定時時間=方波周期/2=4微秒
定時時間 t=(2的8次方-X)12/(12×1000000)=(256-x)×1微秒

X=256-4=252=0FCH 由於定時時間很短 工作在方式可以選擇方式2 為8位自動重裝載的
選擇定時器T1定時

參考程序

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN: MOV TMOD,#20H
MOV TH1,#0FCH
MOV TL1,#0FCH

SETB TR1
LL31: JNB TF1,LL31
CLR TF1
CPL P1.0
SJMP LL31

哈啊 別忘了 要為俺選擇(滿意回答)

閱讀全文

與用單片機產生方波相關的資料

熱點內容
阿里備案買什麼伺服器 瀏覽:261
網路驅動下載到哪個文件夾 瀏覽:481
達內程序員培訓西安 瀏覽:505
人保送車主惠app上怎麼年檢 瀏覽:604
android手機開機密碼 瀏覽:480
linux查看某個進程命令 瀏覽:529
閑置的騰訊雲伺服器 瀏覽:437
rar壓縮包mac 瀏覽:626
php混淆加密工具 瀏覽:581
java把數字拆分 瀏覽:464
如何下載svn伺服器舊版本 瀏覽:559
命令與征服4攻略 瀏覽:914
實數四則運演算法則概念 瀏覽:295
cs16優化命令 瀏覽:873
Minecraft雲伺服器免費 瀏覽:830
png壓縮最小 瀏覽:184
老韓綜app怎麼看不了了 瀏覽:229
只有一個程序員的體驗 瀏覽:323
用伺服器地址怎麼有網 瀏覽:552
路由器伺服器昵稱是什麼 瀏覽:715