首页 > 编程知识 正文

c语言版跑马灯,c语言版跑马灯led闪烁

时间:2023-12-29 20:31:45 阅读:330600 作者:EFRM

本文目录一览:

51单片机设计跑马灯的程序用(c语言)编写

|P1口接8个发光二极管共阳

#include AT89X51.H

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m0;m--)

for(n=20;n0;n--)

for(s=248;s0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i8;i++)

{

a=tempi;

b=temp(8-i);

P1=a|b;

delay();

}

for(i=1;i8;i++)

{

a=tempi;

b=temp(8-i);

P1=a|b;

delay();

}

}

}

扩展资料:

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

参考资料来源:百度百科-51单片机

跑马灯用C语言写,功能:跑马灯的速度由慢到快,再由快到慢。

#define uchar unsigned char

#define uint unsigned int

#includereg52.h

sbit P00=P0^0;

sbit P01=P0^1;

sbit P02=P0^2;

sbit P03=P0^3;

sbit P04=P0^4;

sbit P05=P0^5;

bit ldelay=0;

uchar speed=10;

uchar i=255;

void main(void)

{

uchar code ledp[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

uchar ledi;

TH2=0x3C;

TL2=0xB0;

TR2=1;

ET2=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P0=ledp[ledi];

ledi++;

if(ledi==6)

{

ledi=0;

speed+=i;

if(speed==1)

{

i=1;

}

else if(speed==10)

{

i=255;

}

}

}

}

}

timer2() interrupt 5 using 1

{

static uchar t;

TF2=0;

TH2=0x3C;

TL2=0xB0;

t++;

if(t==speed)

{

t=0;

ldelay=1;

}

}

C语言设计跑马灯程序

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

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

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

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

void main(void)

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

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

{

P1=~temp;

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

temp=1;

}

}

void delay(uint t) //定义延时函数

{

register uint bt;

for(;t;t--)

for(bt=0;bt255;bt++);

}

跑马灯程序最基本的,c语言还未入门啊!!!

环形跑马灯的编程,用C语言实现

#include MSP430G2553.h

#include intrinsics.h

#define myMCLK 8000000

#define uint unsigned int

#define uchar unsigned char

unsigned long led_left =0;

unsigned long led_right =0;

unsigned long led;

unsigned char Ok();

void Dis_Led();

void Init_clk()

{

BCSCTL1 = CALBC1_8MHZ;

DCOCTL = CALDCO_8MHZ;

}

void main(void)

{

uchar i;

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

Init_clk();

while(1)

{

led_left = 0x80000000; //点亮第一个灯

led_right = 0x00000004; //点亮最后一个灯

Dis_Led();

__delay_cycles(4000000);//500MS延时

if( Ok() )

{

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

{

led_left =1;

Dis_Led();

__delay_cycles(4000000);//500MS延时

if( led_left==0 led_right==0)

;

led_right =1;

Dis_Led();

__delay_cycles(4000000);//500MS延时

if( led_left==0 led_right==0)

;

}

}

}

}

unsigned char Ok()

{

uchar i;

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

{

led_left =~0x00000003;// 总是把最后两位置0

led_right =~0x00000003;// 总是把最后两位置0

led_left =1;

led_left = led_left | 0x80000000;

Dis_Led();

__delay_cycles(4000000);//500MS延时

if(led_left led_right)

return 1;

led_right =1;

led_right = led_right | 0x00000004;

Dis_Led();

__delay_cycles(4000000);//500MS延时

if(led_left led_right)

return 1;

}

return 0;

}

void Dis_Led()

{

led = led_left | led_right;

;// 把led中的相应位送给 IO 口,显示

}

可以参考一下啊

用C语言编写简单跑马灯程序(4个灯的)

如下程序:

if(ledi==8)

{

ledi=0; //到了最后一个灯就换到第一个

//每跑一圈灯就根据预定设置的表格来决定下一圈的跑马速度

speed=speedcode[i];

i++;if(i==2)i=0; ?你的速度设置不仅仅就2个呀(10个预定义的速度)

}

有两种解决办法:

一个就是将预定的速度加2倍

speedcode[30]={3,3,3,1,1,1,5,5,5,12,12,12,、、、、、、}

二是增加一全局变量uchar z=0;在i++前加上如下,前后不改:

、、、、、if(++z==3){z=0;i++;}、、、、、、、、、、、

C语言编程实现跑马灯的四个不同的亮法

1:if里面的表达式应该是“==”,少了一个 “=” 编译器不一定会报错,但运行的时候一定进入不了;

2:最大的错误是那么多地方使用了变量“i “,但你却只定义了一个全局变量,试想当你的程序进入了一个for后,再执行了“delay(10);”,等退出了这个延时后,i 的值已经变成了120了,所以紧接着这个for语句也会被退出,因为已经不满足 i10 这个条件了。再多定义几个局部变量分开处理,不然是没办法搞定的。

3:你的P0=table2[]、P0=table2[]连下标都忘记写了。

4:for(0;i10;i++) 这句是错的,你忘记了给“i ”赋值了。

5:你的延时太短点了吧,如果你的晶振用得快的话,估计灯跑起来一就一闪而过,连什么亮法都看不清楚。

能看出来的大概有这些,你再试下看有没有别的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。