#include\x0d\x0asbit LED0=P0^0;\x0d\x0asbit wei=P1^1;\x0d\x0asbit duan=P1^0;\x0d\x0asbit lcden=P1^7;\x0d\x0asbit dianzhen=P1^3;\x0d\x0asbit leden=P1^2;\x0d\x0avoid Delay(unsigned int t);\x0d\x0avoid main (void)\x0d\x0a{\x0d\x0aunsigned int CYCLE=600,PWM_LOW=0;//定義周期并賦值\x0d\x0alcden=0;\x0d\x0aP0=0x00;\x0d\x0adianzhen=0;\x0d\x0aP0=0xff;\x0d\x0awei=0;\x0d\x0aduan=0;\x0d\x0awhile (1) //主循環(huán)\x0d\x0a{\x0d\x0aLED0=1;\x0d\x0aDelay(150000); //特意加延時(shí),可以看到熄滅的過(guò)程\x0d\x0afor(PWM_LOW=1;PWM_LOW0;PWM_LOW--)\x0d\x0a{\x0d\x0aLED0=0;\x0d\x0a \x0d\x0aDelay(PWM_LOW);\x0d\x0a \x0d\x0aLED0=1;\x0d\x0a \x0d\x0aDelay(CYCLE-PWM_LOW);\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0avoid Delay(unsigned int t)\x0d\x0a{\x0d\x0awhile(t--);\x0d\x0a}
嵊泗網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),嵊泗網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為嵊泗上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的嵊泗做網(wǎng)站的公司定做!
#includereg51.h
sbit LED0=P0^0;
sbit wei=P1^1;
sbit duan=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定義周期并賦值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
duan=0;
while (1) //主循環(huán)
{
LED0=1;
Delay(150000); //特意加延時(shí),可以看到熄滅的過(guò)程
for(PWM_LOW=1;PWM_LOWCYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
呼吸燈的程序:
/****************************************************************************?
功能:LED燈慢慢變暗,再慢慢變亮。
用定時(shí)器模擬的PWM調(diào)制。
單片機(jī):AT89S52???????????????????????????????????????????????????
******************************************************************************/?
#include?reg52.h?
#define?V_TH0??0XFF??????????????//設(shè)定定時(shí)器0,高8位的初值??????????????
#define?V_TL0??0XF6??????????????//設(shè)定定時(shí)器0,低8位的初值????????????
#define?V_TMOD?0X01??????????????//設(shè)定定時(shí)器0的工作方式為:方式1(計(jì)數(shù)位數(shù)是16位??????????????????????????????????//,由TL0作為低8位、TH0作為高8位)
#define?uchar?unsigned?char?
#define?uint?unsigned?int????????????????
void?init_sys();?????????????????????????//系統(tǒng)初始化函數(shù)
void?delay(uint);????????????????????????//延時(shí)函數(shù)
unsigned?char?ZKB;???????????????????????//占空比
void?main?(void)?
{?
init_sys();????????????????????????????//初始化
while(1)
{??
for(ZKB=5;ZKB40;ZKB=ZKB+2)?????????//每調(diào)節(jié)一次占空比,就延時(shí)大概8ms左右,這使得LED現(xiàn)象更明顯
{
delay(8);?
}
for(ZKB=40;ZKB5;ZKB=ZKB-2)
{
delay(8);?
}
}?
}
void?delay(uint?z)
{
uint?x,y;
for(x=z;x0;x--)
for(y=100;y0;y--);?
}
void?init_sys()????????????/*系統(tǒng)初始化函數(shù)*/?
{?
/*定時(shí)器初始化*/?
TMOD=V_TMOD;?????????
TH0=V_TH0;?
TL0=V_TL0;?
TR0=1;?
ET0=1;?
EA=1;?
}
void?timer0(void)?interrupt?1?using?2??????????????
{?
static?uchar?click=0;????//中斷次數(shù)計(jì)數(shù)器變量
TH0=V_TH0;???????????????//重新恢復(fù)定時(shí)器初始值
TL0=V_TL0;?
++click;???????????????????????//每計(jì)數(shù)10次,產(chǎn)生一個(gè)中斷,并且click增加一個(gè)
if?(click=100)
click=0;??????????????//計(jì)滿一百次,這重新計(jì)數(shù)。
/*因?yàn)橛?jì)一次數(shù)的時(shí)間是1us,10次產(chǎn)生一個(gè)中斷,也就是一個(gè)中斷10us。100個(gè)中斷為1ms。
則,可以在這100個(gè)數(shù)中隨便取值,用于表示占空比的多少,占空比的范圍為(1~100)*/
if?(click=ZKB)??????????//當(dāng)小于占空比值時(shí)輸出低電平,高于時(shí)是高電平,從而實(shí)現(xiàn)占空比的調(diào)整?
P1=0x00;??????????????????????//P1口接的是LED燈
else?
P1=0xff;
}
此程序的總中斷時(shí)間為100ms,即頻率為:100KHZ,占空比從5?變?yōu)?0(即5%~25%)。