单片机 彩灯的闪烁编写程序控制彩灯左跑动2圈再右跑动2圈后闪烁2次停下的程序

单片机 彩灯的闪烁编写程序控制彩灯左跑动2圈再右跑动2圈后闪烁2次停下的程序,第1张

#include<reg51.h>带腔掘

#define uchar unsigned char

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

void delay(uchar a)

{

uchar i

while(a--)for(i=0i<120i++)

}

main()

{

uchar i,j

for(i=0i<2i++)

for(j=0j<蠢核8j++)

{

P1=led[j]

delay(100)

}

for(i=0i<圆袭2i++)

for(j=7j>0=j--)

{

P1=led[j]

delay(100)

}

for(i=0i<2i++)

{

P1=0x00

delay(100)

P1=0xff

delay(100)

}

}

ORG 0000H

MOV R1,#0FEH;使左1灯亮的信号

MOV R6,#8;设置循环次数

LOOP:

MOV P1,R1

LCALL DEL_1S

MOV A,R1

RL A

MOV R1,A

DJNZ R6,LOOP ;当最右灯亮后结束循环

MOV R6,#8 ;再次设置模脊银循环次数

LOOP1:

MOV A,R1

RR A

MOV R1,A

MOV P1,R1

LCALL DEL_1S

DJNZ R6,LOOP1 ;当最左边的灯亮后旦宴结束循环

MOV R6,#4;第三次设置循环的次数 这里不用R6!!!!

LOOP2:

MOV P1,#0 ;全野悔亮

LCALL DEL_05S

MOV P1,#0FFH ;全灭

DJNZ R6,LOOP2 ;四次后结束循环

AJMP $

//我想做个15路输出的彩灯,预置数为15个(10进制32767)1,

//使用P0.0~P0.7和P2.0~P2.6端口,

//设置+1(P3.3)和-1(P3.4)两个按钮,可以减到十进制32047。

//到32047后如果继续按-1按钮,可以回到32767重新进行减法。

//加法也一样,加到32767后按+1按钮可以到32047重新+1.

//再设置一个按钮(P2.7),当P2.7接地时,在当前显示的数字上减去十进制数1712进行显示。

//============================

#include<reg52.h>

sbit  K_1 = P3^3       //+

sbit  K_2 = P3^4       //-

sbit  D_1 = P2^7       //显示方式选择

//----------------------------

void delay_ms(unsigned int n)

{

unsigned char 大敏j

while(n--) for(j = 0 j < 230 j++)  //230是实验测试所得!

}

void main()

{

unsigned int m

m = 32767

while(1) {

if (D_1 == 1)  {

P2 = ~(m / 256)

P0 = ~(m % 256)

}

else 培宏 {

P2 = ~((m - 1712) / 256)

P0 = ~((m - 1712) % 256)

}

if (K_1 == 0) {

delay_ms(10)

if (K_1 == 0) {

m++

if (m > 32767)  m = 32047

while(K_1 == 0)

}

}

if (K_2 == 0) {

delay_ms(10)

if (K_2 == 0) {

m--

if (m < 32047)  m = 滚中枝32767

while(K_2 == 0)

}

}

}

}

//============================


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12520739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存