Tải Thiết kế một mạch đo nhiệt độ đơn giản

Download miễn phí Thiết kế một mạch đo nhiệt độ đơn giản


LỜI NÓI ĐẦU

Ngày này, việc ứng dụng máy tính vào các kỹ thuật đo lường và điều khiển không còn mới vì khi các thiết bị, hệ thống đo lường và điều khiển được ghép nối với máy tính sẽ có thời gian thu thập và xử lý dữ liệu ngắn trong khi mức độ chính xác vẫn được đảm bảo, nhưng điều đáng quan tâm hơn cả là khả năng tự động hoá trong việc thu thập và xử lý dữ liệu. Chính vì điều này làm cho máy tính được ứng dụng trong hầu hết vào các lĩnh vực trong cuộc sống hàng ngày đặc biệt là trong lĩnh vực công nghiệp.
Một bước tiến quan trọng trong kỹ thuật vi xử lý là sự ra đời của các bộ vi xử lý kỹ thuật số. Đây là một vi mạch điện tử có mật độ tích hợp cao bao gồm rất nhiều các mạch số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là quá trình xử lý dữ liệu được thực hiện theo một chương trình là một tập hợp các lệnh từ bên ngoài mà người sử dụng có thể thay đổi dễ dàng tùy thuộc vào từng ứng dụng. Do đó một bộ vi xử lý có thể thực hiện được rất nhiều các yêu cầu điều khiển khác nhau tuỳ từng trường hợp vào nhu cầu sử dụng.
Sự ra đời của kỹ thuật vi xử lý là sự kết hợp giữa kỹ thuật phần cứng và phần mềm đã làm cho hoạt động của các mạch điện tử trở nên mềm dẻo hơn với những phần mềm rất linh hoạt mà người sử dụng có thể sửa chữa, thay đổi hay bổ sung làm cho ứng dụng ngày càng trở nên hoàn thiện mà không cần thiết kế lại toàn bộ ứng dụng.
Trong đồ án này, em sử dụng vi mạch điều khiển AT90S8535 của hãng Atmel để thiết kế một mạch đo nhiệt độ đơn giản. Đây là một bộ vi xử lý 8 bit năng lượng thấp (theo kiểu chíp CMOS) trên cơ sở cấu trúc RICS của hãng Atmel, tốc độ xử lý dữ liệu của IC AT90S8535 rất cao (xấp xỉ 8 MISP tại tần số 8MHz) cho phép hệ thống có thể được thiết kế tối ưu làm tăng tốc độ xử lý. Do đó, nó cung cấp khả năng linh hoạt rất cao trong các ứng dụng nhúng. Vì vậy, việc tìm hiểu cấu trúc và đặc tính của vi mạch điều khiển AT90S8535 có thể giúp chúng ta sử dụng vi mạch điều khiển này cho các ứng dụng cần thiết.
Em xin chân thành Thank thầy cô đã tận tình hướng dẫn để em hoàn thành đồ án này. Tuy nhiên, do trình độ còn nhiều hạn chế nên đồ án không thể tránh khỏi những thiếu sót, vì vậy em rất mong được sự chỉ bảo của các thầy cô cũng như của những người đi trước trong lĩnh vực này để đồ án của em hoàn thiện hơn qua đó em có thể xây dựng được những ứng dụng trong thực tế.

Đề tài: Thiết kế một mạch đo nhiệt độ đơn giản


Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

