Lập trình điều khiển

Một phần của tài liệu ĐỀ Luận : Nghiên cứu thiết kế thiết bị đo nhiệt độ, độ ẩm (Trang 33)

Lập trình 8051 bằng phần mềm Keil C

Từ cách mắc chân cho các linh kiện có trong mạch nguyên lý với chip 89S52 ta khai báo thư viện, gán chân và tiến hành lập trình.

Hình 2.12. Khai báo thư viện, nối chân cho LCD và cảm biến

 Lập trình mã code cho cảm biến nhiệt độ DS18B20

sbit DQ = P1^0;

void delay_18B20 (unsigned int i) { while(i--); } { unsigned char x=0; DQ = 1; delay_18B20(8); DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20); } unsigned char ReadOneChar(void)

{ unsigned char i=0; unsigned char dat = 0;

for (i=8;i>0;i--)

{ DQ = 0; dat>>=1; DQ = 1;

if(DQ) dat|=0x80; delay_18B20(4);} return(dat); } void WriteOneChar(unsigned char dat)

{ unsigned char i=0;

for (i=8; i>0; i--)

{ DQ = 0; DQ = dat&0x01; delay_18B20(5);

DQ = 1; dat>>=1; }}

a=ReadOneChar(); b=ReadOneChar(); nhiet_thuc=b<<4; nhiet_thuc+=(a&0xf0)>>4; return(nhiet_thuc); }

34

 Lập trình mã code cho cảm biến độ ẩm HS1101

#include "hs1101.h"

code int HS1101_Table[101]={

8109,8090,8070,8051,8033,8015,7997,7979,7961,7944, 7927,7910,7894,7878,7862,7846,7830,7815,7799,7784, 7769,7755,7740,7726,7711,7697,7683,7669,7655,7641, 7628,7614,7600,7587,7574,7560,7547,7534,7521,7507, 7494,7481,7468,7455,7442,7429,7416,7403,7390,7377, 7364,7350,7337,7324,7311,7298,7284,7271,7257,7244, 7230,7216,7203,7189,7175,7161,7147,7132,7118,7103, 7089,7074,7059,7045,7029,7014,6999,6984,6968,6952, 6936,6920,6904,6888,6872,6855,6838,6821,6804,6787, 6770,6752,6735,6717,6699,6680,6662,6644,6625,6606, 6587};

int HS1101_GetHumi(int frequency) { int i;

for(i=0;i<101;i++)

{ if((frequency+25)>HS1101_Table[i]) return i;} return 100;}

Với khối cảm biến độ ẩm HS1101 ta cần thêm hàm so sánh giá trị tần số thay đổi khi độ ẩm thay đổi với dải tần từ 6033–7351 ứng với độ ẩm 100-0%, mã code như sau:

if (so_xung>7351) do_am=0;

else if(so_xung>7224) do_am=10+(so_xung-7224)*10/(7351-7224); else if(so_xung>7100) do_am=20+(so_xung-7100)*10/(7224-7100); else if(so_xung>6976) do_am=30+(so_xung-6976)*10/(7100-6976); else if(so_xung>6853) do_am=40+(so_xung-6853)*10/(6976-6853); else if(so_xung>6728) do_am=50+(so_xung-6728)*10/(6853-6728); else if(so_xung>6600) do_am=60+(so_xung-6600)*10/(6728-6600); else if(so_xung>6468) do_am=70+(so_xung-6468)*10/(6600-6468); else if(so_xung>6330) do_am=80+(so_xung-6330)*10/(6468-6330); else if(so_xung>6186) do_am=90+(so_xung-6186)*10/(6330-6186); else if(so_xung>6033) do_am=100(so_xung-6033)*10/(6186-6033);

 Chương trình chính

unsigned char temp; void main(void) { int hum; float Nhiet_Do; char str[20]; khoitao(); lenh(0x80); khoi_tao_ngat_ngoai0(); khoi_tao_timer0(); while(1) {hum = do_am; Nhiet_Do=ReadTemp(); lenh(0x80);

sprintf(str,"Nhiet Do: %2.0f oC ",Nhiet_Do); chuoi(str);

lenh(0xc0);sprintf(str, "Do Am: %d %%", hum); chuoi(str); delay(500);

} }

35

CHƢƠNG 3

CHẾ TẠO BỘ ĐO NHIỆT ĐỘ, ĐỘ ẨM 3.1. Các bƣớc chuẩn bị, thực hiện chung

3.1.1. Chuẩn bị

 .Phầm mềm mô phỏng proteus

 Bo test, dây cắm  Fip đồng

 Máy hàn thiếc, thiếc hàn

 Linh kiện điện tử với thông số theo mạch nguyên lý gồm: Cục nguồn 9 – 12V, pin 9V, cầu chì, chíp, tụ điện (tụ gốm, tụ hóa), điện trở, thạch anh, nút bấm, đèn led, màn hình lcd, cảm biến nhiệt độ - độ ẩm, chân đế & IC555, Jum cắm, chân đế & chip 89S52, và một số linh kiện cho khối mở rộng

 Mạch nạp SPI

 Phần mền nạp chíp Progisp

