流水灯单片机程序代码c语言(流水灯的单片机程序)

http://www.itjxue.com  2023-03-19 11:14  来源:未知  点击次数: 

很简的51单片机C语言流水灯程序

1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。

例程:

#includereg51.h??//51单片机头文件

#include?intrins.h?//包含有左右循环移位子函数的库

#define?uint?unsigned?int????//宏定义

#define?uchar?unsigned?char??//宏定义

sbit?beep=P2^3;

void?delay(uint?z)??//延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{????????????????????//delay(500);大约延时500ms.

????uint?x,y;

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

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

}

void?main()????????????//主函数

{

????uchar?a,i,j;

????while(1)????????//大循环

????{

????????a=0xfe;?????//赋初值

????????for(j=0;j3;j++)?for(i=0;i8;i++)???//左移三次

????????{

????????????P1=a;???????//点亮小灯

????????????beep=0;?????//开启蜂鸣器

????????????delay(50);?//延时50毫秒

????????????beep=1;?????//关闭蜂鸣器

????????????delay(50);??//再延时50毫秒

????????????a=_crol_(a,1);?//将a变量循环左移一位

????????}

????????a=0x7f;

???????for(j=0;j3;j++)?for(i=0;i8;i++)??//右移三次

????????{

????????????P1=a;???????//点亮小灯

????????????beep=0;?????//开启蜂鸣器

????????????delay(50);?//延时50毫秒

????????????beep=1;?????//关闭蜂鸣器

????????????delay(50);???//再延时50毫秒

????????????a=_cror_(a,1);?//将a变量循环右移一位

????????}????????

????}

}

2、51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。

单片机流水灯的程序怎么打(C语言)?顺便解释解释。

你的事C语言 回答的是汇编 如下 //led显示程序,简单地显示led的程序

//展示了如何控制端口的方法

//现象 : led 8个灯从左到右,然后从右到左显示;#include 8051.hvoid delay(unsigned char times);void main()

{

int k,m;

P0 = 0; //关闭数码显示

P2 = 0; //

P3_7 = 0; //关闭蜂鸣器

while(1) //设置一个无限制循环

{ m = 254;

P1 = m; //从第一个灯开始显示

for(k=0;k8;k++)

{delay(255);br m =1;br P1 = m; //表示,P1每次向左一位br }

m = 128;

for(k=0;k8;k++) //第二次重复

{delay(255);br m = 1;br P1 = m; //表示,P1每次向右一位br }

}

}

单片机流水灯c程序

经过仿真,程序没有毛病,可以实现流水灯的效果。

keil软件,也有时添乱,多实验几次,即可。

只是太快,可以加大延时的时间。

#includereg52.h

#includeintrins.h

unsignedchara;

voidmain()

{

inti,j;

a=0xfe;

while(1){

a=_crol_(a,1);

P0=a;

for(i=250;i0;i--)

for(j=1000;j0;j--);//加一行

}

}

用C51单片机控制12个LED流水灯的C语言程序怎么写?

#include "REG52.H"

//控制引脚定义

sbit LED1 = PX.X; //P0.0-P3.7任意引脚

.... .... .......

sbit LED12 = PX.X;

//宏定义灯亮灯灭

#define LED1_ON( ) LED1 =0 //阳极接电源

#define LED1_OFF( ) LED1 =1 //阳极接电源

....... ............. .............

#define LED12_ON( ) LED12 =0 //阳极接电源

#define LED12_OFF( ) LED12 =1 //阳极接电源

void Init_GPIO( )//端口引脚初始化,关闭所有指示灯

{

LED1_OFF( ) ;

..............

LED12_OFF( ) ;

}

void Delay_ms( u16 dat ) //延时函数

{

u16 i, j;

for(i = dat; i0; i--)

{

for (j=300; j0; j--);

}

}

int main( ) //主函数

{

Init_GPIO( );//引脚初始化

while(1) //大循环

{

LED1_ON( );//点亮第一个LED

LED2_OFF( );

.............

LED12_OFF( );

Delay_ms(1000);//延时 参数自己可以根据晶振频率自己调节

LED1_OFF( ); //点亮第二个LED

LED2_ON( );

LED3_OFF( );

.............

LED12_OFF( );

Delay_ms(1000);

............. //按照上面修改;

LED1_OFF( );//点亮第十二个LED

LED2_OFF );

LED3_OFF( );

.............

LED12_ON( );

Delay_ms(1000);

}

}

单片机C语言编程:控制流水灯

T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次。

k3触发外部中断0,级别高于计时器中断,故暂停。

#include?reg52.h

#include?intrins.h?

#define uint?unsigned?int

#define uchar?unsigned?char

sbit?k1=P1^0;?//左循环按钮

sbit?k2=P1^1;?//右循环按钮

sbit?k4=P1^2;?//恢复暂停

sbit?k3=P3^2;//暂停

void?init();

void?showLED();

void?delay(uint?xms);

uint?delayTime;

uint?goLeft=1;

uint?goRight=0;

uint?sFlag=0;

void?main()

{

init();

while(1)

{

if(k1==0)

{

delay(10);

if(k1==0)

{

while(k1==0);

goLeft=1;

goRight=0;

}

}

if(k2==0)

{

delay(10);

if(k2==0)

{

while(k2==0);

goLeft=0;

goRight=1;

}

}

}

}

void?delay(uint?xms)

{

uint?i,j;

for(i=xms;i0;i--)

for(j=112;j0;j--);

}

void?init()

{

P0=0xfe;

TMOD=0x02;?//T0?工作模式2?自动装填8位 ?200us

????TH0=0x38;

????TL0=0x38;

????EA=1;

ET0=1;

????TR0=1;

EX0=1;

IT0=1;

}

void?showLED()

{

if(goLeft==1)

P0=_crol_(P0,1);

if(goRight==1)

P0=_cror_(P0,1);

}

void?moveDelay()?interrupt??1 //一次中断200us

{

if(delayTime==5000)

{

showLED();

delayTime=0;

}

else

delayTime++;

}

void?stopLED()?interrupt?0

{

while(1)

{

if(k4==0)

{

delay(10);

if(k4==0)

{

while(k4==0);

break;

}

}

}

}

51单片机c语言编写一个流水灯程序,要求如下(不能用数组,8个led指示灯从两边往中间移动,然后再分开)

?//流水灯

#include?"reg52.h"

#define?LED_PORT?P3

void?delay(unsigned?char?time)

{

?unsigned?char?i,j,k;

?for(i=0;itime;i++)

?{

??for(j=0;j200;j++)

??{

???for(k=0;k200;k++);

??}

?}

}

void?main()

{

?unsigned?char?i,halfbyteh=0x80,halfbytel=0x01;

?while(1)

?{

??halfbyteh=0x80;

??halfbytel=0x01;

??for(i=0;i8;i++)

??{

???//LED_PORT=halfbyteh|halfbytel;//高电平点亮??

???LED_PORT=~(halfbyteh|halfbytel);//低电平点亮

???halfbyteh=halfbyteh1;

???halfbytel=halfbytel1;

???delay(10);

??}

?}

}

(责任编辑:IT教学网)

更多

推荐windows vista文章