Đề tài gắn liền với đời sống thực tế nên trang thiết bị cho phần chuẩn bị dễ dàng tìm kiếm cũng như phần kiến thức thiếu sót để hoàn thành sản phẩm và trên hết kiến thức về STM32F4 đang
Trang 1KHOA CƠ ĐIỆN ĐIỆN TỬ
-
BÁO CÁO MÔN HỌC VI ĐIỀU KHIỂN
Trang 2MỤC LỤC
CHƯƠNG 1 MỞ ĐẦU 2
1.1 Lý do chọn đề tài 2
1.2 Mục tiêu nghiên cứu 2
1.3 Phạm vi nghiên cứu 2
1.4 Kết quả đạt được 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1 Sơ đồ khối hệ thống 3
2.2 Nguyên lý hoạt động 3
2.3 Nguyên nhân chọn thiết bị 4
2.4 STM32F407 Discovery 4
2.5 Real Time Clock RTC DS1307 5
2.5.1 Giới thiệu 5
2.5.2 Timekeeper Registers 6
2.6 Led Ma Trận 8x8 + MAX7219 6
2.6.1 Giới thiệu 6
2.6.2 Thông số kỹ thuật 7
2.7 Nút nhấn 7
2.7.1 Giới thiệu 7
2.7.2 Thông số kĩ thuật 7
2.8 Phần mềm hỗ trợ lập trình 8
2.8.1 STM32 CubeMX 8
2.8.2 Keil C 8
CHƯƠNG 3 THIẾT KẾ 9
3.1 Thống kê I/O 9
3.2 Cấu hình CubeMX 9
3.3 Sơ đồ giải thuật 11
3.4 Viết code cho hệ thống 11
3.5 Mạch thực tế 14
CHƯƠNG 4 KẾT QUẢ 15
4.1 Kết quả của thuật toán 15
4.2 Hình ảnh sản phẩm 15
4.3 Chức năng của mô hình 16
4.3.1 Hiển thị giờ, phút lên màn hình 16
4.3.2 Hiển thị ngày, tháng, năm lên màn hình 16
4.3.3 Cài đặt thời gian khi thời gian bị sai 17
4.4 Hạn chế 17
CHƯƠNG 5 KẾT LUẬN 18
TÀI LIỆU THAM KHẢO
PHỤ LỤC Chương trình minh hoạ
DANH MỤC HÌNH ẢNH
Trang 3CHƯƠNG 1 MỞ ĐẦU
1.1 Lý do chọn đề tài
Ngày nay, với sự phát triển không ngừng của khoa học kỹ thuật, đặc biệt là thành công của của cuộc cách mạng kĩ thuật 4.0 làm cho thế giới chúng ta ngày càng thay đổi, cuộc sống trở nên văn minh, hiện đại hơn
Cùng với sự phát triển đó thì việc vận dụng các vi điều khiển để hỗ trợ và phục vụ cho các nhu cầu về đời sống hằng là điều tất yếu Thế nên nhóm tôi thống nhất chọn đề tài " Thi công mô hình đồng led ma trận " với board STM32F4 với mục tiêu thi công sản phẩm kỹ thuật số có độ chính xác cao và thêm một số tích hợp thông tin được lập trình sẵn trên sản phẩm Đề tài gắn liền với đời sống thực tế nên trang thiết bị cho phần chuẩn bị dễ dàng tìm kiếm cũng như phần kiến thức thiếu sót
để hoàn thành sản phẩm và trên hết kiến thức về STM32F4 đang được học tại
trường lớp, đây là cơ hội cải thiện kỹ năng và bù đắp thiếu sót trong quá trình học tập về board mạch này
1.2 Mục tiêu nghiên cứu
- Thi công mô hình đồng hồ thay thế thế hệ cũ với độ chính xác cao
- Mô hình hiển thị tích hợp thêm ngày tháng năm
- Mô hình được thu gọn đáng kể
- Hiển thị được thời gian trên led 8x8
- Điều chỉnh được thời gian theo ý muốn
Trang 4CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Sơ đồ khối hệ thống
Hình 2 1 Sơ đồ khối hệ thống
2.2 Nguyên lý hoạt động
Nguyên lý hoạt động của sơ đồ tổng thể : Khi cho điện áp qua khối nguồn cho
vi điều khiển, khi đó chương trình trong vi điều khiển sẽ làm việc, đồng thời bộ tạo xung dao động tạo xung nhịp với tần số 12MHz cho VĐK hoạt động Chế độ ghi và nhận dữ liệu của IC thời gian thực đưa tới vi điều khiển, các điều kiện START và STOP được nhận dạng khi bắt đầu hoặc kết thúc truyền một chuỗi, lúc này các thanh ghi của IC thời gian thực nhận giá trị thời gian thực (giờ, phút, giây, thứ, ngày, tháng, năm) và gửi đến vi điều khiển đồng thời lúc này vi điều khiển sẽ gán một giá trị tương đương giá trị thời gian thực rồi gửi ra khối hiển thị Lúc này
IC ghi dịch trong khối điều khiển sẽ gửi tín hiệu đến khối hiển thị Các nút ấn
Khối điều khiển trung tâm
Điều khiển Khối hiển thị Khối nguồn
Reset
Tạo thời gian thực
Trang 52.3 Nguyên nhân chọn thiết bị
- STM32F4 là phần cứng đang trong quá trình học, chọn thiết bị đang học là lựa chọn đúng đắn vừa giúp nhóm bổ xung kiến thức thực tế mới vừa đảm bảo kiến thức cũ được học và được thực hành trực tiếp trên thiết bị này
- DS1307 là thiết bị hiển thị thời gian thực có mức chính xác gần như tuyệt đối, việc lập trình cùng với vận hành tương đối dễ với sinh viên, đây là thiết bị được dùng đến nhiều nhất khi thi công mô hình đồng hồ
- Led 8*8 tương tự LCD nhưng nhóm quyết định chọn thiết bị này vì thiết bị có sẵn thư viện để trực tiếp thi công, trong quá trình học nhóm được tiếp xúc với nhiều thiết bị tương tự nên vận hành khá dễ dàng và tương đối nhanh, tiết kiệm nhiều thời gian để hoàn thành báo cáo
2.4 STM32F407 Discovery
Hình 2 2 STM32F407 Discovery
Board STM32F407 Discovery được phát triển dựa trên vi điều khiển họ ST,
STM32F407VGT6, core là ARM Cortex M4 32 bit
Trên board được tích hợp các chức năng sau:
Trang 6- USB OTG micro-AB connector
Thông số kỹ thuật cơ bản board STM32F4 DISCOVERY:
- 1 MB of Flash memory, 192KB of RAM in an LQFP100 package
- Board power supply: through USB bus or from an external 5V supply voltage
- External application power supply : 3V and 5V
- I/O: PORTA→ PORTE, 16 Pin/PORT + PH0 và PH1
- MP45DT02, ST MEMS audio sensor, omnidirectional digital microphone
- CS43L22, audio DAC with integrated class D speaker driver
2.5 Real Time Clock RTC DS1307
2.5.1 Giới thiệu
- Đồng hồ thời gian thực (RTC) được sử dụng để theo dõi ngày và giờ hiện tại
- Nó thường được sử dụng trong máy tính, máy tính xách tay, điện thoại di động, thiết bị ứng dụng hệ thống nhúng, …
- Trong nhiều hệ thống nhúng, chúng ta cần đặt dấu thời gian trong khi ghi dữ liệu, tức giá trị cảm biến, toạ độ GPS,… Để lấy dấu thời gian, chúng ta cần sử dụng RTC (đồng hồ thời gian thực)
- Một số vi điều khiển như LPC2148,;ƠC1768,… có RTC trên chip Nhưng trong các vi điều khiển khác như PIC, ATMega 16/32, chúng không có RTC trong chip Vì vậy, chúng ta nên sử dụng chip RTC bên ngoài
Hình 2 3 DS1307 (RTC)
Trang 7Hình 2 4 Sơ đồ chân của DS1307
2.5.2 Timekeeper Registers
- Định dạng theo kiểu BCD (Binary Coded Decimal value)
- Có tổng cộng 8 thanh ghi để đọc thời gian, tháng, năm và điều khiển
- Sau khi đặt giá trị của các thanh ghi này, chúng sẽ tự cập nhật và ta có thể đọc các thanh ghi này để nhận các giá trị cập nhật
- Mạch hiển thị 4 led ma trận có ngõ vào tín hiệu nối tiếp, ghi dịch chuyển tín
Trang 8- Nếu bạn đã biết đến cái công tắc đóng / mở thì nút nhấn cũng hoạt động tương
tự như vậy Thay vì chỉ có 2 chân như công tắc, nút nhấn có 4 chân chia làm 2 cặp Những chân trong cùng một cặp được nối với nhau, những chân khác cặp thì ngược lại Khi bạn nhấn nút, cả 4 chân của nút nhấn đều được nối với nhau, cho phép dòng điện từ một chân bất kì có thể tới 3 chân còn lại
2.7.2 Thông số kĩ thuật
- Số chân: 2 chân
- Màu sắc: Đen
- Kích thước: 6x6x4.3mm
Trang 92.8 Phần mềm hỗ trợ lập trình
2.8.1 STM32 CubeMX
STM32CubeMX là một công cụ hỗ trợ cấu hình và tạo code cho MCU STM32 Tất
cả các công việc cấu hình, nâng cấp đều được thực hiện qua giao diện đồ họa Việc này giúp cho việc lập trình trên STM32 dễ dàng hơn, rút ngắn được thời gian nghiên cứu và phát triển
Hình 2 8 Phần mềm CubeMX
2.8.2 Keil C
Hiện nay có khá nhiều trình biên dịch ngôn ngữ C cho 8051 như Mikro C,
IAR,SDCC, Reads 51…µVision là môi trường phát triển tích hợp (IDE: Integrated Development Environment, trình soạn thảo ngôn ngữ C, trình biên dịch và debug) của công ty Keil Software, và thường được gọi là Keil C
Hình 2 9 Phần mềm KeilC V5
Trang 11Hình 3 2 Khai báo ngõ ra và ngõ vào
Hình 3 3 Cài đặt tần số
Trang 123.3 Sơ đồ giải thuật
Hình 3 4 Sơ đồ giải thuật hệ thống
3.4 Viết code cho hệ thống
Hình 3 5 Hàm chống rung nút nhấn
Trang 13Hình 3 6 Hàm hiển thị thời gian cài đặt
Hình 3 7 Hàm cài đặt giờ
Trang 14Hình 3 8 Hàm cài đặt phút
Hình 3 9 Hàm hiển thị thời gian và cấu hình đồng hồ
Trang 153.5 Mạch thực tế
Hình 3 10 Mạch thực tế.
Trang 164.1 Kết quả của thuật toán
Hình 4 1 Kết quả của thuật toán
4.2 Hình ảnh sản phẩm
Hình 4 2 Hình ảnh sản phẩm chạy thử
Trang 174.3 Chức năng của mô hình
4.3.1 Hiển thị giờ, phút lên màn hình
Hình 4 3 Hiển thị thời gian giờ, phút lên màn hình
4.3.2 Hiển thị ngày, tháng, năm lên màn hình
Hình 4 4 Hiển thị thời gian ngày,tháng,năm lên màn hình
Trang 184.3.3 Cài đặt thời gian khi thời gian bị sai
Hình 4 5 Cài đặt giờ,phút
4.4 Hạn chế
Chưa có hàm cài đặt ngày,tháng, năm
Trang 19CHƯƠNG 5 KẾT LUẬN
Đề tài " Thi công mô hình đồng hồ " là kết quả của quá trình tổng hợp kiến thức về bộ
xử lý điều khiển STM32F được học tại lớp Ngoài ra, trong quá trình hoàn thành mô hình giúp thành viên trong nhóm hoàn thiện nhiều kĩ thuật và thu hoạch được nhiều
kỹ năng và kiến thức bên ngoài hơn Rõ ràng nhất cho thấy :
Về phần cứng : hoàn thiện kỹ năng quan sát và đấu nối các thiết bị
Về phần mềm : hoàn thiện thiếu sót trong quá trình tạo code , hiểu thêm về STM32F hoạt động như thế nào và biết thêm chức năng mới
Về phần kĩ năng : hoàn thiện kỹ năng viết báo cáo, thuyết trình và cách thức hoàn thành bài báo cáo hiệu quả, nâng cao kỹ năng hoạt động nhóm
Đề tài vẫn là một mô hình đơn giản với chức năng hiển thị số liệu thời gian, có thể cảm tiến theo hình thức đồng hồ báo thức vẫn thấy với việc lắp thêm chuông báo và nút nhấn thiết lập điều khiển Ngoài ra trong công nghiệp thì mô hình trên làm một bộ phận cần thiết cho máy móc lớn với chức năng giám sát vô cùng hữu ích
Trang 20TÀI LIỆU THAM KHẢO
Trang 21PHỤ LỤC Chương trình minh hoạ
uint8_t i=0,dem=0,j=0, dem1=0;
uint8_t giay, phut, gio;
uint8_t timedata[7], sendData[7];
Trang 22int bcd2dec(unsigned char x)
const char *DAYS_OF_WEEK[7] = { "Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday" };
Trang 23if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1) break; if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==1) break;
HAL_I2C_Mem_Read_IT(&hi2c1, 0x68<<1,0,I2C_MEMADD_SIZE_8BIT, (uint8_t *) timedata ,7);
char buffer[4];
sprintf(buffer, "%02d%02d", gio,phut);
Trang 24if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1) break;
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==1) break;
} case 2:
max_clear();
while(1)
{
uint8_t date = DS1307_GetDate();
uint8_t month = DS1307_GetMonth();
uint16_t year = DS1307_GetYear();
uint8_t dow = DS1307_GetDayOfWeek();
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1) break;
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==1) break;
HAL_I2C_Mem_Read_IT(&hi2c1, 0x68<<1,0,I2C_MEMADD_SIZE_8BIT, (uint8_t *) timedata ,7);
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==1) break;
} break;
}
Trang 25{
//setup hour case 1:
max_clear();
while(1) {
hour =0;
} break;
} //button down hour
else if (HAL_GPIO_ReadPin( GPIOB,GPIO_PIN_2)==1)
{
while(HAL_GPIO_ReadPin(
GPIOB,GPIO_PIN_2)==1);
Trang 26} else
{
hour=23;
} break;
} break;
} break;
//setup minute case 2:
minute++;
if (minute>59) minute =0;
break;
} //button down minute
Trang 27} sendData[0]=DEC2BCD (giay);
sendData[1]=DEC2BCD (minute);
sendData[2]=DEC2BCD (hour);
HAL_I2C_Mem_Write_IT(&hi2c1, 0x68<<1, 0, I2C_MEMADD_SIZE_8BIT ,sendData, 3);
break;
case 3:
while(1)
{ max_clear();
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1) break;
Trang 28HAL_I2C_Mem_Read_IT(&hi2c1, 0x68<<1,0,I2C_MEMADD_SIZE_8BIT, (uint8_t *) timedata ,7);
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==1) break;
} }
giay = bcd2dec (timedata[0]);
phut = bcd2dec (timedata[1]);
gio = bcd2dec (timedata[2]);
} }
void button(void)
Trang 29if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1)
{
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1) {
i=0;
} else
Trang 30j=0;
} else
Trang 31/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure
Trang 32RCC_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)
Trang 33/*Configure GPIO pins : PB2 PB0 PB1 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
Trang 34/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */ disable_irq();
while (1)
Trang 35* @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
*/
void assert_failed(uint8_t *file, uint32_t line)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
Trang 36DANH MỤC HÌNH ẢNH
Hình 2 1 Sơ đồ khối hệ thống………3
Hình 2 2 STM32F407 Discovery ………4
Hình 2 3 DS1307 (RTC) ……….5
Hình 2 4 Sơ đồ chân của DS1307 ………6
Hình 2 5 Timekeeper Register ……….6
Hình 2 6 4 LED ma trận 8x8 + MAX7219 ……… 7
Hình 2.7 Nút nhấn 2 chân………7
Hình 2 8 Phần mềm CubeMX ……….8
Hình 2 9 Phần mềm KeilC V5 ……… 8
Hình 3 1 Khai báo I2C ……… 9
Hình 3 2 Khai báo ngõ ra và ngõ vào ………10
Hình 3 3 Cài đặt tần số ……… 10
Hình 3 4 Sơ đồ giải thuật hệ thống ………11
Hình 3 5 Hàm chống rung nút nhấn ……… 11
Hình 3 6 Hàm hiển thị thời gian cài đặt ………12
Hình 3 7 Hàm cài đặt giờ ……… 12
Hình 3 8 Hàm cài đặt phút ………13
Hình 3 9 Hàm hiển thị thời gian và cấu hình đồng hồ ……… 13
Hình 3 10 Mạch thực tế ……….14
Hình 4 1 Kết quả của thuật toán ………15
Hình 4 2 Hình ảnh sản phẩm chạy thử ……….15
Hình 4 3 Hiển thị thời gian giờ, phút lên màn hình ……….16
Hình 4 4 Hiển thị thời gian ngày,tháng,năm lên màn hình ……… 16
Hình 4 5 Cài đặt giờ,phút ……….16