PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC - Thiết kế và Ứng dụng (http://www.picvietnam.com/forum/forumdisplay.php?f=23)
-   -   Điều chỉnh độ sáng LED (http://www.picvietnam.com/forum/showthread.php?t=5108)

zonnamtao 18-10-2009 09:12 PM

Điều chỉnh độ sáng LED
 
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

Trích:

Nguyên văn bởi namqn (Post 30367)
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.


Múi giờ GMT. Hiện tại là 10:17 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam