导航:首页 > 操作系统 > 单片机倒序点亮

单片机倒序点亮

发布时间:2023-01-12 14:40:38

⑴ 51单片机从中间到两边逐个点亮再从两边到中间逐个点亮程序

这个流水灯程序最好用数组定义8个状态的灯,这样用for循环就可以实现了。简洁明了,易读性强,也容易理解。
#include<reg51.h>
#define uchar unsigned char
code uchar ledtab[10]=
{
0xff,0xe7,0xc3,0x81,0x00, //中间开始逐渐点亮
0xff,0x7e,0x3c,0x18,0x00 //两边开始逐渐点亮
}
void delay(int ms)
{
uchar i;
while(ms--)for(i=0;i<120;i++);
}
main()
{
uchar i;
while(1)
{
for(i=0;i<10;i++)P1=ledtab[i];
delay(1000);
}
}

⑵ 51单片机从左至右依次点亮

从左到右依次,可参考下列程序:

ORG 0000H

LOOP:
MOV R2, #255
MOV R3, #128
MOV P1, R2 ;全灭
MOV R4, #10
LP1:
CALL DL
DJNZ R4, LP1
;----------------------
MOV R5, #8 ;移位闪亮8次
LP2:
MOV A, R2
CLR C
RLC A
MOV R2, A
MOV A, R3
RL A
MOV R3, A
MOV P1, R2
MOV R4, #10
LP3:
CALL DL
XRL P1, A
DJNZ R4, LP3
DJNZ R5, LP2
;----------------------
MOV P1, #0 ;全亮
MOV R4, #10
LP4:
CALL DL
DJNZ R4, LP4
;----------------------
JMP LOOP
;----------------------
DL: ;精确延时应该使用定时器
DJNZ R7, $
DJNZ R7, $
NOP
DJNZ R6, DL
RET
END
;----------------------

看了这个,反向移位闪烁的程序,就可自己编写了。

⑶ 单片机如下电路,让显示灯从上往下依次点亮,不断循环。

/* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。 * 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。 */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复循环。 */ ORG 0000H LJMP START ORG 0030H START: MOV R2,#8 ;左移次数 MOV A,#0FEH ;A的初始值,即 P0.0的L0 点亮 SETB C LOOP: MOV P0,A LCALL DELAY RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动 DJNZ R2,LOOP MOV R2,#8 ;右移次数 LOOP1: RRC A ;右移流水灯 MOV P0,A LCALL DELAY DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END

⑷ 求一单片机程序 从两边倒中间依次点亮

是uart串口通讯的代码哦看看main函数吧initiate_RS232();//串口初始化操作
EA = 1;//打开所有中断
Uart_SendString("HELLO BKS !\r\n");//通过串口发送字符串
Uart_SendString("INPUT A CMD !\r\n");
Uart_SendString("Hello World");
while(1)//进入超循环
{
Dispose();
}
*读数据*/
void Read(void) interrupt 4 //将Read函数连接到中断4,也就是说一旦中断4发生
//,就会执行Read函数。中断4具体是什么功能要看电路的设计
//从函数功能上看应该是串口读中断,当数据到达串口时产生中断4
{
if (RI != 0)
{
RI = 0;
Uart_buf[DateNum] = SBUF;
Send_Byte(Uart_buf[DateNum]);
DateNum++;
if (DateNum>51) {
OVERFLOW();//溢出标志
}
}
}/*排序*/
void sort(void) //插入排序算法,这个是数据结构课里讲到的,作用是把一个数组
//中的数按顺序排列
{
//插入排序算法
unsigned char i,j;
for(i=2;i<=DateNum-2;i++)
if (Uart_buf[i]<Uart_buf[i-1]){
Uart_buf[0]=Uart_buf[i];
Uart_buf[i]=Uart_buf[i-1];
for(j=i-2;Uart_buf[0]<Uart_buf[j];--j)
Uart_buf[j+1]=Uart_buf[j];
Uart_buf[j+1]=Uart_buf[0];
}
Uart_buf[0]=0xaa;}/*检测和处理*/
void Dispose()
{
unsigned char i=0;
if (Uart_buf[DateNum-1]==0xbb && DateNum!=1)
{
//测试标志
int time=3000;
BUZ=0;while(time--);BUZ=1;

sort();
for (i=0;i<DateNum;i++) Send_Byte(Uart_buf[i]); //向串口发送数据
DateNum=0;end=0;
}else if (Uart_buf[DateNum-1]==0xbb && DateNum==1) DateNum=0;

}

