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 Có ai biết ....bởi nguyendinhvanVậy cậu xem ý tưởng của tôi có chỗ nào sai ?...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 19:00 -
-
Trả lời cho Có ai biết ....bởi nguyendinhvanQuay cái máy phát điện, máy phát điện cấp cho bộ sạc, bộ sạc nạp ắc quy, ắc quy quay cánh quạt, cánh quạt thổi ra gió, gió làm quay tu bin, tu bin quay hộp số, hộp số quay máy phát điện, máy phát diện cấp cho bộ sạc, bộ sạc nạp ắc...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 18:58 -
-
Trả lời cho Có ai biết ....bởi nguyendinhvanÀ, tôi định lắp cái máy thôi mà. Ý tưởng của tôi là.....
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 18:57 -
-
Trả lời cho Có ai biết ....bởi nhathung1101Biết, biết, biết mà... Nhưng lão hỏi làm gì???...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 21:05 -
-
Trả lời cho Thay đổi led 7 đoạn 8051 asmbởi Ck33spktBài này giờ quẳng vào ChatGPT thì viết trong vòng 1 phút
...
-
Channel: Vi điều khiển họ 8051
Hôm qua, 11:13 -
-
Trả lời cho Có ai biết ....bởi tuyennhanDễ mà với câu hỏi thì chỉ cần gắn thêm củ phát DC hay AC thôi .
-
Channel: Tâm tình dân kỹ thuật
15-08-2025, 20:07 -
-
Trả lời cho Có ai biết ....bởi bqvietCó ai biết ... nguời mở luồng muốn hỏi về kỹ thuật hay chỉ là câu hỏi tu từ để chọc ngoáy sang chủ đề phi kỹ thuật khác ?
-
Channel: Tâm tình dân kỹ thuật
14-08-2025, 00:09 -
-
bởi nguyendinhvanCó ai biết cách
Converting a Motorcycle to Electric ikhông ?...-
Channel: Tâm tình dân kỹ thuật
12-08-2025, 18:46 -
-
bởi binhan707Chào Anh,
Em tên An, Em có xem được bài viết của anh về cách reset fuse bit trên AVG. Em làm cho công ty mà ghi sai bây giờ không biết cấu hình như thế nào. Mong được anh giúp đỡ.
Nhờ anh giúp em và tính phí với ạ.
Mong nhận được phản hồi từ các Anh.🙇♂️
0938727234 An.-
Channel: Vi điều khiển AVR
12-08-2025, 17:26 -
Comment