![]() |
mình đang cân tập lệnh trong ccs để viết chương trình đây nhung không biết lam sao. ai có cho minh với?
cho mình hoi với:#FUSES NOWDT , HS , NOPROTECT dòng tren co nghĩa là j? lam sao biết các chế độ đó |
ai co đã dùng pic8f4331 roi chỉ dạy em với? làm sao để viết chuong trình pwm 4331 day?vì mình chưa biết tập lệnh mà:
các bác dạy e với |
Không biết mình hỏi không rõ ràng hay các cao thủ ít vào luồng này nữa hay sao mà chẳng thấy ai giúp mình hết vậy?Tại mình đang làm đồ án về điều khiển động cơ bước với 5 switch:
SW1: stop SW2: quay cùng chiều kim đồng hồ(KDH). SW3: quay ngược chiều KDH. SW4: quay cùng chiều KDH có tốc độ tăng dần mỗi lần ấn. SW5: quay ngược chiều KHD tốc độ tăng dần sau mỗi lần ấn. Mình mới tìm hiểu về PIC, mình đã tự tìm hiểu, đã cố gắng lập trình nhưng chỉ làm được 3 điều khiển đầu tiên, điều khiển tốc độ động cơ tăng dần mình chưa làm được.Vì sắp bảo vệ đồ án rồi nên mình rất mong các bạn có thể giúp mình.Mình không hi vọng các bạn sẽ làm tất cả cho mình: viết code,vẽ mạch,...(phải có cái gì đó của mình nữa chứ), mình chỉ mong các bạn có thể hướng dẫn cho mình cách dùng chức năng PWM của con PIC để điều khiển tốc độ tăng dần cho step motor.Rất mong các bạn có thể giúp mình sớm sớm.Thời gian không còn nhiều nữa.Mình thực sự bó tay rồi.Chưa có tiền mua mạch nạp nữa chứ,hỏi mượn nhưng chờ đứa bạn làm xong mới cho mình mượn.Mình cảm ơn các bạn rất nhiều. |
Hic, mình cũng đang tìm hiểu về PWM (CCP), mình có đoạn code này bạn thử xem sao nha.
Code:
// Setup the CCP1 for PWM Chúc bạn sớm hoàn thành đề tài. |
Giup xem xet loi trong code giup em voi
Em đang làm mạch điện điều khiển motor bằng ngắt timer.Em đang dùng Pic C 4.069Em dùn. g timer0 de ngat. Tuy nhiên không hiểu sao không thấy hiển thị ra led sau thời gian 6 giay em đã set (đã test thử các chương trình in put output mấy cổng đó thấy ok) chắc tại ngắt timer có vấn đề nhưng không tìm ra lỗi. Các sư huynh nào biết tham khảo rồi chỉ dùm với. Cảm ơn rất nhiều http://www.picvietnam.com/forum/images/icons/icon9.gif
Em gửi file lập trình và sơ đồ mạch cho các sư huynh tham khảo http://www.4shared.com/file/17243005...ter_PicC1.html http://www.4shared.com/file/17243006...lap_trinh.html http://www.4shared.com/file/17243005..._roaster1.html Các sư huynh chịu khó down về nghen |
pcwhd
|
Trích:
|
Trích:
|
Các bác hướng dẫn e cách lập trình cho dispic 30f4011 bằng CCS với. E cài CSS bản 4.023 nhưng không hỗ trợ cho dispic. Thanks nhiều!
|
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); } } __________________________________________________ _______________________ |
Delay với thời gian thực
Thêm một điều nữa mình dùng PIC16F877A và thạch anh 4Mhz để cho led sáng trong 1s tắt trong 1s thì mình delay_ms(?) mình khai báo là delay_ms(1000) mà mô phỏng trên ông Proteus nó vẫn cứ nháy loạn hết cả lên mà không đúng 1s. Xin các bạn giải thích dùm mình với? Xin chân thành cám ơn.
|
1 Attachment(s)
Trích:
Đô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. |
giúp em lỗi của chương trình
1 Attachment(s)
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> |
Alo! có ai biết trong CCS, hàm so sánh xem xâu S2 có trong xâu S1 là j` không ạ?
Sử dụng như thế nào ạ? Em đọc trong help thì hình như là hàm strstr(); Nhưng em so sánh ko thành công |
Chào mọi người, mình mới bắt đầu nghiên cứu về PIC, hiện tại cũng đang cài đặt và sử dụng CCS 4.65, tuy nhiên vì chưa biết gì nên lúc vào thử viết code thì không biết phải viết ở mục nào, chọn PIC trong CCS ra sao, liên kết với MPLAB như thế nào, sau khi biêt xong thì dịch ra file cho PIC như thế nào, file này cuối cùng có phải là nạp vào PIC để mô phỏng trong protues không?
Ai biết chỉ giáo dùm với? chỉ cần viết cũng được, không cần minh họa hình ảnh. |
led
Trích:
set_tris_b(0x00); |
cho em xin link down ccs c với các bác ơi!!!
anh em nào có link down ccs c post lại cho mình với!!! link bác F post từ đời nào rồi, giờ ko down dc!
|
1 Attachment(s)
là gà Pic.Nên cho mình hỏi lỗi này trong CCS
|
xin các bác giải thích các dùng watchdog hiệu quả?
nếu có ví dụ kèm theo thì tốt quá.thấy mọi người nói cái này rất quan trọng nhưng khi hướng dẫn thì không thấy các bác nhắc tới. thanks mọi người! |
cac cao thủ giấu bài kinh quá
không ai giúp đỡ mình sao |
Các bác ơi giúp em với. em muốn lập trình cho led ma trận chạy chữ với pic6F877A bằng ngôn ngữ C ,em không biết lập trình như thế nào các bác giúp em với
Địa chi mail của em : gawafer@yahoo.com |
Trích:
Code:
// long CCP_1 Code:
# byte CCP_1 ... |
Trích:
|
các anh chị ơi em dịch chương trình thì được nhưng nó cứ báo warning la sao nhưng vẫn dich sang file de chạy trên prôtust được
|
mọi người cho mình hỏi dòng PIC nào hỗ trợ 2 cổng USART vây?
Thanks! |
Các anh các bạn các vị tiền bối ơi, sao em đọc thấy nhiều topic nói mà ko thấy trả lời.
CCS có hổ trợ compiler cho dsPIC ko vậy ạ. Em cảm ơn. |
giúp code điều khiển động cơ
Trích:
|
phần mềm lập trình cho pic Mikro-C
minh mới tập tành học vxl, va hiện mình Mikro-C , nhưng vì mới làm quen vxl nên lang thang trên mạng nhưng chẳng có code cho nó gì hết ah,
sao mọi người không ai dùng phần mềm này ah, qua đây cho mình hỏi có ai dùng thi chỉ giáo cho mình với.. thanks mọi người. mail của em: auto.tvt@gmail.com |
Trích:
|
nhờ các pro chỉ giúp phần RS232
1 Attachment(s)
chào các bác!
em tập theo cái tuto của pác linh thì đã có thể gửi ký tự từ PC lên LCD bình thường rồi, nhưng phần ngược lại, dù có printf cỡ nào nó cũng không truyền được vào hyper terminal được ah :(. cái này em mô phỏng bên con 8051 thì ngon lành cành đào ạ, hix :| sau đây là code của e: #include <16f877a.h> #include <def_877a.h> #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9) #include <lcd_lib_4bit.c> //#include <input.c> int8 count=0; int1 t=1; #INT_RDA Receive_isr() { char c; count++; c = getc(); putc(c); if (c=='z') { LCD_putcmd(0x01); //Clear Screen count=0; } if ((count<=16) && (c!='z')) { LCD_putchar(c); } if ((count > 16) && (t==1)) { count=1; LCD_putcmd(0xc0); LCD_putchar(c); t=0; } if ((count > 16) && (t==0)) { count=1; LCD_putcmd(0x01); LCD_putchar(c); t=1; } } void main() { enable_interrupts(int_rda); enable_interrupts(GLOBAL); lcd_init(); lcd_putcmd(0x01); lcd_putcmd(line_1); printf("hello!"); while (1) {} } em có gửi theo mấy cái file, mọi người chỉ giúp e nhé :). |
Trích:
|
Trích:
|
đo nhiệt độ dùng lm335 và 16f877a hiển thị led 7 đoạn
1 Attachment(s)
e mới học vdk...đang viết 1 mạch đo nhiệt độ dùng lm335 và 16f877a hiển thị led 7 đoạn
ko bik đoạn code e viết sai chỗ nào, mong ae giúp cho..thanks # include <16f877a.h> # fuses hs,nowdt,nolvp # DEVICE 16f877a*=16 ADC=10 # use delay (clock=4000000) int Maled[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X9 0}; int hc=0,hdv=0,nhietdo,giatriadc; # int_timer1 void ngattimer() { set_adc_channel(0); delay_ms(10); giatriadc=read_adc(); nhietdo=((giatriadc-558.558)/2.048); hc=nhietdo/10; hdv=nhietdo%10; set_timer1(40536); } void hienthi(); void main() { set_tris_a (0xff); set_tris_b (0x00); set_tris_c (0x00); setup_timer_1(t1_internal|t1_div_by_8); set_timer1(40536); enable_interrupts(int_timer1); enable_interrupts(global); setup_adc(adc_clock_internal); setup_adc_ports(AN0); while(1) { hienthi(); } } void hienthi() { output_high (pin_c0); output_low (pin_c1); output_b (Maled[hc]); delay_ms(5); output_high (pin_c1); output_low(pin_c0); output_b (Maled[hdv]); delay_ms (5); } sơ đồ mạch: |
Trích:
#include "16f877a.h" #use delay(clock=20000000) #int_rb unsigned char x,i,a,b,tre; int16 mode; void trai()// chuong trinh con nhay trai sang { x=0x01; output_d(x); delay_ms(tre); for(i=1;i<=7;i++) {x=x<<1; output_d(x); delay_ms(tre); } } void phai()//chuong trinh con nhay phai sang { x=0x80; output_d(x); delay_ms(tre); for(i=1;i<=7;i++) { x=x>>1; output_d(x); delay_ms(tre); } } void trong() //chuong trinh con nhay trong ra { a=0x01; b=0x80; for(i=1;i<=7;i++) { a<<=1; b>>=1; output_d(a|b); delay_ms(tre); } } void ngat() { if(input(pin_b0)) if(mode<2)mode++;//chuyen che do tang len o b0 if(input(pin_b1)) if(mode<0 )mode--;//chuyen che do tang len o b1 if(input(pin_b2)) if(tre<100) tre=tre+100;//tang thoi gian tre cho led if(input(pin_b3)) if(tre>100) tre=tre-100;//giam thoi gian tre cho led } void main() { set_tris_b(0xff); enable_interrupts(int_rb); enable_interrupts(GLOBAL); mode=0; while (true) case 0: trai();break; case 1: phai();break; case 2: trong();break; } |
mọi người ơi giúp mình với. mình tìm chương trình pic c cả ngày rồi,cài vào rồi lại xóa không biết bao nhiêu lần mà cũng không tìm ra phiên bản thích hợp. cứ mỗi lần compile cái file.c (đã chạy tốt trên máy khác,có thể phiên bản cũ) thì nó lại báo error! mình xài win 7 64bit untimate. ức chế quá!
|
Trích:
switch (cmd) { case 0: sthing; break; case 1: sthing; break; case 2: sthing; break; } |
help!!!
Các bác ơi cho e hỏi e cài CCS nhưng mà bị báo lỗi " Exception EInoutError in module pcwwiz.exe at 00833f6 I/O error 123 " , k biết phải làm thế nào nữa. Các pro chỉ cho e với ạ!!! e cảm ơn ạ.
|
các anh cho em hỏi đoạn chương trình sau co nghĩa như thế nào ak?
#int_timer0 void interrupt_timer0(){ int1 a; int16 count; set_timer0(56); ++count; if(count == 500) { count=0; a=~a; RB0=a; } } theo em nghĩ thì khi timer0 đêm được 200 lần( set_timer0(56); 256-56=200) thì biến cuont tăng lên 1. vậy trong quá trình chờ biến count đếm được 500 lần tương ứng với 100ms thì con pic16f877a có làm gì không? nếu làm thì khi thỏa mãn điều kiện IF thì làm sao pic có thể thực hiện các lệnh trong điều kiện đó. thanks all! |
Trích:
Cái 100ms không tính được vì nó phụ thuộc vào xung nhịp mà mình đưa vào. Khi count=500; thì count=0; a = đảo a; chân RB0 =a; và quá trình lại được tiếp diễn... |
cảm ơn các anh đã giải thích! nguyên code là như sau:
#include <16F877A.h> #include <DEFS_16F877A.h> #device 16F877*=16 ADC=10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=4000000) #use fast_io(b) #use fast_io(c) #use fast_io(d) #int_timer0 void interrupt_timer0(){ int1 a; int16 count; set_timer0(56); ++count; if(count == 500) { count=0; a=~a; RB0=a; } } void main() { set_tris_b(0); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); enable_interrupts(int_timer0); enable_interrupts(global); set_timer0(56); while(true) { } } em chỉ copy ở page 1 thôi thắc ở cái đoạn đó mong các anh giải thích giúp em!! thanks all |
Múi giờ GMT. Hiện tại là 05:07 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam