Giới thiệu phần mềm mô phỏng Proteus

Một phần của tài liệu THIẾT kế NHIỆT kế điện tử ( DIGITAL THERMOMETER) DÙNG 8051 và LM35 (Trang 36)

CHƯƠNG 3 : THIẾT KẾ NHIỆT KẾ ĐIỆN TỬ

3.3.1.1 Giới thiệu phần mềm mô phỏng Proteus

Hình 3.21: Logo phần mềm Proteus.

Phần mềm vẽ Proteus là phần mềm vẽ mạch điện tử được phát triển bởi cơng ty Lancenter Electronics. Phần mềm có thể mơ tả hầu hết các linh kiện điện tử thông dụng hiện nay, đặc biệt hỗ trợ cho cả các phần mềm như 8051, PIC, Motorola, AVR.

Proteus có khả năng mơ phỏng hoạt động của các mạch điện tử bao gồm phần thiết như kế mạch và viết trình điều khiển cho các loại vi điều khiển như MCS-51, AVR, PIC…

Có 2 chương trình trong phần mềm đó là ARES dùng trong vẽ mạch in và ISIS sử dụng cho mô phỏng mạch. Trong 2 chương trình này thì ISIS có phần nổi bật hơn so với ARES. ISIS đã được phát triển trong 12 năm và có tới hơn 12000 người dùng trên khắp thế giới. Điểm nổi bật của chúng đó là khả năng mơ phỏng hoạt động của các vi điều khiển mà không cần dùng thêm bất kỳ một phần mềm phụ trợ nào khác. Từ phần mềm ISIS có thể dễ dàng chuyển sang ARES hoặc bất kỳ phần mềm vẽ mạch in khác.

Hình ảnh mạch điện được tạo bởi ISIS rất đẹp và dễ nhìn, chúng cho phép ta tùy chọn các đường nét, các màu sắc mạch điện hoặc các thiết kế theo các templates. Ngồi ra phần mềm mơ phỏng mạch của Protues có khả năng sắp xếp các đường mạch và vẽ điểm giao mạch tự động.

3.3.1.2 Giới thiệu phần mềm Keil C

Keil C là phần mềm hỗ trợ cho người dùng trong việc lập trình cho vi điều khiển và các dịng khác nhau (Atmel, AVR,…). Keil C giúp người dùng soạn thảo và biên dịch chương trình C hay cả ASM thành ngơn ngữ máy để nạp vào vi điều khiển giúp chúng ta tương tác giữa vi điều khiển và người lập trình.

3.3.2 Sơ đồ khối

Để thực hiện một phép đo của một đại lượng nào đó thì tùy thuộc vào đặc tính của đại lượng cần đo, điều kiện đo, cũng như độ chính xác theo yêu cầu của một phép đo mà ta có thể thực hiện đo bằng nhiều cách khác nhau trên cơ sở của các hệ thống đo lường khác nhau.

Sợ đồ khối của hệ thống đo lường tổng quát:

Hình 3.24: Sơ đồ khối tổng quát

-Khối nguồn: làm nhiệm vụ cấp nguồn cho toàn bộ hệ thống.

-Khối cảm biến: làm nhiệm vụ nhận trực tiếp các đại lượng vật lý đặc trưng cho đối tượng cần đo biến đổi các đại lượng thành các đại lượng vật lý thống nhất( dòng điện hay điện áp) để thuận lợi cho việc tính tốn.

-Mạch đo: có nhiệm vụ tính tốn biến đổi tín hiệu nhận được từ bổ chuyển đổi sao cho phù hợp với yêu cầu thể hiện kết quả đo của bộ chỉ thị.

-Khối chỉ thị: làm nhiệm vụ biến đổi tín hiệu điện nhận được từ mạch đo để thể hiện kết quả đo.

Hình 3.25: sơ đồ khối.

3.3.3 Chương trình mơ phỏng

Giải thích sơ đồ nguyên lý:

-Khi được cấp nguồn, người dùng cần nhấn nút reset. Lúc này hệ thống sẽ nhận và xử lý các tín hiệu nhiệt đo được và hiển thị kết quả đo lên màn hình.

- LM35: Nhận các giá trị nhiệt độ cần đo.

- ADC0804: Chuyển đổi các tín hiệu tương tự nhận được từ LM35 thành tín hiệu số gửi vào vi điều khiển

- Vi điều khiển 8051: Xử lý các tín hiệu.

- LCD 16x2: Nhận các tín hiệu đo và hiển thị kết quả.

3.3.4 Lưu đồ thuật tốn

Giải thích lưu đồ thuật tốn:

Bắt đầu chương trình ta cài đặt hệ thống, lúc này cảm biến bắt đầu hoạt động.Cảm biến nhận giá trị sau đó qua các bộ phận xử lý gửi các giá trị đo được lên màn hình hiển thị. Lặp lại chương trình.

.

3.3.4 Thi cơng phần cứng

Kêt luận

Qua q trình thực tập tại cơng ty HCL Vietnam, được sự đồng ý của nhà trường, sự đồng ý của phía cơng ty cùng với sự giúp đỡ tận tình của cơ Nguyễn Thùy Dung em đã hoàn thành đề tài.

Qua bài thực tập, em đã được trang bị thêm kiến thức về lập trình nhúng và lập trình vi điều khiển. Đặc biệt, em đã được học và trải nghiệm ở mơi trường chun nghiệp và hiện đại. Góp phần quan trọng trong việc trau dồi củng cố kiến thức, rút ra được kinh nghiệm mà từ lâu bản thân cịn thiếu sót.

Báo cáo đề tài: “Thiết kế nhiệt kế điện tử (Digital Thermometer) dùng 8051 và

LM35” về cơ bản đã giải quyết được vấn đề kiểm tra nhiệt độ. Hệ thống cịn có thể phát

triển thêm các tính năng như: gửi dữ liệu đo được lên internet, tích hợp thêm thiết bị cảnh báo nhiệt độ. Mục tiêu tạo ra các sản phẩm chính xác, dễ sử dụng, nhanh chóng và tiện lợi phục vụ cho đời sống hàng ngày.

TÀI LIỆU THAM KHẢO

[1]. https://dientutuonglai.com/vi-dieu-khien-8051/

[2]. Nguyễn Ngọc Cương, Nguyễn Đình Nghĩa, Đỗ Quốc Huy, Trần Nghi Phú và Phạm Thành Cơng, 2011. Giáo trình Ngơn ngữ lâ ̣p trình C/C++. Nhà xuất bản Thơng Tin Và Truyền Thơng. Hà Nơ ̣i. 191 trang.

PHỤ LỤC

* Chương trình điều khiển #include <reg51.h>

sbit rs = P2 ^ 7; // Đăng ký Chân chọn (RS) của màn hình LCD 16 * 2 sbit rw = P2 ^ 6; // Chân đọc / ghi (RW) của màn hình LCD 16 * 2 sbit en = P2 ^ 5; // Bật chân (E) của màn hình LCD 16 * 2

sbit rd_adc = P3 ^ 0; // Đọc chân (RD) của ADC0804 sbit wr_adc = P3 ^ 1; // Ghi (WR) chân của ADC0804 sbit intr_adc = P3 ^ 2; // Chân ngắt (INTR) của ADC0804

void delay (unsigned int); // hàm tạo độ trễ

void cmdwrt (unsigned char); // chức năng gửi lệnh đến màn hình LCD 16 * 2 void datawrt (unsigned char); // chức năng gửi dữ liệu đến màn hình LCD 16 * 2

void convert_display (unsigned char); // chức năng chuyển đổi giá trị ADC thành nhiệt độ và hiển thị trên màn hình LCD 16 * 2

void main (void) // hàm chính {

unsigned char;

