首页 理论教育用晶体管控制8位LED灯闪烁

用晶体管控制8位LED灯闪烁

【摘要】:参考任务2.1的设计,将两位LED控制扩展为8位LED的控制,结合8051系列对输入/输出端口的电流电压说明,提出解决问题的方案。图3-3 8位LED灯闪烁P0口状态1图3-4 P0口状态26.Proteus设计与仿真在Proteus环境下,进行硬件设计与软件仿真。图3-5 8位LED灯闪烁控制Proteus仿真图7.实物制作制作8位LED灯闪烁控制电路所需的元器件清单见表3-1。

1.任务要求

通过一个晶体管来控制8位LED的闪烁。参考任务2.1的设计,将两位LED控制扩展为8位LED的控制,结合8051系列对输入/输出端口的电流电压说明,提出解决问题的方案。

要求:8位LED灯亮一段时间,灭一段时间,如此循环。

2.任务目的

(1)通过8位LED灯的点亮和熄灭,来计算通过单片机输入/输出的总电流。

(2)认识晶体管在单片机技术中的作用。

(3)熟悉在Keil uVision中调试程序的方法。

(4)进一步熟悉Proteus的仿真应用。

3.任务分析

8位LED灯闪烁控制电路原理图如图3-1所示。在单片机最小系统的基础上,通过P0端口8位引脚(P0.0~P0.7)分别连接8位发光二极管(LED1~LED8)和8只电阻为100 Ω的限流电阻,单片机的P2.4端口驱动一个PNP型晶体管Q1,当P2.4端口输出低电平时,晶体管Q1导通,8个发光二极管的阳极与VCC相连接,这时P0端口任意一个I/O口如果输出低电平,都会点亮与其相连接的发光二极管。

图3-1 8位LED灯闪烁控制原理图

根据单片机芯片与LED连接的特性,当P0端口各位输出低电平,即P0=00000000B时,8位LED灯被点亮;当P0端口各位输出高电平,即P0=11111111B时,8位LED灯被熄灭。

要实现8位LED灯的闪烁效果,就要使8位LED灯亮一段时间,灭一段时间,即8位LED灯在亮、灭两个状态之间轮换,反复运行。8位LED灯闪烁控制流程图如图3-2所示。

图3-2 8位LED灯闪烁控制流程图

4.源程序设计

8位LED灯闪烁控制的源程序:

5.Keil uVision仿真实现(www.chuimin.cn)

在Keil uVision环境下编辑源程序并完成编译,在“Debug”模式下进行相应设置,然后进行如下操作:

(1)打开菜单“Peripherals”,在下拉菜单中选择“I/O-prots”,弹出其级联菜单,选择“Ports0”。

(2)在Keil中按下F5键或单击工具栏图标运行程序,观察弹出的“Paralle Port0”窗口P0的端口变化情况,如图3-3所示。

图3-3中,P0端口的状态“7”“Bits”“0”各对应位为“空”,表示各位值为0,左侧显示P0“0x00”,P0端口连接的LED灯亮;当P0端口的各位状态如图3-4所示时,P0端口各位状态为1,表示其连接的LED灯熄灭。

图3-3 8位LED灯闪烁P0口状态1

图3-4 P0口状态2

6.Proteus设计与仿真

在Proteus环境下,进行硬件设计与软件仿真。观察仿真环境下8位LED灯闪烁控制的效果,如图3-5所示。

图3-5 8位LED灯闪烁控制Proteus仿真图

7.实物制作

制作8位LED灯闪烁控制电路所需的元器件清单见表3-1。

表3-1 8位LED灯闪烁控制电路所需元器件清单

注:实验原理图上没有画出最小系统,可参考项目1和2的电路图

在万能板上制作单片机控制的8位LED闪烁的作品,这个作品作为单片机入门作品来制作,焊接好电路后通过下载软件把程序写入单片机芯片中,接通电源,观察8位LED灯的变化状态,也可以用相关实验箱观察。