Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
2,25 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐÀ NẴNG ĐỒ ÁN TỐT NGHIỆP Đề tài : ĐIỀU KHIỂN ỔN ĐỊNH NHIỆT ĐỘ LÒ ẤP TRỨNG 1|Page 2019 MỤC LỤC MỤC LỤC ……………………………………………………………………………1 DANH MỤC CÁC HÌNH ẢNH LỜI NÓI ĐẦU CHƯƠNG 1.1 TỔNG QUAN VI ĐIỀU KHIỂN STM32 Lịch sử hình thành phát triển………………………………………………6 1.1.1 Giới thiệu…………………………………………………………………6 1.1.2 Cortex gì? ………………………………………………………… …7 1.2 Đặc điểm ARM STM32………………………………………………… 1.2.1 Các giai đoạn phát triển STM32…………………………………… 1.2.2 Tính tinh vi…………………………………………………………….….9 1.2.3 Sự an tồn …………………………………………………………….…9 1.2.4 Tính bảo mật………………………………………………………… … 10 1.2.5 10 Phát triển phần mềm……………………………………………………… 1.2.6 Dòng performance Access STM32……………………………… 10 1.3 Tổng quan ARM Cortex M3 STM32F103……………………………….11 1.3.1 Các phiên cấu trúc ARM……………………………………………12 1.3.2 Bộ xử lý đơn vị xử lý trung tâm Cortex…………………………… 12 1.3.3 Đơn vị xử lý trung tâm Cortex……………………………… …………12 1.3.4 Bộ xử lý Cortex……………………….…………………………………16 1.3.5 Các chế độ lượng.………………………………………………….17 1.3.6 Kiểu đóng gói chip kiểu chân linh kiện………………………………17 1.3.7 Nguồn cung câp điện……………………………………….……………18 1.3.8 Mạch reset……………………………………….………………………19 1.4 Kiến trúc hệ thống…………………………………… …………………….19 1.5 Các ngoại vi…………………………………………….……………………21 1.5.1 2|Page Các cổng I/O đa dụng…………………………….…………………… 21 1.5.2 Ngắt ngoại (EXTI) …………………………………………………… 21 1.5.3 ADC………………………………………………………………… …21 CHƯƠNG KHẢO SÁT, PHÂN TÍCH BÀI TỐN ĐIỀU KHIỂN NHIỆT ĐỘ LÒ ẤP TRỨNG SỬ DỤNG STM32 23 2.1 Giới thiệu chung………………………… .……………………….23 2.1.1 Phân tích cơng nghệ lị ấp trứng…………………… ………………… 23 2.1.2 Cấu tạo lò ấp trứng…………………………………………… … 24 2.2 Yêu cầu hệ thống………………………………………………… ……… 25 2.3 Phân tích khối chức hệ thống…………………… ……… …26 2.3.1 Cảm biến nhiệt độ DS18B20……………………………….………… 26 2.3.1.1 Đặc điểm DS18B20………………………………… ……… 27 2.3.1.2 Lấy nhiệt độ với ds18b2……………………………….…………… 27 2.3.2 Modul khối nguồn……………………………………………………….31 2.3.3 Khối hiển thị LCD HD44780 - 16×2……………………………….… 31 2.3.4 Khối xử lý trung tâm KIT STM32F103c8t6…………………….………34 2.3.5 Khối chấp hành……………………………………………………… 35 CHƯƠNG NGHIỆM THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC 36 3.1 Lưu đồ thuật toán……………………………………………………………36 3.2 Sơ đồ nguyên lý hệ thống……………………………………………… ….37 3.3 Lập trình cho KIT STM32 sử dụng phần mềm Keil C5 – ARM……………38 3.4 Kết hệ thống……………………………………………………… ……44 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 46 TÀI LIỆU THAM KHẢO .47 3|Page DANH MỤC CÁC HÌNH ẢNH Hình 1.1 Chip ARM hệ thứ M1 Hình 1.2 Kiến trúc vi xử lý ARM Cortex- M3 .8 Hình 1.3 Biểu đồ giai đoạn phát triển STM32 Hình 1.4 Đặc điểm cuả bốn nhánh họ STM32 11 Hình 1.5 Các phiên cấu trúc lõi ARM 12 Hình 1.6 Kiến trúc đường ống ARM Cortex M3 13 Hình 1.7 Kiến trúc Load store ARM Cortex M3 .13 Hình 1.8 Bản đồ nhớ tuyến tính 4Gbyte xử lý Cortex M3 15 Hình 1.9 Các miền lượng bên STM32 .18 Hình 1.10 Cách bố trí tụ chống nhiễu cho STM32 .18 Hình 1.11 Đặc tính mạch reset bên STM32 .19 Hình 1.12 Cấu trúc Bus 20 Hình 1.13 Vùng nhớ Flash STM32 .20 Hình 1.14 Bộ ADC STM32 .22 Hình 2.1 Sơ đồ tổng quát hệ thống 26 Hình 2.2 Hình dạng DS18B20 26 Hình 2.3 Sơ đồ nhớ DS18b20 29 Hình 2.4 Sơ đồ kết nối ds18b20 30 Hình 2.5 Mạch ổn áp nguồn LM2576 31 Hình 2.6 Hình ảnh LCD .32 Hình 2.7 Chức chân LCD .33 Hình 2.8 Kết nối LCD với vi điều khiển 33 Hình 2.9 Mạch mơ LCD phần mềm proteus 34 Hình 2.10 Sơ đồ chân KIT STM32F103C8T6 .34 Hình 2.11 Thơng số kỹ thuật KIT STM32 35 Hình 2.12 Mạch điều khiển bóng đèn Motor 35 Hình 3.1 Lưu đồ thuật toán 36 Hình 3.2 Sơ đồ nguyên lý hệ thống 37 Hình 3.3 KIT phát triển thực tế 45 4|Page LỜI NÓI ĐẦU Ngày nay, kinh tế nước ta đà phát triển mạnh mẽ, đời sống người dân ngày nâng cao Nhu cầu sử dụng sản phẩm điện tử thông minh vào đời sống tăng cao Điều khiển tự động trở thành nhu cầu thiếu hệ thống công nghiệp Một yếu tố điều khiển nhiều hệ thống cơng nghiệp nhiệt độ Nhiệt độ đo, điều khiển theo nhu cầu sử dụng ví dụ hệ thống nhiệt nồi hơi, lò ấp, lò sấy,… Các hệ thống đo điều khiển xuất nhiều thị trường với nhiều phương pháp đo điều khiển khác Mỗi phương pháp có ưu nhược điểm riêng Để giải vấn đề đó, với kiến thức học kĩ thuật điện, điện tử, đo lường cảm biến tìm hiểu thêm kĩ thuật vi điều khiển, chúng em tính tốn đưa giải pháp điều khiển nhiệt độ ứng dụng vi xử lí với mạch thiết kế đơn giản, dễ dàng thiết kế nâng cấp Vì em lựa chọn đề tài “điều khiển ổn định nhiệt độ lò ấp trứng” Do thời gian thực kiến thức hạn chế nên nhiều sai sót q trình thực đề tài, chúng em mong nhận bảo,góp ý thầy cô bạn 5|Page CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN 1.1 Lịch sử hình thành phát triển 1.1.1 Giới thiệu ARM (Acorn RISC Machine) loại cấu trúc vi xử lý 32-bit kiểu RISC (Reduced Instructions Set Computer - Máy tính với tập lệnh tối giản) sử dụng rộng rãi hệ thống nhúng Do có đặc điểm tiết kiệm lượng nên vi xử lí ARM ngày chiếm ưu sản phẩm thiết bị điện tử di động Chip ARM bắt đầu thiết kế từ năm 1983 dự án phát triển công ty máy tính Acorn Nhóm thiết kế dẫn đầu Roger Wilson Steve Furber năm 1985 nhóm cho đời mẫu chip ARM hệ có tên ARM1 Hình CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN Chip ARM hệ thứ M1 Năm 1986 nhóm hồn thành sản phẩm thực gọi tên ARM2, ARM2 có đường truyền liệu 32-bit, không gian địa 26-bit cho phép quản lý đến 64 Mbyte địa 16 ghi 32-bit Một ghi đóng vai trị đếm chương trình với bit cao bit thấp lưu giữ cờ trạng thái vi xử lý Có thể nói ARM2 vi xử lý 32-bit khả dụng đơn giản giới, gồm 30.000 transistor Sự đơn giản có nhờ ARM khơng có vi chương trình giống hầu hết CPU vào thời đó, khơng chứa cache Vì có cấu trúc đơn giản nên ARM có đặc điểm tiêu thụ cơng suất thấp đồng thời đảm bảo 6|Page tính vượt trội so với dịng vi xử lí khác Thế ARM3, ARM3 tạo với 4KB cache có chức cải thiện tốt hệ trước Vào năm cuối thập niên 80, hãng máy tính Apple Computer bắt đầu hợp tác với Acorn để phát triển hệ lõi ARM kết hợp tác đời hệ ARM6 Hiện ARM tiếp tục phát triển, cập nhật kiến trúc cách toàn diện Hiện phiên sử dụng phổ biến phiên ARM7 và phát triển phiên ARM8 sử dụng điện tốn xử lý 64 bít Trong vài năm trở lại đây, xu hướng chủ yếu thiết kế với vi điều khiển sử dụng chip ARM7 ARM9 vi điều khiển đa dụng Ngày nhà sản xuất IC đưa thị trường 240 dòng vi điều khiển sử dụng lõi ARM Tập đoàn ST Microelectronic vừa cho mắt dòng STM32, vi điều khiển dựa lõi ARM Cortex-M3 hệ hãng ARM thiết kế, lõi ARM Cortex-M3 cải tiến lõi ARM7 truyền thống Dòng STM32 thiết lập tiêu chuẩn hiệu suất, chi phí, khả đáp ứng ứng dụng tiêu thụ lượng thấp tính điều khiển thời gian thực khắt khe 1.1.2 Cortex gì? Dịng ARM Cortex xử lí hệ đưa kiến trúc chuẩn cho nhu cầu đa dạng công nghệ Khơng giống chip ARM khác, dịng Cortex lõi xử lí hồn thiện, đưa chuẩn CPU kiến trúc hệ thống chung Dòng Cortex gồm phân nhánh chính: dịng A dùng cho ứng dụng cao cấp, dòng R dùng cho ứng dụng thời gian thực đầu đọc dòng M dùng cho ứng dụng vi điều khiển chi phí thấp STM32 đươc thiết kế dựa dịng Cortex-M3, dòng Cortex-M3 thiết kế đặc biệt để nâng cao hiệu suất hệ thống, kết hợp với tiêu thụ lượng thấp Cortex-M3 thiết kế dựa kiến trúc chi phí sản xuất thấp để cạnh tranh với dòng vi điều khiển bit 16 bit truyền thống Cortex-M3 thiết kế lõi chi phí thấp CPU 32 bit với hai chế độ hoạt động: Thread Handler, chế độ cấu hình với vùng stack riêng biệt nó, điều cho phép thiết kế phần mềm phức tạp hỗ trợ hệ điều hành thời gian thực Lõi Cortex có hỗ trợ timer 24 bit tự động nạp lại giá trị, cung cấp ngắt timer đặn cho nhận RTOS ( read time operating system) Các chíp ARM7 ARM9 có tập lệnh ( tập lệnh ARM 32 bit 7|Page tập lệnh Thumb 16 bit ) dịng Cortex thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh pha trộn tập lênh 32 bit tập lệnh 16 bit Tập lệnh Thumb-2 thiết kế đặc biệt dành cho chương trình C/C++, tức ứng dụng dựa Cortex hoàn toàn viết ngơn ngữ C mà khơng cần đến chương trình khởi động viết bang Assembler ARM7 ARM9 Hình CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN Kiến trúc vi xử lý ARM Cortex- M3 1.2 Đặc điểm ARM STM32 1.2.1 Các giai đoạn phát triển STM32 Hiện STM32 chải qua giai đoạn: - Cortex-M0: Đây hệ STM32 bao gồm chip STM32F0 - Cortex-M3: Đây hệ thứ STM32 bao gồm chip STM32L1, STM32F1, STM32F2 - Cortex-M4: Đây hệ thứ STM32 bao gồm chip STM32F3, STM32F4 8|Page Hình CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN Biểu đồ giai đoạn phát triển STM32 1.2.2 Tính tinh vi Thoạt nhìn ngoại vi STM32 giống vi điều khiển khác, hai chuyển đổi ADC, timer, I2C, SPI, CAN, USB RTC Tuy nhiên ngoại vi có nhiều đặc điểm thú vị Ví dụ ADC 12-bit có tích hợp cảm biến nhiệt độ để tự động hiệu chỉnh nhiệt độ thay đổi hỗ trợ nhiều mode chuyển đổi Mỗi timer có khối capture compare, khối timer liên kết với khối timer khác để tạo mảng timer tinh vi 1.2.3 Sự an toàn Ngày ứng dụng đại thường phải hoạt động mơi trường khắt khe, địi hỏi tính an tồn cao, địi hỏi sức mạnh xử lí nhiều thiết bị ngoại vi tinh vi Để đáp ứng yêu cầu khắt khe STM32 cung cấp số tính phần cứng hỗ trợ tính tốt Chúng bao gồm phát điện áp thấp, hệ thống bảo vệ xung clock hai watchdogs Bộ watchdog cửa sổ Watchdog phải làm tươi khung thời gian xác định Nếu nhấn sớm q muộn bị kích hoạt Bộ thứ hai Watchdog độc lập,có dao động bên tách biệt với xung nhịp hệ thống Hệ thống bảo vệ xung nhịp phát lỗi dao động bên ngồi (thường thạch anh) chuyển sang dùng dao động nội RC 8Mhz 9|Page 1.2.4 Tính bảo mật Một yêu cầu khắt khe khác thiết kế đại nhu cầu bảo mật mã chương trình để ngăn chặn chép trái phép phần mềm Bộ nhớ FLASH STM32 khóa để chống truy cập đọc Flash thơng qua cổng debug Khi tính bảo vệ kích hoạt, nhớ Flash bảo vệ chống ghi để ngăn chặn mã không tin cậy chèn vào bảng vecto ngắt Hơn bảo vệ ghi cho phép phần cịn lại nhờ Flash STM32 có đồng hồ thời gian thực khu vực nhỏ liệu SRAM nuôi nhờ nguồn pin Khu vực có đầu vào chống giả mạo, kích hoạt kiện ngắt có thay đổi trạng thái đầu vào Ngoài kiện chống giả mạo tự động xóa liệu lưu SRAM nuôi nguồn pin 1.2.5 Phát triển phần mềm Nếu bạn sử dụng vi điều khiển dựa lõi ARM, công cụ phát triển hỗ trợ tập lệnh Thumb-2 dịng Cortex Ngồi ST cung cấp thư viện điều khiển thiết bị ngoại vị, thư viện phát triển USB thư viện ANSI C mã nguồn tương thích với thư viện trước cơng bố cho vi điều khiển ARM7 ARM9 Có nhiều RTOS mã nguồn mở thương mại middleware (TCP/IP, hệ thống tập tin,.v.v ) hỗ trợ cho họ Cortex Dòng Cortex-M3 kèm hệ thống gỡ lối hoàn toàn gọi CodeSight Truy cập vào hệ thống CodeSight thông qua cổng Debug (Debug Access Port ), cổng hỗ trợ kết nối chuẩn JTAG giao diện dây (serial wire -2 Pin), cung cấp trình điều khiển chạy gỡ lối, hệ thống CodeSight STM32 cung cấp data watchpoint công cụ theo dõi(instrucmentation trace) Công cụ gửi thơng tin ứng dụng lựa chọn đến công cụ gỡ lối Điều cung cấp thêm thơng tin gỡ lối sử dung q trình thử nghiệm phần mềm 1.2.6 Dòng performance Access STM32 Họ STM32 có hai nhánh riêng biệt : dòng Performance dòng Access Dòng Performance tập hợp đầy đủ thiết bị ngoại vi chạy với xung nhịp tối đa 72Mhz Họ STM32 có hai nhánh riêng biệt: dòng Performance dòng 10 | P a g e - 01 cổng USB chức cấp nguồn giao tiếp USB- Full speed - Đầu IO đầy đủ chân - 6-pin header để chọn chế độ boot Hình KHẢO SÁT, PHÂN TÍCH BÀI TỐN ĐIỀU KHIỂN NHIỆT ĐỘ LỊ ẤP TRỨNG SỬ DỤNG STM32.25 Thơng số kỹ thuật KIT STM32 4.1.4 Khối chấp hành Có nhiều phương án để điều khiển cấu chấp hành, sử dụng linh kiện cách li quang thông qua opto PC817 để cách li chống nhiễu cho vi điều khiển Transistor C1815 để khuếch đại tín hiệu điều khiển đóng mở cuộn hút relay 5V/10K để phân cực hạn dòng cho Transistor Diode 1N4007 dùng để bảo vệ Transistor mạch xuất áp ngược từ cuộn dây sinh ra, relay dùng để điều khiển bóng đèn Motor 36 | P a g e Hình KHẢO SÁT, PHÂN TÍCH BÀI TỐN ĐIỀU KHIỂN NHIỆT ĐỘ LÒ ẤP TRỨNG SỬ DỤNG STM32.26 Mạch điều khiển bóng đèn Motor CHƯƠNG THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM 5.1 Lưu đồ thuật toán START LẤY D ATA TỪ DS18B20 D ATA TỪ STM 32F103C8T6 S TÁC ĐỘN G NÚT S Đ Cài nhiệt độ thời gian đảo trứng 37 | P a g e T< T_đ ặt HIỀN THỊ LÊN LCD S Đ Tắt bóng đèn Bật bóng đèn t< t_cài Đ Tắt đảo trứng Bật motor đảo trứng Hình THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM.27 Lưu đồ thuật toán 38 | P a g e 5.2 Sơ đồ nguyên lý hệ thống Hình THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM.28 Sơ đồ nguyên lý hệ thống 39 | P a g e 5.3 Lập trình cho KIT STM32 sử dụng phần mềm Keil C5 – ARM //////////////////định hướng vào giao tiếp chân #include "user_gpio.h" #if ( USER_GPIO_H !=16062014) #error "Include Sai #File user_gpio.h" #endif / ********************************************************************* ********** Noi Dung : Cau hinh GPIO Tham Bien : Khong Tra Ve : Khong ********************************************************************* ***********/ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); /********************************* PORTA *************************************/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); /* OUTPUT chan dau dieu khien relay*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4| GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); /* _ OUTPUT */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); /* INPUT */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_6; 40 | P a g e GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void GPIO_SetState(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin,GPIOMode_TypeDef GPIO_Mode) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin; GPIO_InitStructure.GPIO_Mode = GPIO_Mode; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOx, &GPIO_InitStructure); } //////định nghĩa chân giao tiếp với thiết bị ngoại vi #ifndef MAIN_H #define MAIN_H 19062014 /********************************************************************* PRO_DATA - FOSC - PRO_DATA - FOSC -PRO_DATA - FOSC -PRO_DATA FOSC - PRO_DATA ********************************************************************* *********/ //#define PRO_DATA flash #include #include #include #include #include / ********************************************************************* ********* FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB FW LIB ********************************************************************* *********/ #include "DEF_STM32.h" #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" 41 | P a g e / ********************************************************************* ********* USERSTM32 LIB - USERSTM32 LIB - USERSTM32 LIB - USERSTM32 LIB USERSTM32 LIB ********************************************************************* *********/ #include "user_delay.h" #include "user_gpio.h" / ********************************************************************* ********* USER LIB - USER LIB - USER LIB - USER LIB - USER LIB - USER LIB - USER LIB ********************************************************************* *********/ #include "lcd16x2.h" #include "ds18b20.h" / ********************************************************************* ********* DEFINE GPIO - DEFINE GPIO - DEFINE GPIO - DEFINE GPIO - DEFINE GPIO DEFINE GPIO ********************************************************************* *********/ /* GPIO A */ #define LCD16X2_D4 PORTA_4 #define LCD16X2_D5 PORTA_5 #define LCD16X2_D6 PORTA_6 #define LCD16X2_D7 PORTA_7 #define BONGDEN PORTA_1 #define KHAYDAO PORTA_2 /* GPIO B */ #define DS18B20_PIN_DQ PINB_9 #define DS18B20_PORT_DQ PORTB_9 #define #define #define 42 | P a g e LCD16X2_RS PORTB_12 LCD16X2_RW PORTB_13 LCD16X2_EN PORTB_14 #define #define #define #endif BUTTON1 BUTTON2 BUTTON3 PINB_6 //INPUT->PIN|OUTPUT->PORT PINB_7 PINB_8 /////////////main #include "main.h" #include "var.h" #if ( MAIN_H!=19062014) #error "Include Sai File Main.h" #endif float sTemp=37.7; //Nhiet cai int sSecond=15; // Thoi gian dao trung uint8_t str[16]; // Mang chua 16 ky tu man hinh LCD void setupMenu() { int iSet=0; //Setup che do { if(iSet==0) //Cai nhiet { LCD16X2_Gotoxy(0,0); LCD16X2_Puts((uint8_t*)" CAI NHIET DO "); sprintf((char*)str,"Temp: %2.2fC ",sTemp); LCD16X2_Gotoxy(0,1); LCD16X2_Puts(str); } if(iSet==1) //Cai thoi gian dao trung { LCD16X2_Gotoxy(0,0); LCD16X2_Puts((uint8_t*)" CAI THOI GIAN "); sprintf((char*)str,"Second: %02dS ",sSecond); LCD16X2_Gotoxy(0,1); LCD16X2_Puts(str); } if(BUTTON2==0)//Phim tang 43 | P a g e { while(BUTTON2==0); if(iSet==0) { sTemp+=0.1; if(sTemp>=40.0) { sTemp=30.0; } } if(iSet==1) { sSecond++; if(sSecond>=100) { sSecond=0; } } } if(BUTTON3==0)//Phim giam { while(BUTTON3==0); if(iSet==0) { sTemp-=0.1; if(sTemp