|
Tài trợ cho PIC Vietnam |
Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua |
|
Ðiều Chỉnh | Xếp Bài |
24-10-2012, 03:59 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Mar 2012
Bài gửi: 22
: |
Mọi người cho mình hỏi về cái thuật toán đo tần số của 2 máy phát tí!
mình dùng chương trình này đo tần số của 2 nguồn điện được không mọi người??
#include <16F877A.h> #include <def_877a.h> #device *=16 ADC=10 #use delay(clock=4000000) #FUSES XT #USE FAST_IO(D) #USE FAST_IO(b) #USE FAST_IO(c) #bit rs = portb.5 #bit rw = portb.4 #bit en = portb.3 int1 e,e1,e2; int8 i,j; int16 adc1,adc2; int16 x,y,u,f1,f2,df; //#ext_timer1 //void trantimer1() //{ // int8 hs; // hs++; //} //#ext_timer0 //void trantimer0() //{ // int8 d; // d++; //} #int_rb void tinhf() { if (rb6==0) if (e1==0) { set_timer1(0); e1=1; } else { f1=get_timer1(); e1=0; e=1; } if (rb7==0) if ((e==0)&&(e1==1)) { df=get_timer1(); } if (e==1) if (e2==0) { set_timer1(0); e2=1; } else { f2=get_timer1(); e2=0; e=0; } } //-------------------------------------------------------- void lenh_lcd(int8 malenh) { portd=malenh; rs=0; rw=0; en=1; delay_us(5); en=0; delay_ms(3); } //-------------------------------------------------------- void data_lcd(unsigned char dulieu) { portd=dulieu; rs=1; rw=0; en=1; delay_us(5); en=0; delay_ms(3); } //-------------------------------------------------------- // do dien ap void docap1() { set_adc_channel(0); delay_us(10); adc1 =read_adc();// cong cac gia tri adc DELAY_US(10); } void docap2() { set_adc_channel(1); delay_us(10); adc2 =read_adc();// cong cac gia tri adc DELAY_US(5); } //--------------------------------------------------- void main() { set_tris_a(0xFF); set_tris_b(0xc0); set_tris_d(0); set_tris_c(0); e=0; e1=0; e2=0; u=0; df=0; f1=0; f2=0; ///------------------thiet lap ngat enable_interrupts(int_rb); enable_interrupts(global); ext_int_edge(h_to_l); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //------------------- //setup_ADC(ADC_clock_internal); //setup_ADC_ports(RA0_RA1_RA3_ANALOG); //------------------- lenh_lcd(0x38); lenh_lcd(0x0e); lenh_lcd(0x01); lenh_lcd(0x06); //--------------- lenh_lcd(0x80); data_lcd("U1:"); lenh_lcd(0x88); data_lcd("U2:"); delay_ms(1); lenh_lcd(0xC0); data_lcd("F1:"); delay_ms(1); lenh_lcd(0xC8); data_lcd("F2:"); delay_ms(1); while (true) { // hien thi ap1 //docap1(); x=0*0.24414+44,55;// lenh_lcd(0x83); data_lcd(x/100+48); delay_ms(1); data_lcd((x%100)/10 + 48); delay_ms(1); data_lcd((x%100)%10 + 48); delay_ms(1); //------------------------------- //hien thi ap 2 //docap2(); y=0*0.48828;// lenh_lcd(0x8b); data_lcd(y/100+48); delay_ms(1); data_lcd((y%100)/10 + 48); delay_ms(1); data_lcd((y%100)%10 + 48); delay_ms(10); //----------------------- hien thi TAN SO 1 f1=f1*0.00001; lenh_lcd(0xc3); data_lcd(f1/1000+48); delay_ms(1); data_lcd((f1%1000)/100 + 48); delay_ms(1); lenh_lcd(0xc5); data_lcd(","); delay_ms(1); data_lcd(((f1%1000)%100)/10 + 48); delay_ms(1); data_lcd(((f1%1000)%100)%10 + 48); delay_ms(1); //------------------------------hien TAN SO 2 f2=0.00001*f2; lenh_lcd(0xcb); data_lcd(f2/1000+48); delay_ms(1); data_lcd((f2%1000)/100 + 48); delay_ms(1); lenh_lcd(0xcd); data_lcd(","); delay_ms(1); data_lcd(((f2%1000)%100)/10 + 48); delay_ms(1); data_lcd(((f2%1000)%100)%10 + 48); delay_ms(1); } } thay đổi nội dung bởi: thuynavy, 12-12-2012 lúc 09:22 PM. |
|
|