bạn xem lại biến t xem
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
-
chào bạn.bạn giúp mình nha,mình muốn ghép 4led matran lại với nhau,ghép với 4ic 74hc595 và hiển thị dòng chữ chạy là chào ngày mới.mình đã viết chương trình nhưng không hiểu sao nó không chạy,mình không biết sai ở đâu nữa.mình dùng ic89c51,bạn xem hộ cái code này và giúp mình nha,
#include <REGX51.H>
sbit DATA=P2^0;
sbit CLK=P2^1;
sbit RLK=P2^2;
//ham tre
void tre(long time)
{
while(time--);
}
int n,m,lap,t;
unsigned char mangcot[8]={chõ này ghi mã c?t};
unsigned char manghang[8]={chõ này ghi mã hàng};
//ham quet
void quet(unsigned char x)
{
int i,temp;
for(i=0;i<=7;i++)
{
temp=x;
temp=temp&0x80;
if(temp==0x80)
{
DATA=1;
}
else
DATA=0;
x*=2;
CLK=0;
CLK=1;
}
RLK=0;
RLK=1;
}
//ham chinh
void main(void)
{
while(1)
{
for(m=0;m<=7;m++)
for(lap=0;lap<=20;lap++)
for(n=0;n<=7;n++)
{
if((m+n<=7))
{
P1=mangcot[n];
quet(manghang[n+m]);
tre(45);
}
if((m+n>7))
{
P1=mangcot[n];
quet(manghang[n+m-8]);
tre(45);
}
}
}
}
Comment
-
a cho e hỏi
sao dùng phần mềm vision4 để chuyển doạn code C trên sang file .hex sao nó báo lỗi
chao.c(2): warning C318: can't open file 'delay.h'
chao.c(4): warning C318: can't open file 'spi.h'
CHAO.C(19): error C129: missing ';' before 'XINCHAO'
giúp em với !
Comment
-
Hieuues cho mình hỏi trong đoạn code của bạn có khai báo mangcot2 mà trong chương trình không thấy dùng nghĩa là sao?với lại cho mình hỏi thêm bạn dùng mangcot1 nghĩa là bạn đang quét led theo kiểu nào?bạn nói rõ hộ mình nha.mình cũng đang làm chương trình giống bạn nhưng mình cũng đang mắc lỗi tương tự
Comment
-
Nguyên văn bởi c144 Xem bài viếtHieuues cho mình hỏi trong đoạn code của bạn có khai báo mangcot2 mà trong chương trình không thấy dùng nghĩa là sao?với lại cho mình hỏi thêm bạn dùng mangcot1 nghĩa là bạn đang quét led theo kiểu nào?bạn nói rõ hộ mình nha.mình cũng đang làm chương trình giống bạn nhưng mình cũng đang mắc lỗi tương tự
Còn cái vụ mangcot2 kia là vì mình muốn quét Anot từ phải sang trái nhưng không dùng cũng quên không xóa đi. Mangcot1 là quét từ trái sang phải (từ giá trị 0x80 đến 0x00) để hàng chữ nó chạy từ phải qua trái (có vẻ hơi ngược nhưng nó là vậy).Nếu bạn dùng mangcot2 thì khi quét font chữ bị quay từ phải qua trái giống chữ trong gương.
Comment
-
//-------------Ham hien thi ra LED ma tran-----------------
hienthi()
{
for(n=0;n<=7;n++)
{
if(n+m>=24)
data_byte(hang[n+m-24]);
else
data_byte(hang[n]);
if(n+m>=16)
data_byte(hang[n+m-16]);
else
data_byte(hang[n]);
if(n+m>=8)
data_byte(hang[n+m-8]);
else
data_byte(hang[n]);
if(n+m<=21*8-1)
data_byte(hang[n+m]);
else
data_byte(hang[n]);
P1=cot[n];
xuat();
delay(2);
}
}
//-----------Ham chinh------------------
main(void)
{
//int i;
//xuly();
//a=0;
//for(i=0;i<strlen(hang);i++){if(hang[i]!='\0')a++;};
m=0;
while(1)
{
for(k=0;k<=10;k++)
{
hienthi();
delay(2);
}
m++;
if(m==21*8-1)m=0;
}
}
a Hiếu giải thích dùm e đoạn này a Hiếu ơi
thank a nhiều
lenhoc91@gmail.com
Comment
-
a Hiếu e sửa cột lại là unsigned char cot[] ={0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xff}; dùng cho giải mã 74138, 74138 thi xuất được xung như mảng cột củ rồi nhưng hiển thị bị lỗi ak. ko bik khi dùng 74138 co sữa chổ nào trong code nua ko chỉ dum e
#include<at89x52.h>
#include<string.h>
//#include<font8x8.c>
//-------------Khai bao bien-------------
sbit SCK=P3^0;
sbit DATA=P3^1;
sbit LATCH=P3^2;
int m,n,k,a;
//--------------Khai bao mang------------
unsigned char code hang[]=
{
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
0xFF,0x81,0x00,0x7E,0x7E,0x7E,0xBD,0xFF,//C
0xFF,0x00,0x00,0xEF,0xEF,0x00,0x00,0xFF,//H
0xFF,0x01,0x00,0xFE,0xFE,0x00,0x01,0xFF,//U
0xFF,0x81,0x00,0x7E,0x7E,0x7E,0xBD,0xFF,//C
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
0x00,0x80,0xDF,0xEF,0xDF,0x80,0x00,0xFF,//M
0xFF,0x01,0x00,0xFE,0xFE,0x00,0x01,0xFF,//U
0x00,0x80,0xDF,0xEF,0xF7,0x00,0x00,0xFF,//N
0xFF,0x81,0x00,0x7E,0x76,0x76,0xB1,0xFF,//G
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
0x00,0x80,0xDF,0xEF,0xF7,0x00,0x00,0xFF,//N
0xFF,0xC0,0x80,0x77,0x77,0x80,0xC0,0xFF,//A
0x00,0x80,0xDF,0xEF,0xDF,0x80,0x00,0xFF,//M
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
0x00,0x80,0xDF,0xEF,0xDF,0x80,0x00,0xFF,//M
0xFF,0x81,0x00,0x7E,0x7E,0x00,0x81,0xFF,//0
0xFF,0xFF,0x7E,0x00,0x00,0x7E,0xFF,0xFF,//I
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//led tat
};
//unsigned char xdata hang[200];
unsigned char cot[] ={0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xff};//chổ này dùng cho 74138
//unsigned char text[]="LE TRUNG HIEU ";//Nhap text vao day de hien thi
//--------------Ham xu ly text-------------
/*
xuly()
{
unsigned char data i,j,l;
l=strlen(text);
for(i=0;i<l;i++)
{
for(j=0;j<=7;j++)
{
if(text[i]==20){hang[8*i+j]=font2[j];}
else {hang[8*i+j]=font2[8*(text[i]-32)+j];}
}
}
}
*/
//-------------Ham tre-----------------
delay(long t)
{
int i=0,j;
for(;i<=4;i++)
for(j=0;j<=t;j++);
}
//-----------Ham cho phep ghi vao thanh ghi HC595---------------
Data_bit()
{
SCK=1;
SCK=0;
}
//------------Ham viet 8 bit vao thanh ghi HC595--------------
void data_byte(unsigned char x)
{
unsigned char data temp,i;
for(i=0;i<8;i++)
{
temp=x;
temp=temp&0x80;
if(temp==0x80)
DATA=1;
else
DATA=0;
x=x<<1;
Data_bit();
}
}
//-------------Ham xuat gia tri tu thanh ghi ra cong ra HC595--------------
xuat()
{
LATCH=1;
LATCH=0;
}
//-------------Ham hien thi ra LED ma tran-----------------
hienthi()
{
for(n=0;n<=7;n++)
{
if(n+m>=24)
data_byte(hang[n+m-24]);
else
data_byte(hang[n]);
if(n+m>=16)
data_byte(hang[n+m-16]);
else
data_byte(hang[n]);
if(n+m>=8)
data_byte(hang[n+m-8]);
else
data_byte(hang[n]);
if(n+m<=21*8-1)
data_byte(hang[n+m]);
else
data_byte(hang[n]);
P1=cot[n];
xuat();
delay(2);
}
}
//-----------Ham chinh------------------
main(void)
{
//int i;
//xuly();
//a=0;
//for(i=0;i<strlen(hang);i++){if(hang[i]!='\0')a++;};
m=0;
while(1)
{
for(k=0;k<=10;k++)
{
hienthi();
delay(2);
}
m++;
if(m==21*8-1)m=0;
}
}
Comment
-
Nguyên văn bởi lenhoc91 Xem bài viếta Hiếu e sửa cột lại là unsigned char cot[] ={0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xff}; dùng cho giải mã 74138, 74138 thi xuất được xung như mảng cột củ rồi nhưng hiển thị bị lỗi ak. ko bik khi dùng 74138 co sữa chổ nào trong code nua ko chỉ dum e
unsigned char cot[] ={0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xff};//chổ này dùng cho 74138
Nếu dùng 4 con này hoặc 2 con 154, chỉ dùng 1 con 595 thì bài này sẽ dễ hơn !!!Last edited by hieult153; 10-05-2012, 19:48.
Comment
-
Nguyên văn bởi lenhoc91 Xem bài viết//-------------Ham hien thi ra LED ma tran-----------------
hienthi()
{
for(n=0;n<=7;n++)
{
if(n+m>=24)
data_byte(hang[n+m-24]);//Du lieu cho ra C25-C32
else
data_byte(hang[n]);//Nếu n+m<24 thì xuất ra 595 giá trị hang[0]->hang[7] để không bị nhiễu LED
if(n+m>=16)
data_byte(hang[n+m-16]);//Du lieu ra C17-C24
else
data_byte(hang[n]);
if(n+m>=8)
data_byte(hang[n+m-8]);
else
data_byte(hang[n]);
if(n+m<=21*8-1)
data_byte(hang[n+m]);
else
data_byte(hang[n]);//tuy m đã giới hạn giá trị nhưng khi cộng thêm n lại phát sinh giá trị không tồn tại trong hang[] nên phải trả về cột 1->cột 8 trong hang[].
P1=cot[n];
xuat();
delay(2);
}
}
//-----------Ham chinh------------------
main(void)
{
//int i;
//xuly();
//a=0;
//for(i=0;i<strlen(hang);i++){if(hang[i]!='\0')a++;};
m=0;
while(1)
{
for(k=0;k<=10;k++)
{
hienthi();
delay(2);
}
m++;
if(m==21*8-1)m=0;//Lap lai
}
}
Comment
-
Nguyên văn bởi hieult153 Xem bài viếtHình như sai chỗ 0xff, phải sửa thành 0xE0 !!!
Nếu dùng 4 con này hoặc 2 con 154, chỉ dùng 1 con 595 thì bài này sẽ dễ hơn !!!
Comment
-
a hiếu ơi chỉ dùm e với
để thêm mở rộng nhiều led nữa e làm
hienthi()
{
for(n=0;n<=8;n++)
{
if(n+m>=32)// thêm led thì + 8
data_byte(hang[n+m-32]);
else
data_byte(hang[n]);
if(n+m>=24)
data_byte(hang[n+m-24]);
else
data_byte(hang[n]);
if(n+m>=16)
data_byte(hang[n+m-16]);
else
data_byte(hang[n]);
if(n+m>=8)
data_byte(hang[n+m-8]);
else
data_byte(hang[n]);
if(n+m<=21*8-1)// so luong chu bang 21
data_byte(hang[n+m]);
else
data_byte(hang[n]);
P1=cot[n];
xuat();
delay(2);
}
}
nhưng lại bị ngược chữ
Comment
-
Nguyên văn bởi lenhoc91 Xem bài viếta hiếu ơi chỉ dùm e với
để thêm mở rộng nhiều led nữa e làm
hienthi()
{
for(n=0;n<=8;n++)
{
if(n+m>=32)// thêm led thì + 8
data_byte(hang[n+m-32]);
else
data_byte(hang[n]);
if(n+m>=24)
data_byte(hang[n+m-24]);
else
data_byte(hang[n]);
if(n+m>=16)
data_byte(hang[n+m-16]);
else
data_byte(hang[n]);
if(n+m>=8)
data_byte(hang[n+m-8]);
else
data_byte(hang[n]);
if(n+m<=21*8-1)// so luong chu bang 21
data_byte(hang[n+m]);
else
data_byte(hang[n]);
P1=cot[n];
xuat();
delay(2);
}
}
nhưng lại bị ngược chữ
Comment
-
sao bác hướng dẫn toàn c vậy em không được học c buồn nhỉ em học asm mà đọc cái này thì ôi trời. bác có cái nào hướng dẫn asm thì gửi cho em xin nha thanks bác trước nha mail em hj
vuonghoatvuonghoat@gmail.com
Comment
-
cho e hỏi tại sao e xuất dữ liệu như thế này:
#include <mega32.h>
#include <spi.h>
#include <delay.h>
#define LATCH PORTB.0
unsigned char flash DMem[]={28,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0};
unsigned char Q[7]={99,0,0,0,0,0,28} ;
unsigned char M[49];
int i,r=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
spi(M[r*7+6]);
spi(M[r*7+5]);
spi(M[r*7+4]);
spi(M[r*7+3]);
spi(M[r*7+2]);
spi(M[r*7+1]);
spi(M[r*7]);
LATCH = 1;
LATCH = 0;
PORTC=Q[r];
r++;
if (r==7) r=0;
}
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;
LATCH = 0;
for(i=0;i<=49;i++)
{
M[i]=DMem[i] ;
}
#asm("sei")
while (1)
{
}
}
khi e mô phỏng bằng proteus led chớp tắt
74HC595.rar
nhờ mọi người debug hộ e với! e định làm led cube 7x7x7 mà chắc k làm được mất!Last edited by hoangvanloc; 27-06-2012, 13:28.
Comment
Bài viết mới nhất
Collapse
-
bởi SchwarberyAs we take nearer and nearer toward the get started of the 2022-2023 period, pundits are gearing up with period previews and thorough assessments. Listed here at St. Louis Match Year, the divisional preview is inside of the functions as is a function-down of where by media voices come to feel the Blues...
-
Channel: Xu hướng, nhu cầu và thị trường
hôm nay, 16:59 -
-
bởi SchwarberyThe Have to have in the direction of KnowsTime: 6:00 pm PT / 9:00 pm ETThe Area: Rogers Vacation spot within Edmonton, AlbertaWhere in direction of Perspective: ROOT-NW inevitably again toward our nearby workforce!) or ESPN+ if out of marketWhere in direction of Hear: KJR 93. 3Comprehend Your EnemyIf...
-
Channel: Góp ý cho diễn đàn
hôm nay, 16:59 -
-
bởi SchwarberyNashville Predators Information NotesNashville Predators 4, Chicago Blackhawks 2: Josi sets heritage within just potent workers earn | Upon The ForecheckICYMI: Adhere faucets for El Capitan upon turning into the franchise chief in just Hockey Information NotesIs Carolina Hurricanes GM Dress in Waddell...
-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 16:58 -
-
bởi SchwarberyAnaheim DucksMarch 18: Center Sam Metallic is again at the time misplaced 3 video games with a facial CoyotesMarch 14: Remaining winger Antoine Roussel consists of been positioned upon hurt guide with a very low-system problems. Defenceman Jakob Chychrun consists of been sidelined indefinitely with...
-
Channel: Hỗ trợ học tập
hôm nay, 16:58 -
-
bởi SchwarberyThe Canucks incorporate entered the entertaining aspect of the calendar year. The chill out of December is loaded with Western convention competition. Every single recreation is a 3 or 4 reality swing inside of the standings. The final sport in opposition to the Wild was.. https://www.shopvancouver...
-
Channel: Góp ý cho diễn đàn
hôm nay, 16:56 -
-
Trả lời cho Hỏi xin sơ đồ tivi các loạibởi Trân thànhCần các Bạn giúp sơ đồ Lcd Samsung UA40JU6400 và UA43ku6500k. Xin cảm ơn!...
-
Channel: Điện tử truyền hình
Hôm qua, 16:07 -
-
Trả lời cho Hỏi xin sơ đồ tivi các loạibởi Trân thànhCần các Bạn giúp sơ đồ Lcd Samsung UA40JU6400 và UA43ku6500k. Xin cảm ơn!...
-
Channel: Điện tử truyền hình
Hôm qua, 16:01 -
-
bởi chinhnguyen9Hoạt động của thế hệ mạch cân bằng trước đây dựa trên nguyên lý so áp giữa 2 string liền kề. Hoạt động cân bằng chỉ kích hoạt khi sự chênh lệch vượt ngưỡng 100mV và ngưng hoạt động khi mức chênh lệch giảm xuống còn 30mV. Bản...
-
Channel: Điện tử dành cho người mới bắt đầu
27-04-2024, 05:07 -
-
bởi chinhnguyen9Xem hình minh họa có phần thuyết minh bên trong tiện việc quan sát và đọc thuyết minh. Khi G1 high dòng điện chạy theo các đường màu đen khi G2 high dòng điện chạy theo các đường màu nâu đỏ.
Bổ sung một tính chất củng cố cho tên gọi tụ bay: Trong mạch đề cập chỉ...-
Channel: Điện tử dành cho người mới bắt đầu
26-04-2024, 21:02 -
-
bởi chinhnguyen9Sản phẩm này ghi version 2.0 01-2024 MADE IN CHINA nhưng không thấy thương hiệu hình 1
Do 8 chân G của 8 mosfet được đấu song song thành 2 nhóm nên có cùng biên độ xung kích 12V. Nhưng Q1 và Q2 nằm cuối dãy, chân S cùa chúng có điện áp DC cao đến...-
Channel: Điện tử dành cho người mới bắt đầu
26-04-2024, 20:37 -
Comment