Chức năng điều khiển và hiển thị kết quả ADC

Một phần của tài liệu thiết kế hệ thống phần mềm cho C AT90S8535 (Trang 111 - 114)

Khi bộ ADC thực hiện xong một chu kỳ chuyển đổi, kết quả chuyển đổi sẽ đợc lu vào thanh ghi ADCL và ADCH, tiếp sau đó cờ ngắt kết thúc chuyển đổi

A/D đợc dựng và chơng trình con phục vụ ngắt tơng ứng là END_CONVERT

đợc gọi.

Hình 4.6 : Lu đồ chơng trình con phục vụ ngắt END_CONVERT

Trong ngắt END_CONVERT có sử dụng hai module MULL_RESULT_CONVER

DIVIDE_TO_GET_TEMPR đợc sử dụng để chuyển kết quả ADC sang số thập phân. Trớc khi thực hiện các module này cần phải xác định số nhân hoặc số chia trong thanh ghi Data. Chơng trình MULL_RESULT_CONVER sẽ thực hiện nhân nội

Bắt đầu

Lưu lại trạng thái MCU Lấy kết quả chuyển đổi A/D Lưu lại các thanh ghi cần sử dụng

Gửi ký hiệu truyền dữ liệu ( # ) sang PC

Lấy phần nguyên của kết quả ADC đặt vào ResultADCH

Thực hiện chương trình MULL_RESULT_CONVER vớisố nhân = 100 Thực hiện chuơng trinh DIVIDE_TO_GET_TEMPR với số chia = 255

Gửi phần nguyên của kết quả ADC sang PC

Lấy phần thập phân của kết quả ADC đặt vào ResultADCL

Thực hiện chương trình MULL_RESULT_CONVER vớisố nhân = 10 Thực hiện chuơng trinh DIVIDE_TO_GET_TEMPR với số chia = 255

Gửi phần thập phân của kết quả ADC sang PC

Dựng cờ báo cần hiển thị kết quả ADC ra giao diện LCD Lấy lại giá trị các thanh ghi sử dụng Lấy lại trạng thái MCU

ResultADCH và ResultADCL. Chơng trình DIVIDE_TO_GET_TEMPR thực hiện chia kết quả từ chơng trình MULL_RESULT_CONVER cho nội dung thanh ghi Data, phần nguyên của kết quả đặt trong thanh ghi ResultADCH, phần d của kết quả đặt trong thanh ghi ResultADCL.

Hình 4.7 : Lu đồ chơng trình MULL_RESULT_CONVER

Hình 4.8 : Lu đồ chơng trình DIVIDE_TO_GET_TEMPR

Trang 112

Bắt đầu

Xoá cờ carry ( C = 0 ) Khởi tạo các thanh ghi tạm

R11 = 0, R12 = ResultADCL Giảm số nhân đi một

Data  Data - 1 Kết thúc Data = 0? Y N ResultADCL  ResultADCL + R12 ResultADCH  ResultADCH + R11 + C Bắt đầu Xoá cờ carry ( C = 0 )

Khởi tạo các thanh ghi tạm R11  0, R12  0

ResultADCL  ResultADCL - Data ResultADCH  ResultADCH - R11 - C C  0

R12  R12+1

Kết thúc

N

Lấy phần nguyên của kết quả ResultADCH  R12

ResultADCL < Data? N (adsbygoogle = window.adsbygoogle || []).push({});

ResultADCH = 0? Y

Ngoài hai module trên, để hiển thị kết quả chuyển đổi A/D tới giao diện

LCD, cần sử dụng chơng trình con DISPLAY_TEMPR_TO_LCD chơng trình

này đợc gọi từ chơng trình điều khiển khi cờ báo có kết quả ADC cần đợc hiển thị. Dữ liệu đầu vào của chơng trình này là nội dung hai thanh ghi chứa kết quả A/D dới dạng số hệ 10 sau khi thực hiện ngắt END_CONVERT, trong đó phần nguyên chứa trong thanh ghi ResultADCH và phần thập chứa trong thanh ghi ResultADCL.

Hình 4.9 : Lu đồ chơng trình con DISPLAY_TEMPR_TO_LCD

Kết thúc Bắt đầu

Lấy toạ độ đầu Instr  $CB Lưu nội dung ResultADCL ResultADCL  ResultADCH ResultADCL  0

N

Show_CK = 1? Y Đổi giá trị nhiệt độ sang 0K

ResultADCH:ResultADCL  ResultADCH:ResultADCL + 273

Lấy số hàng trăm để hiển thị

Gọi chương trình DIVIDE_TO_GET_TEMPR với Data = $64

Y

ResultADCH = 0? N

Lấy mã ASCII của số cần hiển thị

Data  ResultADCH Data  Data + 30

Không hiển thị số hàng trăm

Data  $20

Hiện dữ liệu

Lấy số hàng chục để hiển thị

ResultADCH  0

Gọi chương trình DIVIDE_TO_GET_TEMPR với Data = $0A

Y

ResultADCH = 0? N

Lấy mã ASCII của số cần hiển thị

Data  ResultADCH Data  Data + $30 Hiện 0 ở hàng chục Data  $30 Hiện dữ liệu Hiện số hàng đơn vị Data  ResultADCL Data  Data + $30 Hiện dữ liệu

Hiện dấu chấm thập phân

Data  $2E

Hiện dữ liệu Hiện số thập phân

Lấy lại nội dung ResultADCL Data  ResultADCL (adsbygoogle = window.adsbygoogle || []).push({});

Data  Data + $30

Một phần của tài liệu thiết kế hệ thống phần mềm cho C AT90S8535 (Trang 111 - 114)