![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
Theo mình để thực hiện việc này thì bạn dùng một Timer để thực hiện vòng quét Led (hàm hiển thị của bạn) còn trong chuơng trình main bạn sẽ thay đổi dữ liệu để hiện được các số khác nhau.
|
![]() |
![]() |
![]() |
#2 | |
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 20
: |
vậy cho mình hỏi dùng timer ?
Trích:
void ngat_timer1() { int time=0,count=0; setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); set_timer1(24280); time++; // timer 1 tràn sau ==> 500 000 us = 0.5s if(time==2) // 2* 500 000 =1s { count++; if(count==1) { portb=bang_ma[n1]; output_low(pin_d0);//mo transistor để led7 doan dc cap 5v(dung anot chung) } if(count==2) { portb=bang_ma[n2]; output_low(pin_d1);//tuong tu o d0 } if(count==3) { portb=bang_ma[n3]; output_low(pin_d3);// } if(count==4) { portb=bang_ma[n4]; output_low(pin_d4);// } count=0; } enable_interrupts(int_timer1); enable_interrupts(global); } bác coi giup sau e thực hiên quét mà kô dc. |
|
![]() |
![]() |
![]() |
#3 | |
Đệ tử 5 túi
|
Trích:
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); set_timer1(24280); enable_interrupts(int_timer1); enable_interrupts(global); Với lại hàm if, mấy cái sau bạn thử dùng else if xem sao. Chứ if thì có thể nó sẽ bị lẫn lộn đó.
__________________
Bảng ledsigns chất lượng cao... http://www.ledviet.info - manhha2700@yahoo.com Đt:0949299699 |
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 20
: |
The còn cái này thì sao ha bác
#include <16f877a.h>
#fuses HS,NOWDT #use delay(clock=4000000) #byte trisb=0x86 #byte portb=0x06 #BYTE TRISD=0X88 #BYTE PORTD=0X08 char bang_ma[10]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}; char n1,n2,n3,n4; char sec,min,h; #int_timer1 void ngat_TMR1() { int time,count; set_timer1(15535); time++; if(time=1);//dc 1/2s //<thuc hien cong viec> { count++; if(count==1) { portb=bang_ma[N1]; OUTPUT_LOW(PIN_A0); DELAY_MS(10); OUTPUT_HIGH(PIN_A0); } if(count==2) { portb=bang_ma[N2]; OUTPUT_LOW(PIN_A1); DELAY_MS(10); } if(count==3) { portD=bang_ma[N3]; OUTPUT_LOW(PIN_A4);DELAY_MS(10); OUTPUT_HIGH(PIN_A4); } if(count==4) { portD=bang_ma[N4]; OUTPUT_LOW(PIN_A5); DELAY_MS(10); } count==0; } time==0; } //SU DUNG HAM NGAT TIMER0 DE HIEN THI #INT_TIMER0 void ngat_timer0() { int dem; set_timer0(15536); //mac dinh gia tri ban dau cho TMR0 dem++; if(dem==20) //20*50000=1s { dem=0; sec++; } if(sec==60) { sec=0; min++; } if(min==60) { min=0; h++; } if(h==24) { h=0; } } VOID main(void) { trisb=0x00; portb=0xff; TRISD=0X00; PORTD=0XFF; setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); set_timer0(15536); enable_interrupts(int_timer0); enable_interrupts(global); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); set_timer1(15535); enable_interrupts(int_timer1); enable_interrupts(global); N1=H/10; N2=H%10; N3=SEC/10; N4=SEC%10; while(1) { NGAT_TIMER0(); N1=H/10; N2=H%10; N3=SEC/10; N4=SEC%10; ngat_TMR1(); } } //em cho 4 led 7 doạn 2 led gắn với 2 port.và nguon` vao` 5v nối tới con trans tới các chân a0-a3. |
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 20
: |
gởi a !
vậy nếu dùng else thì dùng sáo cho đúng hả a. !!...
|
![]() |
![]() |
![]() |
|
|