Chào mừng đến với Câu Lạc Bộ Sáng Tạo
Chia sẻ kinh nghiệm
Kết nối đam mê
Đang cập nhật thời gian...
BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Chia sẻ trang




Chuyên mục
Bài mới
Xem nhiều
Thống kê
  • Bài viết: 334/334
  • Thành viên: 10.085
  • Đang online: 5
  • Khách hôm nay: 1.886
  • Khách hôm qua: 2.812
  • Tổng khách: 16.181.217
Bài viết
Bài 4: Lập trình LED đơn chạy chữ Happy New Year 2014 đơn giản - SangTaoClub.Net
Bài 4: Lập trình LED đơn chạy chữ Happy New Year 2014 đơn giản
Đăng bởi: Vũ Văn Thái - Thời gian: 13-09-2013, 14:51
Chuyên mục: Học lập trình 8051 - Lượt xem: 53.912

Lập trình LED đơn chạy chữ Happy New Year 2014 đơn giản

Các bạn đã nhìn thấy rất nhiều các biển quảng cáo led nó chạy như thế nào rồi, tại sao nó lại nháy dc như vậy thì hôm nay mình sẽ hướng dẫn các bạn làm ra nó, nhưng chỉ ở mức cơ bản dễ làm thui nha. Các bạn đã biết Quảng cáo led bây giờ họ ko lập trình truyền thống nữa mà dùng phần mềm chuyên dụng để thiết kế làm rất ngắn thời gian thi công cho nên ta ko thế bắt trước theo họ được ví dụ như sáng mờ dần.... đó là họ dùng MCU chuyên dụng

Thôi ko nói dài dòng nữa ta sẽ đi vào vấn đề chính luôn. :)

Đầu tiên ta quay lại kiến thức tin học một chút, đó là cách chuyển đổi bit giữa các hệ, ta chuyển từ BIN-HEX nhằm ko muốn mất thời gian tính toán ta dùng luôn máy tính casio chuyển cho nhanh

Máy FX500MS ai đã biết cách vào hệ mà ta hay nghịch để viết chữ ấy nếu ko biết thì hỏi ng xung quanh, xong ta bấm MODE tới phần có 3 hệ SD | REG | BASE thì ta chọn BASE (đây là hệ chuyển đổi bit) OK

Với máy FX570MS thì ta bấm MODE rồi chọn BASE luôn ko phải chuyển hệ, với các máy cao cấp hơn cũng tương tự

Vì code của chúng ta dùng mã HEX lên ta sẽ chuyển đổi BIN(nhị phân) sang HEX(hệ 16)

Nút log = BIN, nút ^ = HEX, nút x2 = DEC(hệ thập phân)

Nhấn nút "log" để nhập mã nhị phân 8 bit: VD: 11011010 nhấn nút "=" xong nhấn nút "^" để chuyển sang mã HEX ta được 11011010 = DA (viết trong trình biên dịch keilC là 0xDA) thế là xong phần chuyển đồi ta bắt đầu vào viết chương trình

Lắm rõ hơn bạn lên xem lại các bài 1,2,3

CODE:

#include <REGX51.H>
void delay(unsigned char t){
        //Chuong trinh tao tre 50ms
        unsigned char i;
        for(i=0;i<t;i++){
                TH0=0x3c;
                TL0=0xb0;
                TR0=1;
                while(!TF0);
                TF0=TR0=0;
        }
}


unsigned char w; //khai bao bien
unsigned char m1[8]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //mang bit
void lan_luot(){//ctr con nhay lan luot
        P0=P2=0xff; //tat ca tat
        delay(20);
        for(w=0;w<8;w++){ //Vong lap for
                P0=m1[w]; //xuat mang m1 ra P0 chieu thuan
                delay(10); //0.5s
        }
        
        for(w=0;w<8;w++){
                P2=m1[w]; //xuat mang m1 ra P2 chieu thuan
                delay(10); //0.5s
        }
        
        for(w=0;w<8;w++){
                P2=m1[7-w]; //xuat mang m1 ra P2 chieu nguoc
                delay(10); //0.5s
        }
       
        for(w=0;w<8;w++){
                P0=m1[7-w]; //xuat mang m1 ra P0 chieu nguoc
                delay(10); //0.5s
        }
        
}

void xen_ke(){//ctr con nhay xen ke
        P0=P2=0xff; //tat ca tat
        delay(20);
        for(w=0;w<10;w++){
                P0=P2=0xAA; // 0xAA = 01010101
                delay(10);
                P0=P2=0x55; // 0x55 = 10101010
                delay(10);
        }
}

