导航:首页 > 操作系统 > 51单片机跑马灯c程序

51单片机跑马灯c程序

发布时间:2024-05-07 01:59:17

㈠ 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();

}

}

}

(1)51单片机跑马灯c程序扩展阅读:

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

㈡ 51单片机跑马灯程序

不好意思,延时用了楼上的。keil下编译OK。假设P1接灯。

ORG00H

SJMPSTART

ORG30H

START:

MOVA,#00

SETBC

MOVR0,#9

;从左到右

LOOP1:

RLCA

MOVP1,A

ACALLDELAY

DJNZR0,LOOP1

;从右到左

MOVR0,#9

LOOP2:

RRCA

MOVP1,A

ACALLDELAY

DJNZR0,LOOP2

SJMPSTART

DELAY:

MOVR6,#20

DELAY_0:MOVR5,#255

DJNZR5,$

DJNZR6,DELAY_0

RET

这个程序比较简单了。再精简,只能精简一句,将MOVP1,A放在DELAY函数里。这样减少一行。

简单介绍一下:

首先就是你要轮流点亮,就是将1循环一圈,因为你要全灭一次,所以用到CY。

RG00H

SJMPSTART

ORG30H

START:

MOVA,#00;//清空A寄存器

SETBC;//将CY置1,然后带进位左移就会进入将A的b0

MAINLOOP:;//大循环起始

MOVR0,#9;设置移位次数,要灭一次,所以设置为9

;从左到右

LOOP1:

RLCA;带进位左移一次;第一次移位结果为01

MOVP1,A;将A中值放入P1点亮对应LED;该句可放在DELAY里,然后从右到左也去掉该句

ACALLDELAY;延时,保持灯亮一段时间,自己根据实际情况调整一下。

DJNZR0,LOOP1;循环,点亮下一个灯,最后一次,A为0,将全灭一次,CY为1

;从右到左

MOVR0,#9;设置循环次数

LOOP2:;循环起始表示

RRCA;带进位右移,第一次结果为80H

MOVP1,A;更新P1点亮对应LED

ACALLDELAY;延时,保持灯亮一段时间

DJNZR0,LOOP2;循环,点亮下一个灯

SJMPMAINLOOP;循环,重新开始下一轮

如果你是管脚输出低LED才亮,只需将MOVA,#00和SETBC改为MOVA,#0FFH和CLRC即可。

方案2:位寻址区00做标志,为0从左到右,该标志为1从右到左

ORG00H

SJMPSTART

ORG30H

START:

MOVA,#00

SETBC

MOVR0,#9

CLR00H

LOOP1:

RLLED:

JB00H,RRLED

RLCA

AJMPDISP

RRLED:

RRCA

DISP:

MOVP1,A

ACALLDELAY

DJNZR0,LOOP1

CPL00H

AJMPSTART

DELAY:

MOVR6,#20

DELAY_0:MOVR5,#255

DJNZR5,$

DJNZR6,DELAY_0

RET

下面是方案1的流程图,这种流程图不知怎么写好,而且写出来基本是对每行的代码的解释。

㈢ 51单片机 ,设计一个跑马灯程序,用软件延时,p0输出,怎么设计c语言,用p1口的开关控制灯循环的速率

51单片机是单片机接触最早的,下边这个程序希望能帮到你。(只有主函数,就不进行硬件什么定义以及头文件包含什么的了)

void delay(int times){//延时函数,times控制延时时间
int i, j;

for(i = 0; i < times; i++)

for(j = 0; j < 210; j++)

;

}
int main(void){
unsigned char data, i;
while(1){

data = P1;//把开关值读回来
for(i = 0; i < 8; i++){
P0 = ~(0x01 << i); //某位为高电平某位对应的灯亮
delay(data);//把读取的开关值用来控制延时

}
}
}

㈣ 51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分

程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END

㈤ 51单片机 跑马灯程序

org0000h

jmpstart

org0030h

start:

movp0,#11111110b;此时第一个灯亮

callt10s

movp0,#11111101b;此时第二个灯亮

callt10s

movp0,#11111011b

callt10s

movp0,#11110111b

callt10s

movp0,#11101111b

callt10s

movp0,#11011111b

callt10s

jmpstart;此处跳到开始即循环

;延时子程序10秒=250usX2X200X100

t10s:movr5,#100

lpr5:movr6,#200

lpr6:movr7,#250

djnzr7,$

djnzr6,lpr6

djnzr5,lpr5

ret

end

把灯的正极接电源正极即vcc负极分别接p0.0-p0.5

此时给p0送0灯就亮1灯就不亮

程序已经过调试可用

仿真如下:

㈥ 51单片机跑马灯电路图(左右来回循环),8个led灯分别接在P2口,c程序、仿真图如下。电路并未出现预期效果

电路:

一般的单片机 和 TTL集成电路芯片,都是灌电流能力强,拉电流能力极弱。
为此,应该用输出低电平,来带动负载。
而你的电路,是用高电平带动LED发光的,仿真,也许还行;实际的电路,LED是不会亮的。

阅读全文

与51单片机跑马灯c程序相关的资料

热点内容
铰刀转速进给的算法 浏览:979
php二维数组取一列 浏览:377
安装杀毒软件出现压缩或加密 浏览:975
方舟端游服务器怎么搜索房间 浏览:73
单片机学51好还是stm8好 浏览:798
手中的app如何隐藏 浏览:1001
安卓什么壁纸软件号 浏览:436
java设置内存大小 浏览:434
php循环匹配 浏览:325
技巧pdf 浏览:481
单片机断程序怎么解决 浏览:160
如何制作APP的图片 浏览:507
php大小排序 浏览:550
linuxkerberos 浏览:127
暗黑破坏神3如何下载亚洲服务器 浏览:954
linux中ftp服务器地址怎么看 浏览:438
ansys命令流do 浏览:122
单片机6502 浏览:766
自助洗车有什么app 浏览:939
程序员离职率多少 浏览:324