PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Ma trận 16x128 (http://www.picvietnam.com/forum/showthread.php?t=31235)

dtcn_112 21-11-2012 02:20 AM

Ma trận 16x128
 
3 Attachment(s)
em đang làm một bảng led 16x128 thời hạn có 4 ngày(đã hết hạn rùi )nhưng em muốn tìm hiểu thêm về thuật toán quét led ma trận như dịch chuỗi chữ trên màn hình led ,em đã nạp chíp rùi
em hay dùng 8051 và AVR nên con PIC hơi khó với em em biết lạp trình với PIC lâu rùi nhưng đều quên hết vì không dùng và chỉ lập trình với cổng vào ra ,chưa có gì là sâu xa vì em tự học
đây là hình ảnh khối led

dtcn_112 21-11-2012 02:23 AM

còn đây là code
#include <16F877A.H>
#include <font_c.h>
#fuses NOWDT,HS,,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP ,NOCPD,NOWRT
#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#byte porte=0x09

#BIT SDA =PORTA.0
#BIT SH_CP =PORTA.1
#BIT ST_CP =PORTA.3
INT32 i;
unsigned char a,b;
unsigned int e=0;
void data74hc595out()
{
ST_CP=0;ST_CP=1;
//output_low(pin_a3);output_high(pin_a3);
}
void napdulieu74hc595(unsigned char data)

{
unsigned char i;
for(i=8;i>0;i--)
{
SDA= ~((data>>(i-1))&(0x01));//(data>>(i-1))&(0x01)
SH_CP=0;SH_CP=1;
}
}

void display16x128(void)
{
for(b=0;b<16;b++)/*so hang la 16*/
{

for(a=0;a<16;a++)
{
napdulieu74hc595(_bvh_mspace BitmapData[e]);
e+=1;/*nap du 8 byte*/
if(e>255)e=0;
}
PORTC=PORTD=0x00;
data74hc595out();
if(i>32768)i=0x01;
PORTC=i/256;PORTD=i;
//delay_us();
i*=2;
}
}
void main(void)
{


i=0x01;
set_tris_a(0b000000);PORTA=0b100100;
set_tris_b(0b11111111);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b000);
PORTC=PORTD=PORTE=0x00;

while(TRUE)
{

display16x128();

}
}


đây là thư viện font_c.h
//================================================== ====================
// Bitmap Data Created by RTB (c) 2009 Bui Viet Hoang
// 16 x 64 pixels - Monochrome
// Vertical Scan Lines - Left to Right, Top to Bottom
//================================================== ====================

#ifndef BVH_BMP_SIZE
#define BVH_BMP_SIZE
#define BVH_BMP_WIDTH 16
#define BVH_BMP_HEIGHT 64
#endif // BVH_BMP_SIZE

#ifndef _bvh_mspace
#define _bvh_mspace // const // code // eeprom // etc...
#endif // _bvh_mspace

unsigned char const _bvh_mspace BitmapData[]= {

/*------------------------------------------------------------------------------
; If font display distortion, please check Fonts format of setup.
; Source file / text :LCD Font Maker
; Width x Height (pixels) :128X16
; Font Format/Size : Monochrome LCD Fonts ,Horizontal scan ,Big endian order/256Byte

------------------------------------------------------------------------------*/
//0x80,0x10,0x10,//Width pixels,Height pixels,Width bytes
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xCF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x67,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,0x77,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0x7F,0xFF, 0xFF,0xF8,0xFC,0xF3,0x3C,0xFF,
0xFF,0xFF,0xFF,0xFF,0x3C,0x7C,0x71,0x9C,0xCF,0x3C, 0x1F,0xF0,0x7C,0xF3,0x3C,0xFF,
0xFE,0x1E,0x79,0xF1,0xFB,0xBC,0xA9,0x9C,0xCF,0x38, 0x0F,0xE7,0x3C,0xF3,0x3C,0xFF,
0xFC,0x0E,0x79,0xE0,0xF3,0x9C,0xD9,0x9C,0xCF,0x33, 0xFF,0xCF,0x9C,0x73,0x3C,0xFF,
0xF9,0xE6,0x79,0xCE,0x73,0x9C,0xD9,0x9C,0xC7,0x33, 0xFF,0x9F,0xCC,0x33,0x3C,0xFF,
0xF9,0xFE,0x79,0x9F,0x33,0x80,0x79,0x9C,0xC3,0x33, 0xFF,0x9F,0xcc,0x93,0x00 0xFF,
0xF9,0xFE,0x79,0x9F,0x33,0x9C,0xF9,0x9C,0xC9,0x33, 0xFF,0x80,0x0C,0xC3,0x00,0xFF,
0xF9,0xFE,0x01,0x80,0x33,0x9C,0xF9,0x9C,0xCC,0x33, 0xC7,0x80,0x0C,0xE3,0x3C,0xFF,
0xF9,0xFE,0x01,0x80,0x33,0x9C,0xF9,0x9C,0xCE,0x33, 0xCF,0x9F,0xCC,0xF3,0x3C,0xFF,
0xF9,0xF6,0x79,0x9F,0x33,0x9C,0xF9,0x9C,0xCF,0x33, 0xCF,0x9F,0xCC,0xF3,0x3C,0xFF,
0xF9,0xE6,0x79,0x9F,0x33,0x9C,0xF9,0x9C,0xCF,0x39, 0xCF,0x9F,0xCC,0xF3,0x3C,0xFF,
0xFC,0x0E,0x79,0x9F,0x38,0x3C,0xF9,0xC1,0xCF,0x3C, 0x0F,0x9F,0xCC,0xF3,0x3C,0xFF,
0xFE,0x1E,0x79,0x9F,0x3C,0x7C,0xF9,0xE3,0xCF,0x3E, 0x1F,0x9F,0xCC,0xF3,0x3C,0xFF,
};

ngabg2012 15-07-2013 05:22 PM

Hôm nay mình mới xem bài này vì cũng đang phải làm bài tập matrix 16x128. ma minh thi lau roi cung khong dung pic. bạn giup minh nhe.

kqha1025 18-07-2013 11:49 AM

cái này mình cũng từng đam mê và làm thành công, mình dùng pic18, chạy 32x128 luôn mà vẫn ok nhưng mình đã ko làm lâu lắm rồi, mình nói qua thế này nhé:
Bạn có thể dùng ngoại vi SPI cứng của pic cũng như AVR để tăng tốc độ nhé, dùng pic18 thì bộ nhớ nó nhiều, ok thôi.

gamo 19-07-2013 02:23 PM

ặc, em nhìn mà hoa hết cả mắt các anh ạ


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam