for(i=0;i<8;i++) // for循环语句,完成8个循环 { P1= ~ j; // 对变量j 中的值按位取反后,从P1口输出 delay02s( ); // 延时0.2s j= j<<1; // 左移1位 } j=0x80; //

while(1){ P1=0xfe; //第1个管亮 delay(500);P1=0xfd; //第2个管亮 delay(500);P1=0xfb; //依次类推 delay(500);P1=0xf7;delay(500);P1=0xef;delay(500);P1=0xdf;delay(500);P1=0xbf;de

int i;main(){ while(1){ c++;if(c>8)c=0;P1=xxx[c];for(i=0;i<55550;i++);} }

P1=0xfe; //给初始化值 换算成二进制是1111 1110 while(1){ delay(30000);//延时程序 P1<<=1; //左移一位 该语句等效于 P1=P1<<1 P1|=0x01; //最后一位补1,该语句等效于 P1=P1|0x01 符号"

求一份8051单片机的跑马灯C程序。要求只用p1端口控制8盏灯。让8盏灯循环点亮。

//延时 void DelayMS(uint x){ uchar i;while(x--){ for(i=0;i<120;i++);} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0

首先定义变量类似于P1_2 = P1^2这种,先把这八个管脚全部定义好,之后给个for循环,让P1(假设的你LED灯连接的是P1口)口的P1^0~P1^7相关标志位依次等于0或者1(0还是1需要看你在LED等上给的是高电位亮还是低电位

P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;delay(1000);//延时1秒 P0 = 0x30;//点亮第三个和第四个LED delay(

while ( !wantclose ) { unsigned char key= ReadKey();for ( int i=1;i<9;i++) { unsigned char led = 0;if ( ison ) led = ( ( i & 0x01) ^ ( !!key) );//控制灯 OnoffLed(led );} ison

1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

用C语言控制8个Led灯

P1 = P1BUF;while(1){ } } void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组 { TH1 = 0XFF; //定时器1定时时间=500us TL1 = 0X06;YSJS++;if(YSJS==2000) //500uS*2000=1000000

AJMP MAIN ORG 0003H MAIN: MOV P1,#0FFH LCALL DELAY MOV R1,#0 MOV DPTR,#TAB MAIN1: MOV A,R1 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R1 CJNE R1,#8,MAIN1 AJMP MAIN DELAY: MOV R4,#08H DL0

LED=0X01;//P1=00000001B while(1)//死循环,不停的点亮和熄灭LED { for(t=0;t<8;t++){ LED=~LED;//按位取反,点亮一个LED delay_ms(100);//延时0.1s LED=~LED;//按位取反 LED<<=1;//左移一位,

P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }

用五一单片机c语言编程,p1口控制八个发光二极管,实现每隔一秒,两两点亮,并循环。

0xfe是十六进制表示的数,二进制就是1111 1110,通过你的程序和相关注释可以看出,硬件上你有8个led灯连接P1口,且这些led是低电平亮。P1=0xfe(1111 1110)也就是表示七个灯灭,一个灯亮。接下来的代码就是让P1数据0x

C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!(一)include //51系列单片机定义文件 define uchar unsigned char //定义无符号字符 define uint unsigned int //定义无符号整数 void delay(uint)

LCALL DELAY ;调用延时子程序 MOVE P1.0,#00000010B ;把二进制数00000010B送到P1口 LCALL DELAY MOVE P1.0,#00000100B LCALL DELAY MOVE P1.0,#00001000B LCALL DELAY MOVE P1.0,#00010000B LCALL DELAY MOVE

} 时钟程序如下:一 include void delay1s(){ unsigned char i;for(i=0;i<0x0A;i++){ TH1=0x3c;TL1=0xb0;TR1=1;while(!TF1);TF1=0;} }二 void main(){ unsigned char i,t;TMOD=0x10;

程序如下:include include define uchar unsigned char define uint unsigned int uint i;uchar j;void delay_ms(uint k) //延时子程序 { for(i=0;i

delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }

led=led-1的意思就是把led-1这个值赋值给led例如led=0xff(换成十进制255)减去1之后等于254把这个254赋值给led while(led==0)在c语言中俩个等号才是相等,它在这里的意思 就是判断是不是led全部点亮了,如果是等全部

c语言流水灯八位二进制程序

} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);

用移位操作,首先把P1口赋值,然后向右移位,判断是否移到最后移位,如果不是,一直移位,如果是,则反向移位,判断是否移位到第一位,如果是则循环到右移,具体代码就自己写了。代码不难,我只是记不清楚具体定义了。

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;

int i = 8; //循环次数为8 void main(){ P1 = 0xff; //初始化LED,8个LED全灭,(假设低电平点亮)init_t0() ;while(1); //循环等待定时中断 } void init_t0() //定时器0初始化程序 { TMOD = 0x0

假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }

P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay

用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)

void disp2() // 1到8依次点亮一次 { temp=0xfe;for(i=0;i<8;i++){ P1=temp;delay(500);temp=_crol_(temp,1);} P1=0xff;delay(500);} void disp3() //2,4,6,8灯依次点亮的这里要求循环3

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); //调用延时函数 te

把各个花样写在子函数,中断中对变量加1,在判断是否大于5,大于5就对变量清零。因为你要5种花样。主函数判断变量的值,1时执行从左到右依次点亮,2时执行从左到右逐个依次熄灭。依次下去 include "reg51.h" // 包

P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay

下面是c语言程序源码 include void delay100ms(); //如果函数是在主函数后面定义,那么一定要在主函数前面声明 void main(){ int i;i=0xfe;while(1){P1=i;i--;delay100ms();if(i==0)i=0xfe

实现单片机信号灯1-8依次循环点亮的程序怎么写

C语言? 就是位操作而已,,,,unsigned char的变量,然后做位操作 ~~~~~~~~~~~~
#include void Delay1ms(unsigned int count) { unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); } main() { unsigned char LEDIndex = 0; bit LEDDirection = 1; while(1) { if(LEDDirection) P2 = ~(0x01<<LEDIndex); else P2 = ~(0x80>>LEDIndex); if(LEDIndex==7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; Delay1ms(500); } }
这个控制原理跟你点亮八个LED灯是一样,你只要能让八个灯亮,再让八个灯灭,你就已经成功了一半,其次就移位操作,C里面有,你懂的,一个个实现,软件设计,只要知道了设计思路,你就应该能解决的。相信自己,你可以的
#include "reg51.h" main() { unsigned int i,j; while(1) { P1=0xfe; //点亮第一个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xfd; //点亮第二个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xfb; //点亮第三个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xf7; //点亮第四个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xef; //点亮第五个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xdf; //点亮第六个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xbf; //点亮第七个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0x7f; //点亮第八个LED for(i=200;i>0;i--) for(j=500;j>0;j--); } } 或: #include "reg51.h" void delay(unsigned int t) { unsigned inti,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } main() { unsigned char w,i; while(1) { w=0xfe; for (i=0;i<8;i++) { P1=w; //循环点亮LED w<<=1; //点亮灯的位置移动,最低位补0 w=w|0x01; //将最低位置1 delay(500); //延时 } } } 或: #include "reg51.h" //程序中使用_crol_函数,所以要包含头文件"intrins.h" #include "intrins.h" void delay(unsigned int t) { unsigned int i,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } main() { unsigned char temp; temp=0xfe; while(1) { P1=temp; delay(500); //延时 temp=_crol_(temp,1); //点亮LED的位置循环左移一位 } }
程序直接复制粘贴一下就好了,软件的话需要找一下
只要程序不行 还得有电路 有原理图吗 发给我就可以写了