1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO MÔN HỌC VI ĐIỀU KHIỂN THIẾT KẾ MẠCH BÁO CHUÔNG GIỜ HỌC DÙNG REALTIME DS1307 HIỂN THỊ TRÊN MÀN HÌNH LCD

44 120 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 1,59 MB

Nội dung

ĐẠI HỌC LẠC HỒNG KHOA CƠ ĐIỆN – ĐIỆN TỬ Bộ Mơn: Vi Điều Khiển BÁO CÁO MƠN HỌC VI ĐIỀU KHIỂN THIẾT KẾ MẠCH BÁO CHUÔNG GIỜ HỌC DÙNG REALTIME DS1307- HIỂN THỊ TRÊN MÀN HÌNH LCD SVTH: PHAN TRUNG KIÊN-119000237 NGUYỄN DUY TIÊN-119000368 ĐÀO ĐỨC HÙNG-119001404 Lớp: 19CD111 GVHD: T.S NGÔ KIM LONG ĐỒNG NAI: Tháng 12-2021 MỤC LỤC CHƯƠNG 1: MỞ ĐẦU 1.1 Lý chọn đề tài 1.2 Mục tiêu nghiên cứu 1.3 Phạm vi nghiên cứu 1.4 Kết đạt CHƯƠNG : CƠ SỞ LÝ THUYẾT 2.1 Phân tích đề tài 2.2 Lựa chọn thiết bị phần cứng 2.2.1 Vi xử lí: STM32F407 Discovery 2.2.2 Chuông điện 2.2.3 Module DS1307 .6 2.2.4 Relay module 2.2.5 Màn hình LCD 16x2 2.2.6 Resistor 2.2.7 Nút nhấn nhả 10 2.2.8 Biến trở Volume 10 2.3 Phần mềm hỗ trợ lập trình 11 2.3.1 STM32CubeMX: .11 2.3.2 KeilC V5: 11 2.4 Sơ đồ nguyên lý hệ thống 12 2.4.1 Khối thời gian thực DS1307 (RTC) 12 2.4.2 Khối điều khiển 12 2.4.3 Khối vi xử lý 13 2.4.4 Khối hiển thị .13 2.4.5 Khối chuông báo 14 2.5 Sơ đồ nguyên lý 14 CHƯƠNG : THIẾT KẾ 15 3.1 Kết nối phần cứng 15 3.2 Sơ đồ giải thuật 15 3.3 Phương trình giải thuật 16 3.4 Code cho hệ thống 16 3.5 Thử nghiệm mơ hình 41 3.6 Kết thử nghiệm 42 CHƯƠNG 4: KẾT LUẬN 43 4.1 Kết đạt 43 4.2 Hạn chế 43 4.3 Hướng phát triển 43 Tài liệu tham khảo 44 CHƯƠNG 1: MỞ ĐẦU 1.1.Lý chọn đề tài - Ngày nay, với phát triển xã hội, trường học, lớp học mở rộng quy mô lẫn số lượng việc sử dụng cơng cụ thơ sơ khơng cịn phù hợp, thay vào thiết bị điện tử đại, có độ tự động, hiệu cao sử dụng rộng rãi Sự phát triển ngành điện tử mạnh mẽ việc sử dụng vi điều khiển để thiết kế chế tạo thiết bị hỗ trợ báo khơng khó Các thiết bị báo giờ, cần tác động, thay đổi chút ta sử dụng chúng nhiều nơi khác mà đạt kết mong muốn Và từ nhu cầu thực tế trên, chúng em lựa chọn nghiên cứu chuông báo lớp học 1.2.Mục tiêu nghiên cứu • Mục tiêu sản phẩm - Sử dụng dùng để thông báo thời gian - Người sử dụng cài đặt thời gian báo theo mong muốn 1.3.Phạm vi nghiên cứu Phần cứng: - Đấu nối thiết bị ngoại vi với vi xử lý trung tâm - Xử lý vấn đề phần cứng phát sinh gây nhiễu Phần mềm: - Nghiên cứu, đưa giải pháp lập trình 1.4.Kết đạt - Có thể sử dụng thay cho việc đánh trống báo giời học cở trường học làm chuông báo thức CHƯƠNG : CƠ SỞ LÝ THUYẾT 2.1.Phân tích đề tài - Với đề tài chng báo tự động, nhóm em thiết kết mạch với khối vi xử lý SMT32F407 Discovery tương tác với modul thời gian thực DS1307 để hiển thị thời gian thực LCD 16x2 Với khối điều chỉnh có nút nhấn: Nút (mode) nhận nhiệm vụ chuyển đổi vùng cài đặt, nút ( ok) có nhiệm đồng ý lưu thơng tin muốn cài đặt, nút (up) có nhiệm vụ di chuyển số đếm lên, nút (down) có nhiệm vụ di chuyển số đếm xuống Khối chuông báo cấp tín hiệu relay có tín hiệu mức 1(chuông reo), lần chuông reo reo liên tục 5s (hết 5s chuông ngắt), phần cài đặt người dùng chọn cài đặt thời gian dựa vào lịch học trường Hình 2.1: Sơ đồ khối 2.2 Lựa chọn thiết bị phần cứng - Với đề tài mạch chng báo nhóm em lựa chọn thiết bị phần cứng phù hợp với mạch: • Module STM32F407 Discovery • Chuông điện • Module DS1307 • Relay module (5V) • LCD 16x2 • Resistor (4k7 Ω ) • Nút nhấn nhả • Biến trở Volume 2.2.1.Vi xử lí: STM32F407 Discovery - Kit phát triển STM32F407 Discovery thiết kế với phần thí nghiệm bản: Cổng USB, led, button, nhớ Flash ngoài, , ngồi kit cịn tích hợp cổng nạp chuẩn Jtag, cổng UART, NRF24L01, LCD để mở rộng vơ số thí nghiệm khác nhau, phù hợp cho bạn tìm hiểu STM32 Thơng số kỹ thuật: • Nguồn sử dụng: 5VDC từ cổng USB chân GPIO • Thiết kế chân GPIO đầy đủ • Tích hợp Led, Button • Tích hợp cổng USB • Tích hợp nhớ Flash Tích hợp cổng nạp chuẩn Jtag Tích hợp khe cắm mạch RF NRF24L01+, UART, LCD, Bộ vi điều khiển STM32F407 Discovery có 32-bit Arm ® Cortex ® -M4 với lõi FPU, nhớ Flash 1-Mbyte RAM 192-Kbyte gói LQFP100 • • • Hình 2.2: STM32F407 Discovery ARM Cortex-M3 2.2.2.Chng đ i ện - Chuông điện 3inch nhà thờ, trường học, nhà xưởng villa báo động 220V 60dB Thông số kĩ thuật: • Điện áp: 220V AC • Âm lượng: 60 dB • Chuông điện 220V chuông dùng trực tiếp nguồn điện • Cơng suất: 2,5W Hình 2.3: Chng điện inch 12VDC - 220V- Đường kính 15cm 2.2.3.Module DS1307 - Module DS1307(RTC) module RTC giá phải sử dụng phổ biến Nó theo dõi xác giây, phút, giờ, ngày, tháng năm - Một số tính quan trọng DS1307 là: • Khả tạo sóng vng lập trình • Cơ số mặc định BCD • Dịng điện thấp, 500mA chế độ lưu pin • Khả thiết lập ngày đến năm 2100 • Sử dụng chuẩn giao tiếp I2C • Các thành phần cần thiết thạch anh 32768kHz, điện trở pull-up tụ lọc nguồn tích hợp board • 5-pin bao gồm giao thức I2C sẵn sàng giao tiếp: INT (QWO), SCL, SDA, VCC GND • Điện áp làm việc: 3.3V đến 5V - Module DS1307 sử dụng pin CR2023 volt Bộ nhớ EEPROM 24c32 nhúng mơ-đun tiết kiệm 32kb liệu - Ngồi ra, bạn đo nhiệt độ môi trường cách sử dụng cảm biến DS18B20 tích hợp sẵn board mạch - Đọc giá trị điện áp pin từ chân BAT - Các chân chức năng: • VCC: Cấp nguồn từ 3,3V – 5.5V • GND: Nối vào cực âm mạch • SCL: Nối Vào chân SCL STM32F407 • SDA: Nối Vào chân SDA STM32F407 Hình 2.4: Module DS1307(RTC) 2.2.4 Relay module - Do chuông điện đc cấp nguồn lớn 220V AC nên cần relay để gán vào dây GND chuông điện, relay mức 0(chưa có tín hiệu từ vi điều khiển) chuông điện không hoạt động, relay mức 1(có tín hiệu từ vi điều khiển 3,3V) chng điện hoạt động chân COM chân NO nối với Thơng số kĩ thuật: • Ba lỗ để bắt vít cố định có đường kính 3.1mm • Opto cách ly quang, chống nhiễu • Có đèn báo đóng ngắt Relay • Điện áp sử dụng: 5VDC • Đầu điện thê đóng ngắt tối đa: DC 30V / 10A, AC 250V / 10A Hình 2.5: Relay module 2.2.5.Màn hình LCD 16x2 - LCD 16x2 (Liquid Crystal Display) đượ c s d ụ ng r ấ t nhiề u ứ ng d ụ ng c ủ a Vi Đ i ều Khi ể n LCD có r ấ t nhi ều u đ i ể m so v i d ng hi ển th ị khác Nó có kh ả n ăng hi ể n th ị kí t ự đ a d ng, tr ự c quan (ch ữ , s ố kí t ự đồ h ọ a), d ễ dàng đư a vào mạ ch ứ ng d ụ ng theo nhi ều giao th ứ c giao ti ế p khác nhau, t ố n r ấ t tài nguyên h ệ th ố ng giá thành r ẻ V i u c ầ u củ a đề nhóm e c ầ n có hàng để hiể n th ị th ứ / ngày hàng để th ể hi ệ n gi ờ, v ậ y nhóm em đ ã ch ọ n hình LCD 16x2 Thơng s ố k ĩ thu ậ t: • Đ i ệ n áp ho t độ ng: 5V • Hi ể n th ị t ố i đ a 16 t ự dịng • Ch ữ đ en n ền xanh Ch ứ c n ă ng chân c ủ a LCD: + Chân 1: (Vss) Chân n ố i đấ t cho LCD, thiế t k ế m ch ta n ố i chân v i GND c ủ a m ch ề u ể n + Chân 2: VDD Là chân c ấ p ngu n cho LCD, thi ế t k ế m ch ta n ố i chân v i VCC = 5V c ủ a m ch đ i ề u khiể n + Chân 3: V0 chân đ i ề u ch ỉ nh độ tươ ng ph ả n c ủ a LCD + Chân 4: RS Là chân ch ọ n ghi (Register select) N ối chân RS v i logic “0” (GND) ho ặc logic “1” (VCC) để ch ọ n ghi: - Logic “0”: Bus DB0-DB7 s ẽ n ố i v ới ghi l ệ nh IR c ủ a LCD ( ch ế độ “ghi” - write) ho ặc nố i v i b ộ đế m đị a ch ỉ c ủ a LCD ( ch ế độ “đọ c” - read) - Logic “1”: Bus DB0-DB7 s ẽ n ố i v ới ghi d ữ li ệ u DR bên LCD + Chân 5: R/W chân ch ọ n ch ế độ đọ c/ghi (Read/Write) N ố i chân R/W v i logic “0” để LCD ho t độ ng ch ế độ ghi, ho ặ c n ố i v i logic “1” để LCD ch ế độ đọ c + Chân 6: E Là chân cho phép (Enable) Sau tín hi ệu đượ c đặ t lên bus DB0-DB7, lệ nh ch ỉ đượ c ch ấ p nh ậ n có xung cho phép c ủ a chân E - Ở ch ế độ ghi: Dữ liệ u bus s ẽ đượ c LCD chuy ển vào(ch ấ p nh ậ n) ghi bên phát hi ệ n m ộ t xung (high-to-low transition) c ủ a tín hi ệ u chân E - Ở ch ế độ đọ c: Dữ liệu s ẽ đượ c LCD xu ấ t DB0-DB7 phát hi ệ n c nh lên (low-to-high transition) chân E LCD gi ữ bus đế n chân E xu ố ng m ứ c th ấ p + Chân - 14: DB0 - DB7 - Tám đườ ng củ a bus d ữ li ệ u dùng để trao đổ i thông tin v i MPU Có ch ế độ s d ụ ng đườ ng bus này: - Ch ế độ bit: Dữ liệ u đượ c truy ền đườ ng, v i bit MSB bit DB7 - Ch ế độ bit: Dữ liệ u đượ c truy ền đườ ng từ DB4 t i DB7, bit MSB DB7 + Chân 15: Ngu n dươ ng cho đ èn n ền + Chân 16: GND cho đ èn n ề n Hình 2.6: LCD 16x2(Liquid Crystal Display) 2.2.6.Resistor Thơng số kỹ thuật: • Model: 4.7K - 1/4W • Nhiệt độ hoạt động: -55oC – 155oC • Linh kiện xuyên lỗ: 0.5m • Loại: Điện trở cố định • Sai số: +/-5% Điện trở 4.7K Ohm loạn điện trở thiết kim loại film cacbon, thân điện trở có vạch màu thể trị số điện trở theo quy ước chung giới Điện trở 4.7 Ohm 1/4W thuộc nhóm linh kiện điện tử thụ động đặc trưng cho cản trở dòng điện Dung sai nhỏ +/-5%.Điện trở cắm 1/4W có kích thước nhỏ chiều dài 6.5mm, rộng 2mm, chân cắm 0,5mm Nhiệt độ hoạt động từ 55oC đến 155oC dải điện áp rộng thích hợp với nhiều mạch điện tử Hình 2.7: Resistor 2.2.7.Nút nh ấ n nh ả - Nút nhấn nhả R13-507 16mm (xanh), nhấn xuống đóng mạch kín, thả tay trở trạng thái hở mạch Thích hợp làm mơ hình, đồ án , chế tạo, cơng nghiệp , … • Kích thước khoan lỗ lắp đặt : 16mm • Nút bền, độ nhạy, độ nảy tốt • Có sẵn đai ốc siết chặt Hình 2.8: Nút nh ấ n nh ả 2.2.8.Biến trở Volume - biến trở điện trở ba cực với tiếp điểm trượt xoay tạo thành chia điện áp chỉnh Nếu có hai đầu sử dụng, đầu cần gạt, hoạt động điện trở thay đổi biến trở (rheostat) Dụng cụ đo gọi chiết áp thực chất chia điện áp sử dụng để đo điện (điện áp); thành phần thực theo nguyên tắc tên cho Chiết áp thường sử dụng để điều khiển thiết bị điện điều khiển âm lượng thiết bị âm Khi dịch chuyển trượt vận hành chế xác định sử dụng làm đầu dị vị trí, ví dụ joystick Chiết áp sử dụng để điều khiển trực tiếp cơng suất đáng kể, cỡ watt, cơng suất tiêu tán chiết áp tương đương với công suất tải điều khiển 10 j++; } if(j>=10) { phutbaothuc3 ++; if(phutbaothuc3 >59) { phutbaothuc3 =0; } } else { j=0; } } // nut down if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { HAL_Delay(1); j++; } if(j>=10) { phutbaothuc3 ; if(phutbaothuc3 ==0) { phutbaothuc3 =59; } } else { j=0; } } // nut ok if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { HAL_Delay(1); j++; } if(j>=10) { 30 chapnhan++; } else { j=0; } } } ////// if (chapnhan ==8) { sprintf (datalcd , "sbaothuc3:%02d :", giaybaothuc3 ); lcd_puts (0,0,(int8_t*) datalcd); // nut up if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { HAL_Delay(1); j++; } if(j>=10) { giaybaothuc3 ++; if(giaybaothuc3 >59) { giaybaothuc3 =0; } } else { j=0; } } // nut down if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { HAL_Delay(1); j++; } if(j>=10) { phutbaothuc3 ; if(giaybaothuc3 ==0) 31 { giaybaothuc3 =59; } } else { j=0; } } // nut ok if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { HAL_Delay(1); j++; } if(j>=10) { chapnhan++; } else { j=0; } } } /////////cai gio va phut bao thuc 4///////////////////////////////////////////////////////////////// if (chapnhan ==9) { sprintf (datalcd , "hbaothuc4:%02d :", giobaothuc4 ); lcd_puts (0,0,(int8_t*) datalcd); // nut up if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { HAL_Delay(1); j++; } if(j>=10) { giobaothuc4 ++; if(giobaothuc4 >23) 32 { giobaothuc4 =0; } } else { j=0; } } // nut down if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { HAL_Delay(1); j++; } if(j>=10) { giobaothuc4 ; if(giobaothuc4 ==0) { giobaothuc4 =23; } } else { j=0; } } // nut ok if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { HAL_Delay(1); j++; } if(j>=10) { chapnhan++; } else { 33 j=0; } } } if (chapnhan ==10) { sprintf (datalcd , "pbaothuc4:%02d :", phutbaothuc4 ); lcd_puts (0,0,(int8_t*) datalcd); // nut up if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { HAL_Delay(1); j++; } if(j>=10) { phutbaothuc4 ++; if(phutbaothuc4 >59) { phutbaothuc4 =0; } } else { j=0; } } // nut down if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { HAL_Delay(1); j++; } if(j>=10) { phutbaothuc4 ; if(phutbaothuc4 ==0) { phutbaothuc4 =59; } 34 } else { j=0; } } // nut ok if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { HAL_Delay(1); j++; } if(j>=10) { chapnhan++; } else { j=0; } } } /// if (chapnhan ==11) { sprintf (datalcd , "sbaothuc4:%02d :", giaybaothuc4 ); lcd_puts (0,0,(int8_t*) datalcd); // nut up if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_13)==0) { HAL_Delay(1); j++; } if(j>=10) { giaybaothuc4 ++; if(giaybaothuc4 >59) { giaybaothuc4 =0; } 35 } else { j=0; } } // nut down if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_14)==0) { HAL_Delay(1); j++; } if(j>=10) { giaybaothuc4 ; if(giaybaothuc4 ==0) { giaybaothuc4 =59; } } else { j=0; } } // nut ok if (HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { while(HAL_GPIO_ReadPin( GPIOA,GPIO_PIN_10)==0) { HAL_Delay(1); j++; } if(j>=10) { chapnhan++; } else { j=0; } } } 36 //ket thuc if (chapnhan ==12) { counter =1; chapnhan =0; ////////////////////////////////////////////////////////////////// } } if (counter ==3) { counter =1; } /////////////////// } /* USER CODE END */ } void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) { if(hi2c ->Instance ==hi2c1 Instance) { giay = BCD2DEC (timedata [0]); phut = BCD2DEC (timedata [1]); gio = BCD2DEC (timedata [2]); thu = BCD2DEC (timedata [3]); = BCD2DEC (timedata [4]); thang = BCD2DEC (timedata [5]); nam = BCD2DEC (timedata [6]); } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Configure the main internal regulator output voltage */ HAL_RCC_PWR_CLK_ENABLE(); 37 HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLT AGE_SCALE1); /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLN = 168; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 4; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { Error_Handler(); } } /** * @brief I2C1 Initialization Function * @param None * @retval None */ static void MX_I2C1_Init(void) { /* USER CODE BEGIN I2C1_Init */ /* USER CODE END I2C1_Init */ 38 /* USER CODE BEGIN I2C1_Init */ /* USER CODE END I2C1_Init */ hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 400000; hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN I2C1_Init */ /* USER CODE END I2C1_Init */ } /** * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ HAL_RCC_GPIOE_CLK_ENABLE(); HAL_RCC_GPIOH_CLK_ENABLE(); HAL_RCC_GPIOB_CLK_ENABLE(); HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5 |GPIO_PIN_0|GPIO_PIN_1, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); /*Configure GPIO pins : PE2 PE3 PE4 PE5 PE0 PE1 */ 39 GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5 |GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pin : PB1 */ GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pins : PA9 PA10 PA13 PA14 */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_13|GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } /* USER CODE BEGIN */ /* USER CODE END */ /** * @brief This function is executed in case of error occurrence * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None 40 */ void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN */ /* User can add his own implementation to report the file name and line number, tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END */ } #endif /* USE_FULL_ASSERT */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 3.5.Thử nghiệm mơ hình Hình 3.3: Kết nối mơ phần cứng 41 3.6.Kết thử nghiệm Hình 3.4: Bảng kết thí nghiệm 42 CHƯƠNG 4: KẾT LUẬN 4.1.Kết đạt Hình 4.1: Kết đạt - Đã mô yêu cầu đề tài đặt ra: + Hiển thị thời gian thực hình LCD(1602) + Nhấn nút mode lần (màn hình chuyển sang chế độ set-up), nhấn nút mode lần (màn hình trở hình chính) + Nhấn nút ok để lưu lại số cài đặt chuyển sang vùng cài đặt tiếp theo, cài đặt xong (nhấn nút ok trở hình chính) + Nhấn nút up thông số cài đặt tăng lên sau lần nhấn + Nhấn nút down thông số cài đặt giảm xuống sau lần nhấn + Cài đặt khung thời gian khác ngày 4.2.Hạn chế - Do chuông điện bị hư nên nhóm em thay chng điện đèn led để xuất ngõ 4.3.Hướng phát triển - Cần phát triển thêm phần set-up giới hạn cài đặt số lần hẹn Cần phát triển hẹn thứ, ngày, tháng, năm 43 Tài liệu tham khảo https://khotrithucso.com/doc/p/thiet-ke-chuong-bao-tiet-hoc-303031 https://www.youtube.com/watch?v=CG6VR68L9H8&ab_channel=LEARN ING http://ddt.hitu.edu.vn/component/attachments/download/1778.html 44 ... hiển thị thời gian thực xác kết nối qua vi điều khiển để xuất tín hiệu lên LCD để hiển thị thời gian 2.4.2.Khối điều khiển Hình 2.10: Khối điều khiển - Khối điều khiển bao gồm nút nhấn, nút nhấn... DS1307) để xuất ngõ LCD, relay 2.4.4.Khối hiển thị - Hình 2.12: Khối hiển thị - Có nhiệm vụ nhận tín hiệu từ vi điều khiển để hiển thị LCD, biến trở có chức giúp điều chỉnh độ sáng hiển thị LCD. .. điện tử mạnh mẽ vi? ??c sử dụng vi điều khiển để thiết kế chế tạo thiết bị hỗ trợ báo không khó Các thiết bị báo giờ, cần tác động, thay đổi chút ta sử dụng chúng nhiều nơi khác mà đạt kết mong muốn

Ngày đăng: 08/02/2022, 13:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w