Điều Khiển Thiết Bị Qua PC
Trang 1 LỜI MỞ ĐẦU Với việc phát triển của kĩ thuật vi xữ lý hiện nay thì việc áp dụng vào thực tiễn đời sống là một nhu cầu cần thiết của con ngƣời. Với xu hƣớng hiện đại hóa nhƣ hiện nay thì việc điều khiển thiết bị bởi một hệ thống sẽ giúp việc điều khiển thiết bị đơn giản và dễ sử dụng cho ngƣời dùng. Nắm bắt đƣợc tình hình nhóm sinh viên chúng em lựa chọn đề tài “Điều Khiển Thiết Bị Qua PC” nhằm nghiên cứu để cung cấp cho ngƣời dùng một hệ thống điều khiển đơn giản mà hiệu quả, đó là hệ thống điều khiển nhiều thiết bị tại chỗ qua việc kết nối với cổng COM máy tính, chúng ta có thể điều khiển đƣợc các thiết bị dân dụng nhƣ đèn dây tóc, đèn huỳnh quang, và các thiết bị đƣợc đƣợc điều khiển bằng chức năng ON/OFF. Thông qua việc nghiên cứu vi điều khiển AT89S8252, các cổng giao tiếp máy tính và các linh kiện điện tử, đề tài sẽ mang lại một hệ thống ổn định, chính xác và an toàn với ngƣời sử dụng. Với sự hƣớng dẫn của cô Nguyễn Lan Anh đã giúp chúng em hoàn thành tốt đề tài này. Trong quá trình tìm hiểu không thể không có những điều thiếu sót, mong quý Thầy Cô và ngƣời đọc góp ý, chình sửa để đề tài của chúng em đƣợc hoàn thiện tốt hơn. Nhóm Sinh Viên Điều khiển thiết bị qua PC Mục lục Trang 2 MỤC LỤC LỜI MỞ ĐẦU .1 MỤC LỤC 2 CHƢƠNG 1: DẪN NHẬP 6 1.1 LÝ DO CHỌN ĐỀ TÀI 6 1.3 ĐỐI TƢỢNG NGHIÊN CỨU VÀ PHẠM VI NGHIÊN CỨU 6 1.3.1 Đối tƣợng nghiên cứu. .6 1.3.2 Phạm vi nghiên cứu 6 CHƢƠNG 2: TÌM HIỂU VI ĐIỀU KHIỂN AT89S8252 7 2.1 MÔ TẢ 7 2.2 CẤU TRÚC VDK AT89S8252, CHỨC NĂNG TỪNG CHÂN 7 2.3 TỔ CHỨC BỘ NHỚ 11 2.3.1 RAM mục đích chung . 12 2.3.2 RAM định vị. . 12 2.3.3 Các băng thanh ghi (Register Banks). 12 2.3.4 Các thanh ghi chức năng đặc biệt (Special Function Register). 13 2.3.4.1 Từ trạng thái chƣơng trình (PSW: Program Status Word): 14 2.3.4.2 Thanh ghi B: . 16 2.3.4.3 Con trỏ Stack SP (Stack Pointer): . 16 2.3.4.4 Hai con trỏ dữ liệu DPTR (Data Pointer) . 16 2.3.4.5 Các thanh ghi Port (Port Register): . 16 2.3.4.6 Các thanh ghi Timer (Timer Register): . 16 2.3.4.7 Các thanh ghi Port nối tiếp (Serial Port Register): 17 2.3.4.8 Các thanh ghi ngắt (Interrupt Register): . 17 2.3.4.9 Thanh ghi điều khiển nguồn PCON (Power Control Register): 18 2.3.4.10 Thanh ghi điều khiển bộ nhớ và kiểm soát giờ (WMCON) . 19 2.3.4.11 Thanh ghi giao tiếp nối tiếp bên ngoài SPI (Serial Peripheral Interface) 20 2.4 TÓM TẮT TẬP LỆNH CỦA AT89S8252 . 21 2.4.1 Các chế độ định vị ( addressing mode ) . 21 2.4.1.1 Sự định vị thanh ghi ( Register Addressing) 21 2.4.1.2 Sự định địa chỉ trực tiếp ( Direct Addressing ) 22 2.4.1.3 Sự định vị địa chỉ gián tiếp ( Indirect Addressing) . 22 Điều khiển thiết bị qua PC Mục lục Trang 3 2.4.1.4 Sự định vị địa chỉ tức thời (Immediate Addressing) . 23 2.4.1.5 Sự định vị địa chỉ tƣơng đối . 23 2.4.1.6 Sự định địa chỉ tuyệt đối ( Absolute Addressing) . 24 2.4.1.7 Sự định vị địa chỉ dài ( Long Addressing ) 24 2.4.1.8 Sự định địa chỉ phụ lục (Index Addressing ) 24 2.4.2 Các kiểu lệnh (instruction types) . 25 2.4.2.1 Các lệnh số học (Arithmetic Instrustion): 25 2.4.2.2 Các hoạt động logic (Logic Operation): . 26 2.4.2.3 Các lệnh rẽ nhánh 27 2.4.2.4 Các lệnh dịch chuyển dữ liệu. 29 2.4.2.5 Các lệnh luận lý (Boolean Instruction) . 30 2.5 HOẠT ĐỘNG CỦA PORT NỐI TIẾP AT89S8252. 31 2.5.1 Giới thiệu 31 2.5.2 Thanh ghi điều khiển port nối tiếp SCON (Serial Port Control Register) 32 2.5.3 Các mode hoạt động (Mode Of Operation) . 33 2.5.4 Sự khởi động, truy xuất các thanh ghi port nối tiếp 34 2.5.4.1 Sự cho phép bộ thu (Recive Enable) . 34 2.5.4.2 Bit data thứ 9 ( the 9 th data bit) 34 2.5.4.3 Sự thêm vào bit kiểm tra chẳn lẻ Parity 34 2.5.4.4 Cờ ngắt 35 2.5.5 Sự truyền của bộ xử lý đa kênh . 35 2.5.6 Tốc độ baud của port nối tiếp 36 2.6 HOẠT ĐỘNG TIMER CỦA AT89S8252 39 2.6.1 Giới thiệu 39 2.6.2 Timer 0 và Timer 1 . 39 2.6.2.1 Thanh ghi điều khiển Timer TCON (Timer Control Register) 41 2.6.2.2 Các Mode và cờ tràn (Timer Modes And Overflow) 41 2.6.2.2.1 Mode Timer 13 bit (MODE 0) . 41 2.6.2.2.2 Mode Timer 16 bit (MODE 1) . 42 2.6.2.2.3 Mode tự động nạp 8 bit (MODE 2) . 42 2.6.2.2.4 Mode Timer tách ra (MODE 3) 43 2.6.2.3 Các nguồn xung clock (Clock Sources) 43 2.6.2.3.1 Sự bấm giờ bên trong (Interval Timing) . 43 2.6.2.3.2 Sự đếm các sự kiện (Event Counting) . 44 Điều khiển thiết bị qua PC Mục lục Trang 4 2.6.2.4 Sự bắt đầu, kết thúc và sự điều khiển các Timer (Starting, Stoping And Controlling The Timer) . 44 2.6.2.5 Sự khởi động và truy suất các thanh ghi Timer. 44 2.6.2.6 Sự đọc thanh ghi timer trên tuyến. 45 2.6.3 Timer 2 45 2.6.3.1 Thanh ghi T2CON (Timer/Counter 2 Control Register) 46 2.6.3.2 Thanh ghi T2MOD – Timer 2 Mode Control Register . 47 2.6.3.3 Chế độ Capture 47 2.6.3.4 Chế độ Auto-Reload 48 2.6.3.5 Chế độ Baud Rate Generator 49 CHƢƠNG 3: TÌM HIỂU CÁC CỔNG GIAO TIẾP . 51 3.1 GIAO TIẾP CỔNG SONG SONG (CỔNG MÁY IN) . 51 3.1.1 Tên gọi 51 3.1.2 Mức điện áp cổng 51 3.1.3 Khoảng cách ghép nối 51 3.1.4 Tốc độ truyền dữ liệu 51 3.1.5 Cấu trúc cổng song song . 51 3.1.6 Các thanh ghi ở cổng song song. . 53 3.2 GIAO TIẾP CỔNG NỐI TIẾP (RS232) . 53 3.2.1 Cấu trúc cổng nối tiếp. 53 3.2.2 Truyền thông nối tiếp giữa 2 nút. 56 3.3 TÌM HIỂU VỀ USB . 57 3.3.1 Khái niệm . 57 3.3.2 Kết nối qua USB 58 3.3.3 Mở rộng cổng USB . 58 3.3.4 Các đặt tính của USB 59 3.3.5 USB 2.0 60 3.3.6 USB 3.0 60 CHƢƠNG 4: CHUẨN TRUYỀN THÔNG NỐI TIẾP RS232 62 4.1 ĐẶT VẤN ĐỀ. . 62 4.2 ƢU ĐIỂM CỦA GIAO DIỆN NỐI TIẾP RS232. . 62 4.3 NHỮNG ĐẶC ĐIỂM CẦN LƢU Ý TRONG CHUẨN RS232. . 62 4.4 CÁC MỨC ĐIỆN ÁP ĐƢỜNG TRUYỀN . 62 4.5 CỔNG RS232 TRÊN PC . 63 4.6 QUÁ TRÌNH DỮ LIỆU. . 64 Điều khiển thiết bị qua PC Mục lục Trang 5 4.6.1 Tốc độ Baud. 65 4.6.2 Bit chẵn lẻ hay Parity bit. 65 4.7 SƠ ĐỒ KẾT NỐI . 66 CHƢƠNG 5. THIẾT KẾ MẠCH PHẦN CỨNG ĐIỀU KHIỂN . 67 5.1 KHỐI NGUỒN NUÔI VI ĐIỀU KHIỂN, MẠCH. . 67 5.2 KHỐI CHUYỂN ĐỔI TÍN HIỆU RS232 THÀNH TTL DÙNG MAX232 . 68 5.2.1 Giới thiệu về MAX232 . 68 5.2.2 Sơ đồ kết nối. . 68 5.3 MẠCH ĐIỀU KHIỂN ĐÓNG NGẮT TẢI AC. 69 CHƢƠNG 6: THIẾT KẾ CODE VÀ GIAO DIỆN ĐIỀU KHIỂN 71 6.1 THIẾT KẾ CODE ĐIỀU KHIỂN VI XỬ LÝ 71 6.1.1 Ý tƣởng thiết kế . 71 6.1.2 Lƣu đồ giải thuật . 72 6.1.3 Code điều khiển . 72 6.2 THIẾT KẾ GIAO DIỆN ĐIỀU KHIỂN 75 6.3 MẠCH NGUYÊN LÝ . 83 6.4 MẠCH MÔ PHỎNG 84 CHƢƠNG 7: HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI . 85 TÀI LIỆU THAM KHẢO . 86 PHỤ LỤC 1 . 87 PHỤ LỤC 2 . 88 Điều khiển thiết bị qua PC Chƣơng 1: Dẫn Nhập Trang 6 CHƢƠNG 1: DẪN NHẬP 1.1 LÝ DO CHỌN ĐỀ TÀI Với sự phát triển không ngừng của các ngành khoa học kỹ thuật nhằn đáp ứng ngày càng đa dạng và phong phú cho đời sống con ngƣời, việc nghiên cứu và phát triển các sản phẩm điều khiển tự động thay thế sức lao động cùa con ngƣời là một nhiệm vụ rất cần thiết. Viêc giám sát và điều khiển các thiết bị từ xa qua hệ thống gồm các phần tử nối với nhau bằng dây dẫn thông qua chuẩn RS232 đã đem lại một lợi ích hết sức to lớn cho nhu cầu phát triển của xã hội, tiết kiệm đƣợc rất nhiều thời gian, sức lực và mang lại hiệu quả kinh tế lớn. Nắm bắt đƣợc tình hình quan trọng, với quyết định lựa chon đề tài “Điều khiển thiết bị qua PC” nhằm góp phần mang lại sự tiện nghi, tiện ích cho cuộc sống ngày nay. 1.2 MỤC ĐÍCH NGHIÊN CỨU ĐỀ TÀI Đề tài sử dụng điều khiển các thiết bị dân dụng trong gia đình nhƣ đèn, quạt, thông qua ngôn ngữ lập trình phổ biến hiện nay. Từ viêc tìm hiểu về các thiết bị giao tiếp cho đến việc thiết kế mạch nhằm giúp ngƣời đọc dễ dàng tiếp nhận và muốn cung cấp hệ thống điều khiển cho ngƣời sử dụng. 1.3 ĐỐI TƢỢNG NGHIÊN CỨU VÀ PHẠM VI NGHIÊN CỨU 1.3.1 Đối tƣợng nghiên cứu. Tìm hiểu về các cổng giao tiếp: cổng nối tiếp, cổng song song, cổng USB, chuẫn kết nối RS232, khảo sát vi điều khiển AT89S8252. 1.3.2 Phạm vi nghiên cứu. Thực hiện viêc kết nối thiết bị điều khiển với PC thông qua RS232, điều khiển các thiết bị dân dụng. Điều khiển thiết bị qua PC Chƣơng 2: Tìm hiểu VDK AT89S8252 Trang 7 CHƢƠNG 2: TÌM HIỂU VI ĐIỀU KHIỂN AT89S8252 2.1 MÔ TẢ AT89S8252 là một vi điều khiển do ATMEL sản xuất, chế tạo theo công nghệ CMOS với 8KB Flash (Flash programmable and erasable read only memory) và 2KB EEPROM. Thiết bị này đƣợc chế tạo bằng cách sử dụng kỹ thuật bộ nhớ không bốc hơi mật độ cao của ATMEL và tƣơng thích với chuẩn công nghiệp MSC-52 TM về lập tập lệnh và các chân ra. AT89S8252 là một vi điều khiển mạnh có công suất lớn có tính linh động cao và phù hợp về giá cả đối với các ứng dụng vi điều khiển. Các đặc điểm của AT89S8252 đƣợc tóm tắt nhƣ sau: Tƣơng thích hoàn toàn với họ MSC-52 TM của Intel. 8 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xóa. Tần số hoạt động từ 0Hz đến 24 MHz. 3 mức khóa bộ nhớ lập trình. 3 bộ Timer/Counter 16 bit. 256 Byte RAM nội. 4 Port xuất nhập I/O 8 bít. Giao tiếp nối tiếp. 2KB EEPROM bên trong dùng để lƣu trữ chƣơng trình. Độ bền EEPROM: 100.000 lần ghi/xóa. Chế độ hạ nguồn và chế độ lƣời tiêu tốn công suất thấp. 9 nguồn ngắt. Điều khiển truyền dữ liệu trực tiếp qua các chân MISO, MOSI, SCK. 2.2 CẤU TRÚC VDK AT89S8252, CHỨC NĂNG TỪNG CHÂN Chức năng hoạt động của từng chân (PIN) đƣợc tóm tắt nhƣ sau: Điều khiển thiết bị qua PC Chƣơng 2: Tìm hiểu VDK AT89S8252 Trang 8 Hình 2.1: Sơ đồ chân AT89S8252 Từ chân 1†8 Port 1 (P1.0, P1.1, …, P1.7) dùng làm Port xuất nhập I/O để giao tiếp bên ngoài với điện trở kéo lên bên trong. Các bộ đệm xuất của Port 1 có thể cấp/hút dòng cho 4 ngõ vào TTL loại LS. Các chân Port 1 có các bit 1 đƣợc ghi để đƣợc kéo lên mức cao bởi các điện trở kéo lên bên trong và trong trạng thái này chúng đƣợc dùng làm các ngõ nhập. Khi là Port nhập các chân của Port 1 đang đƣợc kéo xuống mức thấp do bên ngoài sẽ cấp dòng do các điện trở bên trong kéo lên. Các chân P1.0 và P1.1 của Port 1 cũng đƣợc dùng cho các chức năng T2 và T2EX. Các chân P1.5, P1.6, P1.7 là các chân đƣợc dùng cho các chức năng MOSI, MISO, SCK để điều khiển truyền và xuất dữ liệu cho vi điều khiển. Công dụng chuyển đổi có liên hệ với các đặt tính của AT89S8252 nhƣ sau: Bảng 2.1: Chức năng chuyển đổi ở Port 1 Bit Tên Chức năng chuyển đổi P1.0 T2 Ngõ vào của bộ định thời/đếm 2 P1.1 T2EX Nạp lại/thu nhận của bộ định thời 2 P1.4 Ngõ vào lựa chọn cổng Slave P1.5 MOSI Chân xuất dữ liệu Master, nhập dữ liệu Slave P1.6 MISO Chân nhập dữ liệu Master, xuất dữ liệu Slave P1.7 SCK Ngõ ra xung clock của Master, ngõ vào xung clock Slave Điều khiển thiết bị qua PC Chƣơng 2: Tìm hiểu VDK AT89S8252 Trang 9 Chân 9 (RST) là chân đề RESET cho AT89S8252. Bình thƣờng các chân này ờ mức thấp. Khi ta đƣa tín hiệu lên mức cao (tối thiểu 2 chu kỳ máy), thì những thanh ghi nội của AT89S8252 đƣợc LOAD những giá trị thích hợp để khởi động lại hệ thống. Từ chân 10†17 là Port 3 (P3.1, P3.1, …P3.7) dùng vào hai mục đích: dùng làm Port xuất nhập I/O hoặc mỗi chân lại giữ một chức năng cá biệt đƣợc tóm tắt sơ bộ nhƣ sau: Bảng 2.2: Các chức năng chuyển đổi ở Port 3 Bit Tên Chức năng chuyển đổi P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu phát cho port nối tiếp P3.2 Ngắt 0 bên ngoài P3.3 Ngắt 1 bên ngoài P3.4 T0 Ngõ vào của timer/counter 0 P3.5 T1 Ngõ vào của timer/counter 1 P3.6 Xung ghi bộ nhớ dữ liệu ngoài P3.7 Xung đọc bộ nhớ dữ liệu ngoài Các chân 18, 19 (XTAL2 và XTAL1) đƣợc nối với bộ dao động thạch anh 12 MHz để tạo dao động trên Chíp. Hai tụ 30 pF đƣợc thêm vào để ổn định dao động. Hình 2.2 Dao động trên chip với thạch anh Chân 20 (Vss) nối đất (Vss = 0). Từ chân 21†28 là Port 2 ( P2.0, P2.1, …, P2.7) dùng vào hai mục đính: dùng làm Port xuất nhập I/O hoặc dùng làm byte cao của bus địa chỉ thì nó không còn tác Điều khiển thiết bị qua PC Chƣơng 2: Tìm hiểu VDK AT89S8252 Trang 10 dụng I/O nữa. Bởi vì ta muốn EPROM và RAM ngoài nên phải sử dụng Port 2 làm byte cao của bus địa chỉ. Chân 29 ( ) là tín hiệu điều khiển xuất ra của AT89S8252, nó cho phép chọn bộ nhớ ngoài và đƣợc nối chung với chân của OE (Out Enable) của EPROM ngoài để cho phép đọc các byte của chƣơng trình. Các xung tín hiệu hạ thấp trong suốt thời gian thi hành lệnh. Những mã nhị phân của chƣơng trình đƣợc đọc từ EPROM đi qua bus dữ liệu và đƣợc chốt vào thanh ghi lệnh IR của AT89S8252 bởi mã lệnh. Khi thi hành chƣơng trình trong ROM nội sẽ ở mức thụ động (mức cao). Khi AT89S8252 đang thực thi lệnh từ bộ nhớ chƣơng trình ngoài, đƣợc tích cực hai lần cho mỗi chu kỳ máy, ngoại trừ thời gian mỗi lần truy xuất bộ nhớ dữ liệu ngoài, hai lần tích cực của đƣợc bỏ qua. Chân 30 (ALE/ : Adress Latch Enable) là tín hiệu điều khiển xuất ra của AT89S8252, nó cho phép phân kênh bus địa chỉ và bus dữ liệu của Port 0. Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể dùng làm nguồn xung nhịp cho các phần khác của hệ thống. Nếu nhịp xung trên AT89S8252 là 12 MHz thì ALE có tần số là 2MHz. Tuy nhiên cần chú ý là một xung ALE sẽ bị mất khi truy xuất bộ nhớ bên ngoài. Có thể hủy bỏ chức năng set của bit 0 của thanh ghi SFR ở vị trí 8EH. Khi bit này đƣợc set, ALE chỉ tích cực khi có lệnh MOVX hoặc MOVC, nếu không có lệnh này ALE ở mức cao. Việc set bit 0 của thanh ghi ở vị trí 8EH không làm ảnh hƣởng đến vi điều khiển khi truy cập bộ nhớ ngoài. Chân 31 (EA: Eternal Acess) đƣợc đƣa xuống thấp cho phép chọn bộ nhớ mã ngoài đối với 8031. Đối với AT89S8252 thì: EA = 5V: Chọn ROM nội. EA=0V: Chọn ROM ngoại. EA=12V: Lập trình EPROM nội. Các chân từ 32†39 là Port 0 (P0.0, P0.1, …, P0.7) dùng cho cả hai mục đích: vừa làm byte thấp cho bus địa chỉ, vừa làm bus dữ liệu, nếu Port 0 không còn chức năng xuất nhập I/O nữa. Chân 40 (Vcc) đƣợc nối lên nguồn 5V. [...]... addr11 : lệnh gọi tuyệt đối trong page 2K (PC) ← (PC) + 2 (SP) ← (SP) + 1 Trang 27 Điều khiển thiết bị qua PC Chƣơng 2: Tìm hiểu VDK AT89S8252 ((SP)) ← (PC7 PC0 ) (SP) ← (SP) + 1 ((SP)) ← (PC1 5 PC8 ) (PC1 0 PC0 ) ← page address LCALL addr16 : lệnh gọi dài chƣơng trình con trong 64K (PC) ← (PC) + 3 (SP) ← (SP) + 1 ((SP)) ← (PC7 PC0 ) (SP) ← (SP) + 1 ((SP)) ← (PC1 5 PC8 ) (PC) ← Addr15†Addr0 : kết thúc chƣơng trình... (-128÷127) byte (PC) ← (PC) +2 (PC) ← (PC) + byte 2 JMP @ A + DPTR : nhảy không điều kiện đến địa chỉ (A) + (DPTR) (PC) ← (A) + (DPTR) JZ rel : nhảy đến A = 0 Thực hành lệnh kế nếu A ≠ 0 (PC) ← (PC) + 2 (A)= 0 0