3.1.2. Thực hiện chung

 Mô phỏng

 Chạy trên bo test

 Làm mạch, hàn linh kiện, chạy thực tế

3.2. Mô phỏng thiết bị trên phần mềm

Để tiện quan sát và nạp thử nghiệm code chương trình ta xây dựng mạch mô phỏng. Mạch mô phỏng hoạt động gần như mạch thực tế (lý tưởng), vì vậy khi lập trình ta chỉ cần đổ chương trình vào mạch mô phỏng trước để biết code ta lập trình chạy đúng hay sai và tiện lợi sửa. Sau đó ta mới nạp code vào mạch bên ngoài. Điều này tránh được việc phải xóa – nạp liên tục ở chip nếu chương trình sai hoặc chưa đúng yêu cầu.

Sử dụng phần mềm Proteus để để vẽ và chạy mạch mô phỏng dựa trên sơ đồ nguyên lý (hình 2.9).

36

Hình 3.1. Mạch mô phỏng đo nhiệt độ, độ ẩm

3.3. Chạy trên bo test

Khi mạch mô phỏng đã hoạt động đúng theo yêu cầu ta có thể làm mạch, hàn linh kiện và chạy thiết bị thực tế. Nhưng để đảm bảo một lần nữa về tính ổn định cũng như linh kiện điện tử không bị lỗi ta thử nghiệm trên bo test trước.

Cắm linh kiện trên bo test dựa theo sơ đồ nguyên lý (hình 2.9), sử dụng phần mềm nạp Progisp (hình 3.3) để nạp code đã lập trình cho chíp.

Hình 3.2. Mạch nạp và Sơ đồ mắc mạch khối nạp SPI cho 8051

Sau khi nạp chương trình cho chíp nếu bo mạch test không hoạt động hoặc hoạt động không theo yêu cầu ta cần kiểm tra lại chân cắm, linh kiện... khi mạch test đã hoạt động bình thường theo yêu cầu ta thực hiện bước tiếp theo – chế tạo bộ điều khiển và gán chương trình đã lập trình.

37

3.4. Chế tạo bộ điều khiển và gán chƣơng trình đã lập trình

 Từ mạch in đã thiết kế trên phần mềm altium (hình 2.10) ta đi làm mạch in thực tế trên fip đồng bằng phương pháp là ủi mạch – ăn mòn hóa học hoặc phương pháp film cảm quang.

 Sau khi có mạch in thực tế, sử dụng máy hàn thiếc hàn để hàn, lắp đặt các linh kiện điện vào mạch in đúng vị trí theo thiết kế ban đầu (thiết kế mạch in hình 2.10 – 2.11). Chú ý nên sử dụng chính những linh kiện đã cắm trên bo test trước đó để đảm bảo tính ổn định cũng như đảm phần trăm thành công cao.

 Nạp chương trình: chương trình đã lập trình sẽ tạo ra một file hex – file đã được mã hóa để chíp có thể đọc được. File hex này chính là file ta đã đổ vào mạch mô phỏng, mạch trên bo test, nếu dùng chip đã được nạp trên bo test thì không cần nạp lại chươn trình nữa.

38

3.5. Kết quả

 Kết quả ta thu được thiết bị đo nhiệt độ, độ ẩm thực tế

Hình 3.4.Thiết bị thực tế trước khi đóng hộp

39

KẾT LUẬN

Sau thời gian nghiên cứu lý thuyết đến thực tiễn với sự hướng dẫn tận tình của cô Đinh Hải Lĩnh và thầy Nguyễn Thành Trung bộ môn kỹ thuật điện & tự động hóa khoa Cơ Điện & Công Trình tôi đã hoàn thành một sản phẩm, một thiết bị đo nhiệt độ và độ ẩm, là cơ sở cho những thiết bị điều khiển nhiệt độ, độ ẩm mà cuộc sống chúng ta đang sử dụng hàng ngày.

Sản phẩm là kết quả của sự ứng dụng thành công vi điều khiển 8051 vào quá trình phân tích xử lý tín hiệu là nhiệt độ, độ ẩm nhận về từ cảm biến để hiện thị ra màn hình giúp ta có thể quan sát và xử lý thuận tiện hơn.

Trong phạm vi đề tài, tôi vẫn đang cố gắng nâng cấp thiết bị thông qua hai khối mở rộng được thiết kế khi làm đề tài, thiết bị sẽ có thể truyền thông hiển thị lên máy tính và đóng ngắt nguồn nhiệt – nước tự động theo nhiệt độ hoặc độ ẩm theo yêu cầu.

40

Tài liệu tham khảo

1. Tiêu Kim Cương, Giáo Trình Ngôn Ngữ Lập Trình C, Nhà xuất bản Khoa học Kỹ thuật, 2010

2. GS. Phạm Văn Ất, Kỹ Thuật Lập Trình C cơ sở và nâng cao, Nhà xuất bản Giao thông vận tải Hà Nội, 2006.

Trang web thao khảo

1. http://www.hocavr.com

2. http://www.codientu.org

3. http://www.alldatasheet.com

Một phần của tài liệu ĐỀ Luận : Nghiên cứu thiết kế thiết bị đo nhiệt độ, độ ẩm (Trang 33)

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

(40 trang)