PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 19-04-2010, 01:03 AM   #1
hoanghuy911
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 5
:
ADC và PWM điều khiển độ sáng 1 led công suât.

Xin chào các cao thủ trên diễn đàn PIC VIỆT NAM mình là người mới tìm hiểu về PIC và đang dùng PIC16F877A mình muốn hỏi chương trình dùng tín hiệu vào ADC và dùng PWM để điều khiển độ sáng cho một con LED công suất. Bác nào có chương trình mẫu thì cho mình tham khảo với đây là chương trình của mình nhưng khi mô phỏng thấy im re biên dịch thì không có lỗi.
Phần cứng: Nút nhấn trên RB0 và biến trở nối với nguồn 5V và cho vào AN0.
Tạm thời mình chưa tìm hiểu cách post hình lên diễn đàn và đóng khung code nên mới viết như vậy mong mọi ng thông cảm. Mong hồi âm và xin chân thành cảm ơn!

code______________________________________________ _____________________

#include "C:\Documents and Settings\SMART HOME\Desktop\LAP TRINH PIC\CCS for PIC16F877A\PWM\cht\main.h"
// su dung adc o che do 8 bit
// chuong chinh doc 3 moc gia tri adc xuat ra tuong ung 3 muc sang cua den led
byte value;
void main()
{
byte value;

setup_adc_ports(AN0); // Thiet lap cong AN0 la cong vao ADC.
setup_adc(ADC_CLOCK_INTERNAL ); // Thiet lap che do xung mo rong
// setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
set_tris_b(0x0f);
while(true)
{
if(input(PIN_B0)==1) //Tin hieu cam bien

{
set_adc_channel( 0 );
value = read_adc();
if((value>0)&&(value<100))
set_pwm1_duty(50);
else if((value>100)&&(value<200))
set_pwm1_duty(150);
else
set_pwm1_duty(255);
delay_ms(10);
}
else
set_pwm1_duty(0);
}

}
__________________________________________________ _______________________
hoanghuy911 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2010, 06:50 AM   #2
Hard
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Huế
Bài gửi: 26
:
Send a message via Yahoo to Hard
Trích:
Nguyên văn bởi hoanghuy911 View Post
Xin chào các cao thủ trên diễn đàn PIC VIỆT NAM mình là người mới tìm hiểu về PIC và đang dùng PIC16F877A mình muốn hỏi chương trình dùng tín hiệu vào ADC và dùng PWM để điều khiển độ sáng cho một con LED công suất. Bác nào có chương trình mẫu thì cho mình tham khảo với đây là chương trình của mình nhưng khi mô phỏng thấy im re biên dịch thì không có lỗi.
Phần cứng: Nút nhấn trên RB0 và biến trở nối với nguồn 5V và cho vào AN0.
Tạm thời mình chưa tìm hiểu cách post hình lên diễn đàn và đóng khung code nên mới viết như vậy mong mọi ng thông cảm. Mong hồi âm và xin chân thành cảm ơn!

code______________________________________________ _____________________

#include "C:\Documents and Settings\SMART HOME\Desktop\LAP TRINH PIC\CCS for PIC16F877A\PWM\cht\main.h"
// su dung adc o che do 8 bit
// chuong chinh doc 3 moc gia tri adc xuat ra tuong ung 3 muc sang cua den led
byte value;
void main()
{
byte value;

setup_adc_ports(AN0); // Thiet lap cong AN0 la cong vao ADC.
setup_adc(ADC_CLOCK_INTERNAL ); // Thiet lap che do xung mo rong
// setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
set_tris_b(0x0f);
while(true)
{
if(input(PIN_B0)==1) //Tin hieu cam bien

{
set_adc_channel( 0 );
value = read_adc();
if((value>0)&&(value<100))
set_pwm1_duty(50);
else if((value>100)&&(value<200))
set_pwm1_duty(150);
else
set_pwm1_duty(255);
delay_ms(10);
}
else
set_pwm1_duty(0);
}

}
__________________________________________________ _______________________
Hi,
Đôi khi mô phỏng Protues không chạy nhưng thực tế lại chạy ngon ơ đó. Protues có một lỗi khi mô phỏng PWM, để khắc phục trước mắt xem chương trình của bác có chạy không thì bác thêm vào một dòng setup_timer_2(xxx) ngay sau khi thực hiện set_pwm1_duty(xx).
Để khắc phục lỗi củ chuối này của Protues, bác down file Pic16.dll sau và thay thế file Pic16.dll trong thư mục cài đặt. Lúc này không cần phải setup_timer_2(xx) nữa.
Thân ái.
File Kèm Theo
File Type: rar pic16.rar (198.2 KB, 117 lần tải)
Hard vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-05-2010, 12:57 PM   #3
hatbui
Đệ tử 1 túi
 
Tham gia ngày: Jul 2006
Bài gửi: 11
:
giúp em lỗi của chương trình

Chào các bác

Em đang tập viết chương trình dùng CCSC

chương trình đơn giản bên dưới. Compile không báo lỗi nhưng khi chạy mô phỏng thì không chạy/

Code:
#include <16f877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, 
#use delay(clock=20000000)


//===========Chuong trinh chinh================
void main() 
{
unsigned char i;

While(true)
{
for (i=0x01;i<0x80;i++)
{
PORTB=i;
delay_ms(100);
}
for (i=0x80;i>0x01;i--)
{
PORTB=i;
delay_ms(100);
}
}
}
Các bác giúp em với.
File Kèm Theo
File Type: zip led Port B.zip (43.9 KB, 24 lần tải)
hatbui vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2010, 01:02 PM   #4
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
led

Trích:
Nguyên văn bởi hatbui View Post
Chào các bác

Em đang tập viết chương trình dùng CCSC

chương trình đơn giản bên dưới. Compile không báo lỗi nhưng khi chạy mô phỏng thì không chạy/

Code:
#include <16f877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, 
#use delay(clock=20000000)


//===========Chuong trinh chinh================
void main() 
{
unsigned char i;

While(true)
{
for (i=0x01;i<0x80;i++)
{
PORTB=i;
delay_ms(100);
}
for (i=0x80;i>0x01;i--)
{
PORTB=i;
delay_ms(100);
}
}
}
Các bác giúp em với.
thêm dòng lệnh là chạy được
set_tris_b(0x00);
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam