cho e hỏi mình muốn nạp chương trình vào vdk cụ thể là vdk 89s52 thì làm thế nào vậy các a.chỉ giúp e và cho e xin vài tấm ảnh minh hộ .cám ơn các pro
Thông báo
Collapse
No announcement yet.
Tutorial: Led ma trận bằng hình ảnh (completed)
Collapse
This is a sticky topic.
X
X
-
Nguyên văn bởi mrsayt00 Xem bài viếtcho e hỏi mình muốn nạp chương trình vào vdk cụ thể là vdk 89s52 thì làm thế nào vậy các a.chỉ giúp e và cho e xin vài tấm ảnh minh hộ .cám ơn các proNo __ Comment
Comment
-
mình xinh hỏi
Nguyên văn bởi nghaiha Xem bài viếtHôm nay ta bắt đầu viết những chương trình đầu tiên, từ cái dễ đến cái khó. Không thể nào có thể viết một phát mà có ngay một dòng chữ chuyển động ngay được. Giống như ta tập đi, từng bước một.
Ban đầu ta sẽ làm sao để bảng led ma trận của ta hiển thị được cứ một điểm sáng lại có một điểm tắt như sau:
Chương trình em sẽ viết rất đơn giản như sau:
Vậy là xong bài lập trình đầu tiên. Dễ như ăn cháo các bác nhỉ?
Đây là bài đầu tiên em chú thích kỹ, từ bài tiếp theo em sẽ chỉ đưa ra các phần chính. Còn chương trình cụ thể các bác hãy download ở link bên dưới.
Comment
-
Nguyên văn bởi nghaiha Xem bài viếtHôm nay ta bắt đầu bài 3: Thay thế hàm delay bằng ngắt Timer1. Sở dĩ ta phải dùng ngắt Timer thay cho hàm delay bởi trong khi delay thì ta sẽ không làm được gì cả. Còn sử dụng Timer thì trong thời gian chờ đợi ta có thể chuẩn bị dữ liệu, tính toán hiệu ứng cho hàng tiếp theo.
Em sẽ khai báo ngắt Timer1 như sau:
Timer1 có tần số hoạt động là 15625Hz tức là nó sẽ đếm 15625 lần trong vòng 1s. Ở đây, nó cứ đếm từ 0 đến 0x25 = 37 thì ngắt Timer1 sẽ được gọi. Như vậy ngắt Timer1 sẽ được gọi với tần số là 15625/37=422 lần/s.
Chúng ta phải nhớ kích hoạt ngắt nhé:
Chương trình ngắt Timer1 được viết như sau:
Như vậy mỗi khi ngắt Timer1 được gọi thì một hàng sẽ được quét. Ta có tất cả 8 hàng. Do đó tần số quét sẽ là: 422/8=53Hz. Với tần số quét này màn hình led sẽ không bị chớp.
Các bác có thể thấy trong vòng lặp while (1) không còn câu lệnh nào cả. Việc quét led hoàn toàn thực hiện tự động nhờ Timer1.
Các bác nghỉ lấy sức, qua bài 4 chúng ta sẽ học cách tạo bộ font chữ bằng chương trình Microsoft Excel như thế nào.
Source code của bài 3 đây:
http://rapidshare.com/files/134768565/bai3.doc
Code:3. Thay delay bang ngat Timer 1 /***************************************************** This program was produced by the CodeWizardAVR V1.25.8 Standard Automatic Program Generator © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 7/27/2008 Author : Nguyen Hai Ha Company : www.softviet.net Comments: Chip type : ATmega8515L Program type : Application Clock frequency : 16,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8515.h> #include <delay.h> // SPI functions #include <spi.h> #define SCK PORTB.7 #define DATA PORTB.5 #define SCL PORTB.3 #define B PORTC.1; #define C PORTC.2; #define OE PORTC.3; unsigned char r=0; void LatchData(){ SCL=0; SCL=1; } // Timer 1 output compare A interrupt service routine interrupt [TIM1_COMPA] void timer1_compa_isr(void) { if (r & 1){ spi(0b10101010); spi(0b10101010); spi(0b10101010);} else { spi(0b01010101); spi(0b01010101); spi(0b01010101); } LatchData(); PORTC=r+8; r++; if (r==8) r=0; } void main(void){ // SPI initialization // SPI Type: Master // SPI Clock Rate: 4000,000 kHz // SPI Clock Phase: Cycle Half // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=0x50; SPSR=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 15.625 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x25; // Quyet dinh toc do quet OCR1BH=0x00; OCR1BL=0x00; DDRB=0xFF; DDRC=0xFF; SCL=1; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x40; // Global enable interrupts #asm("sei") while (1){ } }
|
Comment
-
cho em hỏi maled: có ý nghĩa gì thế mọi người
org 0000h
batdau:
mov DPTR,#maled
lap:mov r0,#30
main1 :
mov r2,#24
mov r1,#16
mov r7,#8
mov b ,#0
mov r3,#7fh
main2:
mov a,r3
rl a
mov r3,a
mov p1,a
setb p3.3
setb p3.2
setb p3.3
clr p3.0
mov a,r2
movc a,@a+DPTR
mov p2,a
inc r2
acall delay
cjne r3,#07fh,main2
main3:
mov a,r3
rl a
mov r3,a
mov p1,a
clr p3.1
setb p3.0
setb p3.2
setb p3.3
mov a,r1
movc a,@a+DPTR
mov p2,a
inc r1
acall delay
cjne r3,#07fh,main3
main4:
mov a,r3
rl a
mov r3,a
mov p1,a
clr p3.2
setb p3.0
setb p3.1
setb p3.3
mov a,r7
movc a,@a+DPTR
mov p2,a
inc r7
acall delay
cjne r3,#07fh,main4
main5:
mov a,r3
rl a
mov r3,a
mov p1,a
clr p3.3
setb p3.2
setb p3.0
setb p3.1
mov a,b
movc a,@a+DPTR
mov p2,a
inc b
acall delay
cjne r3,#07fh,main5
djnz r0,main1
inc DPTR
mov a,DPL
cjne a,#168,lap
sjmp batdau
delay :
push 04
push 05
push 06
mov r4,#4
n1:mov r5,#4
n2:mov r6,#4
n3:djnz r6,n3
djnz r5,n2
djnz r4,n1
pop 06
pop 05
pop 04
ret
delay2:
mov r4,#4
m1:mov r5,#4
m2:mov r6,#4
m3:djnz r6,m3
djnz r5,m2
djnz r4,m1
ret
org 800h
maled: db 0h, 0h, 0h, 0h, 0h, 0h ,0h, 0h
db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
db 0h, 0h, 7eh, 10h, 8h, 70h, 0h,8h
db 3eh, 48h, 20h,0h,8h,3eh,48h,20h
db 0h ,0fch, 14h, 14h ,8h, 0h,0h, 24h
db 0h, 40h, 0a0h, 50h, 28h, 14h,0ah, 4h
db 0h, 7eh, 8h, 8h, 8h,7eh,0h,3ch
db 42h,42h,42h,3ch,0h,7eh,0h, 0h
db 3ch, 42h, 42h, 62h, 7ch,80h,0h,3eh
db 40h, 40h, 3eh, 0h,7ch,0ah,0ah, 0ah
db 7ch, 0h, 7eh, 4h, 8h,10h ,7eh, 0h
db 0h, 8h, 7eh, 4ah, 4ah, 42h, 3ch, 0h
db 7eh, 0h, 7eh,4ah, 4ah, 42h ,0h, 7eh
db 4h, 8h, 10h, 7eh, 0h, 0h, 2h, 2h
db 7eh, 2h, 2h,0h ,3eh, 40h ,40h, 40h
db 3eh, 3h ,0h, 40h, 0h, 3ch ,42h, 42h
db 24h, 0h,3ch, 42h, 42h, 3ch, 0h ,7eh
db 4h, 8h, 4h, 7eh, 0h, 0h, 0h ,0h
db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
end
Comment
-
Nguyên văn bởi bin_rom_95 Xem bài viếttran dùng trong trong mạch ma trận led kia có chức năng gì
tui cóp nhặt, ăn trộm được và đưa ra ý như thế này: giả sử bạn có mảng 8 byte a=[byte1, byte2,,byt3,....byte8] và matran 1 x 8 (hehe)
khi đó muốn nó chạy sang trái thì bit byte1^7 được đẩy ra ngoài. bằng lệnh dịch trái. byte1=byte1<<1; bit2^7 của byte 2 được thế chỗ vào bit1^0,.... cứ như thế bit3^7 thế vào bit2^0..... bit8^0 sẽ được giá trị 0. nói như thế đối với byte vấn khó hiểu. vậy làm với mảng thế này dễ hiểu hơn nè :
mảng a[64]có 64 phần tử để hiển thị lên 1 hàng của matran. khi đó muốn nó chạy sang trái thì :
a[0]=a[1]; a[1]=a[2];....a[62]=a[63];a[63]=0;hiển thị lần 1
a[0]=a[1]; a[1]=a[2];....a[62]=a[63];a[63]=0;hiển thị lần 2
.................................................. ............................
a[0]=a[1]; a[1]=a[2];....a[62]=a[63];a[63]=0;hiển thị lần 60
là chạy sang trái ngay. các bạn thử nghĩ xem có đúng không rồi chém nhé.!chỉ có tâm hồn là nơi duy nhất: có thể biến thiên đường thành địa ngục và ngược lại có thể biến địa ngục hóa thiên đường
Everything should be made as simple as possible, but not simpler
Comment
-
Nguyên văn bởi lee_nguyen Xem bài viếthì hục đọc 1 đống tài liệu về led ma trận, đang định làm 1 cái 32X64 mà thấy nản quá, chẳng hiểu tí gì, ra quán hỏi nó hét 300K/broad 16X32 + hơn 1tr cái CPU thấy mà phát sợ. có a, e nào hảo tâm chỉ mình cách làm ma trận 32X64 cái! e cám ơn trước nhá!
Comment
-
Nguyên văn bởi chung1608 Xem bài viếtquét 32 hàng. Tách 32 hàng ra 4 cụm 8 hàng. Load dữ liệu cần hiển thị vô ram, quét cùng lúc 4 cụm
Comment
-
các bác cho en hỏi chương trình của em sai ở chỗ nào mà nó có hiện tượng kiểu như bóng ma,nhưng nhìn kĩ lại không phải.ai sửa giúp em với.
THANKS!!!!!!!!!!!!Attached Files
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi nhathung1101Ra cửa hàng điện tử bất kỳ.
Dõng dạc hét lên:
- Cho 1 con 4558.
Có luôn. Nó chỉ là con Opamp cùi bắp thông thường thôi mà. Giá 2k hay 3k gì đó.
Nếu muốn âm thanh hay hơn, thì mua NE5535, mất 2 cốc beer thôi.-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 22:38 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi nhathung1101Mạch dùng được, nhưng phải kết hợp với Transistor NPN công suất bên ngoài. Loại chịu điện áp cao, dòng lớn.
Loại mạch này nhái theo cái loại IC họ STR trong mấy cái ti vi cổ lỗ ngày xưa thôi mà. Còn được gọi là "ổn áp...-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 22:28 -
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi Nikon57
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 21:36 -
-
bởi Nikon57Bộ loa vi tính Microlap cũ của tôi tầng tiền khuyêchs đại bị lỗi. Sau kiểm tra , nguyên nhân là do con chíp 4558D JRC 0077C chết nóng rực. Không thêt tìm được con IC đúng nguyên mã như vậy, để thay thế tôi có thể thay bawngfcon IC 4558 JRC 0058T được không? Mong các bác thành thạo cho ý kiến.
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 21:36 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi dinhthuong80Mạch trên nếu dùng vào việc khác ( theo người thiết kế ra nó) thì cũng được: làm mạch tiền khuếch đại (pre-Amply) cho "con sò công suất" hay mạch công suất, để chạy cái loa cũng tạm ok.
Các chữ E,B,C trên mạch trên gắn...-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 16:47 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi iTronvây là mình đã hiểu lí do vì sao ông ấy lại đưa mình nguyên hộp có hơn chục cái mạch này trong đó...
-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 12:21 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi mèomướpDạ mạch này hông dùng được ạ. Chú sang chị hàng xóm mượn cái cuốc kiếm góc nào trong bản có nhìu người qua lại để trồng 1 cây cải ngồng, ngày ngày chú chịu khó qua đấy tưới chăm cho nó lớn ạ, vài tháng sau nó to chú mang ra chợ bán...
-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 12:13 -
-
bởi iTronEm được ông anh cho mạch như hình, nhờ ace trong diễn đàn xem giúp mạch này dùng ổn ko và dùng linh kiện công suất nào thì phù hợp.
Xin cảm ơn...-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 11:27 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Vì sản phẩm của họ dân mình có dùng, và có lẽ cũng không phải là không phổ biến, nên ĐT quyết định gởi thư điện tử tiếng Anh cho họ như sau, ( đã sửa vài từ như được góp ý, vì nếu lịch sự thì dù vòng vo cũng nên phản hồi, vì...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 16:36 -
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
23-02-2025, 07:44 -
Comment