![]() |
|
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: Jul 2007
Bài gửi: 154
: |
bạn ko cần dùng timer để quét led đâu. nên dùng delay thì đơn giản hơn. nếu cảm thấy led còn bị giật thì có thể giảm delay xuống cho phù hợn là được. nếu bạn cải cách phần cứng như tôi nói thì có thể dùng cách sau để hiển thị led
int chon_ic[4] = {0x01, 0x02,0x04,0x08}; void display() { int a,b,i; for(a = 0;a<30;a++) // điều chỉnh tốc độ dịch chữ { for(b = 0;b<4;b++) { portb = chon_ic[b]; // chọn ic 138 để quet for(i-0;i<8;i++) {porte = i; delay_ms(1);} // quet 138 } } } tại vị trí cần hiển thị chữ lên led bạn chỉ cần gọi hàm này là được. còn một điều rất quan trọng là trình mô phỏng rất hạn chế khi quét led, vì nếu thời gian quét càng nhỏ thì đồi hỏi tốc độ xử lý của máy tính càng cao, không đáp ứng được tốc độ quét của vxl do đó cũng có thể hiển thị sai (có thể bị giật hoặc không chạy). |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Nov 2007
Bài gửi: 20
: |
anh tungtot_vl cám ơn anh đã nhiệt tình giúp em quá nhiều rồi, em đã thử làm theo hướng của anh, em mới chỉ làm cho nó hiển thị thôi anh ạ, còn thực hiện dịch chữ thì chưa, nhưng nó giật mạnh quá anh ạ, có giải pháp nào ko anh.
|
![]() |
![]() |
![]() |
#3 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
lmd
Trích:
bài của bạn viết khó hiểu quá, vì tôi không hiểu cách trình bày của bạn. tôi có viết một đoạn code tương thích với phần cứng của bạn. bạn chạy thủ xem thế nào nhé. cách này viết hơi khó một tí nhưng nó rất thuận lợi để bạn thực hiện các hiệu ứng 1 cách dễ dàng. chúc vui vẽ #include <16F877a.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #device 16F877a*=16 ADC=8 #use delay(clock=4000000) #use fast_io(a) #byte porta=0x05 #use fast_io(b) #byte portb=0x06 #use fast_io(c) #byte portc=0x07 #use fast_io(d) #byte portd=0x08 #use fast_io(e) #byte porte=0x09 int8 const font[] = {131,191,191,191,255, 131,187,185,130,249,255, 131,235,235,247,255, 255,255,255, 239,131,171,187,199,255, 130,255, 129,42,169,255, 131,247,239,131,255, 255,255,255, 251,131,251,255, 131,190,188,131,249,255, 255,255,255, 183,131,191, 199,187,187,199,255, 255,255}; int const ic[] = {0x01,0x02,0x04,0x08}; int ht[32]; // ram cho man hinh void codinh(); void dinhtrai(); void display(); //============================ void codinh() { int a,b,c; for(a=0;a<32;a++) { ht[a] = font[a]; } for(b=0;b<20;b++)// delay {display();} } //========================= void dinhtrai() { int a,b,c; for(a=0;a<32;a++) { ht[a] = 0xff; } // xoa man hinh for(a=0;a<32;a++) { ht[31] = font[a]; display(); for(b=0;b<32;b++) { ht[b-1] = ht[b]; } } for(a=0;a<32;a++) { ht[31] = 0xff; for(b=0;b<32;b++) { ht[b-1] = ht[b]; } display(); } } //======================================== void display() { int a,b,i; for(a=0;a<20;a++) // toc do dich { for(b=0;b<4;b++) // chon ic quet { portb = ic[b]; for(i=0;i<8;i++) { portd = ht[b*8+i]; porte = i; delay_us(1000); } } } } void main() { set_tris_a(0x00); set_tris_b(0x00); set_tris_c(0x00); set_tris_d(0x00); set_tris_e(0x00); while(1) { codinh(); dinhtrai(); delay_ms(2000); } } |
|
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|