![]() |
|
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ử 1 túi
Tham gia ngày: Nov 2011
Bài gửi: 11
: |
mọi người giúp mình với! lỗi nho nhỏ
chào các bạn!
Các bạn xem cái code mình với( quang báo dùng 16f877a). Sao mình đổi chân của Port C 4, 5, 6 sang 1,2,3 thì nó chạy không được ( mình tô đỏ trong code). mình gởi code lên. #include <16f877a.h> #include <font5x7.c> #use delay(clock=20m) #byte Port_B = 0x06 // Dinh nghia thanh ghi Port B #byte Port_C = 0x07 // Dinh nghia thanh ghi Port C #byte TRIS_B = 0x86 // Dinh nghia thanh ghi Tris B #byte TRIS_C = 0x87 // Dinh nghia thanh ghi Tris B #byte led_data = Port_B #bit data = Port_C.4 // Dinh nghia chan data la pin C.4 #bit clock = Port_C.5 // Dinh nghia chan data la pin C.5 #bit latch = Port_C.6 // Dinh nghia chan data la pin C.6 char led[32];//4led matran char font_buffer[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};// unsigned char string1[]="DO AN HE THONG NHUNG -- LED matrix 8x32 -- Sad_moon"; char dem_ngat, addr, leng, ky_tu, vi_tri; // Chuong trinh con day du lieu vao 595 // ULN 2803 dem dau ra dao nen day vao 1bit 0 va 31bit 1 void HC595(char cot){ char i; for(i=0;i<cot;i++){ //DUA CAC BIT 0 VAO` TRUOC data=1; // Dua bit 0 vao 595 clock=1; // Tao 1 xung o chan Clock de dua du lieu vao 595 clock=0; } data=0; // Dua bit 0 vao vi tri cot can hien thi clock=1; clock=0; for(i=(cot+1);i<=31;i++){ data=1; //Tiep tu dua bit 0 vao 595 cho du 32bit clock=1; clock=0; } latch=1; // Tao 1 xung o chan Latch de day du lieu ra cac cong va chot latch=0; } #int_timer0 // Khai bao su dung timer 0 // Chuong trinh ngat Timer0 void Scan(void){ set_timer0(6); //cai dat gia tri ban dau cho timer0 if((++dem_ngat)==2){ led_data=0xff; HC595(addr); led_data=led[addr]; addr++; if(addr>=32) addr=0; dem_ngat=0; } } // Chuong trinh con lay do dai chuoi ky tu void leng_string(void){ leng=0; while((string1[leng])!='\0') // Chay tu dau cho toi khi ket thuc chuoi leng++; } // Chuong trinh con Copy font chu vao bo dem void copy_font(void){ char j; for(j=0;j<=4;j++) font_buffer[j]=font[(string1[ky_tu]-32)].b[j]; // Copy ma font (5byte) tu ky tu can hien thi vao bo dem font_buffer font_buffer[j]=0xff; } // Chuong trinh con cho chu chay tu phai sang trai void kieu_1(void){ char j; for(j=31;j>0;j--) led[j]=led[j-1]; if(vi_tri>5){ vi_tri=0; copy_font(); ky_tu++; } else{ led[0]=font_buffer[vi_tri]; vi_tri++; } } // Chuong trinh chinh void main(){ int i; TRIS_B=0x00; TRIS_C=0x00; Port_B=0x00; Port_C=0x00; setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16); //tan so timer0 = precase/16 set_timer0(6); //dat gia tri ban dau cho RTC enable_interrupts(global);//cho phep ngat toan cuc enable_interrupts(int_rtcc); leng_string(); // Lay do dai ky_tu=0; while(true){ for (i=0;i<=31;i++) led[i]=0xff; while(ky_tu<=leng){ kieu_1(); delay_ms(50); } } } |
![]() |
![]() |
![]() |
|
|