51单片机之流水灯的实现


前言

        通过前面的学习,已经初步认识了单片机的内部结构和部分指令,接下来就得进行实操,通过编程对单片机的LED灯进行控制,从而实现流水灯的效果。


一、LED是什么?

        发光二极管(英语:Light-Emitting Diode,简称LED) 是一种能将电能转化为光能的半导体电子元件,是单片机等计算机控制系统最常用的输出设备。发光二极管有亮、灭两种状态,多用于信号或状态显示,发光二极管与单片机的硬件接口有两种连接方式,如图1所示。LED流水灯控制是单片机应用系统设计中最简单也是最经典的控制实例。

                                                                图 1 LED与单片机I/O口连接方式

        其中共阴极二极管的亮灭控制为:1(高电平)亮,0(接地)灭; 共阳极二极管的亮灭控制为:0(接地)亮,1(高电平)灭。本次实验实验使用的开发板为普中A3开发板,该开发板的LED灯为共阳极二极管,它的引脚分布图如图2所示:

                                                图 2   LED灯的引脚分布图

二、实验内容

        单片机集成了4个8位并行I/O接口,LED流水灯控制需要选择其中的1个I/O口连接8个LED灯(LED1~LED8通过程序控制将发光二极管LED1~LED8依次点亮、熄灭,单片机上电后8个LED灯便会显示出一亮一暗的流水状态,直到单片机断电。在此需要注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则就看不到“流水”效果,这里每个二极管点亮的时间是1秒钟。具体控制要求如图3所示的时序图。

                                                                图 3  LED流水灯控制时序图

三、实验分析

3.1 LED灯的点亮

        由于本次实验实验使用的开发板为普中A3开发板,该开发板的LED灯为共阳极二极管,0(接地)亮,1(高电平)灭。下面实现点亮一个LED灯,代码如下:

ORG 0000H
    AJMP MAIN
    ORG 0030H
MAIN:
MOV P2,#11111110B   ;共阳极LED灯,0亮,1灭,一共8个灯
END

        利用keil5仿真,结果如下: 

        而流水灯是一个接着一个点亮的,需要进行位移操作,这时需要借助累加器A,延迟1s,A内的数值进行位移,然后传值给P2口,点亮不同位置的一个LED灯。实现过程如下:

    MOV A,#0FEH
    MOV P2,A         ;先亮1个灯
LIGHT:
    ACLL DELAT       ;软件调用延迟1s
    RL A             ;左移A
    MOV P2,A
    SJMP LIGHT

DELAY:               ;延迟1s子程序

3.2 延迟程序的实现

        在12HZ晶振的情况下,1个机器周期为1微秒,实现1s延迟,需要250*200*10*2微秒,这里用到的多重循环,代码如下(示例):

    MOV R3,#10
RF:  MOV R4,#200
LF:  MOV R5,#250
   DJNZ R5,$
       DJNZ R4,LF
        DJNZ R3,RF

四、代码实现

        代码如下:

ORG 0000H
    AJMP MAIN
    ORG 0030H
	MAIN:
		MOV P2,#11111111B
		MOV A,#0FEH
		MOV P2,A        
	LIGHT:
		ACALL DELAY              
		MOV P2,A
		SJMP LIGHT

	DELAY: 
		RL A  
		MOV R3,#10
	RF:  MOV R4,#200
	LF:  MOV R5,#250
	   DJNZ R5,$
		   DJNZ R4,LF
			DJNZ R3,RF
			RET
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值