首页 » 智能 » 运用38译码器扩展单片机IO口_低电平_高电平

运用38译码器扩展单片机IO口_低电平_高电平

落叶飘零 2025-01-16 20:32:18 0

扫一扫用手机浏览

文章目录 [+]

38译码器事情事理剖析

通过74HC138D数据手册的真值表得出,掌握事理,如下图所示。
当E1、E2接低电平、E3接高电平时,可通过输入端(A2、A1、A0)实现输出端(Y0、Y1、Y2、Y3、Y4、Y5、Y6、Y7、Y8)的分别掌握。

A2、A1、A0均为低电平时,输出端Y0低电平,灯D1亮,其他灭。

运用38译码器扩展单片机IO口_低电平_高电平 运用38译码器扩展单片机IO口_低电平_高电平 智能

A2低、A1低、A0高电平时,输出端Y1低电平,灯D2亮,其他灭。

运用38译码器扩展单片机IO口_低电平_高电平 运用38译码器扩展单片机IO口_低电平_高电平 智能
(图片来自网络侵删)

A2低、A1高、A0低电平时,输出端Y2低电平,灯D3亮,其他灭。

A2低、A1高、A0高电平时,输出端Y3低电平,灯D4亮,其他灭。

A2高、A1低、A0低电平时,输出端Y4低电平,灯D5亮,其他灭。

A2高、A1低、A0高电平时,输出端Y5低电平,灯D6亮,其他灭。

A2高、A1高、A0低电平时,输出端Y6低电平,灯D7亮,其他灭。

A2高、A1高、A0高电平时,输出端Y7低电平,灯D8亮,其他灭。

测试代码剖析

这里以8个LED灯实现流水灯的代码进行演示,代码如下。
在主函数中调用led_74hc138()函数,即可实现流水灯程序。

void led_74hc138(void)

{

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_0, GPIO_PIN_SET);//使能38掌握器的掌握端

//实现D1亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);

//实现D2亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);

//实现D3亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);

//实现D4亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);

//实现D5亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

//实现D6亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

//实现D7亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

//实现D8亮

Delay(0xFFFFFF);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_3, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4, GPIO_PIN_SET);

HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

}

void Delay(__IO uint32_t nCount) //大略的延时函数

{

for (; nCount != 0; nCount--);

}

标签:

相关文章