10, kết quả này sẽ được gửi sang PC đồng thời dựng cờ báo có kết quả chuyển đổi A/D. Thao tác tiếp theo được thực hiện trong chương trình con DISPLAY_TEMPR_TO_LCD được gọi từ chương trình điều khiển khi cờ trên được nhận ra.
Ngoài các ngắt kể trên, chương trình còn có một số chương trình con có các chức năng khác nhau trợ giúp cho chương trình điều khiển hoạt động, bao gồm :
Các chương trình con điều khiển LCD controller : LCD_BUSY (kiểm tra LCD controller đang thực hiện thao tác trong?), LCD_INSTR (ghi lệnh tới LCD controller) và LCD _DATA (ghi dữ liệu tới LCD controller).
Các chương trình con tính toán và hiển thị kết quả thu được từ ADC : MULL_RESULT_CONVER, DIVIDE_TO_GET_TEMPR (thực hiện nhân chia 16 bit để thu được kết quả ADC ở số hệ 10), DISPLAY_TEMPR_TO_LCD (hiển thị kết quả của ADC ra giao diện LCD dưới dạng 0C hay 0K tuỳ từng trường hợp vào điều kiện được xác định trong chương trình).
Các chương trình điều khiển của các phím chức năng : SHIFT_LEFT, SHIFT_RIGHT, SEND_TxBUFF_TO_PC, CLEAR_Tx_OR_Rx, BACK_SPACE, SELECT_TxRx.
Các chương trình điều khiển đối với phím thường : GET_ASCII_CODE (xác định mã ASCII của phím được ấn), FIND_ASCII_CODE (tìm mã ASCII tươngứng với số lần ấn của phím), DISPLAY_KEY (hiển thị phím được ấn và lưu vào bộ đếm TxBuff để chuyền sang PC).
Các chương trình điều khiển hiển thị dữ liệu ra giao diện LCD : SHOW_PREFACEA, SHOW_PREFACEB (hiển thị lời giới thiệu), DISPLAY_INTERFACE (hiển thị giao diện làm việc của LCD), SHOW_STRING (hiển thị một chuỗi ký tự ra giao diện LCD) vv...
4.2. Lưu đồ thuật toán của các chức năng chính.
4.2.1. Chức năng giao tiếp với LCD controller.
Để mC có thể giao tiếp được với LCD controller, ta cần thực hiện khởi tạo LCD controller ngay sau khi nguồn được bật. Do mục đích của đồ án, ta sử dụng cơ chế khởi tạo LCD controller ở chế độ giao tiếp 4 bit bus. 3 chương trình con được sử dụng để giao tiếp với LCD controller là LCD_BUSY, LCD_INSTR và LCD_DATA. Lệnh được đặt trong thanh ghi Instr và dữ liệu trong thanh ghi Data.
Hình 4.3 : Lưu đồ chương trình kiểm tra LCD busy
Bắt đầu
Cho phép đọc thanh ghi lệnh của LCD controller (RS = 0, RW = 1)
Đọc 4 bit MSB
của thanh ghi lệnh
Đọc 4 bit LSB
của thanh ghi lệnh
Kết thúc
BF = 1?
N
Y
Hình 4.4 : Lưu đồ chương trình ghi lệnh và
dữ liệu tới LCD controller
Bắt đầu
Cho phép ghi thanh ghi lệnh của LCD controller (RS = 0, RW = 0)
Ghi 4 bit MSB của mã
lệnh tới thanh ghi lệnh
Kết thúc
Lấy 4 bit thấp
của mã lệnh
Ghi 4 bit LSB của mã
lệnh tới thanh ghi lệnh
Bắt đầu
Cho phép ghi thanh ghi dữ liệu của LCD controller (RS = 1, RW = 0)
Ghi 4 bit MSB của byte
dữ liệu tới thanh dữ liệu
Kết thúc
Lấy 4 bit thấp
của byte dữ liệu
Ghi 4 bit LSB của byte
dữ liệu tới thanh dữ liệu
4.2.2. Chức năng điều khiển và hiển thị kết quả ADC.
Khi bộ ADC thực hiện xong một chu kỳ chuyển đổi, kết quả chuyển đổi sẽ được lưu 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 : Lưu đồ chương trình con phục vụ ngắt END_CONVERT
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ới số 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ới số 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
Kết thúc
Trong ngắt END_CONVERT có sử dụng hai module MULL_RESULT_CONVER và 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 xác định số nhân hay số chia trong thanh ghi Data. Chương trình MULL_RESULT_CONVER sẽ thực hiện nhân nội dung hai thanh ghi ResultADCL và Data, kết quả đặt trong thanh ghi 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 : Lưu đồ chương trình MULL_RESULT_CONVER
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
Hình 4.8 : Lưu đồ chương trình DIVIDE_TO_GET_TEMPR
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
ResultADCH = 0?
Y
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 : Lưu đồ 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
Data ‘ Data + $30
Hiện dữ liệu
4.2.3. Chức năng giao tiếp với KeyPad.
Chức năng giao tiếp với bàn phím được bắt đầu bằng việc giải mã ma trận bàn phím để xác định phím nào trên bàn phím được ấn. Để mC nhận biết có phím ấn, một yêu ngắt ngoài được xác định bằng mức thấp trên chân INT0 (PD2) được phát sinh và ngắt bàn phím SCAN_CODE được thực hiện. Trước khi bắt thực hiện chương trình con phục vụ ngắt, cần đặt 0 trên các hàng và đặt 1 trên các cột.
Hình 4.10 : Lưu đồ ngắt SCAN_CODE giải mã ma trận bàn phím
Bắt đầu
Lưu lại trạng thái MCU
Keypress ‘ 0
Câm ngắt bàn phím
Đợi 0.2ms cho
cổng ổn định
Col1 = 0?
Y
N
Col2 = 0?
Y
N
Col3 = 0?
Y
N
Col4 = 0?
Y
N
KeyPress ‘ 0
KeyPress ‘ 4
KeyPress ‘ 8
KeyPress ‘ 12
Đảo 4 bit của cổng B
Đưa 0 ra các cột vào đưa 1 ra các hàng
Đợi 0.2ms cho các cột ổn định
Row...
 

Các chủ đề có liên quan khác

Top