亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
求大神用pwm控制LED燈的亮度
[打印本頁]
作者:
敢死隊分
時間:
2015-7-13 14:28
標題:
求大神用pwm控制LED燈的亮度
求大神用pwm控制LED燈的亮度
作者:
蒲公英lhl
時間:
2015-7-13 15:00
控制輸出信號占空比就可以了
作者:
綠源學習者
時間:
2015-7-13 18:32
#include <reg52.h>
作者:
綠源學習者
時間:
2015-7-13 18:33
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code num0[]="跟蹤電壓值PWM/V";
uchar code num1[]=" V";
uchar code num2[]="0123456789";//電壓值
sbit rs=P3^5;
sbit rw=P3^6;
sbit e=P3^4;
sbit psb=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
sbit S2=P3^0;
sbit S3=P3^1;
sbit fm=P2^3;
uchar pwm,num,i,j,a=5;
void delay(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void lcd_com(uchar com)//寫指令位置
{
rs=0;
rw=0;
e=0;
P0=com;
delay(0);
e=1;
delay(0);
e=0;
}
void lcd_dat(uchar dat) //寫數據內容
{
rs=1;
rw=0;
e=0;
P0=dat;
delay(0);
e=1;
delay(0);
e=0;
}
void init()//液晶初始化
{
psb=1;
lcd_com(0x30);
delay(1);
lcd_com(0x0c);
delay(1);
lcd_com(0x01);
delay(1);
}
void disp()
{
uchar i;
lcd_com(0x80);
for(i=0;i<16;i++)
{
lcd_dat(num0[i]);
}
}
void disp1()
{
uchar i;
lcd_com(0x90);
for(i=0;i<3;i++)
{
lcd_dat(num1[i]);
}
}
void bee()
{
fm=0;
delay(100);
fm=1;
delay(100);
}
void keyscan()
{
if(S2==0)
{
delay(50);
if(S2==0)
{
if(pwm<10)
{
pwm++; delay(50);
a--; delay(50);
}
}
else
{
bee();
}
}
if(S3==0)
{
delay(50);
if(S3==0)
{
if(pwm>1)
{
pwm--; delay(50);
a++; delay(50);
}
else
{
bee();
}
}
}
if(a>9)a=9;
if(a<0)a=0;
}
void init_t0()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
}
void t0() interrupt 1
{
TR0=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
num++;
if(num>10)
{
num=0;
}
if(num<=pwm)
{
P1=0xff;
P0=0x00;
}
else
{
P1=0x00;
P0=0xff;
}
TR0=1;
}
void main()
{
init_t0();
init(); //初始化液晶
num=0;
pwm=5;
wela=0;
dula=0;
while(1)
{
disp();
disp1();
lcd_com(0x90); //電源跟蹤值顯示位置
lcd_dat(num2[a]); //電源跟蹤值
keyscan();
}
}
這里是調電機的,你下載也是可以用的
作者:
lxa0
時間:
2015-7-13 19:39
我在本壇發過一個~~~~~~~~~~~
作者:
張懷震
時間:
2017-11-28 15:14
利用pwm控制占空比,就可以實現這個功能
作者:
halxo
時間:
2017-11-28 17:15
不停的改定時器的預裝載時間自增或自減,占空比就變了亮度也會變。我這有正點原子的pwm程序
作者:
gjkhg
時間:
2017-11-28 21:03
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define pwm P0
uint cycle,high,low; //周期 高電平 低電平
void delayxms(uint x)
{
while(x--);
}
void main()
{
cycle=800;
while(1)
{
high=1;
for(high=1;high<=cycle;high++)
{
pwm=0xff;
delayxms(high);
pwm=0x00;
low=cycle-high;
delayxms(low);
}
low=1;
for(low=1;low<=cycle;low++)
{
pwm=0xff;
high=cycle-low;
delayxms(high);
pwm=0x00;
delayxms(low);
}
}
}
作者:
misala
時間:
2017-11-29 11:28
去看看定時器怎么用就行
作者:
1106998808
時間:
2017-11-29 12:00
#include <reg51.h>
#define uInt unsigned int
#define uchar unsigned char
uchar PWM_T = 0; //占空比控制變量
sbit c7=P3^7; //6個按鍵,決定輸出PWM_T值
sbit c6=P3^6;
sbit c5=P3^5;
sbit c4=P3^4;
sbit c3=P3^3;
sbit c2=P3^2;
/****************************************************
主程序
****************************************************/
void main(void)
{
uInt n;
TMOD=0x02; //定時器0,工作模式2,8位定時模式
TH0=210; //寫入預置初值(取值1-255,數越大PWM頻率越高)
TL0=210; //寫入預置值 (取值1-255,數越大PWM頻率越高)
TR0=1; //啟動定時器
ET0=1; //允許定時器0中斷
EA=1; //允許總中斷
P1=0xff; //初始化P1,輸出端口
P0=0xff; //初始化P0
while(1) //PWM周期100,高電平100- PWM_T, 低電平PWM_T,低電平工作
{
for(n=0;n<200;n++); //延時,取值0-65535,數字越大變化越慢
if(!c7||!c6||!c5||!c4||!c3||!c2) //通過按鍵改變占空比
{
if(!c7) PWM_T=0; //這些值可以改變
else if(!c6) PWM_T=10;
else if(!c5) PWM_T=35;
else if(!c4) PWM_T=60;
else if(!c3) PWM_T=85;
else if(!c2) PWM_T=100;
}
}
}
/****************************************************
/定時器0中斷模擬PWM
****************************************************/
timer0() interrupt 1 using 2
{
static uchar t ; //PWM計數
t++; //每次定時器溢出加1
if(t==100) //PWM周期 100個單位
{
t=0; //使t=0,開始新的PWM周期
P1=0x00; //使LED燈亮 ,輸出端口
P0=0x00; //使LED燈亮 ,輸出端口
}
if(PWM_T==t) //按照當前占空比切換輸出為高電平
{ P1=0xff; //使LED燈滅
P0=0xff; //使LED燈滅
}
}
給你一個簡單的
作者:
lebres
時間:
2017-11-29 12:15
#include <reg52.h>
sbit LED = P1^2;
unsigned char CYCLE;
unsigned char PWM_ON ;
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
bit Flag;
TMOD |=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
IE= 0x82;
TR0=1;
CYCLE = 10;
while(!Flag)
{
delay(20000);
PWM_ON++;
if(PWM_ON == CYCLE)
{
Flag=1;
}
}
while(Flag)
{
delay(20000);
PWM_ON--;
if(PWM_ON == 0)
{
Flag=0;
}
}
}
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if (count==PWM_ON)
{
LED = 1;
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0)
LED = 0;
}
}
這個是本人測試驗證程序。
作者:
lebres
時間:
2017-11-29 12:16
#include <reg52.h> sbit LED = P1^2; unsigned char CYCLE; unsigned char PWM_ON ; void delay(unsigned int cnt) { while(--cnt); } main() { bit Flag; TMOD |=0x01; TH0=(65536-100)/256; TL0=(65536-100)%256; IE= 0x82; TR0=1; CYCLE = 10; while(!Flag) { delay(20000); PWM_ON++; if(PWM_ON == CYCLE) { Flag=1; } } while(Flag) { delay(20000); PWM_ON--; if(PWM_ON == 0) { Flag=0; } } } void tim(void) interrupt 1 using 1 { static unsigned char count; // TH0=(65536-100)/256; TL0=(65536-100)%256; if (count==PWM_ON) { LED = 1; } count++; if(count == CYCLE) { count=0; if(PWM_ON!=0) LED = 0; } }
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1