单片机实验报告流水灯实验总结(单片机流水灯实验报告问题小结)

http://www.itjxue.com  2023-02-02 15:33  来源:未知  点击次数: 

单片机原理流水灯实验

单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口, 对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用r1或rra实现位的转换。

单片机流水灯+数码管实验

额,程序之前没仿真过,有点错误,现在可以了

#includereg52.h

#define?uchar?unsigned?char

#define?uint?unsigned?int

unsigned?a=0,b=0,counter=0;

unsigned?char?SEG1[?]?=?{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

unsigned?char?SEG2[?]?=?{0x03,0x06,0x0C,0x18,0x30,0x60,0x0C,0x81};

unsigned?char?SEG3[?]?=?{0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

unsigned?char?SEG4[?]?=?{0x01,0x02,0x04,0x08,0x30,0x60,0x0C,0x81};

sbit?P31?=?P3^1;

sbit?P30?=?P3^0;

void?Timer0Init(void)?interrupt?3?//定时器1

{

counter++;

if(counter==2000)???//定时器定时250us,故4000次中断就表示1秒钟到达

{

counter=0;

a++;

b++;

if(a==8)?a=0;

if(b==256)b=0;

EA=1;

}

}

void?init()

{

TMOD?=?0x20;

EA=1;

TH1=6;

TL1=6;

TR1=1;

ET1=1;

}

void?disp()

{

if?(P30==0P31==0)?{P1?=?SEG1?[a];}

if?(P30==1P31==0)?{P1?=?SEG2?[a];}

if?(P30==0P31==1)?{P1?=?SEG3?[a];}

if?(P30==1P31==1)?{P1?=?SEG4?[a];}

P2=b;

}

main()

{

init();

while(1)

{

disp();

}

}

单片机:16个发光二极管组成的流水灯实验

电路图注意:1、P0口里应加上排阻,图里我没画出来。

2、单片机最小系统所需的晶振、复位电路我也没画。

临时帮你做的图,写的程序,细节就不是很完善啦,凑合着看吧!!

下面是程序,_crol_()函数是让temp的值左移一位的即执行一次该函数,temp的值由11111110到11111101,再执行一次是11111011……

_cror_()是右移。

#includereg51.h

#includeintrins.h//包含对_crol_(),_cror_()函数的说明的头文件

unsigned?char?temp,i;

void?delay(unsigned?int?z)//延时子程序,晶振11.0592M时延时大概1毫秒

{

unsigned?int?x?,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

void?main()

{

while(1)

{

temp=0xfe;

for(i=0;i8;i++)//流水灯从P0^0口到P0^7口

{

P0=temp;

temp=_crol_(temp,1);

delay(5);

}

i=0;

temp=0xfe;

for(i=0;i8;i++)//流水灯从P1^0口到P1^7口

{

P1=temp;

temp=_crol_(temp,1);

delay(5);

}

i=0;

temp=0x7f;

for(i=0;i8;i++)//流水灯从P1^7口到P1^0口

{

P1=temp;

temp=_cror_(temp,1);

delay(5);

}

i=0;

temp=0x7f;

for(i=0;i8;i++)//流水灯从P0^7口到P0^0口

{

P0=temp;

temp=_cror_(temp,1);

delay(5);

}

i=0;

}

}

单片机流水灯实验

RL 是循环左移, A(n+1) - A(n), A(0) - A(7)

RR 是循环右移, A(n) - A(n+1), A(7) - A(0)

看来是LZ没有完全理解汇编指令,呵呵,这个程序的整个过程,如果是低电平亮的话,让整个过程中,始终只有1个灯亮起,其他都灭

(责任编辑:IT教学网)

更多

推荐Oracle文章