⑸ 51单片机数码管如何依次点亮

51单片机数码管依次点亮:选择数码管操作称为位选,根据自己的开发板原理图找到位选对应的管脚,以共阴极为例。要在编程时执行选中操作,只要给对应管脚低电平即可。段选同样。如果每个单独连接占用管脚太多,很浪费硬件资源,所以采用多位串联控制。

数码管通常有两种不同的接法,共阴极和共阳极,共阴极顾名思义就是讲八个二极管的阴极连接在一起,这样根据二极管导通原理,通过控制不同二极管阳极电平就可以控制数码管显示不同的数字。单个数码管是由八个发光二极管连接而成,通过控制不同led点亮,可以使之显示不同的数字。

注意区分两个概念即段选和位选;位选指数码管对应的位,例如图共有八个数码管,位选就是选中哪一个数码管操作,段选则是控制数码管显示什么数字。静态显示为了缩短代码长度,一般都是采用总线式编程,显示数字共阴共阳互为反。

⑹ 单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序的源代码如下:

#include //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;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

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

temp<<=1;

}

temp=0x80;

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

{

P1=~temp;

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

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8个流水灯依次全部点亮

{

P1=temp;

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

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8个流水灯依次反向全部点亮

{

P1=temp;

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

temp>>=1;

}

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

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(6)单片机倒序点亮扩展阅读

51单片机流水灯的源代码如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

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

{

P0=_crol_(P0,1);

delay(500);

}

}

}

⑺ 单片机八个led 从左到右依次单个点亮,从右到左再依次点亮;然后从左到右每次增加一个led 点亮

#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchari,led;
while(1)
{
led=0xfe;
for(i=0;i<8;i++)
{
P1=led;
delay(200);
led=_crol_(led,1);
}
led=0x7f;
for(i=0;i<8;i++)
{
P1=led;
delay(200);
led=_cror_(led,1);
}
led=0xfe;
for(i=0;i<8;i++)
{
P1=led;
led=led<<1;
delay(200);
}
led=0x00;
for(i=0;i<8;i++)
{
P1=led;
led=(led>>1)|0x80;
delay(200);
}
P1=0x7e;delay(200);
P1=0x3c;delay(200);
P1=0x18;delay(200);
P1=0x00;delay(200);
P1=0x18;delay(200);
P1=0x3c;delay(200);
P1=0x7e;delay(200);
P1=0xff;delay(200);
}
}

⑻ 51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环

#include<reg51.h>

unsigned char ledtab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++){P0=ledtab[i];delay(100);}
for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);}
}
}

⑼ 单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序的源代码如下:

#include //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;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

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

temp<<=1;

}

temp=0x80;

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

{

P1=~temp;

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

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8个流水灯依次全部点亮

{

P1=temp;

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

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8个流水灯依次反向全部点亮

{

P1=temp;

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

temp>>=1;

}

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

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(9)单片机倒序点亮扩展阅读

51单片机流水灯的源代码如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

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

{

P0=_crol_(P0,1);

delay(500);

}

}

}

⑽ 51单片机点亮LED灯。较快速度首先按顺序点亮。再逆序熄灭。再由两端往中间点亮。再逆序熄灭。整体循环

弄个字节变量一次递增,然后把这个变量放到你要点亮的端口就可以了,然后延时,接着继续增加变量值,然后再放到端口

阅读全文

与单片机倒序点亮相关的资料

热点内容
scratch怎么编程 浏览:592
手机美图秀秀图片压缩 浏览:194
userid加密字符串设置 浏览:695
如何解析宝塔服务器域名 浏览:645
android日志串口 浏览:327
app和app如何转化 浏览:729
java实现文件的拷贝 浏览:9
如何把appstore移动到桌面 浏览:906
租用服务器延迟有什么解决方案 浏览:52
2004cad命令快捷 浏览:244
手动归档命令 浏览:899
文件夹信息跑到上面怎么恢复 浏览:629
plc的基本指令及编程 浏览:435
为什么用压缩空气洗车 浏览:463
php键值重复 浏览:53
mbp运行python 浏览:49
邮箱服务器源码 浏览:437
长沙java程序员待遇 浏览:397
怎么车载U盘分文件夹播放 浏览:340
华为健康使用命令 浏览:351