Mar 11, 2009

MẠCH ĐIỀU KHIỂN TỪ XA DÙNG 8051

MẠCH ĐIỀU KHIỂN TỪ XA DÙNG 8051

Trong cuộc sống hàng ngày của chúng ta hiện nay , vi xử lí được ứng dụng rất rộng rãi , nó càng trở nên cần thiết và không thể thiếu trong mỗi gia đình . Đó chính là ứng dụng về Điều Khiển Từ Xa , một ứng dụng rất thú vị và tiện ích trong cuộc sống hàng ngày . Thay vì phải đứng dậy để bật hay tắt những dụng cụ như : quạt , tivi , bóng đèn , …. chúng ta chỉ việc ngồi tại chỗ với chiếc điều khiển từ xa trong tay , ta có thể tắt mở những cụ theo ý muốn .

Hệ thống điều khiển từ xa gồm có : 1 con mắt hồng ngoại , 1 điều khiển TV Sony trong đó mỗi nút bấm là một mã riêng để điều khiển mỗi thiết bị , việc giãi mã được lập trình trên vi xử lí 8051 .

I) GIẢI QUYẾT VẤN ĐỀ :

1) Giải Mã REMOTE :

Trước tiên ta tìm hiểu về mã của Remote TV , ta xem hình vẽ

Trên hình vẽ cho ta thấy : bit đầu tiên là bit LSB ta đặt tên cho nó là bit B0 , bít cuối cùng sẽ là bit B11 . Trong đó từ :

B0 – B6 : là 7 bit mã lệnh

B7 _ B11: là 5 bit địa chỉ

Trong đó , mã lệnh là 16H, mã địa chỉ là 08H . Khi sử dụng mắt hồng ngoại thì tất cả các dạng sóng trên sẽ bị đảo lại như sau :




Để thu và giải mã tín hiệu từ Remote TV ta chỉ cần thu 7 bit command (7 bit mã lệnh ) và có thể bỏ qua 5 bit address ( 5 bit dữ liệu ) bởi vì các nút bấm đều phát ra các mã địa chỉ là như nhau chỉ khác nhau về mã lệnh .

Để thu được 7 bit mã lệnh ta làm như sau :

a) thiết lập thanh ghi A = 01000000 B

b) khởi đầu bằng cách chờ tín hiệu xuống

c) chờ cho tín hiệu lên

d) chờ cho tín hiệu xuống

e) tạo trễ khoảng 900us

f) đo mức tín hiệu :

+ nếu mức tín hiệu là mức cao thì bit nhận được là bit 0 :

thiết lập cờ C = 0 , quay phải có cờ nhớ A , như vậy C sẽ được gởi vào MSB của A , LSB của A sẽ được gởi vào C . Như vậy sau 7 lần quay thì C = 1 và 7 bit trái của A sẽ chứa mã lệnh . khi C = 0 quay lại bước d .

+ nếu mức tín hiệu là mức thấp thì bit nhận được là bit 1 :

thiết lập cờ C = 1, quay phải có cờ nhớ A . Khi C = 0 quay lại bước c .

Nếu C = 1, giá trị trong thanh ghi A = D6D5D4D3D2D1D00 , sau khi quay phải A thu được A = 0D6D5D4D3D2D1D0 .

Xuất nội dung thanh ghi A ra port 1 hiển thị bằng các led( đây chính là mã lệnh từ remote mà 8051 giải mã được).

2 ) Lưu Đồ Giải Thuật :



II) SƠ ĐỒ NGUYÊN LÍ:

1) Cấu Tạo :

+ Thiết bị phát là Remote TV , với mỗi nút bấm phát ra một mã hồng ngoại khác nhau .

+ Thiết bị thu sử dụng mắt hồng ngoại 3 chân , được dùng rộng rãi trong TV



+ Mắt nhận hồng ngoại nhận tín hiệu từ điều khiển từ xa phát ra từ giải điều chế và đua tín hiệu đảo ra chân OUT . Tín hiệu từ chân OUT được đưa đến chân P3.3 của vi xử lí để giải mã , mã lệnh 7 bit được hiển thị trên cổng P1.Tín hiệu điều khiển được đưa ra cổng P2 . Khi bấm phím 1 đưa tín hiệu điều khiển ra chân P2.0, bấm phím 2 ra chân P2.1…..bấm phím 8 ra chân P2.7.

2) Nguyên Lí Hoạt Động :

Dòng DC khoảng 5v-7v đưa qua 7805 để ổn định áp 5v cung cấp cho vxli 8051 . chân OUT của mắt nhận hồng ngoại đưa vào chân P3.3, tín hiệu tới chân P3.3 được lập trình và giải mã . Mã lệnh hiện thị trên cổng P1 , tín hiệu điều khiển đưa ra chân P2.

Trong mạch chỉ sử dụng 3 chân P2.0 , P2.1 , P2.2 để điều khiển 3 thiết bị thông qua 3 rơle (5v) có tác dụng đóng mở cho dòng điện xoay chiều 220v đi qua các thiết bị điện .Khi P2.0 , P2.1 , P2.2 ở mức cao (+5v) thì không có dòng qua Rơle , Rơle đóng . Khi P2.0 , P2.1 , P2.2 ở mức thấp (0v) thì có dòng qua Rơle , Rơle mở nên có dòng 220v qua các thiết bị điện , các thiết bị hoạt động . Đối với gia đình có nhiều thiết bị điện thí ta tiếp tục nối các chân còn lại của port 2 qua Rơle , như vậy ta có thể dùng cho thiết bị tuỳ thích

III)CODE CHƯƠNG TRÌNH :

ORG 00

MOV P1,#0

MOV P2,#00000111B

LCALL LONG_DELAY ; cho tín hiệu đầu tiên nhận được nhận được ko bị sai

MAIN:

SETB P3.3 ; P3.3 làm đầu vào nhận tín hiệu

MOV A,#01000000B ; sau 7 lần quay phải A thì C=1 để kiểm tra

RP1: JB P3.3, RP1 ; chờ cho tín hiệu đi xuống

RP2: JNB P3.3, RP2 ; chờ cho tín hiệu đi lên

RP3: JB P3.3, RP3 ; chờ cho tín hiệu đi xuống

LCALL DELAY ; tạo trễ 900 us

MOV C,P3.3 ; Ghi tín hiệu thu được vào C để đo

JC BIT0 ; nếu tín hiệu là bit cao thì bit nhận được là bit 0

SETB C ; tín hiệu mức thấp , bit nhận dược là bit 1

RRC A ; ghi từng bit mã lệnh vào trong A

JC END_SIGNAL ; nếu C =1 thì nhận đủ 7 bit mã lệnh , kết thúc

; nhận

; kết thúc quá trình nhận tín hiệu

SJMP RP2 ; nếu C=0 thì quay lại nhãn RP2

BIT0:

CLR C ; tín hiệu mức cao bit nhận được là bit 0

RRC A

JC END_SIGNAL ; nếu C =1 thì nhận đủ 7 bit mã lệnh , kết thúc

; kết thúc quá trình nhận tín hiệu

SJMP RP3 ; nếu C=0 thì quay lại nhãn RP3

BIT0:

END_SIGNAL: ; kết thúc quá trình nhận tín hiệu

LCALL LONG_DELAY ; tạo trễ để chống nhiễu

; 7 bit trái của A đang chứa mã lệnh , bit LSB = 0

RR A ; 7 bit phải của A đang chứa mã lệnh, bit MSB = 0

MOV P1, A ; hiển thị mã lệnh ra cổng P1

KEY_1:

CJNE A,#00000000B,KEY_2 ; bấm phím 1

;---KEY = 1---

CPL P2.0 ; đảo bit sau đó

SJMP MAIN ; quay lại từ đầu

;-------------

KEY_2: CJNE A,#1,KEY_3 ; bấm phím 2

;-------------

;---KEY = 2---

CPL P2.1

SJMP MAIN

;-------------

KEY_3:

CJNE A,#2,KEY_4 ; bấm phím 3

;-------------

;---KEY = 3---

CPL P2.2

SJMP MAIN

;-------------

KEY_4:

CJNE A,#3,KEY_5 ; bấm phím 4

;-------------

;---KEY = 4---

CPL P2.3

SJMP MAIN

;-------------

KEY_5:

CJNE A,#4,KEY_6 ; bấm phím 5

;-------------

;---KEY = 2---

CPL P2.4

LJMP MAIN

;-------------

KEY_6:

CJNE A,#5,KEY_7 ; bấm phím 6

;-------------

;---KEY = 6---

CPL P2.5

LJMP MAIN

;-------------

KEY_7:

CJNE A,#6,KEY_8 ; bấm phím 7

;-------------

;---KEY = 7---

CPL P2.6

LJMP MAIN

;-------------

KEY_8:

CJNE A,#7,OTHER_KEY ; bấm phím 8

;-------------

;---KEY = 8---

CPL P2.7

LJMP MAIN

;-----------------------------------

OTHER_KEY: ; bấm các phím khác thì không làm gì

LJMP MAIN

;-----------------------------------

; tạo trễ

;-----------------------------------

DELAY: ; tạo trễ 900 ms

MOV R5,#165 ; Thời gian tạo trễ 165 x 5 x 1.085 ms = 900 ms

AGAIN: NOP

NOP

NOP

DJNZ R5,AGAIN

RET

;-----------------------------------

LONG_DELAY: ; tạo trễ dài để chống nhiễu

MOV R5,#50

REPEAT:

MOV R6,#255

HERE:

DJNZ R6,HERE

DJNZ R5,REPEAT

RET

END

nguon : http://www.ant7.com

No comments:

Post a Comment