| 
			
			
			
			 Nhập môn đệ tử 
			
		
			
			
			
				 
				Tham gia ngày: Jun 2009 
				
				
				
					Bài gửi: 7
 
: 
 
				 
				
				
				     
			 					
		
	 | 
	
	
	
	
		
			
			 
				
				pic 18f4580 và led matrix
			 
			 
			
		
		
		
		em đã làm xong led matrix 64x8 sử dụng con pic16f877a để quét hàng và đưa data ra 8 con 595,em đã làm xong nhưng chữ hiển thị được rất ít vì thế em đã chuyển sang dùng pic18f4580 với đoạn code viết cho 16f877a.Phần cứng em cũng dùng lại của con 16f luôn,nhưng sao khi nạp chương trình vào 18f thì nó không chạy mấy anh nhi? 
mấy anh xem giúp em với 
//==================================================  ============================ 
//==================================================  =========================== 
//===============CHUONG TRINH LED MATRIX GIAO ================================= 
//==================================================  =========================== 
//----------------------------------------------------------------------------- 
// MO TA       : 
// CHUONG TRINH: 
//               - su? dung con tro de truy xuat tung phan tu trong mang 
//               - dua vao ham xuat gia tri ra ic 74hc595 
// 
//----------------------------------------------------------------------------- 
//==================================================  ============================ 
#include <18f4580.h> 
//#include <16f877a.h> 
//#include <def_877a.h> 
#fuses NOWDT, NOPUT,HS,NOPROTECT,NOLVP,NOPBADEN,MCLR,NODEBUG,NOB  ROWNOUT, NOCPD, NOWRT                               //cho 18f4580 
#device *=16 ADC=8 
//#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT  //cho 16f877a 
#use delay(clock=12000000) 
//==================================================  =========================== 
//==========PHAN KHAI BAO PHAN CUNG=========================================== 
//---------------------------------------------------------------------------- 
#define    SER   PIN_A0  //DUA DU LIEU VAO 
#define    SCK   PIN_A2  //Chân cap xung duong de dua data vào trong thanh ghi dich 
#define    RCK   PIN_A1  //Khi data dã vào trong thanh ghi d?ch, dua m?t xung ra chân này d? dua data t? thanh ghi d?ch ra các chân c?a IC74HC595 chan 12 
//---------------------------------------------------------------------------- 
#use fast_io(a) 
#use fast_io(d) 
//----------------------------------------------------------------------------- 
//=====PHAN KHAI BAO BIEN==============================================  ======= 
//----------------------------------------------------------------------------- 
int8 j,i,hang=0,z=0,u=0,e=0; 
unsigned int8 data_ram[8][9]; 
//----------------------------------------------------------------------------- 
//==================================================  ============================ 
const unsigned char BitmapData[8][29]= { 
 
0xF0,0x78,0xC7,0x38,0xC7,0x85,0xFF,0xE7,0x1D,0x8F,  0x73,0x5C,0xC0,0x8C,0x00,0x00,0x1C,0xC0,0x08,0x00,  0x24,0x00,0x80,0x7B,0x07,0xEE,0x00,0x00,0x00, 
0x98,0x31,0xC2,0x70,0x62,0x86,0xD6,0xCC,0x88,0x19,  0x27,0x66,0xE0,0x4D,0x01,0x80,0x08,0xE0,0x11,0x00,  0x18,0x00,0x00,0x33,0x02,0xCC,0x00,0x00,0x00, 
0x0C,0x33,0xC2,0xD1,0x32,0x04,0xC6,0xCC,0xC8,0x30,  0x2D,0x43,0xC0,0x00,0x00,0x80,0x00,0xC0,0x00,0x00,  0x00,0x00,0x00,0x23,0x01,0xCC,0x00,0x00,0x00, 
0x0C,0x33,0xA2,0xD1,0x32,0x00,0xC6,0xC3,0xC8,0x30,  0x2D,0x03,0xF0,0xCE,0xF9,0xE0,0xB7,0xF0,0x1C,0x7C,  0x9C,0x8F,0x0F,0x76,0x71,0xCC,0x9C,0xF3,0x0D, 
0x0C,0x33,0xE2,0x91,0x33,0x00,0xC6,0xC6,0xC8,0x30,  0x39,0x03,0xD8,0x6C,0xB3,0xC1,0xF6,0xD8,0x32,0xD8,  0x32,0xDB,0x06,0x76,0xD9,0xCC,0xD6,0x66,0x1B, 
0x0C,0x33,0x12,0x13,0x33,0x0F,0xC6,0xC6,0xC8,0x30,  0x31,0xF3,0xD8,0xEC,0xB3,0xC1,0x36,0xD8,0x3C,0xD8,  0x3C,0x9B,0x03,0xCC,0xF8,0xCC,0xC6,0x66,0x1B, 
0x98,0x31,0x12,0x13,0x63,0x06,0xC6,0xCC,0x88,0x19,  0x31,0x66,0xD8,0x6C,0xB0,0xC1,0x36,0xD8,0x36,0xD8,  0x36,0xDB,0x00,0xCC,0x18,0xCC,0xC6,0x66,0x1B, 
0xF0,0xE0,0xB9,0x3F,0xC2,0x03,0xEF,0x9D,0x07,0x8F,  0x23,0x3C,0xF0,0xDF,0xBB,0xC3,0x7D,0xF0,0x7D,0xDC,  0xFD,0xBB,0x0F,0xCC,0xF0,0xFE,0x9D,0x73,0x3B 
 
}; 
//============================CHUONG TRINH CON================================== 
//==================================================  ============================ 
//---------------------------DOI TU THAP PHAN SANG BCD-------------------------- 
 
