Apr 28, 2009
Cách viết báo cáo khoa học cho các tập san khoa học quốc tế
Apr 22, 2009
ĐIỀU KHIỂN TỪ XA CÁC THIẾT BỊ TRONG NHÀ
MAI VĂN HOÀNG
MSSV: 0503427
LỚP:ĐHĐT1
Với sự ra đời của vi điều khiển - vi xử lí năm 1971, đã thúc đẩy sự phát triển và ứng dụng của kĩ thuật số trong cuộc sống. Hầu hết các ứng dụng ngày nay đều có sử dụng đến vi xử lí như máy vi tính, điện thoại, ti vi, VCR…Và một ứng dụng rất thú vị của vi xử lí là điều khiển các thiết bị từ xa. Thay vì phải đứng dậy bật tắt các thiết bị trong nhà như quạt, bóng điện… chúng ta có thể ngồi một chỗ điều khiển bật tắt các thiết bị đó.
Vì trong phòng khoảng cách ngắn nên có thể sử dụng hồng ngoại làm tín hiệu điều khiển. Sử dụng remote của TV làm bộ phát, dùng led thu hồng ngoại để thu tín hiệu (led thu IR 3 chân màu đen), và dùng chip vi điều khiển để giải mã tín hiệu (AT89C51).
Mã lệnh điều khiển TV SONY
Phím Mã lệnh
1 0H
2 1H
3 2H
4 3H
5 4H
6 5H
7 6H
8 7H
9 8H
10 9H
PROGRAM + 10H
PROGRAM - 11H
VOLUME + 12H
VOLUME - 13H
MUTING 14H
POWER 15H
DISPLAY 3AH
Ở đây chỉ dùng 8 mã lệnh để đóng mở 8 relay ( phím 1-8). Khi bấm các phím trên remote TV thì led thu IR sẽ thu tín hiệu qua VDK 89c51 sẽ giải mã đưa vào thanh ghi A và xuất hiển thị mã này ra port 1, đồng thời mã này sẽ so sánh với các mã lệnh của các phím xuất ra port 0 để đóng mở các relay tương ứng.
A: Thu phát và giải mã tín hiệu
-Phát tín hiệu:
Dùng remote của TV sony hoặc bộ phát hồng ngoại.
Tín hiệu từ remote Sony có dạng:
-Phần đầu tiên của tín hiệu có độ dài 3T bằng 1800ms gọi là header hay satart bit. Các bit còn lại được mã hóa như sau:
500ms im lặng + 700ms hồng ngoại = bit 0
500ms im lặng +1300ms hồng ngoại = bit 1
Bit start đặt là bit B0, bit cuối là B11. Với 7 bit đầu là bit lệnh, 5 bit cuối là bit địa chỉ. Vì các tín hiệu đều lấy từ cùng renote nên ta chỉ cần giải mã 7 bit lệnh đầu tiên.
-Thu tín hiệu
Dùng led thu hồng ngoại để thu tín hiệu. Tín hiệu qua led thu sẽ bị đảo như sau:
bit 0=500ms mức cao+700ms mức thấp
bit 1=500ms mức cao+1300ms mức thấp
-Giải mã tín hiệu:
Để thu được 7 bit lệnh ta cần nạp cho thanh ghi A giá trị 00000010B để sau 7 lần quay trái có cờ nhớ C thì giá trị thanh ghi A chính là mã lệnh điều khiển của phím bấm remote.
Thuật toán giải mã:
1.Nạp thanh ghi A giá trị 02H
2.Chờ tín hiệu đi xuống( bit start)
3.Chờ tín hiệu đi lên(khởi đầu của 1 bit)
4.Chờ tín hiệu đi xuống
5.Chờ khoảng 700ms
+ nếu ở mức thấp bit nhận được là bit 1, đặt C=1 quay phải A có cờ C, quay lại bước 3.
7.Nếu C=1, giá trị trong thanh ghi A= D6D5D4D3D2D1D00, quay phải A thu được A=0 D6D5D4D3D2D1D0
-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à VDK giải mã được).
Lưu đồ giải mã tín hiệu:
B: Phần điều khiển bật tắt thiết bị
-So sánh nội dung trong thanh ghi A với mã lệnh của các phím
Thuật toán như sau:
IF A=0H(PHIM 1)
P0.0=0
ELSEIF A=1H(PHIM 2)
P0.1=0
ELSEIF A=2H(PHIM 3)
P0.2=0
ELSEIF A=3H(PHIM 4)
P0.3=0
ELSEIF A=4H(PHIM 5)
P0.4=0
ELSEIF A=5H(PHIM 6)
P0.5=0
ELSEIF A=6H(PHIM 7)
P0.6=0
ELSEIF A=7H(PHIM 8)
P0.7 =0
Lưu đồ :
Lưu đồ của chưong trình:
SƠ ĐÒ NGUYÊN LÝ:
ĐOẠN MÃ CHƯƠNG TRÌNH:
$MOD51
ORG 00H
MOV P0,#0FFH; Tắt tất cả các relay
MOV P1,#0;
MAIN:
;GIẢI MÃ TÍN HIỆU
MOV A,#40H
SETB P3.3
JB P3.3,$ ; Chờ tín hiệu mức thấp, bit START
LAP1: JNB P3.3,LAP1 ; CHỜ TÍN HIỆU MỨC CAO, KHỞI ĐẦU CỦA BIT
LAP2: JB P3.3,LAP2 ; CHỜ TÍN HIỆU MỨC THẤP
LCALL DELAY1MS
JNB P3.3,LAP3 ; NHẢY TỚI LAP3 NẾU TÍN HIỆU MỨC THẤP
CLR C ; ĐẶT C=0
RRC A ; XOAY PHẢI A CÓ CỜ NHỚ C
JNC LAP2 ; NHẢY TỚI NHÃN LAP2 NẾU C=0
SJMP KETTHUC ;NHẢY TỚI NHÃN KETTHHUC NẾU C=1
LAP3: SETB C ; ĐẶT C=1 NẾU TÍN HIỆU MỨC THẤP
RRC A ; XOAY PHẢI A CÓ CỜ NHỚ
JNC LAP1 ; NHẢY ĐẾN NHÃN LAP1 NẾU C=0
KETTHUC:
RR A ; QUAY PHẢI A THU ĐƯỢC MÃ CỦA TÍN HIỆU
MOV P1,A ;XUẤT MÃ RA PORT 1 HIỂN THỊ BẰNG LED
; PHẦN ĐIỀU KHIỂN TÍN HIỆU
PHIM1: CJNE A,#0H,PHIM2 ;SO SÁNH MÃ LỆNH PHÍM VỚI MÃ T H
CPL P0.0 ; ĐẢO BIT ĐÓNG MỞ RELAY
SJMP MAIN; QUAY VỀ CHƯƠNG TRINH CHÍNH THU TÍN HIỆU TIẾP
PHIM2: CJNE A,#1H,PHIM3 ;
CPL P0.1
SJMP MAIN
PHIM3: CJNE A,#2H,PHIM4
CPL P0.2
SJMP MAIN
PHIM4: CJNE A,#3H,PHIM5
CPL P0.3
SJMP MAIN
PHIM5: CJNE A,#4H,PHIM6
CPL P0.4
PHIM6: CJNE A,#5H,PHIM7
CPL P0.5
SJMP MAIN
PHIM7: CJNE A,#6H,PHIM8
CPL P0.6
SJMP MAIN
PHIM8: CJNE A,#7H,PHIMKHAC
CPL P0.7
SJMP MAIN
PHIMKHAC:
NOP
SJMP MAIN
; TẠO TRỄ 1MS
DELAY1MS:
MOV R0,#10
HERE:
MOV R1,#50
DJNZ R1,$
DJNZ R0,HERE
RET
END
king2504
Hiện đã có 1 ý kiến thảo luận về bài viết này. Mời bạn cùng trao đổi!
Về đầu trang
In bài viết
Gửi qua email
Thảo luận về bài viết
king2504
lưu đồ giải thuật điều khiển tín hiệu ở trên bị nhầm, nó chỉ có mở mà không đóng
lưu đồ đúng:
Cac ban xem chi tiet o day: http://www.mediafire.com/?enzn0mwtjy2
Nguon: http://www.ant7.com
Đọc tiếp →
Mar 11, 2009
Kiếm tiền Online, trả bằng paypal.
Kiếm tiền online tuy không như người ta nói $1000 một tháng, nhưng có thể kiếm $10 hoặc nhiều hơn qua những trang sau. Tuy là lúc đầu thấy không nhiều nhưng mà qua referrals, nghĩa là kiếm nhiều người khác click cùng với mình, sẽ được nhiều tiền hơn. Càng nhiều người thì càng tốt. Và nếu mình làm vậy cho những cái site này thì trong 1 tháng mình kiếm hơn $50.
Việc đầu tiên là đăng ký paypal account.
NeoBux
1 cent per link, 4-5 links per day and first minimum pay out is $2. Trang này nổi tiếng.
QuickRewards
Có thể kiếm tiền trong website này bằng cách click ads mổi ngày hoặc là đăng kí (sign up). Trả tiền qua paypal.
TakeTheGlobe (trả qua alertpay)
.5 Cents per click. Trang này có 80 links mỗi ngày, nếu click mỗi ngày một mình thì trong vòng 25 ngày sẽ được $10... yum. Ai đăng ký làm ơn bỏ janwintr vào referral
MatrixMails
.5 Cent per click, minimum pay out $2. Mỗi ngày nó sẽ tăng Ads lên để click, nhiều khi nó cho link sign up có thễ kiếm được $1 liền
nguon: http://www.1kho.com Đọc tiếp →
Họ Tên: Nguyễn Hữu Vinh MSSV:0502167 Đề Bài:Đối với 1 nhà có nhiều cửa ra vào đôi khi ta sẽ không giám sát được hết tất cả các cửa do vậy với mục đích an toàn cần tạo một mạch giám sát cửa ra vào Yêu cầu:kiểm tra tất cả các cửa khi cửa mở led hiển thị của cửa tương ứng sẽ sáng và chuông báo động sẽ reo trong 2s rồi tắt,Led 7 đoạn sẽ báo có mấy cưa được mở Linh kiện sử dụng:IC 89c51.IC giải mã 4511.LEd báo số phòng,led 7 đoạn.loa báo động Sơ đồ mạch: trong mạch này sử dụng led nối với P3 thay cho kèn báo động(led sẽ sáng trong 2s khi có cửa mở). các nút nhấn tương ứng với cửa các phòng từ 1 đến 8 Lưu Đồ: CODE: $MOD51 ORG 00H MOV P1,#00H MOV P2,#00H MOV P3,#00H MOV ACC,#00H SW0: JNB P0.0 , work0; CLR P1.0; SJMP SW1; work0: SETB P1.0; ADD A , #1H; ACALL BAODONG SW1: JNB P0.1 , work1; CLR P1.1; SJMP SW2; work1: SETB P1.1; ADD A , #1H; ACALL BAODONG SW2: JNB P0.2 , work2; CLR P1.2; SJMP SW3; work2: SETB P1.2; ADD A , #1H; ACALL BAODONG SW3: JNB P0.3 , work3; CLR P1.3; SJMP SW4; work3: SETB P1.3; ADD A , #1H; ACALL BAODONG SW4: JNB P0.4 , work4; CLR P1.4; SJMP SW5; work4: SETB P1.4; ADD A , #1H; ACALL BAODONG SW5: JNB P0.5 , work5; CLR P1.5; SJMP SW6; work5: SETB P1.5; ADD A , #1H; ACALL BAODONG SW6: JNB P0.6 , work6; CLR P1.6; SJMP SW7; work6: SETB P1.6; ADD A , #1H; ACALL BAODONG SW7: JNB P0.7 , work7; CLR P1.7; SJMP HIENTHI; work7: SETB P1.7; ADD A , #1H; ACALL BAODONG HIENTHI: MOV R1,A MOV P2,R1; MOV R2,A AJMP BAODONG: CJNE R2,#0H,AAAA CJNE A,#0H,BAO SJMP AAAA BAO: SETB P3.0 LCALL DELAY2s CLR P3.0 AAAA: RET ;******************************** DELAY2s: PUSH 00H; MOV R0 , #200; MOV TMOD , #01H; MOV TH0,#HIGH(-10000); MOV TL0,#LOW(-10000); SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R0, POP 00H RET END
Mach có thể mở rộng thêm với nhiều cửa | |||||
nguon http://www.ant7.com |
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 :
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
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
;-------------
KEY_3:
CJNE A,#2,KEY_4 ; bấm phím 3
;-------------
;---KEY = 3---
CPL P2.2
SJMP
;-------------
KEY_4:
CJNE A,#3,KEY_5 ; bấm phím 4
;-------------
;---KEY = 4---
CPL P2.3
SJMP
;-------------
KEY_5:
CJNE A,#4,KEY_6 ; bấm phím 5
;-------------
;---KEY = 2---
CPL P2.4
LJMP
;-------------
KEY_6:
CJNE A,#5,KEY_7 ; bấm phím 6
;-------------
;---KEY = 6---
CPL P2.5
LJMP
;-------------
KEY_7:
CJNE A,#6,KEY_8 ; bấm phím 7
;-------------
;---KEY = 7---
CPL P2.6
LJMP
;-------------
KEY_8:
CJNE A,#7,OTHER_KEY ; bấm phím 8
;-------------
;---KEY = 8---
CPL P2.7
LJMP
;-----------------------------------
OTHER_KEY: ; bấm các phím khác thì không làm gì
LJMP
;-----------------------------------
; 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