Chào các bác. Em mới vào nghề với con 8051. Hiện em đang học lập trình led dùng 8051. Nhưng em ko biết làm sao để điều khiển 2 dòng chữ chạy độc lập nhau khi chỉ dùng 1 con vi điều khiển 8051. Ví dụ ta có dòng chữ "ĐIỆN TỬ VIỆT NAM" và viền xung quanh phải chạy độc lập nhau. nhưng em ko biết làm thế nào cả. Các bác chỉ giùm em. Thanks...
Thông báo
Collapse
No announcement yet.
Lập trình Led bằng C dùng 8051
Collapse
X
-
Cảm ơn bạn hepro_90nd. Nhưng mình muốn viết 1 chương trình chuyên nghiệp với nhiều hiệu ứng khác nhau. Nhiều chữ khác nhau và cả đường viền nữa thì viết như bạn ko ổn. Hơn nữa có thể có chữ nhiều hơn 8 chân của 1 cổng, theo mình để tạo hiệu ứng cho chữ đó thì fai sd vòng lặp. Mình có thể viết cho 1 chữ nhưng viết cho nhiều chữ và cả đường viền chạy đồng thời và độc lập nhau thì mình chưa biết làm thế nào cả. Mong mọi ng chỉ giáo giúp.
Comment
-
nếu bạn làm biển cảo cáo chuyên nghiệp nên dùng phiên bản leddim của anh bảo việt hoàng vì phần mềm đó có thể cho trong một cổng chạy khác nhau và cùng một lúc thêm cả băm xung nữa rất hay mình đang làm hình trái tim tặng bạn gái nên cũng cần đường viền và đã dung leddim làm điều đó rất ok còn nếu không thì bạn lắp một bộ điều khiển riêng dành riêng cho đường viền có thay bằng vxl thì lắp mạch dao động đa hài cũng được mình cũng đã làm thử rất tốt mình thử viết bằng phương phát của bác hepro_90nd nhưng không ổn lắmhãy làm theo cách của bạn!
Comment
-
Mình dùng cái này đế lập trình led trái tim đấy .Mình thấy lập trình cho mấy cái chữ với đường viền thì quá đơn giản .Dùng vòng for kết hợp với mảng là xong .Đọc đoạn code này mình viết xem có hiểu k? Nếu hiểu là làm dc.//############################################
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
unsigned int i,j,k;
//###### ham delay tao thoi gian tre 0.5s ######
void delay(unsigned int ms)
{
unsigned int a;
unsigned char b;
for(a=0;a<ms;a++)
{
for(b=0;b<125;b++)
{
}
}
}
//##### hieu ung chop tat toan bo led ########
void hieu_ung_1(void)
{
for(k=0;k<8;k++)
{
P0=P1=P2=P3=0xff;
delay(300);
P0=P1=P2=P3=0x00;
delay(300);
}
}
//##### hieu ung chop 2 nua trai tim #########
void hieu_ung_2(void)
{
for(i=0;i<6;i++)
{
P0=P3=0x00;
delay(300);
P0=P3=0xff;
P1=P2=0x00;
delay(300);
P1=P2=0xff;
}
}
//##### hieu ung led nhay so le 1 ##############
void hieu_ung_3(void)
{
for(i=0;i<8;i++)
{
P0=P1=P2=P3=0x55;
delay(300);
P0=P1=P2=P3=0xaa;
delay(300);
}
}
//##### hieu ung led nhay so le 2 ##############
void hieu_ung_4(void)
{
for(i=0;i<8;i++)
{
P0=P1=P2=P3=0xaa;
delay(300);
P0=P1=P2=P3=0x55;
delay(300);
}
}
//##### p0,p1,p2,p3,p4 cung sang thuan ######
void hieu_ung_5(void)
{
unsigned char x,y;
x=y=255;
i=1;
j=128;
for(k=0;k<8;k++)
{
x=x-i;
y=y-j;
P0=x;
P1=P2=P3=y;
i=i*2;
j=j/2;
delay(300);
}
}
//##### p0,p1,p2,p3,p4 cung sang nghich ######
void hieu_ung_6(void)
{
unsigned char x,y;
x=y=255;
i=1;
j=128;
for(k=0;k<8;k++)
{
x=x-i;
y=y-j;
P0=y;
P1=P2=P3=x;
i=i*2;
j=j/2;
delay(300);
}
}
//##### sang dan het cac led theo chieu thuan ##
void hieu_ung_7(void)
{
unsigned char M[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,
0x80,0x00};
unsigned char N[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,
0x01,0x00};
P0=P1=P2=P3=0xff;
for(i=0;i<8;i++)
{
P0=M[i];
delay(300);
}
for(i=0;i<8;i++)
{
P2=N[i];
delay(300);
}for(i=0;i<8;i++)
{
P3=N[i];
delay(300);
}for(i=0;i<8;i++)
{
P1=N[i];
delay(300);
}
}
//##### tat dan het cac led theo chieu thuan ############
void hieu_ung_8(void)
{
unsigned char M[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsigned char N[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
P0=P1=P2=P3=0x00;
for(i=0;i<8;i++)
{
P0=M[i];
delay(300);
}
for(i=0;i<8;i++)
{
P2=N[i];
delay(300);
}for(i=0;i<8;i++)
{
P3=N[i];
delay(300);
}for(i=0;i<8;i++)
{
P1=N[i];
delay(300);
}
}
//##### sang dan het cac led theo chieu nghich #####
void hieu_ung_9(void)
{
unsigned char M[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
unsigned char N[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
P0=P1=P2=P3=0xff;
for(i=0;i<8;i++)
{
P1=M[i];
delay(300);
}
for(i=0;i<8;i++)
{
P3=M[i];
delay(300);
}for(i=0;i<8;i++)
{
P2=M[i];
delay(300);
}for(i=0;i<8;i++)
{
P0=N[i];
delay(300);
}
}
//##### tat dan het cac led theo chieu nghich #####
void hieu_ung_10(void)
{
unsigned char M[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsigned char N[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
P0=P1=P2=P3=0x00;
for(i=0;i<8;i++)
{
P1=M[i];
delay(300);
}
for(i=0;i<8;i++)
{
P3=M[i];
delay(300);
}for(i=0;i<8;i++)
{
P2=M[i];
delay(300);
}for(i=0;i<8;i++)
{
P0=N[i];
delay(300);
}
}
//##### hieu ung pro 1 #################
void hieu_ung_11(void)
{
unsigned char M[]={0xf0,0xe1,0xc3,0x87,0x0f};
unsigned char N[]={0x0f,0x4f,0x63,0x71,0x78};
unsigned char L[]={0x1f,0x4f,0x6f,0x73,0x79,0x7c};
unsigned char K[]={0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e};
P0=P1=P2=P3=0xff;
for(i=0;i<5;i++)
{
P0=M[i];
delay(300);
}
P0=0xff;
for(i=0;i<5;i++)
{
P2=N[i];
delay(300);
}
P2=0x7f;
for(i=0;i<6;i++)
{
P3=L[i];
delay(300);
}
P2=P3=0x7f;
for(i=0;i<7;i++)
{
P1=K[i];
delay(300);
}
P1=P2=P3=0x7f;
}
Comment
-
Nguyên văn bởi tjeunjnzah Xem bài viếtnếu bạn làm biển cảo cáo chuyên nghiệp nên dùng phiên bản leddim của anh bảo việt hoàng vì phần mềm đó có thể cho trong một cổng chạy khác nhau và cùng một lúc thêm cả băm xung nữa rất hay mình đang làm hình trái tim tặng bạn gái nên cũng cần đường viền và đã dung leddim làm điều đó rất ok còn nếu không thì bạn lắp một bộ điều khiển riêng dành riêng cho đường viền có thay bằng vxl thì lắp mạch dao động đa hài cũng được mình cũng đã làm thử rất tốt mình thử viết bằng phương phát của bác hepro_90nd nhưng không ổn lắm
thanks trước.
0912.159.369
Comment
-
@tjeunjnzah: Mình đang học để biết lập trình thôi bạn à. Bắt đầu bằng việc xuất nhập cho các led. :d. phầm mềm ledimm mình cũng đã dùng rồi. Nhưng nó làm cho sinh viên như bọn mình lười nhác. ko chịu tìm hiểu để phát triển thêm kiến thức của mình. phầm mềm đó có 1 nhược điểm là khi cho led tối dần thì led bị nháy. Và chỉ có 1 hàm delay duy nhất cho tất cả các hiệu ứng.
Comment
-
Bác hepro_90nd ơi. Ý em là thế này.Em tác động vào các cổng theo từng bít. Ví dụ như một chữ có 10 chữ cái chẳng hạn, thì em định nghĩa cho nó từ chân P0_0 đến chân P1_1 chằng hạn. còn các chân P1_2 đến P1_4 thì em định nghĩa cho viền, và các chân còn lại em lại định nghĩa cho các chữ cái khác. Và viết hiệu ứng cho từng chữ riêng. Sau rồi làm cách nào để cho chúng chạy đồng thời cùng 1 lúc. Viết như bác thì khi muốn sửa hiệu ứng cho từng chữ rất khó. Bác có cách nào ko? giúp em với.
Comment
-
Nguyên văn bởi hepro_90nd Xem bài viếtMình dùng cái này đế lập trình led trái tim đấy .Mình thấy lập trình cho mấy cái chữ với đường viền thì quá đơn giản .Dùng vòng for kết hợp với mảng là xong .Đọc đoạn code này mình viết xem có hiểu k? Nếu hiểu là làm dc.Tôi thích cái cầu kỳ của kỹ thuật
Nhưng ghét mọi phức tạp trong tính cách con người
Comment
-
Nguyên văn bởi MinhNhat_dhv Xem bài viếtSao chẳng có ai giúp em vậy??
sau đó ta làm lập delay nhỏ cố định tùy theo muốn chạy viền nhanh hay chậm. sau đó tạo chương trình con chay_vien
VD:
void chay_vien(void){
P0=0x01;
delay(200);
P0=0x02;
delay(200);
P0=0x04;
delay(200);
}// và cái "chay_vien" này bạn thay nó cho "delay" trong chương trình(coi nó như delay chỉ có điều khi cần trễ nhiều bạn lặp lại nó nhiều lần bằng cách của riêng bạn), chay_vien tương đương với trễ (600). nếu chạy kểu khác bạn thay trễ nhỏ hơn tùy bạn.
chúc thành công!Tôi thích cái cầu kỳ của kỹ thuật
Nhưng ghét mọi phức tạp trong tính cách con người
Comment
Bài viết mới nhất
Collapse
-
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 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamCám ơn những lời chúc tốt đẹp của em.
Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.
Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....-
Channel: Tâm tình dân kỹ thuật
23-02-2025, 02:00 -
-
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.
Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.
Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 22:18 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.
Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 14:51 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.
Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 14:39 -
Comment