欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
呼吸燈程序,51單片機模擬PWM輸出
[打印本頁]
作者:
332405177
時間:
2018-8-17 01:02
標題:
呼吸燈程序,51單片機模擬PWM輸出
前段時間寫了一個使用51單片機對SG90玩具舵機的連續旋轉控制程序。今天突發奇想,將該程序稍作調整,改為呼吸燈控制程序,分享一下,大家可以根據這個程序再做改動,使其更加完善。
呼吸燈的PWM輸出引腳為51單片機的P0.0引腳,接發光二極管正極。
QQ圖片20180817005009.jpg
(2.71 MB, 下載次數: 40)
下載附件
2018-8-17 01:01 上傳
單片機源程序如下:
// 呼吸燈程序,51單片機模擬PWM輸出
// 使用單片機STC89C51
// 晶振:11.0592M
// 編譯環境 Keil uVision2
////////////////////////////////////////////////
#include <reg52.h>
#define uint unsigned int
uint count,i,j;
sbit pwm=P0^0 ; //信號輸出引腳P00
void pwm100us(uint); //20ms周期pwm模型函數,函數變量是0.1ms高電平的整數倍
void delay100ms();
////////////////////////////////////////////////
void main()
{
EA=1; //打開總中斷
TMOD=0x10; //定時器工作方式寄存器初始化TMOD=0001 0000B(T1為16位計時模式)
while(1)
{
i=0;
j=199;
for(i=0;i<199;i++) //占空比從100%遞減至0
{
pwm100us(i);
}
pwm=1;
delay100ms();
for(j=199;j>0;j--) //占空比從100%遞減至0
{
pwm100us(j);
}
pwm=0;
delay100ms();
}
}
//////////////////////////////////////////////
void pwm100us(uint x)
{ uint y;
pwm=1; //輸出信號高電平
while(count<x) //下面是單次100us的計時,利用循環函數產生100*x us的高電平
{
TF1=0; //初始化定時器1溢出標記位
TH1=0xff; //初始化定時器1高位寄存器
TL1=0xa4; //初始化定時器1低位寄存器
TR1=1; //定時器1開始計時
while(TF1==0); //等待定時器1溢出
count++;
}
count=0;
y=(200-x); //給出y與x的關系
pwm=0; //輸出信號低電平
while(count<y)
{
TF1=0;
TH1=0xff;
TL1=0xa4;
TR1=1;
while(TF1==0);
count++;
}
count=0;
}
/////////////////////////////////////////////
void delay100ms()
{
unsigned char a,b;
for(b=221;b>0;b--)
for(a=207;a>0;a--);
}
復制代碼
所有資料51hei提供下載:
呼吸燈hex文件和C程序.zip
(1.36 KB, 下載次數: 64)
2018-8-17 00:59 上傳
點擊文件名下載附件
呼吸燈hex文件和C程序.zip
下載積分: 黑幣 -5
作者:
1277290131
時間:
2019-9-9 18:54
能發一下仿真圖嗎?謝謝。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1