Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA CƠ KHÍ CHẾ TẠO MÁY


BỘ MÔN CƠ ĐIỆN TỬ


BÁO CÁO ĐỀ TÀI

MÔN HỌC: Thực tập Vi Xử Lý


-LỚP MÔN HỌC: Thứ 2_Tiết 7-12
GIẢNG VIÊN: Huỳnh Phương Duy

SVTH:
1. Mao Đình Huân 21146463

TP. Hồ Chí Minh, tháng 11 năm 2023


I. KHẢO SÁT THIẾT BỊ
a. Vi xử lý: STM32 F103VCT6, STM32F207VCT6
b. Thiết bị: Led 7 đoạn (mắc IC74HC595), nút nhấn (mắc IC74HC165)
c. Giá trị I/O IC:
IC Giá trị chân I/O Chức năng
PB3 Clock output
PB5 Data output
74HC595
PE0 Latch
PE2 GND
PB4 Data input
74HC165
PE1 Clock input

II. CHƯƠNG TRÌNH


a. Mã Led 7 đoạn
unsigned char maled_cc[10] = {0xAF, 0xA0, 0x6E, 0xEA, 0xE1,
0xCB, 0xCF, 0xA2, 0xEF, 0xEB};
unsigned char led_position[5] = { 0x08, 0x10,0x20,0x40,0x80};
b. Quét led đếm 99999
/* Private typedef -----------------------------------------------------------*/
unsigned long count = 0;
char Data75HC165 = 0xFF;

/* Private function prototypes ----------------------------------------------*/


void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM1_Init(void);

/* Private user code ---------------------------------------------------------*/


void Latch_Led ()
{
HAL_GPIO_WritePin(Latch_GPIO_Port, Latch_Pin, 0);
HAL_GPIO_WritePin(Latch_GPIO_Port, Latch_Pin, 1);
HAL_Delay(1);
}

void Shift_Led_Code_Chucngan(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[d/10000]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}
void Shift_Led_Code_Ngan(unsigned long d)
{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[((d%10000)/1000)]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

void Shift_Led_Code_Tram(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[(((d%10000)%1000)/100)]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

/* Private user code ---------------------------------------------------------*/


/* USER CODE BEGIN 0 */
void Latch_Led ()
{
HAL_GPIO_WritePin(Latch_GPIO_Port, Latch_Pin, 0);
HAL_GPIO_WritePin(Latch_GPIO_Port, Latch_Pin, 1);
HAL_Delay(1);
}

void Shift_Led_Code_Chucngan(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[d/10000]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

void Shift_Led_Code_Ngan(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[((d%10000)/1000)]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

void Shift_Led_Code_Tram(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[(((d%10000)%1000)/100)]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

/* Private user code ---------------------------------------------------------*/


/* USER CODE BEGIN 0 */
void Latch_Led ()
{
HAL_GPIO_WritePin(Latch_GPIO_Port, Latch_Pin, 0);
HAL_GPIO_WritePin(Latch_GPIO_Port, Latch_Pin, 1);
HAL_Delay(1);
}

void Shift_Led_Code_Chucngan(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[d/10000]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

void Shift_Led_Code_Ngan(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[((d%10000)/1000)]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

void Shift_Led_Code_Tram(unsigned long d)


{
for (uint8_t i=0; i<8; i++)
{
HAL_GPIO_WritePin(Data_GPIO_Port, Data_Pin,
Led_Code[(((d%10000)%1000)/100)]&(1<<(7-i)) );
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);
HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

/* Initialize all configured peripherals */


MX_GPIO_Init();
MX_TIM1_Init();
HAL_TIM_Base_Start_IT(&htim1);

/* Infinite loop */
while (1)
{
HAL_GPIO_WritePin(E2_GPIO_Port,E2_Pin,0);
if (count<100000)
{
count++;
Count_99999_QuetLed();
}
else count = 0;
}

/* USER CODE END TIM1_Init 1 */


htim1.Instance = TIM1;
htim1.Init.Prescaler = 999;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 7999;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
htim1.Init.AutoReloadPreload =
TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
{
Error_Handler();
}
sClockSourceConfig.ClockSource =
TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig)
!= HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode =
TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim1,
&sMasterConfig) != HAL_OK)

c. Đọc input từ nút nhấn


/* Private typedef -----------------------------------------------------------*/
char Data75HC165 = 0xFF;
unsigned B1=0;
unsigned B2=0;
unsigned B3=0;
unsigned B4=0;
void Get_Data165()
{
HAL_GPIO_WritePin(SH165_GPIO_Port,SH165_Pin,1);
HAL_GPIO_WritePin(SH165_GPIO_Port,SH165_Pin,0);
HAL_GPIO_WritePin(SH165_GPIO_Port,SH165_Pin,1);

for (uint8_t i=0; i<8; i++)


{

if(HAL_GPIO_ReadPin(Input165_GPIO_Port,Input165_Pin) ==
0)
Data75HC165 &= ~(1<<(7-i));
else
Data75HC165 |= (1<<(7-i));

HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 0);


HAL_GPIO_WritePin(Clock_GPIO_Port, Clock_Pin, 1);
}
}

/* Infinite loop */--------------------------------------------


while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */


HAL_GPIO_WritePin(E2_GPIO_Port,E2_Pin,0);
Get_Data165();

if (((Data75HC165 & (1<<5)) == 0) && (B1 == 0))


{
Tram ++;
if (Tram > 9) {Tram = 0;}
B1 = 1;
}
else if (((Data75HC165 & (1<<5)) == 0) && (B1 == 1))
{
B1 = 0;
}

if (((Data75HC165 & (1<<6)) == 0)&& (B2 == 0))


{
Chuc ++;
if (Chuc > 9) {Chuc = 0;}
B2 = 1;
}
else if (((Data75HC165 & (1<<6)) == 0)&& (B2 == 1))
{
B2 = 0;
}

if (((Data75HC165 & (1<<7)) == 0)&& (B3 == 0))


{
Donvi ++;
if (Donvi > 9) {Donvi = 0;}
B3 = 1;
}
else if(((Data75HC165 & (1<<7)) == 0)&& (B3 == 1))
{
B3 = 0;
}

if (((Data75HC165 & (1<<0)) == 0)&& B4 == 0)


{
Set_ARR();
HAL_TIM_Base_Start_IT(&htim2);
B4 = 1;
}
else if (((Data75HC165 & (1<<0)) == 0)&& B4 == 1)
{
B4 = 0;
}
Count_99999_QuetLed();
}

You might also like