导航:首页 > 操作系统 > 单片机数组完成跑马灯闪烁

单片机数组完成跑马灯闪烁

发布时间:2022-10-07 14:17:10

A. 单片机跑马灯

看看我写的,P0到P7接8个LED.
org ooooh
ajmp main
main:mov r7,#8
main:mov r0,#8 ;一个循环需要移动8位
mov p1,#01111111b ;初始为P0.7灯点亮
loop: clr p2.3
acall ds1ms ;延时,以便人眼可以观察到
setb p2.3
acall ds1ms
mov a,p1 ;读P0口当前显示的数据送到A
rr a ;将A中的数据循环右移1位
mov p1,a ;再将A中右移过的数据送到P0
djnz r0,loop
djnz r7,main ;移动不够8位,跳到LOOP处循环,
ljmp rel ;流动1遍跳转到MAIN处循环流。

;---显示延时----------
ds1ms: mov r1,#1
ds1lo: mov r2,#200
ds2lo: mov r3,#200
djnz r3,$
djnz r2,ds2lo
djnz r1,ds1lo
ret ;延时返回
rel:end
C语言的:
//8个发光二极管循环点亮
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit beep=P2^3;
uchar i,j,m,n,k;
void delay(uchar k)
{for(m=k;m>0;m--)
for(n=125;n>0;n--);
}
void main(void)
{i=0xfe;
while(1)
{//beep=0;
delay(100);
//beep=1;
delay(100);
j=_crol_(i,1);
i=j;
P1=j;
}
}

B. 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;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

(2)单片机数组完成跑马灯闪烁扩展阅读:

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

C. 单片机,跑马灯,交替闪烁,C语言代码

#include<reg51.h>
void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char i,led;
led=0xfe;
while(1)
{
P0=led;

delay(500);

P0=0xff;

delay(500);

led=(led<<1)|0x01;

if(led==0xff)led=0xfe;

}

}

D. 怎么用单片机按键控制循环跑马灯

我刚好写过一个这样的程序,参考一下吧,希望对你有帮助
/*硬件电路连接:流水灯接在P0口, 阳极接高电平,
阴极接P0口,4个按键分别接P3.4,P3.5, P3.6,P3.7 ,按下时是低电平 */
#include <regx51.h>
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
int a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//左流水灯数组
int b[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//右流水灯数组
int c[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; //逐盏点亮,逐盏灭掉数组
//************************************************************************************************************
void delay() //延时子程序
{int i;
for(i=0;i<30000;i++);
}

//**********************************************************************************************************
void aa() //实现要求(1)的子程序(key1按下时流水灯,弹开时全灭)
{ int i=0;
while(!key1) //判断是否有键按下
{P0=a[i];delay();i++;if(i==8)i=0;}//流水灯

}

//*************************************************************************************************************
void bb() // 实现要求(2)的子程序(key2按下时实现计数功能,弹开时停止计数;)
{
while(!key2){P0--;delay();if(P0==0)P0=0xff;} //判断是否有键按下,按下则计数器加1

}

//*************************************************************************************************************
void cc() // 实现要求(3)的子程序(key3按下时实现逐盏点亮,逐盏灭掉)
{ int i=0;

P0=0xff ;// 发光二极管全灭
while(!key3) //判断是否有键按下
{P0=c[i];delay();i++;if(i==16)i=0;}//逐盏点亮,逐盏灭掉
}

//*************************************************************************************************************
void dd() // 实现要求(4)的子程序(key4按第一次按下,左流水,第二次按下,右流水,第三次按下,熄灭)
{ int i=0,j=0,k=0,h=0;
loop:P0=0xff;
if(key4==0) //第一次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
while(1){P0=a[j];delay();j++;if(j==8)j=0; //左流水灯
if(key4==0) //第二次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
while(1){P0=b[k];delay();k++;if(k==8)k=0; //右流水灯
if(key4==0) //第三次判断是否有键按下
{for(i=0;i<30000;i++); //延时防抖动
if(key4==1) //判断按键是否弹起
goto loop; //跳转到LOOP处,即P3=0xff,此时灯全灭
}}}}}}

//****************************************************************************************************************
main()
{while(1){P0=0xff;
while(!key1)aa();

while(!key2)bb();
while(!key3)cc();

while(!key4)dd();

}}

E. 用单片机原理,编一个跑马灯,要用到定时器,而且是0.5s闪一下,再3s闪一下,依次

定时器设置的延时时间是0.5s,然后用一个循环语句,就能实现3s的延时了。剩下的就简单啦

F. 单片机编程,用数组方式控制跑马灯。求助anyway。