//==================================================  ============================ 
//------------------------------------------------------------------------------ 
//==================================================  ============================ 
void Init_595(void) 
{ 
output_low(RCK); 
output_low(SCK); 
output_low(SER); 
} 
//====================HIEN THI ============================================ 
 
//----------------------------------------------------------------------------- 
#int_timer0 
void interrupt_timer0() 
{                 //tuc la thanh ghi dich se dich tu bit thap den bit cao cua? cua bien data 
unsigned int8 cot,port_d=0; 
//----------------------------------------------------------------------------- 
unsigned int8 data,i; 
//------------------------------------------------------------------------------//----------------------------------------------------------------------------- 
Output_d(0x00); 
for(cot=8;cot>0;cot--) 
{ 
 data =data_ram[hang][cot-1]; 
        for(i = 0;i<8;i++) 
     { 
       if(data&0x80)//truyen bit co trong so cao truoc 
         output_high(SER); 
       else 
         output_low(SER); 
       output_high(SCK);   //DUA 1 XUNG DUONG VAO CHAN SCK DE DUA DU LIEU VAO TRONG IC 
       output_low(SCK);   //DUA CHAN SCLR VE LAI MUC THAP 
       data =data<<1; //dich tra 1 bit 
     } 
     } 
 //==================================================  ===================== 
    output_high(RCK); 
    output_low(RCK); 
   bit_set(port_d,hang); 
   Output_d(port_d); 
set_timer0(220); 
hang=hang+1;if(hang==8) hang=0; 
} 
//==================================================  ============================ 
void main() 
{ 
// Thiet lap che do cho PORTB 
  set_tris_a(0); 
  set_tris_d(0); 
 Init_595(); 
 //--------------------------------------------------------------------------- 
for(j=0;j<8;j++) 
{for(i=0;i<9;i++) 
{data_ram[j][i]=0;//BitmapData[j][i]; 
} 
} 
 //------------------------------------------------------------------------- 
 enable_interrupts(GLOBAL); 
 enable_interrupts(INT_TIMER0); 
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); 
  set_timer0(220);// T_dinhthi = 2*(256 - 6)*1us = 500us 
 //==================================================  ========================== 
//==================================================  =========================== 
while(1) 
{ 
  for(i=0;i<8;i++) 
     { 
       for(j=0;j<9;j++) 
         { 
          data_ram[i][j]>>=1; 
          if(bit_test(data_ram[i][j+1],0)) 
             bit_set(data_ram[i][j],7); 
          else 
             bit_clear(data_ram[i][j],7); 
         } 
            if(bit_test(BitmapData[i][z],e)) 
             bit_set(data_ram[i][8],7); 
            else 
             bit_clear(data_ram[i][8],7); 
                       } 
     delay_ms(100); 
     e=e+1; 
    if(e==8) {e=0;z=z+1;} 
    if(z==29) z=0; 
 } 
} 
 
đoạn code này đã chạy được cho 16f877a rồi,các anh coi giúp em 
		
	
		
		
		
		
		
	
	 |