Xem mẫu

  1. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ ---------------  --------------- Đồ Án Tốt Nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 1
  2. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ MỤC LỤC LỜI NÓI ĐẦU ...............................................................................................................5 1. MỤC ĐÍCH ĐỀ TÀI ..................................................................................................6 1.1. Đặt vấn đề ...........................................................................................................6 1.2. Mục tiêu và nhiệm vụ.......................................................................................... 7 2. CƠ SỞ LÝ THUYẾT VỀ LINH KIỆN THIẾT KẾ BỘ GIAO TIẾP .......................7 2.1. Giới thiệu khái quát về họ vi điều khiển 8051 ....................................................7 2.1.1. Cấu trúc vi điều khiển P89V51RD2 ................................................................ 8 2.1.2. Chức năng các chân .....................................................................................9 2.1.3. Tổ chức bộ nhớ của bộ vi điều khiển 8951 ................................................12 2.1.4. Các thanh ghi chức năng đặc biệt ( SFR ) .................................................14 2.1.5. Hoạt động của bộ định thời và các ngắt ......................................................... 19 2.1.5.1. Hoạt động của định thời ..........................................................................19 2.1.5.2. Hoạt động ngắt ........................................................................................ 20 2.2. Bộ chuyển đổi ADC .......................................................................................... 21 Giới thiệu vi mạch ADC0809 ..............................................................................21 2.3. Giao tiếp LCD 16 x 2 và vi điều khiển P89V51RD2 .......................................25 2.3.1. Giới thiệu LCD 16 x 2 ...............................................................................25 2.3.2. Phƣơng thức giao tiếp giữa LCD 16 x 2 và vi điều khiển P89V51RD2....26 3. HỆ THỐNG ĐIỀU KHIỂN ĐỘNG CƠ ..................................................................27 3.1. Sơ đồ cấu trúc và các khối chức năng của hệ thống điều khiển động cơ .........27 3.2. Các tín hiệu đầu vào .......................................................................................... 29 3.2.1.Cảm biến vị trí bƣớm ga .............................................................................29 GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 2
  3. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ 3.2.2. Cảm biến nhệt độ nƣớc làm mát ................................................................ 30 3.2.3. Cảm biến nhiệt độ khí nạp .........................................................................32 3.2.4. Cảm biến ôxy ............................................................................................. 34 3.2.5. Cảm biến kích nổ ....................................................................................... 35 3.2.6. Cảm biến áp suất đƣờng ống nạp ............................................................... 37 3.2.7. Bộ tạo tín hiệu G và NE .............................................................................38 3.2.8. Tín hiệu STAR (máy khởi động) ............................................................... 39 3.3. Bộ điều khiển điện tử ........................................................................................ 39 3.3.1. Tổng quan ..................................................................................................39 3.3.2. Cấu trúc ECU ............................................................................................. 40 3.4. Các tín hiệu điều khiển .....................................................................................44 3.4.1. Điều khiển đánh lửa ...................................................................................44 3.4.1.1. Cơ bản về đánh lửa theo chƣơng trình ................................................44 3.4.1.2. Điều khiển chống kích nổ ...................................................................46 3.4.1.3. Hiệu chỉnh góc đánh lửa theo các chế độ làm việc của động cơ ........47 3.4.2. Điều khiển kim phun ..................................................................................50 3.4.2.1. Hoạt động của kim phun .....................................................................50 3.4.2.2. Sơ đồ mạch điện điều khiển kim phun ...............................................51 3.4.2.3. Chức năng của ECU trong việc điều khiển kim phun ........................ 53 3.4.2.4. Sự hiệu chỉnh thời gian phun. ............................................................. 55 3.4.3. Điều khiển chế độ không tỉa (cầm chừng) và kiểm soát khí thải ...............59 3.5. Hệ thống tự chuẩn đoán ....................................................................................60 3.5.1. Tổng quan về hệ thống tự chuẩn đoán ....................................................... 60 GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 3
  4. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ 3.5.2. Nguyên lý phát hiện lỗi ..............................................................................61 3.5.3. Phƣơng pháp truy xuất mã lỗi ....................................................................62 4. THIẾT KẾ MẠCH GIAO TIẾP VI ĐIỀU KHIỂN P89V51RD2 VÀ ECU ĐỘNG CƠ ................................................................................................................................ 64 4.1. Cơ sở giao tiếp ..................................................................................................64 4.2. Phƣơng án thiết kế ............................................................................................ 65 4.4. Sơ đồ mạch tổng thể của thiết bị hiển thị mã lỗi ..............................................65 4.5. Giới thiệu động cơ thử nghiệm .........................................................................66 5. CHƢƠNG TRÌNH GIAO TIẾP ECU VÀ HIỂN THỊ MÃ LỖI LÊN LCD ...........69 5.1. Lƣu đồ thuật toán .............................................................................................. 69 5.2. Chƣơng trình .....................................................................................................71 6. QUY TRÌNH CHẨN ĐOÁN ...................................................................................82 7. KẾT LUẬN ..............................................................................................................84 TÀI LIỆU THAM KHẢO............................................................................................ 85 GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 4
  5. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ LỜI NÓI ĐẦU Hệ thống phun xăng điện tử ngày càng đƣợc sử dụng rộng rãi nhằm mục đích tiết kiệm nhiên liệu và giảm ô nhiễm môi trƣờng. Trong quá trình học và thực tập em đƣợc tìm hiểu về động cơ phun xăng điện tử, biết đƣợc nguyên lý phát hiện lỗi động cơ. Trên một số xe, việc ECU phát hiện lỗi đƣợc thông báo cho ngƣời sử dụng thôn g qua đèn báo. Việc này gây bất tiện cho ngƣời sử dụng và ngƣời kỹ thuật viên khi muốn biết lỗi động cơ phải tra bảng mã lỗi của từng loại động cơ. Thiết kế một thiết bị hiển thị lỗi của động cơ thay cho việc đọc lỗi bằng đèn báo, hoặc thay thế cho thiết bị sẵn có trên thị trƣờng nhƣng giá quá cao, mà vẫn chính xác. Em chọn đề tài: „„Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ” Qua đây em xin chân thành cám ơn đến thầy Phạm Quốc Thái và các thầy phụ trách phòng thí nghiệm AVL đã tạo điều kiện cho em đƣợc tiếp xúc các mô hình thực tế, tham khảo nhiều tài liệu quí trong thời gian thực tập và làm đồ án tốt nghiệp. Mong muốn thiết kế một thiết bị đơn giản với nhiều chức năng nhƣng do thời gian làm đề tài khá ngắn, nội dung đề tài có nhiều vấn đề phức tạp, sự thiếu thố n các thiết bị đo, thiết bị kiểm tra, ngoài ra hạn chế trong việc thiết kế mạch điện tử cũng tạo ra không ít khó khăn nên đề tài mới chỉ đƣợc kiểm tra trên động cơ TYOTA 4A-FE. Trong quá trình thực hiện không thể tránh khỏi những sai sót mong các thầy thông cảm và chỉ dẫn tạo điều kiện để em đƣợc hoàn thiện đề tài. Em xin chân thành cảm ơn! Đà nẵng, ngày 01 tháng 06 năm 2007 Sinh viên thực hiện Lê Anh Nhật GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 5
  6. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ 1. MỤC ĐÍCH ĐỀ TÀI 1.1. Đặt vấn đề Từ khi chiếc ô tô đầu tiên trên thế giới ra đời cho đến nay, ô tô đã trở thành một phƣơng tiện vận chuyển cần thiết khó có gì thay thế đƣợc trong cuộc sống. Hiện nay, so với các phƣơng tiện giao thông khác ô tô có vị trí vô cùng quan trọng và tỷ lệ hành khách tham gia giao thông đƣờng bộ cao hơn so với các loại phƣơng tiện giao thông khác. Cùng với xu hƣớng phát triển về khoa học kỹ thuật công nghệ thì nền công nghiệp ô tô cũng phát triển không ngừng. Từ những năm 80 của thế kỷ XX, công nghệ điện tử đã đƣợc ứng dụng trên ô tô dần dần thay thế các cơ cấu điều khiển bằng cơ khí. Qua nhiều thập niên điện tử trở thành một trong những nhân tố quan trọng không thể thiếu đƣợc trên ô tô. Nó không những giúp động cơ ô tô điều khiển chính xác hơn và còn làm giảm ô nhiểm môi trƣờng, tiết kiệm nhiên liệu, tăng công suất động cơ. Song song với việc hiện đại hoá chiếc ô tô ngày càng hoàn hảo hơn thì vấn đề bảo trì, chẩn đoán, sửa chữa ngày càng phức tạp hơn. Với những chiếc ô tô hiện đại hiện nay lƣợng dữ liệu điều khiển xe ngày càng nhiều. Vì vậy chẩn đoán sửa chữa theo phƣơng pháp thủ công đã trở nên hết sức khó khăn. Do đó, để giúp cho ngƣời kỹ thuật viên thực hiện tốt công việc chẩn đoán và sửa chữa các ô tô đời mới đã trang bị hệ thống tự chuẩn đoán. Cùng với xu thế của thế giới, ô tô ở Việt Nam đã ngày càng đƣợc sử dụng nhiều hơn. Do đó điều kiện về kinh tế ngƣời sử dụng ở Việt Nam thƣờng sử dụng những xe cũ nhập từ nƣớc ngoài về, mặc dù trên các xe có trang bị hệ thống tự chẩn đoán nhƣng ở bộ phận hiển thị lỗi lại sử dụng đèn tín hiệu để báo lỗi. Với cách báo lỗi nhƣ vậy gây khó khăn cho ngƣời kỹ thuật viên trong việc kiểm tra lỗi, và có khi là không chính xác. Để đơn giản hơn cho ngƣời kỹ thuật viên trong việc đọc lỗi động cơ ta sử dụng thiết bị hiển thị lỗi động cơ. Hiện nay đã có thiết bị này nhƣng giá cả khá đắt. Trong khi đó chỉ với những thiết bị sẵn có trên thị trƣờng có thể tạo ra thiết bị có tính năng tƣơng tự nhƣng với giá cả lại rẻ hơn rất nhiều. GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 6
  7. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ 1.2. Mục tiêu và nhiệm vụ Đề tài: “Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ “ nhằm chế tạo một thiết bị hiển thị lỗi của động cơ bằng vi điều khiển đơn giản với giá thành thấp nhƣng đảm bảo độ tin cậy. Các bƣớc thực hiện: - Tìm hiểu cấu trúc vi điều khiển - Tìm hiểu ngôn ngữ lập trình - Khảo sát hệ thống điều khiển động cơ - Tìm hiểu về hệ thống tự chẩn đoán - Thiết kế phần cứng bộ giao tiếp - Lập trình vi điều khiển 2. CƠ SỞ LÝ THUYẾT VỀ LINH KIỆN THIẾT KẾ BỘ GIAO TIẾP 2.1. Giới thiệu khái quát về họ vi điều khiển 8051 MCS-51 là một họ IC vi điều khiển do Intel phát triển và sản xuất. Các nhà sản xuất IC khác nhƣ Siemens, Advanced Micro Devices,Fujitsu và Phillip đƣợc cấp phép làm các nhà cuung cấp thứ hai cho các chip của họ MCS-51. Chip 8051 là bộ vi điều khiển đầu tiên của họ vi điều khiển MCS-51, là một trong những bộ vi điều khiển mạnh và linh hoạt nhất, đã trở thành bộ vi diều khiển hàng đầu trong những năm gần đây Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tƣơng tự nhƣ nhau. Ở đây giới thiệu IC P89V51RD2 là một họ IC vi điều khiển do hãng Philips Semiconductor sản xuất. Các đặc điểm của P89V51RD2 đƣợc tóm tắt nhƣ sau : - Khối xử lý trung tâm 80C51 chuẩn - Hoạt động ở điện áp nguồn 5V từ tần số 0 MHz đến 40 MHz - 64 KB EPROM bên trong với khả năng lập trình ngay trên hệ thống (ISP). - 1024 Byte RAM nội. - 4 Port xuất /nhập I/O 8 bit. - Giao tiếp nối tiếp SPI và UART GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 7
  8. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ - Dải đếm khả trình PCA với chức năng PWM, thu giữ và so sánh - 3 bộ TIMER/COUNTER 16 bit - 8 nguồn ngắt với 4 mức ƣu tiên - 2 thanh ghi con trỏ dữ liệu DPTR - Tƣơng thích mức logic TTL và CMOS - 1 bộ WATCHDOG TIMER khả trình. 2.1.1. Cấu trúc vi điều khiển P89V51RD2 Sơ đồ khối Hình 2.1: Sơ đồ khối kiến trúc bên trong P89V51RD2 Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn có khả năng đƣa một tín hiệu giữ nhịp từ bên ngoài. GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 8
  9. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ Chƣơng trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở bên trong. Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định thời hoặc cũng có thể là giao diện nối tiếp. Ba bộ định thời 16 bit hoạt động nhƣ một bộ đếm. Các cổng (port0, port1, port2, port3), sử dụng vào mục đích điều khiển. Ở cổng 3 có thêm các đƣờng dẫn điều khiển dùng để trao đổi với một bộ nhớ bên ngoài, hoặc để đầu nối giao diện nối tiếp, cũng nhƣ các đƣờng ngắt dẫn bên ngoài. Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt trong dãy rộng và đƣợc ấn định bằng một bộ định thời. Trong vi điều khiển 8951 có hai thành phần quan trọng khác đó là bộ nhớ và các thanh ghi : + Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM dùng để lƣu trữ dữ liệu và mã lệnh. + Các thanh ghi sử dụng để lƣu trữ thông tin trong quá trình xử lí. Khi CPU làm việc nó làm thay đổi nội dung của các thanh ghi. 2.1.2. Chức năng các chân Mặc dù các thành viên của họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng hạn nhƣ hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) và đều có 40 chân cho các chức năng khác nhau nhƣ vào ra I/0, đọc , ghi , địa chỉ, dữ liệu và ngắt. Tuy nhiên, vì hầu hết các nhà phát triển chính dụng chíp đóng vỏ 40 chân với hai hàng chân DIP, nên chúng ta cùng khảo sát Vi điều khiển với 40 chân dạng DIP. GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 9
  10. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ Hình 2.2: Sơ đồ chân P89V51RD2 Vi điều khiển 8951 có 32 trong 40 chân có chức năng nhƣ là các cổng I/O, trong đó 24 chân đƣợc sử dụng với hai mục đích. Nghĩa là ngoài chức năng cổng I/O, mỗi chân có công dụng kép này có thể là một đƣờng điều khiển của Bus địa chỉ hay Bus dữ liệu hoặc là mỗi chân hoạt động mọt cách độc lập để giao tiếp với các thiết đơn bit nhƣ là công tắc, LED, transistor… a.Port0: là port có 2 chức năng, ở trên chân từ 32 đến 39 của MC 8951. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ ngoài, P0 đƣợc sử dụng nhƣ là những cổng I/O. Còn trong các thiết kế lớn có yêu cầu một số lƣợng đáng kể bộ nhớ ngoài thì P0 trở thành các đƣờng truyền dữ liệu và 8 bit thấp của bus địa chỉ. GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 10
  11. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ b. Port1: là một port I/O chuyên dụng, trên các chân 1-8 của MC8951. Chúng đƣợc sử dụng với một múc đích duy nhất là giao tiếp với các thiết bị ngoài khi cần thiết. c. Port2: là một cổng có công dụng kép trên các chân 21 – 28 của MC 8951. Ngoài chức năng I/O, các chân này dùng làm 8 bit cao của bus địa chỉ cho những mô hình thiết kế có bộ nhớ chƣơng trình ROM ngoài hoặc bộ nhớ dữ liệu RAM có dung lƣợng lớn hơn 256 byte. d. Port3: là một cổng có công dụng kép trên các chân 10 – 17 của MC 8951. Ngoài chức năng là cổng I/O, những chân này kiêm luôn nhiều chức năng khác nữa liên quan đến nhiều tính năng đặc biệt của MC 8951, đƣợc mô tả trong bảng sau: Chức năng chuyển đổi Bit Tên Ngõ vào dữ liệu nối tiếp. P3.0 RXT Ngõ xuất dữ liệu nối tiếp. P3.1 TXD Ngõ vào ngắt cứng thứ 0. P3.2 INT0 Ngõ vào ngắt cứng thứ 1. P3.3 INT1 Ngõ vào của TIMER/COUNTER thứ 0. P3.4 T0 Ngõ vào của TIMER/COUNTER thứ 1. P3.5 T1 Tín hiệu ghi dữ liệu lên bộ nhớ ngoài. P3.6 WR Tín hiệu đọc bộ nhớ dữ liệu ngoài. P3.7 RD e. PSEN (Program Store Enable): 8951 có 4 tín hiệu điều khiển, PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép truy xuất bộ nhớ chƣơng trình mở rộng và thƣờng đƣợc nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh của chƣơng trình. Tín hiệu PSEN ở mức thấp trong suốt phạm vi quá trình của một lệnh. Các mã nhị phân của chƣơng trình đƣợc đọc từ EPROM qua bus và đƣợc chốt vào thanh ghi lệnh của 8951 để giải mã lệnh. Khi thi hành chƣơng trình trong ROM nội PSEN sẽ ở mức cao. f. ALE (Address Latch Enable ): Tín hiệu ra ALE trên chân 30 tƣơng hợp với các thiết bị làm việc với các xử lý 8585, 8088. 8951 dùng ALE để giải đa hợp bus địa GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 11
  12. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ chỉ và dữ liệu, khi port 0 đƣợc dùng làm bus địa chỉ/dữ liệu đa hợp: vừa là bus dữ liệu vừa là byte thấp của địa chỉ 16 bit . ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nữa đầu của chu kỳ bộ nhớ. Sau đó, các đƣờng Port 0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của chu kỳ bộ nhớ. 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ể đƣợc dùng là nguồn xung nhịp cho các hệ thống. Nếu xung trên 8951 là 12MHz thì ALE có tần số 2MHz. Chân này cũng đƣợc làm ngõ vào cho xung lập trình cho EPROM trong 8951. g. EA (External Access): Tín hiệu vào EA trên chân 31 thƣờng đƣợc nối lên mức cao (+5V) hoặc mức thấp (GND). Nếu ở mức cao, 8951 thi hành chƣơng trình từ ROM nội trong khoảng địa chỉ thấp (4K). Nếu ở mức thấp, chƣơng trình chỉ đƣợc thi hành từ bộ nhớ mở rộng. Ngƣời ta còn dùng chân EA làm chân cấp điện áp 21V khi lập trình cho EPROM trong 8951. h. RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của 8951. Khi tín hiệu này đƣợc đƣa lên mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 8951 đƣợc đƣa vào những giá trị thích hợp để khởi động hệ thống. i.OSC: 8951 có một bộ dao động trên chip, nó thƣờng đƣợc nối với thạch anh giữa hai chân 18 và 19. Tần số thạch anh thông thƣờng là 12MHz. j. POWER: 8951 vận hành với nguồn đơn +5V. Vcc đƣợc nối vào chân 40 và Vss (GND) đƣợc nối vào chân 20. 2.1.3. Tổ chức bộ nhớ của bộ vi điều khiển 8951 8951 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chƣơng trình và dữ liệu. Nhƣ đã nói ở trên, cả chƣơng trình và dữ liệu có thể ở bên trong 8951, dù vậy chúng có thể đƣợc mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chƣơng trình và 64 Kbytes bộ nhớ dữ liệu. Bộ nhớ bên trong bao gồm ROM và RAM trên chip. RAM trên chip bao gồm nhiều phần: phần lƣu trữ đa dụng, phần lƣu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt. RAM bên trong chip 8951 đƣợc phân chia nhƣ sau: • Bank thanh ghi (00H – 1FH). • RAM địa chỉ hóa từng bit (20H – 2FH). GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 12
  13. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ • RAM đa dụng (30H – 7FH). • Các thanh ghi chức năng đặc biệt (80H – FFH). a. RAM đa dụng Mọi địa chỉ trong vùng RAM đa dụng đều có thể đƣợc truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích lũy lệnh sau sẽ đƣợc dùng : MOV A, 5FH Lệnh này di chuyển một byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH). Đích nhận dữ liệu đƣợc ngầm xác định trong mã lệnh là thanh ghi tích lũy A. RAM bên trong cũng có thể đƣợc truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1. Ví dụ, sau khi thi hành cùng nhiệm vụ nhƣ lệnh đơn ở trên : MOV R0, #5FH MOV A, @R0 Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 và lệnh thứ hai dùng địa gián tiếp để di chuyển dữ liệu “đƣợc trỏ bởi R0” vào thanh ghi tích lũy. b. RAM địa chỉ hóa từng bit 8951 chứa 210 bit đƣợc địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đến 2FH, và phần còn lại trong các thanh ghi chức năng đặc biệt . Ý tƣởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung. Các bit có thể đƣợc đặt, xóa, AND, OR …với một lệnh đơn. Đa số các vi xử lý khác đòi hỏi một chuổi lệnh để đạt đƣợc hiệu quả tƣơng tự. Hơn nữa, các port I/0 cũng đƣợc địa chỉ từng bit làm đợn giản phần mềm xuất nhập từng bit. Có 128 bit đƣợc địa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các địa chỉ này đƣợc truy xuất nhƣ các byte hoặc các bit phụ thuộc vào lệnh đƣợc dùng. Ví dụ, để đặt bit 67H, ta dùng lệnh sau : SETB 67H Ở đây địa chỉ bit 67H là bit có trọng số lớn nhất (MSB) ở địa chỉ byte 2CH, lệnh trên sẽ không tác động đến các bit khác của byte này. c. Các bank thanh ghi GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 13
  14. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ MCU 8951 cung cấp 32 byte thấp nhất của bộ nhớ dữ liệu nội là dành cho các bank thanh ghi, 8 thanh ghi (RO đến R7) ở vị trí cuối cùng của RAM và theo mặc định (sau khi Reset hệ thống) các thanh ghi này ở các địa chỉ 00H-07H, tiếp đó là bank 1, bank 2 và bank 3. Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy: MOV A, R5 Đây là lệnh một byte dùng địa chỉ thanh ghi. Tất nhiên, thao tác tƣơng tự có thể đƣợc thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai: MOV A, 05H Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tƣơng ứng dùng địa chỉ trực tiếp. Các giá trị dữ liệu đƣợc dùng thƣờng xuyên nên dùng một trong các thanh ghi này. Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong từ trạng thái chƣơng trình (PSW). Giả sử rằng bank thanh ghi 3 đƣợc tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H: MOV R0, A Ý tƣởng dùng các bank thanh ghi cho phép chuyển hƣớng chƣơng trình nhanh và hiệu quả, từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng không phụ thuộc vào các phần khác. 2.1.4. Các thanh ghi chức năng đặc biệt ( SFR ) Các thanh ghi nội của 8951 đƣợc truy xuất ngầm định bởi tập lệnh. Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1. Tác động này đƣợc ngầm định trong mã lệnh. Các thanh ghi trong 8951 đƣợc định dạng nhƣ một phần của RAM trên chip. Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ không có lợi khi đặt chúng vào trong RAM trên chip). Đó là lý do để 8951 có nhiều thanh ghi. Cũng nhƣ R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH. Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không đƣợc định nghĩa, chỉ có 21 địa chỉ SFR là đƣợc định nghĩa. GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 14
  15. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ Ngoại trừ thanh ghi tích lũy (A) có thể đƣợc truy xuất ngầm nhƣ đã nói, đa số các SFR đƣợc truy xuất dùng địa chỉ trực tiếp. Chú ý rằng một vài SFR có thể đƣợc địa chỉ hóa bit hoặc byte. Trongi thiết kế phải thận trọng khi truy xuất bit và byte. Ví dụ lệnh sau: SETB 0E0H Sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không thay đổi. Ta thấy rằng E0H đồng thời là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bit có trọng số nhỏ nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có hiệu quả. Từ trạng thái chƣơng trình (PWS) + Cờ nhớ (CY) có công dụng kép. Thông thƣờng nó đƣợc dùng cho các lệnh toán học: nó sẽ đƣợc set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mƣợn phép trừ . Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau: ADD A, #1 Sẽ trả về thanh ghi tích lũy kết qủa 00H và set cờ nhớ trong PSW. Cờ nhớ cũng có thể xem nhƣ một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit. Ví dụ, lệnh sẽ AND bit 25H với cờ nhớ và đặt kết qủa trở vào cờ nhớ: ANL C, 25H + Cờ nhớ phụ AC : Khi cộng các số BCD, cờ nhớ phụ (AC) đƣợc set nếu kết qủa của 4 bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trị cộng đƣợc là số BCD, thì sau lệnh cộng cần có DA A ( hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết qủa lớn hơn 9 trở về giá trị đúng . + Cờ zero F0: Cờ F0 là một bit cờ đa dụng dành các ứng dụng của ngƣời dùng. + Các bit chọn bank thanh ghi Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi đƣợc tích cực. Chúng đƣợc xóa sau khi reset hệ thống và đƣợc thay đổi bằng phần mềm nếu cần. Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy: SETB RS1 GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 15
  16. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ SETB RS0 MOV A, R7 Khi chƣơng trình đƣợc hợp dịch các địa chỉ bit đúng đƣợc thay thế cho các ký hiệu “RS1” và “RS0”. Vậy lệnh SETB RS1 sẽ giống nhƣ lệnh SETB 0D4H. + Cờ Tràn Cờ tràn (0V) đƣợc set một lệnh cộng hoặc trừ nếu có một phép toán bị tràn. Khi các số có dấu đƣợc cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết qủa của nó có nằm trong tầm xác định không. Khi các số không dấu đƣợc cộng, bit 0V có thể đƣợc bỏ qua. Các kết qủa lớn hơn +127 hoặc nhỏ hơn –128 sẽ set bit 0V. b.Thanh ghi B Thanh ghi B ở địa chỉ F0H đƣợc dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết qủa 16 bit trong A (byte thấp) và B (byte cao). Lệnh DIV AB sẽ chia A cho B rồi trả về kết qủa nguyên trong A và phần dƣ trong B. Thanh ghi B cũng có thể đƣợc xem nhƣ thanh ghi đệm đa dụng. Nó đƣợc địa chỉ hóa từng bit bằng các địa chỉ bit F0H đến F7H. c. Con trỏ ngăn xếp Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trƣớc khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và làm giảm SP. Ngăn xếp của 8951 đƣợc giữ trong RAM nội và đƣợc giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp. chúng là 128 byte đầu của 8951. Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây đƣợc dùng: MOV SP, #5FH Trên 8951ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trên chip là 7FH. Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trƣớc khi cất byte dữ lệu đầu tiên. Ngƣời thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để nó lấy giá trị mặc định khi reset hệ thống. Giá trị măc định đó là 07H và kết qủa là ngăn GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 16
  17. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ đầu tiên để cất dữ liệu có địa chỉ 08H. Nếu phần mềm ứng dụng không khởi động lại SP, bank thanh ghi 1 (có thể cả 2 và 3) sẽ không dùng đƣợc vì vùng RAM này đã đƣợc dùng làm ngăn xếp. Ngăn xếp đƣợc truy xuất trực tiếp bằng các lệnh PUSH và POP để lƣu giữ tạm thời và lấy lại dữ liệu hoặc đƣợc truy xuất ngầm bằng các lệnh gọi chƣơng trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ đếm chƣơng trình. d. Con trỏ dữ liệu Con trỏ dữ liệu (DPTR) đƣợc dùng để truy xuất bộ nhớ ngoài, đây là một thanh ghi 16 bit ở địa chỉ 82H (byte thấp) và 83H (byte cao). Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H: MOV A, #55H MOV DPTR, #1000H MOVX @DPTR, A Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy, lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bit 1000H vào con trỏ dữ liệu. Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ đƣợc chứa trong DPTR (1000H). e. Các thanh ghi port xuất nhập Các port của 8951 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H. Tất cả các Port đều đƣợc địa chỉ hóa từng bit. Điều đó cung cấp một khả năng giao tiếp thuận lợi. f. Các thanh ghi timer 8951 chứa 2 bộ định thời đếm 16 bit đƣợc dùng trong việc định thời hoặc đếm sự kiện. Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở địa chỉ 8BH (TL1:byte thấp) và 8DH (TH1: byte cao). Việc vận hành timer đƣợc set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H. Chỉ có TCON đƣợc địa chỉ hóa từng bit. g. Các thanh ghi port nối tiếp GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 17
  18. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ 8951 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối tiếp nhƣ máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch..). Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và nhận. Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc từ SBUF. Các mode vận hành khác nhau đƣợc lập trình qua thanh ghi điều khiển port nối tiếp (SCON) đƣợc địa chỉ hóa từng bit ở địa chỉ 98H. h. Các thanh ghi ngắt 8951 có cấu trúc 5 nguồn ngắt, 2 mức ƣu tiên. Các ngắt bị cấm sau khi reset hệ thống và sẽ đƣợc cho phép bằng việc ghi vào thanh ghi cho phép ngắt (IE) ở địa chỉ 8AH một giá trị phù hợp. Cả hai thanh ghi đƣợc địa chỉ hóa từng bit.  Lệnh reset 8951 đƣợc reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kỳ máy và sau đó trả về mức thấp. RST có thể đƣợc kích khi cấp điện dùng một mạch R-C. 5V 5V 100 10uF SW RST 10K Hình 2.3: Mạch reset hệ thống GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 18
  19. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ 2.1.5. Hoạt động của bộ định thời và các ngắt 2.1.5.1. Hoạt động của định thời Bộ định thời đƣợc sử dụng trong hầu hết các ứng dụng hƣớng điều khiển và 8051 với các bộ định thời trên chip không phải là trƣờng hợp ngoại lệ. 8051 có hai bộ dịnh thời 16-bit, mỗi bộ có bốn chế độ hoạt động. Các bộ định thời dung để: - Định thời gian trong một khoảng thời gian - Đếm sự kiện - Tạo tốc độ baud cho port nối tiếp của chip 8051 Hoạt động của một bộ định thời đơn giản đƣợc minh họa trong hình 2.1 Timer flip flops (3) " Flag" f lip-flop q d d q d d q q q1 q0 q2 q Clock msb l sb Clock Q (LSB) Q Q (MSB) Count 0 3 5 6 7 0 1 2 4 Flag Flag is set on 7-to-0 timer overflow Hình 2.4: Bộ định thời 3-bit Bộ định thời 3-bit, mỗi tầng là một D.FF kích khởi cạnh âm hoạt động giống nhƣ một mạch chia cho hai, do ta nối ngõ ra Q với ngõ vào D. Flipflop cờ đơn giản là một mạch chốt D đƣợc SET bằng 1 bởi tầng cuối của bộ định thời. Giản đồ thời gian ở hình 2.4 cho thấy tang thứ nhất (Q0) chia hai tần số xung clock, tầng thứ hai chia 4 GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 19
  20. Đồ án tốt nghiệp Thiết kế mạch giao tiếp giữa ECU và vi điều khiển để hiển thị lỗi động cơ tần số xung clock và v.v… Số đếm (count) đƣợc ghi ở dạng thập phân và đƣợc kiểm tra dễ dàng bằng cách khảo sát trạng thái của 3 flipflop. Thí dụ số đếm là 4 xuất hiện khi Q2=1, Q1=0, Q0=0 (410=1002 ). Các flipflop ở hình 2.4 là các llipflop tác động cạnh âm (nghĩa là ngõ ra Q của các flipflop đổi trạng thái theo cạnh âm của xung clock). Khi số đếm tràn từ 1112 xuống 0002 có cạnh âm(1 0) làm cho trạng thái của flipflop cờ đổi từ 0 lên 1 (ngõ vào D của flipflop này luôn ở logic 1) 2.1.5.2. Hoạt động ngắt Một ngắt là sự xảy ra một điều kiện, một sự kiện nó gây ra treo tạm thời thời chƣơng trình chính trong khi điều kiện đó đƣợc phục vụ bởi một chƣơng trình khác. Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển. Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chƣơng trình khác đang thực thi.  Tổ chức ngắt 89S52: Có các nguyên nhân sau: ngắt do bên ngoài, ngắt do bộ định thời, ngắt do port nối tiếp và ngắt do bộ định thời thứ 3.  Cho phép và cấm ngắt: Mỗi nguồn ngắt đƣợc cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặc biệt có định địa chỉ IE (Interrupt Enable:cho phép ngắt) ở địa chỉ A8H. Bảng: Thanh ghi IE Ký hiệu Địa chỉ bit Mô tả Bit Cho phép / Cấm toàn bộ IE.7 EA AFH Không đƣợc mô tả IE.6 - AEH Cho phép ngắt từ Timer 2 (8052) IE.5 ET2 ADH Cho phép ngắt port nối tiếp IE.4 ES ACH Cho phép ngắt từ Timer1 IE.3 ET1 ABH Cho phép ngắt ngoài 1 IE.3 EX1 AAH Cho phép ngắt từ Timer 0 IE.1 ET0 A9H Cho phép ngắt ngoài 0 IE.0 EX0 A8H Các loại cờ ngắt GVHD: Phạm Quốc Thái SVTH: Lê Anh Nhật - Lớp 02C4 Trang: 20
nguon tai.lieu . vn