从图中看你使用的是 p0, 不是 p1, 电阻的连接也有点问题, 应该电阻和灯串联, 图中的连接可能会烧掉灯, 你的程式将 p1 换成 p0 其他是正确的.

G. 单片机的跑马灯程序 求注释 尽量每行都注释 我几乎看不懂啊! 谢谢= =!!明天就要答辩啦!!快的话加分加

哈哈 这不难啊!!!!…………单片机的跑马灯程序主要用到了延时子程序,clr,lcall,ajmp 指令, 通过轮流点亮p1.0 …..P1.7 实现效果。你可以通过此程序的学习, 进一步掌握单片机的IO端口操作。
汇编语言参考程序:

org 0000h ;开始
ajmp loop
org 0080h ;到0030h处避开00-30的敏感地址
loop:
mov p1,#0ffh ;关闭所有灯
clr p1.0 ;点亮灯p1.0
lcall delay ;延时一段时间?
clr p1.1 ;点亮灯p1.1
lcall delay
clr p1.2 ;点亮灯p1.2
lcall delay
clr p1.3 ;点亮灯p1.3
lcall delay
clr p1.4 ;点亮灯p1.4
lcall delay

clr p1.5 ;点亮灯p1.5
lcall delay
clr p1.6 ;点亮灯p1.6
lcall delay
clr p1.7 ;点亮灯p1.7
lcall delay
AJMP LOOP ;到最开始loop处重新运行
delay: mov r5,#20 ;延时。
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end


c语言参考程序:

#include<reg51.h> //头文件
#define uchar unsigned char //宏定义,为方便编程
#define uint unsigned int
#define LED P1 //宏定义,将P1口定义为LED
uchar led_value[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //定义一数组,内存放跑马灯数据
uchar *p=led_value; //定义指针,指向跑马灯数组首地址
void delay() //延迟函数,与跑马灯跳动频率有关
{
uchar ii,jj;
for(ii=0;ii<200;ii++)
for(jj=0;jj<200;jj++);
}
void run_led() //跑马灯运行函数
{
while(*p!=0x00)
{
LED=*p; //将数组中数据取出赋给P1口
p++; //预取下一数据
delay(); //延迟
}
p=led_value;
}
char code SST516[3] _at_ 0x003b; //仿真器保留
main() //主函数
{
while(1)
run_led(); //上电即运行跑马灯程序
}

哈哈 !!!哈哈哈!!!!打字 打得手都是痛的 …………希望对你有所帮助……

H. 用51单片机(汇编语言写)写一个跑马灯程序知道的帮个忙写写。

急用!请教!!!
用汇编语言程序,程序功能:实现方向可控的跑马灯
编程要求:用八个LED发光二极管实现跑马灯(即:8个灯依次轮流发光,每次只亮一个灯),系统启动后,跑马灯右向流转,按下K1键,则反向流转,再按则再反向……。接线方法:流水灯接P0口,按键K1可自选P1~P3任一引脚。

I. 单片机跑马灯如何编程!

如果是一个字节型的数据控制LED灯的话,且是1控制LED灯灭,0控制灯亮。
从灭到亮,先是0xFF,然后开始左移,最终移到0x00,就是全亮了。
从亮到灭,先是0x00,然后左移并且加1,重复此工作就是0xFF了
按照上面的思想,你自己应该可以搞定的。

J. 如何用一个STC单片机做一个跑马灯,菜鸟一只,最好用详细的过程

# include <reg52.h>
# include <intrins.h> //循环左移右移函数

void delay1ms(unsigned int i)
{
unsigned char j;
while (i--)
{
for (j=0; j<115; ++j) //1ms基准延时程序
{
;
}
}
}

void main()
{
P0 = 0XFE; // P0灯
while (1)
{

P0 = _crol_(P0,1); // P0左移1位
delay1ms(100);
}

}
自己根据你的板子 改下参数

阅读全文

与单片机数组完成跑马灯闪烁相关的资料

热点内容
超解压兔子视频 浏览:20
单片机怎么测负脉冲 浏览:170
魅族备份的app在哪里 浏览:736
java倒三角打印 浏览:112
通达信回封板主图源码 浏览:44
战地什么服务器 浏览:299
安卓为什么老是闪退怎么办 浏览:803
乐高机器人的编程软件下载 浏览:223
工作中怎么使用加密狗 浏览:735
云服务器的后台找不到 浏览:98
php逐行写入文件 浏览:912
javaoracleweb 浏览:440
京东加密码怎么弄 浏览:467
单片机程序员培训 浏览:992
PHP商城源代码csdn 浏览:636
怎么把电脑里文件夹挪出来 浏览:693
java流程处理 浏览:685
ftp创建本地文件夹 浏览:660
腰椎第一节压缩 浏览:738
xp去掉加密属性 浏览:117