51单片机流水灯c语言编程循环移动(51单片机流水灯循环程序)

http://www.itjxue.com  2023-03-07 13:01  来源:未知  点击次数: 

51单片机流水灯执行10次 全部闪烁一次 一直循环十次闪烁一次 c语言怎么写????

#includereg51.h

#define?uchar?unsigned?char

void?delay(uchar?a)

{

uchar?i;

whilie(a--)for(i=0;i110;i++);

}

main()

{

uchar?i,j;

for(i=0;i10;i++)

????P0=0xfe;

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

????????{

????????P0=_crol_(P0,1);

????????delay(200);

????????}

????}

????P0=0x00;

????delay(200);

????P0=0xff;

????delay(200);

????while(1);

}

很简的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单片机是基础入门的一个单片机,还是应用最广泛的一种。

51单片机16个灯流水循环,C语言

代码已修改,并仿真通过。

#includereg51.h?????//包含单片机寄存器的头文件

#include?"intrins.h"

#define?uchar?unsigned?char

#define?uint?unsigned?int

?sbit?CLK=P1^0;

?sbit?IN?=P1^1;

//uchar?code?a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uint?code?w[]={0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff};//【新建了一个流水表】

void?delay(uint?i)

{

????uint?j;

????uchar?k;

????for(j=i;j0;j--)

????????for(k=125;k0;k--);

}

//【发送1字节给74LS164】

void?send_byte(uchar?temp)

{

????uchar?i;

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

????{

????????if(temp??0x80)

????????{

????????????IN?=1;

????????}

????????else

????????{

???????????IN?=0;

????????}

????????CLK?=?0;

?????????_nop_();??//if?Keil,require?use?intrins.h

????????CLK?=?1;

????????

????????temp=temp1;//?temp左移1位

????}

}

//【发送2字节给74LS164】

void?send_word(uint?temp)

{

????

????send_byte((uchar)(temp8));//先发送高字节

????send_byte((uchar)(temp0x00FF));//再发送低字节

}

void?main(void)

{

????uint?i;

????

????while(1)

????{

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

????????{

????????????//send_byte(a[i]);

????????????send_word(w[i]);//【发送2字节】

????????????delay(4000);

????????????

???????????

????????}

????}

}

(责任编辑:IT教学网)

更多

推荐服务器空间文章