2.2 简单的硬件电路 Led为什么用低电平点亮?

驱动Led、蜂鸣器的硬件电路

在这里插入图片描述

LED是高电平点亮还是低电平点亮

上边的方案 低电平点亮
下边的方案 高电平点亮

答:Gpio在推挽输出模式下(高低电平都有较强的驱动能力) 所以这里两种接法都ok
但在单片机中,推荐低电平点亮。因为单片机设计时按 低电平强驱动 高电平弱驱动的方式配置。
所以低电平有较强的驱动能力

在这里插入图片描述

(按键)输入的硬件电路

在这里插入图片描述

图片序号GPIO模式配置补充
1必须配置上拉输入模式内部开启上拉
2上拉输入或浮空输入模式外部接入上拉电阻
3必须配置为下拉输入模式
4下拉输入或浮空输入模式
推荐第一,二两种接法

讲解

到底什么是上拉电阻?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的问题。首先,我们需要使用VHDL编写一个分频器,将30MHz的时钟信号分频为1Hz的信号。可以使用一个计数器来实现这个分频器。计数器的值每秒钟增加30,000,000次,当计数器的值增加到30,000,000时,输出一个脉冲信号,这个脉冲信号的频率为1Hz。然后,我们需要将这个脉冲信号连接到另一个计数器,用来循环点亮32个LED灯。 下面是VHDL代码实现: ```vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity LED_Controller is Port ( clk : in STD_LOGIC; leds : out STD_LOGIC_VECTOR (31 downto 0)); end LED_Controller; architecture Behavioral of LED_Controller is signal clk_1Hz : STD_LOGIC := '0'; signal count1 : integer range 0 to 29999999 := 0; signal count2 : integer range 0 to 31 := 0; begin process (clk) begin if rising_edge(clk) then count1 <= count1 + 1; if count1 = 30000000 then count1 <= 0; clk_1Hz <= not clk_1Hz; end if; if count2 = 31 then count2 <= 0; else count2 <= count2 + 1; end if; end if; end process; leds <= (others => '1'); -- set all LEDs initially to off process (clk_1Hz) begin if rising_edge(clk_1Hz) then if count2 = 31 then leds <= (others => '0'); -- set all LEDs on else leds <= (others => '1'); -- set all LEDs off end if; end if; end process; end Behavioral; ``` 这个代码的思路是:使用一个计数器 `count1` 来分频时钟信号,当计数器的值增加到30,000,000时,输出一个脉冲信号 `clk_1Hz`。然后,使用另一个计数器 `count2` 来循环点亮32个LED灯。当 `count2` 的值小于32时,所有LED灯都被关闭,当 `count2` 的值等于32时,所有LED灯都被点亮。 最后,将这个代码下载到FPGA开发板上,并将32个LED灯连接到输出端口。经过编译和烧录后,开发板上的32个LED灯就会以1Hz的频率循环点亮。并且,LED灯为低电平点亮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值