单片机亮灯程序怎么让8盏灯亮10次然后不亮?

单片机亮灯程序怎么让8盏灯亮10次然后不亮?,第1张

用51单片机来简单说明一下:

用8只LED代表8盏灯(D1~D8),限流电阻用一个9脚排阻RP1,原理图如下:

为了视觉观察观察方便,用一个500ms,也就是0.5秒的延时程序来间隔灯的亮灭变化。当然这个时间是可以自由修改的,修改成1秒的话也可以,只是LED亮灭变化快慢不同而已。

下面是延时程序:

void delay500ms(void) //@12.000MHz

{

unsigned char i, j, k

_nop_()

_nop_()

i = 23

j = 205

k = 120

do

{

do

{

while (--k)

} while (--j)

} while (--i)

}

//----------------------------

前面原理图采用P1端口驱动LED,定义LED端口为P1:

#define   IO_LED   P1

//---------------------------

当端口为0时灯亮,为1时熄灭,为了理解方便,用宏定义来定义LED亮灭,增加可读性,也便于理解,如下:

#define DATA_LED_OFF 0xff

#define DATA_LED_ON 0x00

(程序中写“DATA_LED_OFF”,在编译时编译器会自动编译“0xff”。)

//----------------------------

用for循环语句实现LED点亮和熄灭10次:

for(i = 0i <10i++)

{

IO_LED = DATA_LED_ON //点亮LED

delay500ms()

IO_LED = DATA_LED_OFF //熄灭LED

delay500ms()

}

//----------------------------------

完整的c源程序如下图:

以上仅供参考。

用MCS51单片机汇编语言编写的点亮一只LED灯源程序LED1.ASM,代码如下:

ORG 0000H

AJMPMAIN

ORG 0030H

MAIN:MOV A,#FEH

MOV P1,A

AJMP $

END

keil使用教程编写第一个led灯程序

1、新建一个空文件

2、打开keil-->newuVisionproject

3、选择目录,命名文件

4、选择芯片

5、添加文件

6、编写C51单片机程序

7、生成可以加载单片机里的hex文件

8、编译生成hex文件

9、将hex文件导入单片机


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11827833.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存