![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jul 2011
Bài gửi: 2
: |
nhờ mấy anh giúp em code cảm biến srf04
em có code này viết cho cảm biến siêu âm,nhưng giá trị đọc về từ cảm biến nó chỉ giữ nguyên chứ ko chuyển đổi j khi em di chuyển cảm biến, các bác giúp em sử nó với.mà mỗi đoạn code em coi thì nó lại có một cách chia giá trị khác nhau,em ko biết nên chia ntn nên em lấy trong datasheet luôn.
#include <16f887.h> #FUSES,nowdt,noprotect,nolvp,put #use delay(clock=20000000) #use fast_io(a) #use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e) #byte porta=0x5 #byte portc=0x7 #byte portd=0x8 #byte portb=0x6 #byte porte=0x9 #bit c3=portc.3 #include <lcd.c> float kc=0; #INT_CCP1 void ccp1_isr() { set_timer1(0); //Cai gia tri cho Timer1 setup_ccp1(CCP_CAPTURE_FE); //chuyen sang do canh xuong kc=(get_timer1())/58; } void hienthi(int16 ) { lcd_gotoxy(1,1); printf(lcd_putc,"CACH VAT:%f",kc); lcd_gotoxy(14,1); Printf(LCD_putc,"cm"); lcd_gotoxy(2,2); lcd_putc("ROBOT TU HANH"); delay_ms(30); } void main() { LCD_init(); setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); setup_ccp1(CCP_CAPTURE_RE); enable_interrupts(INT_CCP1); // Cho phép ng?t khi CCP1 có tín hi?u enable_interrupts(GLOBAL); //---hien thi LCD--- while(TRUE) { set_tris_c(0x04); c3 = 1; //trigger delay_us(10); c3 = 0; hienthi(kc); delay_ms(50); } } |
![]() |
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Jul 2011
Bài gửi: 2
: |
ủa thấy hồi đầu mọi người bàn tán nhiều về con này lắm mà?sao ko thấy ai trả lời ta?
|
![]() |
![]() |
![]() |
#3 | |
Nhập môn đệ tử
Tham gia ngày: Aug 2011
Bài gửi: 7
: |
Trích:
//nguyen van duc //KS tu dong hoa //cong thuc tinh thoi gian T= (65536-VALUE)*(4/Fosc)*P #include <16F877A.h> #include <def_877a.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(d)//Dùng cái này thì trong chu+o+ng trình khi dùng các le^.nh io nhu+ output_low() , . . . nó se~ set chi? vo+'i 1 le^.nh , #use fast_io(b) #use fast_io(a) int16 thoigiantruyen,CCP1value; int16 CCP1Oldvalue; BOOLEAN CCP1Captured; int8 hangdonvi,hangchuc,hangtram; int16 ketqua; int8 i,k; #INT_CCP1 void ngat_ccp1() { set_timer1(0); } #INT_CCP2 void ngat_ccp2() { CCP1Value =CCP_2; CCP_2=0; CCP1Captured = TRUE; //j=0; } #INT_TIMER0 void interrup_timer0() {i++; set_timer0(8); if(i==5){ output_d(hangtram); output_high(pin_d5); } if(i==10){ output_d(hangchuc); output_high(pin_d6);} if(i==15){ output_d(hangdonvi); output_high(pin_d7);} if(i>=16){i=0;} } void triger() { output_high(PIN_A0); delay_us(12); output_low(PIN_A0); } void init_ccp() { setup_ccp1(CCP_capture_RE);//do xung canh len R setup_ccp2(CCP_capture_FE); setup_timer_1(T1_INTERNAL|T1_DIV_BY_4); //tang mot gia tri timer1 mat 4/5uS setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); CCP1value=0; CCP1Oldvalue=0; CCP1Captured=TRUE; enable_interrupts(INT_CCP1); enable_interrupts(INT_CCP2); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); } void Main() { init_ccp(); set_tris_d(0x00); set_tris_b(0x00); set_tris_c(0xff); //ff xac lap cac chan port C la chan input set_tris_a(0x00); set_timer0(8); while(true){ delay_ms(100); triger(); if(CCP1Captured){ thoigiantruyen=CCP1value*0.8; ketqua=thoigiantruyen/58; CCP1Captured=FALSE; if(ketqua>999){hangdonvi=0;hangchuc=0;hangtram=0;} else{ hangdonvi=ketqua%10; hangchuc=(ketqua/10)%10; hangtram=(ketqua/100); } } if(ketqua<175){output_high(PIN_A1); delay_ms(500); k=0;} k++; if(k>=5){ output_low(PIN_A1); delay_ms(500); k=0; } } } |
|
![]() |
![]() |
![]() |
|
|