Luận Văn Ứng dụng ic lập trình AT89C51 Dùng bàn phím điều khiển motor, relay, đèn...

Thảo luận trong 'Viễn Thông' bắt đầu bởi Phí Lan Dương, 11/12/13.

  1. Phí Lan Dương

    Phí Lan Dương New Member
    Thành viên vàng

    Bài viết:
    18,524
    Được thích:
    18
    Điểm thành tích:
    0
    Xu:
    0Xu
    Ứng dụng ic lập trình AT89C51: Dùng bàn phím điều khiển motor, relay, đèn .
    Chúng ta biết, một "vật thể tự động hoàn chỉnh" phải gồm có: Ngả vào - Bộ nhớ - Ngả ra. Ngả vào là chỉ tác động bên ngoài đi vào vật thể, như ở con người, chúng ta cómắt để ghi nhận các thực thể xuất hiện ở dạng quang năng, có tai để nghe biết các sóng âm,có mũi để nhận ra mùi,có lưỡi để nhận biết vị và có lớp da bao bọc toàn thân để cảm nhận ra sự nóng lạnh, cứng mềm, nặng nhẹ . Đó là ngủ quan của con người. Bộ nhớ được dùng đề lưu giữ các chương trình, chương trình là "trí tuệ" mà thực thể có thể truy cập, lấy ra thao tác mỗi khi gặp các đối ứng cần giải quyết và Ngả ra chính là các tạo thể trang bị trên các vật thể nó chấp hành theo các chương trình, như trên cơ thể của chúng ta các thực thể thấy được như tứ chi hai tay hai chân, tim, phổi, gan, ruột .là các tạo thể luôn vận hành theo các chương trình đã có trong bộ nhớ. Khi con người đứng gần chổ quá nóng, chúng ta biết nóng và đã kịp đi ra xa chổ nóng, đó là phản ứng rất cơ bản của một vật thể tự động hoàn chỉnh.Con người là sinh vật thông minh có khả năng học hỏi các chứng vật hiện diện chung quanh trong thiên nhiên chung quanh và con người còn muốn tự mình tạo ra các "vật thể tự động hoàn chỉnh" nữa. Ước muốn này đã có bước tiến vượt bậc từ khi người ta chế tạo ra được các ic lập trình, nó hoạt động theo các chương trình đã có trong các bộ nhớ. Trong lần này chúng ta sẽ nói đến tính năng nhập thông tin từ bên ngoài vào bên trong của các ic lập trình, cơ bản nhất là dùng các phím nhấn, sau đó sẽ mở rộng qua các cách lấy thông tin qua các cảm biến, như: quang trở, nhiệt trở, vị trở, từ trở, ẩm trở, áp trở, phong trở, động trở, . Với các cảm biến này, chúng ta có thể mô phỏng nhiều chức năng giống như ngủ quan của các sinh vật vậy.
    [​IMG]
    Trước khi nói đến điều cao siêu, chúng ta hãy tìm hiểu một hệ vận hành cơ bản và đơn giản cái đã. Các phím nhấn dùng với ic lập trình AT89C51Chúng ta biết ic lập trình AT89C51 có 4 cảng 8 bit nên tổng cộng có 32 chân có thể xuất nhập dữ liệu dạng bit. Cách nhập dữ liệu đơn giản nhất là dùng các phím nhấn. Phím nhấn chỉ làm việc theo logic nhị giá, nghĩa là đóng hoặc hở. Với các phím nhấn, người ta có thể dùng đơn lẻ hay tổ hợp theo dạng matrix. Hình vẽ dưới đây cho thấy:[​IMG]Các phím gắn trên ma trận 4x4, người ta nói matrix 4x4 có 4 hàng và 4 cột. Trên ma trận 4x4 chúng ta chỉ dùng có 8 dây mà có thể gắn được đấn 16 phím, đó là một ưu điểm của loại bàn phím matrix, dùng số chân ít mà gắn được nhiều phím. Với các phím đơn lập thì mỗi phím thường gắn trên một chân của IC, vậy trên một cảng 8 chân chúng ta chỉ có thể gắn được 8 phím.Các phím nhấn phân ra làm 2 kiểu: Kiểu phím nhấn thường hở và kiểu phím nhấn thường đóng. Khi sử dụng các phím nhấn, chúng ta thường gặp vấn đề sau: Sự rung phím.Vậy sự rung phím là gì? [​IMG]Hình vẽ cho thấy: Khi phím hở thì nó cho mức áp cao, ngay khi phím được nhấn xuống, nó sẽ kéo mức áp xuống mức thấp, nhưng do hiện tượng rung phím, lúc này có sự rung động ở tiếp xúc điểm, khiến cho tiếp điểm lúc dính lúc hở và mức áp sẽ dao động lúc lên lúc xuống và phải sau một lúc mới ổn định được ở mức thấp. Khi bỏ phím nhấn ra, chúng ta cũng gặp hiện tượng tương tự nhưng ít tác hại hơn. Khi dùng phím nhấn với các ic lập trình có phản ứng cực nhanh hiện tượng rung phím sẽ gây ra các điều khiển sai. Khi viết chương trình cho các phím nhấn, chúng ta phải chú ý đến ảnh hưởng của hiện tượng rung phím, nhất là mỗi khi phím được đóng lại.Trong thực hành, người ta thường dùng một đoạn chương trình làm chậm khoảng 3ms đến 10ms và cho dò lại lần nữa trạng thái của phím để tránh sự sai lầm có thể xẩy ra do hiện tượng rung phím.* Mạch AT89C51 dùng 8 phím nhấn đơn lập[​IMG]Khi dùng sơ đồ mạch điện này, trạng thái bit 1 trên các chân của cảng p1 được xem như không có nhấn phím, khi có nhấn phím thì chân có phím được nhấn sẽ xuất hiện bit 0. Khi một trong 8 chân của cảng p1 có chân ở bit 0, chúng ta biết là có nhấn phím, như vậy chúng ta sẽ viết câu lệnh tìm xem trên cảng p1 có xuất hiện bit 0 hay không? Nếu không có bit 0 trên p1 thì tiếp tục dò tìm, khi có chân có bit 0 thì hiểu là đã có phím bị nhấn xuống, lúc đó chuyển qua tìm xem phím nào đã được nhấn và rồi tiếp theo là cho chạy chương trình tương ứng với phím đã được nhấn. Sau đây là một đoạn chương trình dùng dò xem có phím nhấn không?loop: ; đặt tên nhãn cho lệnh nhẩy call do_key ; cho gọi chương trình dò phím, tên nhãn do_key jnb f0, ttuc ; nhẩy theo bit của f0, f0=0, tiếp tục dò phím call tim_phim ; cho gọi trình xác định phím nào được nhấnttuc: ; tên nhãn cho lệnh nhẩy jmp loop ; nhẩy về tên nhãn loop, bắt đầu lại công việc dò phím do_key: ; tên nhãn dùng cho lệnh nhẩy clr f0 ; cho xóa bit f0, bit kiểm tra có phím nhấn hay không? mov a, p1 ; chuyển trạng thái bit trên p1 vào thanh ghi a orl a, #00000000b ; lấy logic OR trị trong a với 00000000b, để tìm bit 0 trên p1 cpl a ; đảo trị trong thanh ghi a jz key_ret ; nếu trị trong a là 0, nhẩy đến key_ret, không có phím nhấn call del ; gọi chương trình trể mov a, p1 ; lại chuyển trạng thái của p1 vào a, kiểm tra lần nữa orl a, #00000000b ; lại cho lấy logic OR trị trong a với 00000000b cpl a ; đảo trị trong a để dò xem có phím nhấn không jz key_ret ; nhẩy đến tên nhãn key_ret nếu không có phím nào được nhấn setb f0 ; nếu có phím nhấn, cho set bit kiểm tra f0 mov b,a ; cho chuyển trị trong a cho cất vào b để dùng xác định phím nào được nhấnkey_ret: ; tên nhãn dùng cho lệnh nhẩy mov a, p1 ; cho chuyển trạng thái cảng p1 vào a orl a, #00000000b ; lấy logic OR trị trong a với 00000000b cpl a ; đảo trị trong thanh ghi a jz key_ret1 ; nhẩy đến tên nhãn key_ret1, nếu thanh a bằng 0 jmp key_ret ; nhẩy đến tên nhãn key_ret, tiếp tục kiểm tra p1key_ret1: ret ; quay lại sau lệnh: call do_keytim_phim: ; chương trình xác định phím nào đã được nhấn .
     

    Các file đính kèm:

Đang tải...