unsigned char cmd [] = {0x38,0x01,0x06,0x0c, 0x82}; // 16 * 2 lệnh khởi tạo lcd unsigned char data1 [] = "Nhiệt độ:";

unsigned char value;

P1 = 0xFF; // đặt Cổng 1 làm cổng đầu vào P0 = 0x00; // đặt Cổng 0 làm cổng đầu ra

for (i = 0; i <5; i ++) // gửi lệnh đến màn hình LCD 16 * 2 hiển thị một lệnh tại một thời điểm

{

cmdwrt (cmd [i]); // lệnh gọi hàm để gửi lệnh đến màn hình LCD 16 * 2 delay (1);

}

for (i = 0; i <12; i ++) // gửi dữ liệu đến màn hình LCD 16 * 2 hiển thị một ký tự tại một thời điểm

{

datawrt (data1 [i]); // lệnh gọi hàm để gửi dữ liệu đến màn hình LCD 16 * 2 delay (1);

}

intr_adc = 1; // tạo chân INTR làm đầu vào rd_adc = 1; // đặt chân RD CAO

wr_adc = 1; // đặt WR pin LOW while (1) // lặp lại mãi mãi {

wr_adc = 0; // gửi xung LOW đến HIGH trên chân WR delay(1);

wr_adc = 1;

while (intr_adc == 1); // đợi Kết thúc chuyển đổi

rd_adc = 0; // làm cho RD = 0 để đọc dữ liệu từ ADC0804 value = P1; // sao chép dữ liệu ADC

convert_display (value); // lệnh gọi hàm để chuyển đổi dữ liệu ADC thành nhiệt độ và hiển thị trên màn hình LCD 16 * 2

delay (1000); // khoảng thời gian giữa mọi chu kỳ rd_adc = 1; // tạo RD = 1 cho chu kỳ tiếp theo }

}

void cmdwrt (unsigned char x) {

P0 = x; // gửi lệnh đến Cổng 0 có kết nối màn hình LCD 16 * 2 rs = 0; // tạo RS = 0 cho lệnh

rw = 0; // tạo RW = 0 cho thao tác ghi

en = 1; // gửi xung CAO đến THẤP trên chân Enable (E) để bắt đầu thao tác ghi lệnh delay (1);

en = 0; }

void datawrt (unsigned char y) {

P0 = y; // gửi dữ liệu đến Cổng 0 trên đó màn hình LCD 16 * 2 được kết nối rs = 1; // tạo RS = 1 cho lệnh

rw = 0; // tạo RW = 0 cho thao tác ghi

en = 1; // gửi xung CAO đến THẤP trên chân Enable (E) để bắt đầu thao tác ghi dữ liệu delay (1);

en = 0; }

void convert_display (unsigned char value) {

unsigned char x1, x2, x3;

cmdwrt (0xc6); // lệnh đặt con trỏ ở vị trí thứ 6 của dịng thứ 2 trên màn hình LCD 16 * 2

x1 = (value / 10); // chia giá trị cho 10 và lưu trữ thương trong biến x1 x1 = x1 + (0x30); // chuyển đổi biến x1 thành ascii bằng cách thêm 0x30 x2 = value % 10; // chia giá trị cho 10 và lưu phần dư trong biến x2 x2 = x2 + (0x30); // chuyển đổi biến x2 thành ascii bằng cách thêm 0x30 x3 = 0xDF; // giá trị ascii của ký hiệu độ (°)

datawrt (x1); // hiển thị nhiệt độ trên màn hình LCD 16 * 2 datawrt (x2);

datawrt (x3); datawrt ('C'); }

void delay (unsigned int z) {

unsigned int p, q;

for (p = 0; p <z; p ++) // lặp lại lần 'z' {

}

Một phần của tài liệu THIẾT kế NHIỆT kế điện tử ( DIGITAL THERMOMETER) DÙNG 8051 và LM35 (Trang 36)

Tải bản đầy đủ (PDF)

(50 trang)