Vi xử lí

6 496 6
Vi xử lí

Đang tải... (xem toàn văn)

Thông tin tài liệu

Trong cuộc sống hàng ngày của chúng ta hiện nay , vi xử đượ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 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ử 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ẽ http://i229.photobucket.com/albums/ee44/KOTENKOTINH/h inh1.jpg 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 : http://i229.photobucket.com/albums/ee44/KOTENKOTINH/h inh2.jpg Để 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 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 : http://i229.photobucket.com/albums/ee44/KOTENKOTINH/h inh3-1.jpg II) SƠ ĐỒ NGUYÊN LÍ: http://i229.photobucket.com/albums/ee44/KOTENKOTINH/h inh4-1.jpg 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 http://i229.photobucket.com/albums/ee44/KOTENKOTINH/h inh5.jpg + 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ử để 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 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 . 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. 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

Ngày đăng: 23/10/2013, 14:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan