Vi xử lí

Chia sẻ: Trần Thanh Tùng | Ngày: | Loại File: DOC | Số trang:7

0
240
lượt xem
135
download

Vi xử lí

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 .

Chủ đề:
Lưu

Nội dung Text: Vi xử lí

  1. 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ẽ http://i229.photobucket.com/albums/ee44/KOTENKOTINH/hinh1.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/hinh2.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 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 
  2. 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/hinh3­ 1.jpg II) SƠ ĐỒ NGUYÊN LÍ: http://i229.photobucket.com/albums/ee44/KOTENKOTINH/hinh4­ 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/hinh5.jpg
  3. + 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 
  4. 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 đó 
  5. 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 
  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
  7. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 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

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản