Giáo trình Vi điều khiển 8051 Assembly - Chương 12: Phối ghép với thế giới thực: LCD, ADC và các cảm biến
Trong những năm gần đây LCD đang ngày càng được sử dụng rộng rãi thay
thế dần cho các đèn LED (các đèn LED 7 đoạn hay nhiều đoạn). Đó là vì các nguyên
nhân sau:
1. Các LCD có giá thành hạ.
2. Khả năng hiển thị các số, các ký tự và đồ hoạ tốt hơn nhiều so với các đèn LED
(vì các đèn LED chỉ hiển thị được các số và một số ký tự).
3. Nhờ kết hợp một bộ điều khiển làm tươi vào LCD làm giải phóng cho CPU công
việc làm tươi LCD. Trong khi đèn LED phải được làm tươi bằng CPU (hoặc bằng
cách nào đó) để duy trì việc hiển thị dữ liệu.
4. Dễ dàng lập trình cho các ký tự và đồ hoạ.
phần trình bày của chúng ta thì các chân này được nối chung với một đất. Tuy nhiên, trong thực tế thu đo dữ liệu các chân đất này được nối tách biệt. Từ những điều trên ta kết luận rằng các bước cần phải thực hiện khi chuyển đổi dữ liệu bởi ADC 804 là: a) Bật CS = 0 và gửi một xung thấp lên cao tới chân WR để bắt đầu chuyển đổi. b) Duy trì hiển thị chân INTR . Nếu INTRxuống thấp thì việc chuyển đổi được hoàn tất và ta có thể sang bước kế tiếp. Nếu INTR cao tiếp tục thăm dò cho đến khi nó xuống thấp. c) Sau khi chân INTRxuống thấp, ta bật CS = 0 và gửi một xung cao - xuống - thấp đến chân RD để lấy dữ liệu ra khỏi chíp ADC 804. Phân chia thời gian cho quá trình này được trình bày trên hình 12.6. Hình 12.6: Phân chia thời gian đọc và ghi của ADC 804. 12.2.3 Kiểm tra ADC 804. Chúng ta có thể kiểm tra ADC 804 bằng cách sử dụng sơ đồ mạch trên hình 12.7. thiết lập này được gọi là chế độ kiểm tra chạy tự do và được nhà sản xuất khuyến cao nên sử dụng. Hình 12.5 trình bày một biến trở được dùng để cắp một điện áp tương tự từ 0 đến 5V tới chân đầu vào. Vin(+) của ADC 804 các đầu ra nhị phân được hiển thị trên các đèn LED của bảng huấn luyện số. Cần phải lưu ý rằng trong chế độ kiểm tra chạy tự do thì đầu vào CS được nối tới đất và đầu vào WR được nối tới đầu ra INTR . Tuy nhiên, theo tài liệu của hãng National Semiconductor “nút WR và INTR phải được tạm thời đưa xuống thấp kế sau chu trình cấp nguồn để bảo đảm hoạt động”. Hình 12.7: Nối ghép ADC 804 với nguồn đồng hồ riêng. CS D0 – D7 Data out Read it End conversion Start conversion WR INTR RD 8051 ADC804 P2.5 P2.6 P1.0 P1.7 P2.7 D0 D7 INTR GND A GND Vref/2 CLK IN CLK R VCC Vin(+) Vin(-) 150pF 5V 10k 10k POT RD WR CS Ví dụ 12.7: Hãy thử nối ghép ADC 804 với 8051 theo sơ đồ 12.7. Viết một chương trình để hiển thị chân INTR và lấy đầu vào tương tự vào thanh ghi A. Sau đó gọi một chương trình chuyển đổi mã Hex ra ASCII và một chương trình hiển thị dữ liệu. Thực hiện điều này liên tục. Lời giải: ; Đặt P2.6 = WR (bắt đầu chuyển đổi cần 1 xung thấp lên cao) ; Đặt chân P2.7 = 0 khi kết thúc chuyển đổi ; Đặt P2.5 = RD (xung cao - xuống - thấp sẽ đọc dữ liệu từ ADC) ; P1.0 – P1.7 của ADC 804 MOV P1, # 0FFH ; Chọn P1 là cổng đầu vào BACK: CLR P2.6 ; Đặt WR = 0 SETB P2.6 ; Đặt WR = 1 để bắt đầu chuyển đổi HERE: JB P2.7, HERE ; Chờ cho P2.7 to để kết thúc chuyển đổi CLR P2.5 ; Kết thúc chuyển đổi, cho phép đọc RD MOV A, P1 ; Đọc dữ liệu vào thanh ghi A ACALL CONVERSION ; Chuyển đổi số Hex ra mã ASCII ACALL DATA-DISPLAY ; Hiển thị dữ liệu SETB P2.5 ; Đưa RD = 1 để cho lần đọc sau. SJMP BACK Hình 12.8: Nối ghép ADC 804 với đồng hồ từ XTAL2 của 8051. Trên hình 12.8 ta có thể thấy rằng tín hiệu đồng hồ đi vào ADC 804 là từ tần số thạch anh của 8051. Vì tần số này quá cao nên ta sử dụng hai mạch lật Rlip - Flop kiểu D (74LS74) để chia tần số này cho 4. Một mạch lật chia tần số cho 2 nếu ta nối đầu Q tới đầu vào D. Đối với tần số cao hơn thì ta cần sử dụng nhiều mạch Flip - Plop hơn. 12.2.4 Phối ghép với một cảm biến nhiệt của 8051. 8051 ADC804 P2.5 P2.6 P1.0 P1.7 P2.7 D0 D0 INTR GND A GND Vref/2 CLK IN CLK R VCC Vin(+) Vin(-) 5V 10k POT RD WR CSD Q Q D Q Q 74LS74 Các bộ biến đổi (Transducer) chuyển đổi các đại lượng vật lý ví dụ như nhiệt độ, cường độ ánh sáng, lưu tốc và tốc độ thành các tín hiệu điện phụ thuộc vào bộ biến đổi mà đầu ra có thể là tín hiệu dạng điện áp, dòng, trở kháng hay dung kháng. Ví dụ, nhiệt độ được biến đổi thành về các tín hiệu điện sử dụng một bộ biến đổi gọi là Rhermistor (bộ cảm biến nhiệt), một bộ cảm biến nhiệt đáp ứng sự thay đổi nhiệt độ bằng cách thay đổi trở kháng nhưng đáp ứng của nó không tuyến tính (xem bảng 12.6). Bảng 12.6: Trở kháng của bộ cảm biến nhiệt theo nhiệt độ. Nhiệt độ (0C) Trở kháng của cảm biến (kW) 0 29.490 25 10.000 50 3.893 75 1.700 100 0.817 Bảng 12.7: Hướng dẫn chọn loạt các cảm biến họ LM34. Mã ký hiệu Dải nhiệt độ Độ chính xác Đầu ra LM34A -55 F to + 300 C + 2.0 F 10mV/F LM34 -55 F to + 300 C + 3.0 F 10mV/F LM34CA -40 F to + 230 C + 2.0 F 10mV/F LM34C -40 F to + 230 C + 3.0 F 10mV/F LM34D -32 F to + 212 C + 4.0 F 10mV/F Bảng 12.8: Hướng dẫn chọn loạt các cảm biến nhiệt họ LM35. Mã sản phẩm Dải nhiệt độ Độ chính xác Đầu ra LM35A -55 C to + 150 C + 1.0 C 10 mV/F LM35 -55 C to + 150 C + 1.5 C 10 mV/F LM35CA -40 C to + 110 C + 1.0 C 10 mV/F LM35C -40 C to + 110 C + 1.5 C 10 mV/F LM35D 0 C to + 100 C + 2.0 C 10 mV/F Tính chất gắn liện với việc viết phần mềm cho các thiết bị phi tuyến như vậy đã đưa nhiều nhà sản xuất tung ra thị trường các loạt bộ cảm biến nhiệt tuyến tính. Các bộ cảm biến nhiệt đơn giản và được sử dụng rộng rãi bao gồm các loạt họ LM34 và LM35 của hãng National Semiconductor Corp. 12.2.5 Các bộ cảm biến nhiệt họ LM34 và LM35. Loạt các bộ cảm biến LM34 là các bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ tuyến tính vơí nhiệt độ Fahrenheit (xem hình 12.7). loạt LM34 không yêu cầu cân chỉnh bên ngoài vì vốn nó đã được cân chỉnh rồi. Nó đưa ra điện áp 10mV cho sự thay đổi nhiệt độ 10F. bảng 12.7 hướng dẫn ta chọn các cảm biến loạt LM34. Loạt các bộ cảm biến LM35 cũng là các bộ cảm biến nhiệt mách tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Chúng cũng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh. Chúng đưa ra điện áp 10Mv cho mỗi sự thay đổi 10C. Bảng 12.8 hướng dẫn ta chọn các cảm biến họ LM35. 12.2.6 Phối hợp tín hiệu và phối ghép LM35 với 8051. Phối hợp tín hiệu là một thuật ngữ được sử dụng rộng rãi trong lĩnh vực thu đo dữ liệu. Hầu hết các bộ biến đổi đều đưa ra các tín hiệu điện dạng điện áp, dòng điện, dung kháng hoặc trở kháng. Tuy nhiên, chúng ta cần chuyển đổi các tín hiệu này về điện áp nhằm gửi đầu vào đến bộ chuyển đổi ADC. Sự chuyển đổi (biến đổi) này được gọi chung là phối hợp tín hiệu. Phối hợp tín hiệu có thể là việc chuyển đổi dòng điện thành điện áp hoặc sự khuyếch đại tín hiệu. Ví dụ, bộ cảm biến nhiệt thay đổi trở kháng với nhiệt độ. Sự thay đổi trở kháng phải được chuyển thành điện áp để có thể được sử dụng cho các ADC. Xét trường hợp nối một LM35 tới một ADC 804 vì ADC 804 có độ phân dải 8 bít với tối đa 256 bước (28) và LM35 (hoặc ML34) tạo điện áp 10mV cho mỗi sự thay đổi nhiệt độ 10C nên ta có thể tạo điều kiện Vin của ADC 804 tạo ra một Vout = 2560mV (2,56V) cho đầu ra đầu thang đo. do vậy, nhằm tạo ra Vout đầy thang 2,56V cho ADC 804 ta cần đặt điện áp Vref/2 = 1,28V. Điều này làm cho Vout của ADC 804 đáp ứng trực tiếp với nhiệt độ được hiển thị trên LM35 (xem bảng 12.9). Các giá trị của Vref/2 được cho ở bảng 12.5. Bảng 12.9: Nhiệt độ. Nhiệt độ (0C) Vin (mV) Vout (D7 – D0) 0 0 0000 0000 1 10 0000 0001 2 20 0000 0010 3 30 0000 0011 10 100 0000 1010 30 300 0001 1110 Các đại lượng vật lý (nhiệt độ, áp suất, lưu tốc v.v…) Bộ biến đổi Phối hợp tín hiệu ADC Bộ vi điều khiển Hình 12.9: Thu đo các đại lượng vật lý. Hình 12.10 Hình 12.10: Nối ghép 8051 với DAC 804 và cảm biến nhiệt độ. Hình 12.10 biểu diễn nối ghép của bộ cảm biến nhiệt đến ADC 804. Lưu ý rằng ta sử dụng đi ốt zener LM336 - 2.5 để cố định điện áp qua biến trở 10kW tại 2,5V. Việc sử dụng LM336 - 2.5 có thể vượt qua được mọi dao động lên xuống của nguồn nuôi. 12.2.7 Chíp ADC 808/809 với 8 kênh tương tự. Một chíp hữu ích khác của National Semiconductor là ADC 808/809 (xem hình 12.11). Trong khi ADC 804 chỉ có một đầu vào tương tự thì chíp này có 8 kênh đầu vào. Như vậy nó cho phép ta hiển thị lên 8 bộ biến đổi khác nhau chỉ qua một chíp duy nhất. Lưu ý rằng, ADC 808/809 có đầu ra dữ liệu 8 bít như ADC 804. 8 kênh đầu vào tương tự được dồn kênh và được chọn theo bảng 12.10 sử dụng ba chân địa chỉ A, B và C. (LSB) GND Clock Vcc ADC808/809 Vref(+) Vref(-) C C A SC ALE OE EOC D7 D0 IN0 IN7 8051 ADC804 P2.5 P2.6 P1.0 P1.7 P2.7 D0 D7 INTR GND A GND Vref/2 CLK IN CLK R VCC Vin(+) Vin(-) 5V RD WR CSD Q Q D Q Q Set to 1.28V GND LM35 or LM34 LM 336 2.5k 10k Hình 12.11: Bộ biến đổi ADC 808/809. Bảng 12.10: Chọn kênh tương tự của ADC 808. Chọn kênh tương tự C B A IN0 0 0 0 IN1 0 0 1 IN2 0 1 0 IN3 0 1 1 IN4 1 0 0 IN5 1 0 1 IN6 1 1 0 IN7 1 1 1 Trong ADC 808/809 thì Vrer(+) và Vref(-) thiết lập điện áp tham chiếu. Nếu Vref (-1) = Gnd và Vref (+) = 5V thì độ phân dải là 5V/256 = 19,53mV. Do vậy, để có độ phân dải 10mV ta cần đặt Vref (+) = 2,56V và Vref (-) = Gnd. Từ hình 12.11 ta thấy có chân ALE. Ta sử dụng các địa chỉ A, B và C để chọn kênh đầu vào IN0 – IN7 và kích hoạt chân ALE để chốt địa chỉ. Chân SetComplete để bắt đầu chuyển đổi (Start Conversion). Chân EOC được dùng để kết thúc chuyển đổi (End - Of - Conversion) và chân OE là cho phép đọc đầu ra (Out put Enable). 12.2.7 Các bước lập trình cho ADC 808/809. Các bước chuyển dữ liệu từ đầu vào của ADC 808/809 vào bộ vi điều khiển như sau: 1. Chọn một kênh tương tự bằng cách tạo địa chỉ A, B và C theo bảng 12.10. 2. Kích hoạt chân ALE (cho phép chốt địa chỉ Address Latch Enable). Nó cần xung thấp lên cao để chốt địa chỉ. 3. Kích hoạt chân SCbằng xung cao xuống thấp để bắt đầu chuyển đổi. 4. Hiển thị OEC để báo kết thúc chuyển đổi. Đầu ra cao - xuống - thấp báo rằng dữ liệu đã được chuyển đổi và cần phải được lấy đi. 5. Kích hoạt OE cho phép đọc dữ liệu ra của ADC. Một xung cao xuống thấp tới chân OE sẽ đem dữ liệu số ra khỏi chíp ADC. Lưu ý rằng trong ADC 808/809 không có đồng hồ riêng và do vậy phải cấp xung đồng bộ ngoài đến chân CLK. Mặc dù tốc độ chuyển đổi phụ thuộc vào tần số đồng hồ được nối đến CLK nhưng nó không nhanh hơn 100ms.
File đính kèm:
- Vi_dieu_khien_8051_ Assembly_12_LCD_ADC_cam bien.pdf