PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 13-03-2010, 11:02 PM   #1
nhoacquy2512
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
nhoacquy2512 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 12:42 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam