0% found this document useful (0 votes)
4 views6 pages

Bao Cao 2

The document outlines programming tasks using the STM32F103 microcontroller to control LEDs. It includes code snippets for lighting up 8 LEDs sequentially, counting from 00 to 99 on two 7-segment displays, and counting from 000 to 999 on three 7-segment displays with customizable delay. The document provides header and source files for managing the LED display functionality.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views6 pages

Bao Cao 2

The document outlines programming tasks using the STM32F103 microcontroller to control LEDs. It includes code snippets for lighting up 8 LEDs sequentially, counting from 00 to 99 on two 7-segment displays, and counting from 000 to 999 on three 7-segment displays with customizable delay. The document provides header and source files for managing the LED display functionality.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Họ tên: Trần Mạnh Trung MSSV: 22146060

Phòng học: E1-306 Ngày báo cáo: 21/5/2025

Câu 1: Dùng vi điều khiển STM32F103 điều khiển 8 led đơn sáng dần rồi tắt dần từ phải sang trái.

GPIOA -> ODR = 0xFF; /*chon PA0 -> PA7 o muc cao */
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_3);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_4);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_6);
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_7);
HAL_Delay(200);
Câu 2: Dùng vi điều khiển STM32F103 kết nối với 2 led 7 đoạn anode chung và viết chương trình đếm từ 00
đến 99 với thời gian trễ tùy chọn.

Tạo tệp led7.h:


#ifndef LED7_H
#define LED7_H

#include "stm32f1xx_hal.h"

#define A_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET)


#define B_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET)
#define C_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET)
#define D_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET)
#define E_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET)
#define F_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET)
#define G_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET)
#define DP_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET)

#define A_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET)


#define B_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET)
#define C_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET)
#define D_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET)
#define E_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET)
#define F_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET)
#define G_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET)
#define DP_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET)

#define A1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET)


#define B1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET)
#define C1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET)
#define D1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET)
#define E1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET)
#define F1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET)
#define G1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET)
#define DP1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET)

#define A1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)


#define B1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET)
#define C1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET)
#define D1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET)
#define E1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET)
#define F1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET)
#define G1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET)
#define DP1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET)

void LED7_Number1(uint8_t num);


void LED7_Number2(uint8_t num);

#endif

Tạo tệp led7.c:

Code:
LED7_Number1(i1); /* 2 led hiển thị 00, hai biến l1 = 0 */
LED7_Number2(i2);
l1++;
if (l1 > 9) {
l1 = 0;
l2++;
}
if (l2 > 9) {
l2 = 0;
}
HAL_Delay(100);

Câu 3:Hãy viết chương trình thực hiện đếm từ 000 đến 999 hiển thị trên 3 led 7 đoạn, thời gian trễ tùy chọn, bắt
đầu cho đếm từ 95 và 995.
Tạo dữ liệu led7.h:
#ifndef LED7_H
#define LED7_H

#include "stm32f1xx_hal.h"

#define A_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET)


#define B_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET)
#define C_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET)
#define D_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET)
#define E_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET)
#define F_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET)
#define G_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET)
#define DP_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET)

#define A_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET)


#define B_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET)
#define C_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET)
#define D_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET)
#define E_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET)
#define F_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET)
#define G_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET)
#define DP_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET)

#define A1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET)


#define B1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET)
#define C1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET)
#define D1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET)
#define E1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET)
#define F1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET)
#define G1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET)
#define DP1_SET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET)
#define A1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)
#define B1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET)
#define C1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET)
#define D1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET)
#define E1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET)
#define F1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET)
#define G1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET)
#define DP1_RESET() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET)

#define A2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET)


#define B2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET)
#define C2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET)
#define D2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
#define E2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET)
#define F2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET)
#define G2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET)
#define DP2_SET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET)

#define A2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET)


