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
-
bởi dinhthuong80Một số kết quả test với mô-tơ quạt khác.
Kết luận cá nhân người mở chủ đề: Quạt dân dụng 47-65W không nên dùng cánh 7 lá lớn vì hiệu suất thấp, lưu lượng gió không cao như NSX công bố!
[Video test các loại cánh quạt chứng tỏ loại 7 cánh hiệu...-
Channel: Điện tử gia dụng
Hôm qua, 15:07 -
-
Trả lời cho Load buffer là gì?bởi pia2k1Thêm kiến thức mới cho thuật ngữ mới nè
-
Channel: Thuật ngữ chuyên ngành
10-04-2025, 17:07 -
-
bởi dinhthuong80Xin upload kết quả thí nghiệm, mọi người sẽ tự hiểu và biết phân tích đúng sai hợp lí hay không. Ai không biết kĩ thuật thì chẳng dám tin vào cảm giác của bản thân, chỉ tin những gì nsx nói, dù họ có nói phét thế nào!!!
Còn...-
Channel: Điện tử gia dụng
09-04-2025, 22:10 -
-
bởi nguyendinhvanEm rất là quý bac, nhưng hôm nay em thấy bác sai đấy.
Cái sai của bác là đem cái cơ sở lý luận kỹ thuật công nghệ của Tư bản Chủ nghĩa để trao đổi với người theo Chủ Nghĩa Kinh Nghiệm.
...
-
Channel: Điện tử gia dụng
08-04-2025, 20:54 -
-
bởi nguyendinhvanTốn wifi 4G quá !
Nào là lưu lượng , nào là tốc độ, nào là đường kính, nào là diện tích, nào là vòng quay, nào là hiệu suất, nào là dụng cụ, nào là thiết bị nào là máy đo, nào là phương pháp....
Cộng với một bản số liệu...-
Channel: Điện tử gia dụng
08-04-2025, 20:45 -
-
bởi tuyennhanCánh nhỏ là của tàu đem qua giờ mình copy theo mà tàu thì chuyên ăn bớt vật liệu để giảm giá thành từ cánh cho đến mô tơ mới thành ra vậy .
Cách thử của dinhthuong có đúng thì chỉ đúng với cái quạt Senko còn với quạt khác mô tơ...-
Channel: Điện tử gia dụng
08-04-2025, 20:28 -
-
bởi nhathung1101Lão Phàm có biết lịch sử cái quạt không?
Ngày xưa chỉ có 1 cánh vẫn chạy tốt.
Sau này thêm 2 thành 3 cánh, chạy tốt.
Đến khi ông Cờ Rít Tóp Mỡ muốn buôn quạt sang châu Phi, để được tai tiếng ngang với...-
Channel: Điện tử gia dụng
08-04-2025, 18:42 -
-
bởi nhathung1101Bình tĩnh bình tĩnh bình tĩnh
Hít thở hít thở hít thở....
Mai họ còn sản xuất loại siêu mỏng cánh, chỉ dán vào là xong.
Họ còn đảm bảo dùng 1 cánh tự tin cả ngày, dùng 10 cánh tự tin cả đời...
Lão cứ mất...-
Channel: Điện tử gia dụng
08-04-2025, 18:17 -
-
bởi vi van phamĐơn giản như thế mà cháu cũng không hiểu ư? Cứ lôi 2 cái motor vào?
Tôi nói muốn kiểm tra phải cho 2 CÁNH QUẠT cùng thông số RPM rồi mới kết luận.
Kiểm tra như thế khác gì Trọng tài ăn hối lộ? ....-
Channel: Điện tử gia dụng
08-04-2025, 17:07 -
-
bởi dinhthuong80Thôi, bác cứ tin nsx thì để tối nay cháu sẽ test 2 cây quạt cùng hãng Senko, một cây 3 cánh lớn 47W-57.6m3/min và 1 cây 65W-88.6m3/min xem nsx có nói láo không ạ, cứ cái nào cùng số bật mà thổi cho cái quạt hư kia quay được nhiều vòng hơn là...
-
Channel: Điện tử gia dụng
08-04-2025, 16:54 -
Comment