void nhap_nhay(){//ctr con nhap nhay
        P0=P2=0xff; //tat ca tat
        delay(20);
        //Nhap nhay tat ca 15 lan
        for(w=0;w<15;w++){
                P0=P2=0x00; //sang
                delay(10);
                P0=P2=0xff; //tat
                delay(10);
        }
}


void nhay_chu(){
        P0=P2=0xff; //tat ca tat
        delay(20);
/*Chu HAPPY o P0 co ma sang la 0xE0 = 1110 0000
Chu NEW o P0 co ma sang la 0x1F = 0001 1111
Chu YEAR o P2 co ma sang la 0xF0 = 1111 0000
Chu 2014 o P2 co ma sang la 0x0F = 0000 1111 */
         P0=0xe0; //chu happy sang
         delay(20);
         P0=0x1F; //chu new sang
         delay(20);
         P0=0xff; //Tat P0 dong thoi
         P2=0xF0; //chu year sang
         delay(20);
         P2=0x0F; //chu 2014 sang
         delay(20);
         P2=0xff; //tat P2
}

//Code by vuthai - SangTaoClub.Net
/*Chu Happy New Year 2014 co tat ca 16 ky tu
dung P0 va P2 de dieu khien chu vi 8x2=16
Dung muc logic 0 de lam chu sang*/


void main(){ //Chuong trinh chinh
        P0=P2=0x00; //Tat ca sang
        delay(20); //Tre 1s do 20x50=1000ms=1s

       TMOD=0x01; 

      while(1){
        lan_luot(); //Goi ctr con nhay lan luot
        xen_ke(); //Goi ctr con nhay xen ke
        nhap_nhay(); //Goi ctr con nhap nhay
        nhay_chu(); //Goi ctr con nhay chu
       //.............co the viet them.........

      }
}

Mạch nguyên lý:

SangTaoClub.Net

Toàn bộ code và mô phỏng trên proteus 7.8: http://www.mediafire.com/?rj75dtf8bb5v9rg

Lưu ý: mô phỏng ko có điện trở hạn dòng còn khi mắc thực tế phải có trở cho led, nếu mắc nhiều bóng thì dùng Tranzito PNP (do mức logic 0 output) để kích dòng, công suất cho nhiều LED có thể dùng TIP42

 


