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...
  • Gặp mặt Phó chủ tịch nước Kim Ngân

    Gặp mặt Phó chủ tịch nước Kim Ngân

    Festival sáng tạo trẻ toàn quốc lần thứ V
    Gặp mặt Phó chủ tịch nước Kim Ngân tại văn phòng Quốc Hội

  • Đồng hồ viền 60 LED nháy theo giây

    Đồng hồ viền 60 LED nháy theo giây

    Phiên bản đồng hồ sáng tạo nhất, tích hợp rất nhiều tính năng vào trong một chiếc đồng hồ. Hiển thị ngày theo dương lịch, hiển thị giờ, hiển thị nhiệt độ, 8 hiệu ứng viền nháy theo giây, hẹn giờ đa chức năng, báo giờ,...

  • Robot khiêu vũ theo nhịp nhạc

    Robot khiêu vũ theo nhịp nhạc

    Sản phẩm sáng tạo đã đạt giải sáng tạo trẻ do tỉnh Bắc Giang tổ chức và giải Festival sáng tạo trẻ toàn quốc năm 2012

  • Mạch bảo vệ thông minh qua điện thoại

    Mạch bảo vệ thông minh qua điện thoại

    Thiết bị chống trộm và điều khiển thông minh qua mạng GSM bằng tin nhắn và gọi điện. Sản phẩm đã đạt giải nhất cuộc thi sáng tạo năm 2012 do tỉnh Bắc Giang tổ chức.

  • LED DANCE PRO - LED nháy theo nhạc

    LED DANCE PRO - LED nháy theo nhạc

    Nháy 24 cột bằng Matrix 8x24, chạy chữ khi không có nhạc, thay đổi nội dung qua giao tiếp RS232. Sản phẩm đang trong quá trình phát triển...

BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Hỗ trợ trực tuyến

Vũ Văn Thái

Chia sẻ trang:



Chuyên mục
Bài mới
Xem nhiều
Thống kê
  • Bài viết: 141/150
  • Thành viên: 4.700
  • Đang online: 3
  • Khách hôm nay: 735
  • Khách hôm qua: 1.309
  • Tổng khách: 409.755
  • Lượt: 993
  • Bắt đầu: 12/05/2013
Bài viết
Bài 11: Lập trình quét LED 7 đoạn và nút nhấn - SangTaoClub.Net
Bài 11: Lập trình quét LED 7 đoạn và nút nhấn
Đăng bởi: Vũ Văn Thái - Thời gian: 19-12-2013, 11:02
Chuyên mục: Học lập trình 8051 - Lượt xem: 5.718

Lập trình quét LED 7 đoạn và nút nhấn

Chào các bạn, hôm nay chúng ta sẽ tìm hiểu về quét led 7 đoạn và nút nhấn.

Quét LED 7 không khó như các bạn từng nghĩ, để quét dc led 7 thì trong ctr không dc sử dụng delay quá cao là ok, còn muốn tạo delay một khoảng thời gian nào đó thì lên sử dụng câu điều kiện if else và 1 biến đếm VD:

dem++;//Dem tự tăng

if(dem>time_delay){//Set khoảng thời gian cần time_delay
        //code cần delay
        dem=0;     
}

OK, nguyên lý quét led 7 như sau: Khi ta cấp điện áp vào số nào thì đồng thời dữ liệu của số cần hiển thị sẽ dc xuất ra rồi cho delay nho nhỏ để nó sáng dạng xung PWM sau đó tắt led và chuyển sang số tiếp theo...v..v..

Có 2 cách quét led 7 là Quét A chung và K chung tương ứng mảng data phải ngược lại thì led 7 mới sáng dc VD: A chung thì để sáng số 0 thì ta phải xuất ra logic 0 ứng với các cạnh của số 0

Còn scan nút nhấn thì chúng ta chỉ cần sử dụng câu điều kiện kiểm tra logic là ok, thêm vòng lặp while để cho vdk không làm gì khi giữ nút.

OK! ta có thể code dc rồi:

#include <REGX51.H>
/*
Ctr quet nut nhan va quet LED 7
Code by vuthai - SangTaoClub.Net
*/
#define DOUT P2 //Chan xuat data led 7
#define D1 P3_0 //Quet LED so 1
#define D2 P3_1 //Quet LED so 2
#define D3 P3_2 //Quet LED so 3
#define D4 P3_3 //Quet LED so 4
#define UP P3_6 //Nut nhan UP
#define DOWN P3_7 //Nut nhan DOWN
unsigned char Mang[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//Mang LED 7
char a,b;
unsigned char dem;
/////////////////////
void delay(unsigned int t){ //Ham tao tre
      unsigned int i,j;
      for(i=0;i<t;i++)for(j=0;j<100;j++);
}
void quet_led(){//Ham quet 4 LED 7
      D1=0; //Led so 1 sang
      DOUT=Mang[a/10];//Xuat data gtri hang chuc cua bien a
      delay(1);//Tao tre
      DOUT=0xff;//Ngat data (tat bong mo voi led don xep thanh led 7)
      D1=1;D2=0; //Led so 1 tat, led 2 sang
      DOUT=Mang[a%10];//Xuat data gtri hang don vi cua bien a
      delay(1);
      DOUT=0xff;
      D2=1;D3=0; //Led so 2 tat, led 3 sang
      DOUT=Mang[b/10];//Xuat data gtri hang chuc cua bien b
      delay(1);
      DOUT=0xff;
      D3=1;D4=0; //Led so 3 tat, led 4 sang
      DOUT=Mang[b%10];//Xuat data gtri hang don vi cua bien b
      delay(1);
      DOUT=0xff;
      D4=1;//Tat Led so 4
}
void nut_nhan(){//Ham scan nut nhan
      if(!UP){//Nut UP dc nhan
            a++;//Tang gia tri
            if(a>99)a=0;//Set ve 0 khi a>99
            while(!UP);//Cho nha phim
      }else if(!DOWN){//Nut DOWN dc nhan
            a--;//Giam gia tri
            if(a<0)a=99;//Set ve 99 khi a<0
            while(!DOWN);//Cho nha phim
      }
}
void main(){//Ctr chinh
      delay(500);
      while(1){//Vong lap ctr
            nut_nhan();//Scan nut nhan
            quet_led();//Scan LED 7
            dem++;//Dem tu tang
            if(dem>100){
                  b++;//b tang
                  dem=0;
                  if(b>99)b=0;//Set lai gia tri
            }
      }
}

Mạch nguyên lý:

Lập trình quét LED 7 đoạn và nút nhấn - SangTaoClub.Net

Download toàn bộ project:

https://www.mediafire.com/?v6f2lbsyzc0mkk0

Chúc bạn học tốt!! :)


  • 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ý!
  • Vũ Văn Thái lúc 23-07-2014, 14:18
    ak biến đếm đó có tác dụng như delay, nhưng delay này sử dụng vòng lặp chương trình để tạo trễ, tức nó sẽ đếm số lần chương trình đc lặp qua vòng lặp while(1) khi nào đủ điều kiện "if đúng" thì nó sẽ làm gì đó như tăng giá trị của biến b và hiển thị lên led 7 đoạn, như là một số đếm tự động từ 0-99.
  • nguyenngocdien lúc 23-07-2014, 12:54
    a vui lòng nói qua giúp e cái biến đếm ở phần main với e đọc mà không hiểu gì về công dụng của nó hết
  • nguyenngocdien lúc 23-07-2014, 12:51
    ad ơi cho e hỏi là tại sao phải cần dùng biến đếm để làm gì vậy ạ. thanks!!!
  • namphuong lúc 08-05-2014, 22:02
    em mới chập chững biết chút về vđk. trong quá trình cài keil c lại tìm đc trang này. thấy anh admin nhiệt tình và giỏi quá. cộng thêm thấy rất nhiều thứ hay ho. bắt đầu thấy có cảm xúc vs vđk rồi. thank u ^^
  • volinh2309 lúc 28-12-2013, 22:36
    cảm ơn bạn đã đóng góp!
  • Trang 1/1: 1

    Bài viết cùng chuyên mục
    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: 238
    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: 2.337
    Bài 10: Giao tiếp I2C cho vi điều khiển 8051 Bài 10: Giao tiếp I2C cho vi điều khiển 8051
    Đăng bởi: Vũ Văn Thái - Thời gian: 27-11-2013, 16:06
    Chuyên mục: Học lập trình 8051 - Lượt xem: 4.939
    Bài 9: Lập trình giao tiếp LCD 16x2 Bài 9: Lập trình giao tiếp LCD 16x2
    Đăng bởi: Vũ Văn Thái - Thời gian: 24-11-2013, 16:32
    Chuyên mục: Học lập trình 8051 - Lượt xem: 4.966
    Bài 8: Lập trình giao tiếp UART và RS232 Bài 8: Lập trình giao tiếp UART và RS232
    Đăng bởi: Vũ Văn Thái - Thời gian: 17-11-2013, 10:25
    Chuyên mục: Học lập trình 8051 - Lượt xem: 4.434
    Bài 7: Lập trình ngắt vi điều khiển 8051 Bài 7: Lập trình ngắt vi điều khiển 8051
    Đăng bởi: Vũ Văn Thái - Thời gian: 03-11-2013, 12:15
    Chuyên mục: Học lập trình 8051 - Lượt xem: 4.030
    Bài 6: Lập trình giao tiếp IC ghi dịch 74HC595 Bài 6: Lập trình giao tiếp IC ghi dịch 74HC595
    Đăng bởi: Vũ Văn Thái - Thời gian: 11-10-2013, 14:51
    Chuyên mục: Học lập trình 8051 - Lượt xem: 7.531
    Bài 5: Lập trình nút nhấn đơn giản Bài 5: Lập trình nút nhấn đơn giản
    Đăng bởi: Vũ Văn Thái - Thời gian: 26-09-2013, 15:32
    Chuyên mục: Học lập trình 8051 - Lượt xem: 4.020
    Bài 4: Lập trình LED đơn chạy chữ Happy New Year 2014 đơn giản 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: 12.945
    Bài 3: Viết chương trình con - Lập trình C cơ bản Bài 3: Viết chương trình con - Lập trình C cơ bản
    Đăng bởi: Vũ Văn Thái - Thời gian: 22-06-2013, 15:29
    Chuyên mục: Học lập trình 8051 - Lượt xem: 2.325
    
    Chào mừng vequengoai00 đã 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 azaj199x_1994, luyendienly, MAIDINHTHE, vuthanhtrungnb, huynhle, nhtinhqn93, herothai, Standup, trhaotk, thanhvinh2909, bazard, minhquan, anyeuquehb, hoanghaimta, bqhung2020, tam90001, minh_tam91, nganhtxd, nlong179, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** Thời gian xử lý trang: 0.025 giây - Cache: Sẵn sàng!