|
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 |
21-03-2014, 11:22 PM | #2 |
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 96
: |
cái này không khó. tang bạn nè đây là chương trình minh viết rộng hơn về ý tường của bạn.
//=============== PIC16F877A-ENCODER-LCD ======================= //* Tac gia: Lam Bao Trung //* Ngay Viet: 25/05/2013 //* Ngay ket thuc: //* Phan Cung: PIC16F877A, LCD2X16, ENCODER 100 //* Chuong trinh: Hien thi nhiet do tu moi truong //================================================== ============ #include <ENCODER-1XUNG.h> #INCLUDE <D:\MACH DIEN\PIC\ENCODER\lcd_lib_4bit.C> #INCLUDE <D:\MACH DIEN\PIC\ENCODER\DEF_877A.H> float rpm,V; INT32 COUNTER,COUNTER1; INT8 I,ADC; #INT_ext VOID EXT() { COUNTER++; COUNTER1++; IF(I>=10) { disable_interrupts(INT_TIMER1); //RPM=(float)(counter*((3600*0.00169)/12)); //RPM=(counter*0.507); RPM=(counter*0.2535); counter=I=0; enable_interrupts(INT_TIMER1); SET_TIMER1(3001); } IF(counter1>=12) { V=V+0.00169; COUNTER1=0; } } #int_timer0 void timer0() { ADC=(FLOAT)READ_ADC()/131.07; } #int_timer1 void timer() { set_timer1(3001); I=I+1; } void main() { SETUP_TIMER_1(T1_inTERNAL|T1_DIV_BY_8); setup_TIMER_0(T1_inTERNAL); EXT_INT_EDGE(1,L_TO_H); ENABLE_INTERRUPTS(INT_EXT); enable_interrupts(INT_TIMER1); enable_interrupts(int_timer0); ENABLE_INTERRUPTS(GLOBAL); SET_TIMER1(3001); SET_TIMER0(0); setup_adc(adc_clock_internal); setUP_adc_ports(RA0_analog); set_adc_channel(0); LCD_INIT(); v=rpm=counter=0; WHILE(TRUE) { LCD_PUTCMD(0X80); PRINTf(LCD_PUTCHAR,"%f Kmh %u",RPM,COUNTER1); LCD_PUTCHAR("\n\r"); LCD_PUTCMD(0XC0); PRINTF(LCD_PUTCHAR,"%f %u C",V,ADC); LCD_PUTCHAR("\n\r"); } } |