本文目录一览:
- 1、51单片机设计跑马灯的程序用(c语言)编写
- 2、跑马灯用C语言写,功能:跑马灯的速度由慢到快,再由快到慢。
- 3、C语言设计跑马灯程序
- 4、环形跑马灯的编程,用C语言实现
- 5、用C语言编写简单跑马灯程序(4个灯的)
- 6、C语言编程实现跑马灯的四个不同的亮法
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:你的延时太短点了吧,如果你的晶振用得快的话,估计灯跑起来一就一闪而过,连什么亮法都看不清楚。
能看出来的大概有这些,你再试下看有没有别的