Bài viết sửa lúc 13-01-2014, 19:59 bởi Vũ Văn Thái
  • Bạn chưa đăng nhập, không thể viết bình luận!
    Bấm vào đây để Đăng nhập hoặc Đăng ký!
  • khactrong1995 lúc 19-11-2015, 15:23
    a giup e viet code NOEL e faj lam sao bỏ phần nào z a. e cũng đang học điện tử mà e mới học phần lập trình nên chưa có kinh nghiệm
  • Vũ Văn Thái lúc 23-12-2014, 19:55
    Dùng TIP42 nhé, ra phần tài liệu tải code đầy đủ, chứ code này ít hiệu ứng
  • kelvin007 lúc 23-12-2014, 19:04
    Ad oi cho e hoi.em lam mach moi chu tam 80thi dung loai transistor gi duoc
  • nguyenvandanhbigbang lúc 02-12-2014, 17:18
    Admin ơi sao code này không chạy được thế
  • nguyenthu lúc 25-11-2014, 19:10
    anh lập cho em 1 chương trình chạy chử Phúc Lộc Thọ có đường viền với ạ.em lập mãi mà không đc.nó không chạy như ý muốn.toàn bị lỗi thôi.anh lập cho em nhiều kiểu nháy vào đc k ạ
  • CrY36TH lúc 15-11-2014, 15:51
    Ai giúp t làm một mạch led nháy đơn giản nhất đk k
  • giaptrongluan lúc 14-11-2014, 19:30
    E làm đc led trái tim bằng vdk at89s52 thui hixx gà lắm giúp e
  • giaptrongluan lúc 14-11-2014, 19:27
    Anh à em k phải dân dt nhưng cũng ham mấy thứ này lắm anh hd em làm cái này vs ạ
  • Vũ Văn Thái lúc 13-11-2014, 21:34
    Bạn hỏi câu này ai mà trả lời được bạn, phụ thuộc vào kiểu chữ và mật độ led... chứ ai biết bạn làm như nào mà ước lượng được, nếu làm nhỏ thì chuẩn bị 500-1000led, viền nữa thì hơn.
  • nguyenthu lúc 13-11-2014, 19:58
    a ơi cho em hỏi.làm chữ phú lộc thọ thì mất bao nhiêu led hả a
  • Trang 1/5: 12345Sau

    Bài viết cùng chuyên mục
    Điều khiển tốc độ động cơ Motor DC sử dụng PWM Điều khiển tốc độ động cơ Motor DC sử dụng PWM
    Đăng bởi: kienvuce - Thời gian: 04-11-2021, 22:40
    Chuyên mục: Học lập trình 8051 - Lượt xem: 3.113
    Chia sẻ bộ thư viện Driver chuẩn cho LCD Gphone và Home Phone Chia sẻ bộ thư viện Driver chuẩn cho LCD Gphone và Home Phone
    Đăng bởi: Vũ Văn Thái - Thời gian: 22-02-2017, 14:54
    Chuyên mục: Học lập trình 8051 - Lượt xem: 6.624
    Led 7 thanh 4 số điều khiển bằng nút bấm Led 7 thanh 4 số điều khiển bằng nút bấm
    Đăng bởi: HoangQuan69 - Thời gian: 09-10-2016, 15:08
    Chuyên mục: Học lập trình 8051 - Lượt xem: 5.918
    Chia sẻ Code đồng hồ số hiển thị trên LED 7 đoạn dùng 89S52 và DS1307 Chia sẻ Code đồng hồ số hiển thị trên LED 7 đoạn dùng 89S52 và DS1307
    Đăng bởi: Vũ Văn Thái - Thời gian: 13-05-2015, 09:00
    Chuyên mục: Học lập trình 8051 - Lượt xem: 28.676
    Bài 15: Lập trình quét phím matrix 4x4 hiển thị lên LCD 16x2 Bài 15: Lập trình quét phím matrix 4x4 hiển thị lên LCD 16x2
    Đăng bởi: Vũ Văn Thái - Thời gian: 20-11-2014, 08:57
    Chuyên mục: Học lập trình 8051 - Lượt xem: 31.743
    [Share] Code giao tiếp Graphic LCD 12864 SPI của máy GPHONE ZTE [Share] Code giao tiếp Graphic LCD 12864 SPI của máy GPHONE ZTE
    Đăng bởi: Vũ Văn Thái - Thời gian: 12-11-2014, 22:06
    Chuyên mục: Học lập trình 8051 - Lượt xem: 19.256
    [Share] Code C đo nhiệt độ dùng DS18B20 hiển thị lên LED 7 thanh [Share] Code C đo nhiệt độ dùng DS18B20 hiển thị lên LED 7 thanh
    Đăng bởi: Vũ Văn Thái - Thời gian: 12-11-2014, 09:02
    Chuyên mục: Học lập trình 8051 - Lượt xem: 19.577
    Bài 14: Đo nhiệt độ dùng cảm biến DS18B20 với 8051 Bài 14: Đo nhiệt độ dùng cảm biến DS18B20 với 8051
    Đăng bởi: Vũ Văn Thái - Thời gian: 19-10-2014, 10:11
    Chuyên mục: Học lập trình 8051 - Lượt xem: 25.407
    Bài 13: Đo nhiệt độ dùng LM35 kết hợp IC ADC0808 với 8051 Bài 13: Đo nhiệt độ dùng LM35 kết hợp IC ADC0808 với 8051
    Đăng bởi: Vũ Văn Thái - Thời gian: 22-08-2014, 22:18
    Chuyên mục: Học lập trình 8051 - Lượt xem: 45.989
    Bài 12: Tạo xung PWM dùng ngắt timer 8051 Bài 12: Tạo xung PWM dùng ngắt timer 8051
    Đăng bởi: Vũ Văn Thái - Thời gian: 02-03-2014, 20:45
    Chuyên mục: Học lập trình 8051 - Lượt xem: 24.098
    
    Chào mừng hieutrang đã tham gia câu lạc bộ sáng tạo!
    Vũ Văn Thái - vuthai
    Hôm nay là sinh nhật của boykage, 01295776836, caongocanh, xathutu, oalaocong, caothangc4, donghi, tontaidoclap, VanRen, hoahaiduong1, nguyenvangoc8a5, Nhanpro, phunghung_198, thanhcdt, ngoanancnsh, thanhk46cdt, nhantt, fx15000, dohiep, baotuyet12567, vu123456, lekimhoai190494, boythaibinh, huynhhiep, cuongk57m, Nhoangvuong95ts, kienvuce, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 3.144.109.5 ***** Status: Cache Update thành công!