单片机C语言如何实现8个LED流水灯来回流动?

单片机C语言如何实现8个LED流水灯来回流动?,第1张

1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。

2、具体实现方法可以参考如下程序:

拓展资料

1、单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

2、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

3、单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

参考资料:百度百科:单片机

/*-----------------------------------------------

名称:流水灯

内容:循环点亮P1口对应的8个LED灯,造成循环流水点亮的效果

------------------------------------------------*/

#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

/*------------------------------------------------

延时子程序

------------------------------------------------*/

void delay(unsigned int cnt)

{

while(--cnt)

}

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{

P1=0xfe //给初始化值 换算成二进制是1111 1110

while(1)

{

delay(30000)//延时程序

P1<<=1 //左移一位 该语句等效于 P1=P1<<1

P1|=0x01 //最后一位补1,该语句等效于 P1=P1|0x01 符号"|"表示"或"

if(P1==0x7f) //检测是否移到最左端?"=="表示检测符号2端的值是否相等

{

delay(30000)

P1=0xfe//重新赋值

}

}

}

可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。

具体实现方法可以参考如下程序:<pre t="code" l="cpp">#include <reg51.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

void delay(uint a)

void main()

{

P1=0xfe

while(1)

{

// 向左循环点亮LED

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

{

P1=_crol_(P1,1) // 左移一位,点亮下一位LED

delay(55)

}

// 向右循环点亮LED

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

{

P1=_cror_(P1,1)// 右移一位,,点亮上一位LED

delay(55)

}

}

}

// 延时函数,延时a毫秒

void delay(uint a)

{

uint x,y

for(x=ax>0x--)

for(y=110y>0y--)

}


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

原文地址: http://outofmemory.cn/yw/12136511.html

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

发表评论

登录后才能评论

评论列表(0条)

保存