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

MÔN HỌC VI ĐIỀU KHIỂN Đề tài: THIẾT KẾ MÔ HÌNH ĐỒNG HỒ, HIỂN THỊ THÔNG TIN TRÊN LED MA TRẬN 8X8

36 97 2

Đ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 36
Dung lượng 1,23 MB

Nội dung

Đề 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 1

KHOA CƠ ĐIỆN ĐIỆN TỬ

-

BÁO CÁO MÔN HỌC VI ĐIỀU KHIỂN

Trang 2

MỤ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 3

CHƯƠ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 4

CHƯƠ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 5

2.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 7

Hì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 9

2.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 11

Hình 3 2 Khai báo ngõ ra và ngõ vào

Hình 3 3 Cài đặt tần số

Trang 12

3.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 13

Hì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 14

Hì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 15

3.5 Mạch thực tế

Hình 3 10 Mạch thực tế.

Trang 16

4.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 17

4.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 18

4.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 19

CHƯƠ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 20

TÀI LIỆU THAM KHẢO

Trang 21

PHỤ 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 22

int bcd2dec(unsigned char x)

const char *DAYS_OF_WEEK[7] = { "Sunday", "Monday", "Tuesday",

"Wednesday", "Thursday", "Friday", "Saturday" };

Trang 23

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);

char buffer[4];

sprintf(buffer, "%02d%02d", gio,phut);

Trang 24

if(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 28

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;

} }

giay = bcd2dec (timedata[0]);

phut = bcd2dec (timedata[1]);

gio = bcd2dec (timedata[2]);

} }

void button(void)

Trang 29

if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1)

{

while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==1) {

i=0;

} else

Trang 30

j=0;

} else

Trang 31

/** Initializes the RCC Oscillators according to the specified parameters

* in the RCC_OscInitTypeDef structure

Trang 32

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)

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 36

DANH 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

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w