#define B2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET)
#define C2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET)
#define D2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)
#define E2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET)
#define F2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET)
#define G2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET)
#define DP2_RESET() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET)

void LED7_Number1(uint8_t num);


void LED7_Number2(uint8_t num);
void LED7_Number3(uint8_t num);

#endif

Tạo dữ liệu led7.c:


#include "led7.h"

uint8_t LED7_HEX[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

void LED7_WriteByte1(uint8_t t_b);


void LED7_WriteByte2(uint8_t t_b);
void LED7_WriteByte3(uint8_t t_b);

void LED7_WriteByte1(uint8_t t_b)


{
if (((t_b >> 0) & 0x01) == 1) { A_SET(); } else { A_RESET(); }
if (((t_b >> 1) & 0x01) == 1) { B_SET(); } else { B_RESET(); }
if (((t_b >> 2) & 0x01) == 1) { C_SET(); } else { C_RESET(); }
if (((t_b >> 3) & 0x01) == 1) { D_SET(); } else { D_RESET(); }
if (((t_b >> 4) & 0x01) == 1) { E_SET(); } else { E_RESET(); }
if (((t_b >> 5) & 0x01) == 1) { F_SET(); } else { F_RESET(); }
if (((t_b >> 6) & 0x01) == 1) { G_SET(); } else { G_RESET(); }
if (((t_b >> 7) & 0x01) == 1) { DP_SET(); } else { DP_RESET(); }
}

void LED7_WriteByte2(uint8_t t_b)


{
if (((t_b >> 0) & 0x01) == 1) { A1_SET(); } else { A1_RESET(); }
if (((t_b >> 1) & 0x01) == 1) { B1_SET(); } else { B1_RESET(); }
if (((t_b >> 2) & 0x01) == 1) { C1_SET(); } else { C1_RESET(); }
if (((t_b >> 3) & 0x01) == 1) { D1_SET(); } else { D1_RESET(); }
if (((t_b >> 4) & 0x01) == 1) { E1_SET(); } else { E1_RESET(); }
if (((t_b >> 5) & 0x01) == 1) { F1_SET(); } else { F1_RESET(); }
if (((t_b >> 6) & 0x01) == 1) { G1_SET(); } else { G1_RESET(); }
if (((t_b >> 7) & 0x01) == 1) { DP1_SET(); } else { DP1_RESET(); }
}

void LED7_WriteByte3(uint8_t t_b)


{
if (((t_b >> 0) & 0x01) == 1) { A2_SET(); } else { A2_RESET(); }
if (((t_b >> 1) & 0x01) == 1) { B2_SET(); } else { B2_RESET(); }
if (((t_b >> 2) & 0x01) == 1) { C2_SET(); } else { C2_RESET(); }
if (((t_b >> 3) & 0x01) == 1) { D2_SET(); } else { D2_RESET(); }
if (((t_b >> 4) & 0x01) == 1) { E2_SET(); } else { E2_RESET(); }
if (((t_b >> 5) & 0x01) == 1) { F2_SET(); } else { F2_RESET(); }
if (((t_b >> 6) & 0x01) == 1) { G2_SET(); } else { G2_RESET(); }
if (((t_b >> 7) & 0x01) == 1) { DP2_SET(); } else { DP2_RESET(); }
}

void LED7_Number1(uint8_t num)


{
LED7_WriteByte1(LED7_HEX[num]);
}

void LED7_Number2(uint8_t num)


{
LED7_WriteByte2(LED7_HEX[num]);
}

void LED7_Number3(uint8_t num)


{
LED7_WriteByte3(LED7_HEX[num]);
}

Code:
LED7_Number1(i1); /* 2 led hi?n th? 00, hai bi?n l1 = 0 */
LED7_Number2(i2);
LED7_Number3(i3);
i1++;
if (i1 > 9) {
i1 = 0;
i2++;
}
if (i2 > 9) {
i2 = 0;
}
i3++;
if (i3 > 9) {
i3 = 0;
}
HAL_Delay(100);

You might also like