Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
1,6 MB
Nội dung
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI THÀNH PHỐ HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ VIỄN THƠNG MƠN: KĨ THUẬT ĐO II ĐỀ TÀI: ĐIỀUKHIỂNĐỘNGCƠBẰNGCẢMBIẾNNHIỆTĐỘDS18B20 GVHD: NGUYỄN HỒNG PHÚC NHÓM: 12 SVTH : NGUYỄN TRIỆU PHONG 1651050035 TD16A HÀ THÚC TUẤN 1651050054 TD16A TRẦN THỊ THỦY TIÊN 1651050040 TD16A NỘI DUNG: GIỚI THIỆU CHUNG VỀ IC AT89S52 CẢMBIẾNNHIỆTĐỘDS18B20ĐIỀUKHIỂNĐỘNGCƠBẰNGCẢMBIẾNNHIỆTĐỘ 1.IC 89S52 1.1 Cấu trúc IC 89S52 Trung tâm 89S52 vi sử lý trung tâm (CPU) Để kích thích cho tồn hệ thống hoạt động, 89S52 có tạo dao đơng nội với thạch anh ghép từ bên ngồi với tần số khoảng từ Mhz đến 24Mhz Liên kết phần tử với hệ thống BUS nội , gồm có BUS liệu, BUSS địa BUSS điềukhiển 89S52 có 8K ROM, 256 bytes RAM số ghi bợ nhớ … Nó giao tiếp với bên qua cổng song song cổng nối tiếp thu, phát liệu nối tiếp với tốc độ lập trình Hai định thời 16 bit 89S52 có ngắt ngồi cho phép đáp ứng xử lý điều kiện bên theo cách ngắt quãng , hiệu ứng dụng điềukhiển Thông qua chân điềukhiển cổng song song 89S52 có thể mở rộng nhớ ngồi lên 64Kbs liệu Sau sơ đồ khối vi điều khiển: •1.2 Sơ lượt chân IC89S52 •IC 89S52 có 40 chân Có 32 chân làm nhiệm vụ xuất nhập, truyền liệu Các chân ơhucj vụ ngắt, chân Timer, 24 chân làm nhiệm vụ khác Mỗi chân đường xuất nhập, đường điềukhiển phần địa hay liệu Thiết kế thường có nhớ hay thiết bị ngoại vi sử dụng Port để xuất nhập liệu Tám đường Port sử dụng đơn vị giao tiếp song song máy in, biến đổi tương tự số… Hoặc đường hoạt động độc lập giao tiếp với thiết bị đơn bit khác : transistor, LED,switch… •Sau hình dạng sơ đồ IC 89S52: Port 0: - Port (P0.0 – P0.7) có số chân từ 32 – 39 - Port có hai chức năng: + Port xuất nhập liệu (P0.0 - P0.7) → không sử dụng nhớ + Bus địa byte thấp bus liệu đa hợp (AD0 – AD7) → có sử dụng nhớ ngồi Port 1: Port 1: - Port (P1.0 – P1.7) có số chân từ – - Port có chức năng: Port xuất nhập liệu (P1.0 – P1.7) → sử dụng khơng sử dụng nhớ ngồi Port 2: Port 2: - Port (P2.0 – P2.7) có số chân từ 21 – 28 - Port có hai chức năng: + Port xuất nhập liệu (P2.0 – P2.7) → khơng sử dụng nhớ ngồi + Bus địa byte cao (A8 – A15) → có sử dụng nhớ ngồi Port 3: Port 3: - Port (P3.0 – P3.7) có số chân từ 10 – 17 - Port có hai chức năng: + Port xuất nhập liệu (P3.0 – P3.7) → khơng sử dụng nhớ ngồi chức đặc biệt + Các tín hiệu điềukhiển → có sử dụng nhớ ngồi chức đặc biệt Chân PSEN: - PSEN (Program Store Enable): cho phép nhớ chương trình, chân số 29 - Chức năng: + Là tín hiệu cho phép truy xuất (đọc) nhớ chương trình (ROM) ngồi + Là tín hiệu xuất, tích cực mức thấp Chân ALE: - ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30 - Chức năng: + Là tín hiệu cho phép chốt địa để thực việc giải đa hợp cho bus địa byte thấp bus liệu đa hợp (AD0 – AD7) + Là tín hiệu xuất, tích cực mức cao Chân EA\: - EA (External Access): truy xuất ngoài, chân số 31 - Chức năng: + Là tín hiệu cho phép truy xuất (sử dụng) nhớ chương trình (ROM) ngồi + Là tín hiệu nhập, tích cực mức thấp Chân XTAL1, XTAL2: - XTAL (Crystal): tinh thể thạch anh, chân số 18-19 - Chức năng: + Dùng để nối với thạch anh mạch dao động tạo xung clock bên ngoài, cung cấp tín hiệu xung clock cho chip hoạt động + XTAL1 → ngõ vào mạch tạo xung clock chip + XTAL2 → ngõ mạch tạo xung clock chip Chân RST: - RST (Reset): thiết lập lại, chân số - Chức năng: + Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống + Là tín hiệu nhập, tích cực mức cao Chân Vcc, GND: - Vcc, GND: nguồn cấp điện, chân số 40 20 - Chức năng: Cung cấp nguồn điện cho chip 8051 hoạt động Vcc = +5V ± 10% GND = 0V 1.2 GIAO TIẾP VỚI LCD: GIAO TIẾP 8051 VỚI LCD: - LCD cần hay 11 đường I/O để giao tiếp Nếu sử dụng bus liệu bit cần dùng 11 đường I/O 8051 để giao tiếp với LCD, với kết nối mạch sau: P1.0 – P1.7 (của 8051) nối với DB0 – DB7 (của LCD) P3.7 (của 8051) nối với E (của LCD) P3.6 (của 8051) nối với RS P3.5 (của 8051) nối với RW mov A,#13 acall ; ma ASCII cua ky tu xuong dong out_char out_string_run: next_char_run: clr A movc A,@A+DPTR jz end_string_run inc DPTR acall out_char sjmp next_char_run end_string_run: JB P3.3,$ RETI STOP: CLR P2.7 mov TMOD,#20h ; timer mode mov SCON,#53h ; UART mode mov TH1,#(-3) mov ; baudrate = 9600 TL1,#(-3) SETB TR1 mov acall DPTR,#700H out_string_stop mov acall A,#13 out_char out_string_stop: next_char_stop: clr A movc A,@A+DPTR jz end_string_stop inc DPTR acall out_char sjmp next_char_stop ; ma ASCII cua ky tu xuong dong end_string_stop: JB P3.2,$ RETI MAIN: MOV IE, #9FH SETB INT0;set chân INT0 lên SETB INT1 75 - SETB INT0 76 - SETB INT1 ;set chân INT0 lên ;set chân INT1 lên 77 - ROW1: ;Thong tin nhom 78 - CLR A ;gán A = 79 - MOVC A,@A+DPTR ;chép vào A byte từ nhớ chương trình tới vị trí cách trỏ gốc DPTR khoảng A 80 - LCALL WRITE_TEXT 81 - INC DPTR 82 - DJNZ 30H,ROW1 ;giảm giá trị ô nhớ 30H nhảy đến nhãn giá trị ô nhớ direct khác ;nếu giá trị ô nhớ 30H thực câu lệnh LCALL DELAY2 83 - LCALL DELAY2 84 - MOV R2,#8 85 - MOV A,#0C0H ;đưa trỏ đến đầu dòng 86 - LCALL WRITE_CONTROL 87 - LCALL READTEMP ; gọi hàm đọc tín hiệu từ cảmbiến 88 - LCALL CHUAN ; chuẩn hóa liệu vừa nhận thành số nguyên 89 - JB ACC.7,AM ;xét dấu giá trị nhiệtđộ DB7=1 nhảy đến nhãn AM 90 - JMP DUONG 91 - AM: 92 - MOV A,#0B0H ; ghi hình dấu "-" 93 - LCALL WRITE_TEXT 94 - LCALL CHUAN 95 - CPL A ;lấy bù A 96 - MOV B,#0AH ;B=10 97 - DIV AB ;tách hàng chục hàng đơn vị sau xuất 98 - MOV CHUC,A 99 - MOV DVI,B 100 101 - ;ghi giá trị nhiệtđộ vào ghi A MOV A,CHUC ADD A,#30H 102 - LCALL WRITE_TEXT 103 - MOV A,DVI 104 - ADD A,#30H 105 - LCALL WRITE_TEXT 106 - MOV A,#0DFH 107 - LCALL WRITE_TEXT 108 - MOV A,#43H 109 - LCALL WRITE_TEXT 110 - LCALL DELAY1 111 - LJMP MAIN ;cộng giá trị ghi A với 30H để hiển thị số hàng chục lên LCD ;cộng giá trị ghi A với 30H để hiển thị số hàng đơn vị lên LCD ;ghi hình kí tự ;ghi hình kí tự C 112 - DUONG: 113 114 115 - MOV B,#64H DIV AB CJNE A,#0,HANG_TRAM 116 - LCALL CHUAN 117 - MOV B,#0AH 118 - MOV R2,A 119 - DIV AB 120 - MOV CHUC,A 121 - MOV DVI,B 122 - ;B = 100 ;nếu A số nhỏ 100 kết A = 0, ngược lại A = ;nếu A khác nhảy đến HANG_TRAM ;B = 10 ;tách hàng đơn vị hàng chục MOV A,CHUC 123 - ADD A,#30H 124 - LCALL WRITE_TEXT 125 - MOV A,DVI 126 - ADD A,#30H 127 - LCALL WRITE_TEXT 128 - MOV A,#0DFH 129 - LCALL WRITE_TEXT 130 - MOV A,#43H 131 - LCALL WRITE_TEXT 132 - LCALL DELAY1 133 - CJNE R2,#38,KT ;cộng giá trị ghi A với 30H để hiển thị số hàng chục lên LCD ;cộng giá trị ghi A với 30H để hiển thị số hàng đơn vị lên LCD ;ghi hình kí tự ;ghi hình kí tự C ;so sánh giá trị ghi R2 với 38 134 - KT: 135 - JNC ON ;C=0 => ON 136 - JC OFF ;C=1 => OFF 137 - LJMP MAIN 138 - ON: 139 - SETB P2.7 140 - LJMP MAIN 141 - OFF: 142 - CLR P2.7 143 - LJMP MAIN 144 – HANG_TRAM: 145 - MOV A,#31H 146 - LCALL WRITE_TEXT 147 - LCALL CHUAN 148 - 148 - CLR CY SUBB A,#64H 149 - MOV B,#0AH 150 - DIV AB 151- MOV CHUC,A 152 - MOV DVI,B 153 - MOV A,CHUC 154 - ADD A,#30H 155 - LCALL WRITE_TEXT 156 - MOV A,DVI ;in số ;CY = ;trừ nội dung ghi A với ô nhớ 64H trừ thêm cờ nhớ C, kết cất vào A 157 - ADD A,#30H 158 - LCALL WRITE_TEXT 159 - MOV A,#0DFH ;ghi hình kí tự 160 - LCALL WRITE_TEXT 161 - MOV A,#43H 162 - LCALL WRITE_TEXT 163 - LCALL DELAY1 164 - LJMP MAIN ;ghi hình kí tự C 165 - READTEMP: 166- SETB IN 167- CALL RESETT 168 - MOV A,#0CCH ; cho phép nhiều cảmbiến chuyển đổi đồng thời 169 - CALL WRITE 170 - MOV A,#44H 171 – CALL WRITE 172 - CALL RESETT 173 - MOV A,#0CCH 174 - CALL WRITE 175 - MOV A,#0BEH 176 - CALL WRITE 177- CALL READ 178 - MOV R3,A ;chuyển đổi giá trị nhiệtđộ thành số (nhị phân) ;đọc nội dung liệu từ nhớ nháp cảmbiến 179 - CALL READ 180 - MOV R4,A 181 - RET 182 - RESETT: 183 - CLR IN 184 - CALL DELAY 185 - SETB IN 186 - CALL DELAY 187 - ;không bị nhiễu RET 188 - CHUAN: 189 - MOV A,R3 190 - ANL A,#0F0H 191 - MOV B,R4 192 - ANL B,#00FH 193 - ADD A,B 194 - SWAP A 195 - RET 196 - WRITE: 197 - CLR IN 198 - NOP 199 - NOP ;0F0H=11110000B ;00FH=00001111B 200 - RRC A 201 - MOV IN,C 202 - MOV R1,#30 203 - CALL DELAY 204 - SETB IN 205 - NOP 206 - NOP 207 - DJNZ R2,WRITE 208 - MOV R1,#50 209 - CALL DELAY 210 - MOV R2,#8 211 - RET 212 - READ: 213 - CLR IN 214 - NOP 215 - NOP 216 - SETB IN 217 - NOP 218 - NOP 219 - NOP 220 - NOP 221 - NOP 222 - NOP ;quay phải bit ghi A có dùng thêm cờ nhớ C 223 - NOP 224 - NOP 225 - MOV C,IN 226 - MOV R1,#50 227 - CALL DELAY 228 - RRC A 229 - DJNZ R2,READ ; giảm giá trị ghi R2 đơn vị, sau nhảy đến READ R2 khác 230 - MOV R2,#8 231 - RET 232 - DELAY: 233 - DJNZ R1,DELAY 234 - RET 235 - INI_LCD: 236 - MOV A,#38H 237 - LCALL WRITE_CONTROL 238 - MOV A,#0CH 239 - LCALL WRITE_CONTROL 240 - MOV A,#06H 241 - LCALL WRITE_CONTROL 242 - MOV A,#1CH 243 - LCALL WRITE_CONTROL 244- RET 245 - CLEAR_LCD: ;xóa hình hiển thị lcd 246 - MOV A,#01H 247 - LCALL WRITE_CONTROL 248 - RET 249 - RESET_LCD: 250 - CLR EN 251 - CLR RS 252 - LCALL DELAY2 253 - RET 254 - WRITE_TEXT: 255 - SETB EN 256 - SETB RS 257 - MOV LCD,A 258 - CLR EN 259 - LCALL DELAY2 260 - RET 261 - WRITE_CONTROL: 262 - SETB EN 263 - CLR RS 264 - MOV LCD,A 265 - CLR EN 266 - LCALL DELAY2 267 - RET ;ghi hình TIME: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) CLR P1.0 SETB P1.1 CLR P1.2 SETB P1.3 CLR P1.4 SETB P1.5 CLR P1.6 SETB P1.7 JNB TF0, $ SETB P1.0 CLR P1.1 SETB P1.2 CLR P1.3 SETB P1.4 CLR P1.5 SETB P1.6 CLR P1.7 CLR TF0 RETI Nhiệtđộ INT0 P2.7 = BUTTON INT1 >=38 P2.7 = NO P2.7 = SBUF->A A = 0? P2.7 = YES P2.7 =