Ðăng Nhập

View Full Version : Điều chỉnh độ sáng LED


zonnamtao
18-10-2009, 09:12 PM
Em đang làm đề tài điều chỉnh độ sáng đèn led bằng PWM thông qua cảm biến quang đưa tín hiệu vào kênh AN0. Mong các bác góp ý dùm.

[code]

#include <16F877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#device 16F877a*=16 ADC=8
#include <def_877A.h>
#use delay(clock=4000000)
#include <def_877a.h>
int8 mode=0,somode;
int8 value,aa;
int8 duty;
int8 const a[11] = {192,249,164, 176,153,146,130,248,128,144,136};

#INT_EXT //khai bao ngat ngoai
EXT_ISR()
{//KHAI BAO NGAT
mode++;
if (mode==11) mode = 0;
}
// End of INT
void pro1();



void main() {

set_tris_b(0x01);
set_tris_d(0x00);
set_tris_c(0x00);

setup_port_a(ALL_ANALOG);//Đọc giá trị ánh sáng môi trường từ //cảm biến quang trở
setup_adc(adc_clock_internal);

set_adc_channel( 0 );
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4, 249, 4);

enable_interrupts(int_EXT);//ngắt ngoài dùng để đặt mức sáng
ext_int_edge(L_TO_H); //
enable_interrupts(GLOBAL);
portd=192;set_pwm1_duty(0);
while(1)
{
switch(mode)
{
CASE 0: portd=a[mode];set_pwm1_duty(0);BREAK;
default: pro1() ; break;
}
}
}
void pro1()
{

portd=a[mode];
value=(float)read_adc();
delay_us(10);
somode=(mode*25.5);//22.5=0.5V*255/5V // 5V/0.5V=10 muc
if (value<somode)
{

duty=(somode-value);
set_pwm1_duty(duty);

}
else set_pwm1_duty(0);
}

namqn
18-10-2009, 11:53 PM
Bài viết của bạn vẫn còn một đoạn văn bản tiếng Việt không dấu. Ngay cả đặt câu hỏi mà bạn cũng không thực hiện được cho đàng hoàng, thử hỏi có mấy người muốn giúp bạn?

Thân,

zonnamtao
19-10-2009, 02:02 AM
Bài viết của bạn vẫn còn một đoạn văn bản tiếng Việt không dấu. Ngay cả đặt câu hỏi mà bạn cũng không thực hiện được cho đàng hoàng, thử hỏi có mấy người muốn giúp bạn?

Thân,
Xin lổi tất cả mọi người. Em ẩu quá. Em đã sửa lại trên rồi. Rút kinh nghiệm lần sau.

ngoctuan2008
20-10-2009, 12:59 PM
Theo mình bạn nên để ADC=10,thì mức độ lấy mẫu sẽ chuẩn xác hơn, không hiểu mấy tiền bối nghĩ sao.