㈠ 如何用單片機輸出脈沖信號
利用單片機產生脈沖信號有多種方法。最簡單的方法,就是在單片機的程序中對一個引腳反復置1,清0,置1,清0....,這個引腳上就會出現脈沖信號。
當需要產生指定周期和寬度的脈沖信號時,通常使用單片機中的計數器來實現:給計數器賦於不同的計數初值,在計數到0時產生中斷去置1或清0某引腳即可。
㈡ 向51單片機里寫發出脈沖信號的c程序怎麼編啊
//用ADC0808控制PWM輸出
//通過可變電阻調節脈沖寬度
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLK =P2^4;
sbit ST=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit PWM=P3^0;
//延時
void Delay(uchar x)
{
uchar i;
while(x--)
for(i=0;i<40;i++);
}
void main()
{
uchar Val;
TMOD=0x02;//定時器T0工作於方式2自動重裝8位計數器
TH0=0x14;
TL0=0x00;
IE=0x82; //允許T0中斷
TR0=1; //啟動定時器
while(1)
{
ST=0;ST=1;ST=0; //啟動A/D轉換
while(!EOC); //等待轉換完成
OE=1;
Val=P1; //讀取轉換結果
OE=0;
if(Val==0) //PWM輸出占空比為0
{
PWM=0;
Delay(0xff);
continue;}
if(Val==0xFF) // PWM輸出占空比為100%
{
PWM=1;
Delay(0xff);
continue;
}
PWM=1;
Delay(Val); //PWM輸出占空比
PWM=0;
Delay(0xff-Val);
}
}
//--------------------------------
//T0定時器中斷給ADC0808提供時鍾信號
//---------------------------------
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0808時鍾
}
能看明白嗎?我也是剛學的,照書上寫的