位移实现流水灯c语言,流水灯位移函数

本文目录一览:

单片机C语言流水灯移位指令

//没有编译过,大概思路就这样

#define P_LED P1; //定义到你自己的端口

void main(void)

{

unsigned char circledata=0x01,i=0;

while(1)

{

for(i=0;i4;i++) //显示范围 P_LED.0:P_LED3

{

P_LED=circledatai;

Delay_ms(1000);//根据自己的晶振写延时1S的函数

}

circledata=0xfe;

for(i=3;i=0;i–) //显示范围 P_LED.3:P_LED.0

{

P_LED=circledatai;

Delay_ms(1000);//根据自己的晶振写延时1S的函数

}

}

return;

}

怎么用c语言用循环位移法实现流水灯

单片机的内容吧。

单片机的一个Port是8位的。

方法1: 移位运算

while (1)

{

led = 0x01;

for (i = 0; i 8; i++)

{

port_2 = led; // 将数值赋值给单片机的Port.

led = led 1; // 左移一位.

}

}

方法2: 乘法运算

while (1)

{

led = 0x01;

for (i = 0; i 8; i++)

{

port_2 = led; // 将数值赋值给单片机的Port.

led = led * 2; // 乘2, 相当于左移1位.

}

}

为什么C语言位移可以实现发光二极管的流水灯?

每个位代表了一个二极管的引脚。根据单片机外围电路不同,逻辑高或低电平时,LED会点亮。假设逻辑高电平时LED点亮,如00000001,bit0-7控制led0-7,此时led0点亮,左移一位变为00000010,led0熄灭,led1点亮。

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。

2、#include “reg51.h”首先写出单片机的头函数。

3、#include “intrins.h”输入位移函数。

4、unsigned int count=0,led;定义函数。

5、输入主函数,定义单片机的端口,写入延时函数。

6、中断跳转,使流水灯运行起来。

用c语言编写流水灯。

C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!

(一)

#includereg51.h //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main()

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i8;i++) //8个流水灯逐个闪动

{

P2=~temp;

delay(500); //调用延时函数

temp=1;

}

temp=0x80;

for(i=0;i8;i++) //8个流水灯反向逐个闪动

{

P2=~temp;

delay(500); //调用延时函数

temp=1;

}

temp=0xFE;

for(i=0;i8;i++) //8个流水灯依次全部点亮

{

P2=temp;

delay(500); //调用延时函数

temp=1;

}

temp=0x7F;

for(i=0;i8;i++) //8个流水灯依次反向全部点亮

{

P2=temp;

delay(500); //调用延时函数

temp=1;

}

}

}

void delay(uint a) //延时函数,毫秒级别

{

uint i;

while(–a!=0) //执行空操作循环,其中a为形参,由调用该函数的函数语句提供值

{

for(i=0;i125;i++);//执行当0加到125时,大约会用掉1ms的时间

}

}

(二)

*****************************以下程序均采用12M晶振*****************************************************/

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

sbit p2=P2^0;

void main()

{

TMOD=0x01;

TR0=1;

ET0=1;

EA=1;

while(1)

{

;

}

}

timer0() interrupt 1

{

TH0=0x00;

TL0=0x06;

p2=!p2;

}

(三)

定时流水灯//

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)leda=0;

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==10)

{

t=0;

ldelay=1;

}

}

(四)

变速流水灯//

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speed=100;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)

{

leda=0;

speed-=10;

if(speed==0)speed=100;

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==speed)

{

t=0;

ldelay=1;

}

}

(五)

//每2两圈改变一次亮度

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speeda=30;

uint k=0;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

uchar speed[10]={5,80,70,60,50,40,30,20,10,5};

uint i;

uint k;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)

{

leda=0;

k++;

if(k==2){

k=0;

speeda=speed[i];

i++;

if(i==9)i=0;

}

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==speeda)

{

t=0;

ldelay=1;

}

}

(六)

//在上面基础上调灯的亮度(调占空比)

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speeda=30;

uint k=0;

uchar scale;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

uchar speed[10]={5,80,70,60,50,40,30,20,10,5};

uint i;

uint k;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay==1)

{

ldelay=0;

P2=led[leda];

leda++;

scale++;

if(scale==10)scale=0;

if(leda==9)

{

leda=0;

k++;

if(k==2){

k=0;

speeda=speed[i];

i++;

if(i==9)i=0;

}

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TH0=0x1c;

TL0=0xbf;

TF0=0;

t++;

if(t==speeda)

{

t=0;

ldelay=1;

}

if(scale==10)P2=0;

if(scale==0)P2=1;

}

原创文章,作者:OXFGB,如若转载,请注明出处:https://www.506064.com/n/330175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OXFGBOXFGB
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29
  • Python实现计算阶乘的函数

    本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。 一、什么是阶乘 阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = …

    编程 2025-04-29

发表回复

登录后才能评论