p3_0=1;//关第一位显示 p2=tab[2];p3_1=0;//开第二位显示 for(i=0;i<200:i++);p3_1=1;这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52.h,如果是包含reg52.h编译不了的

void delay(){ uint16 i=1000;while(i--);} void main(){ uchar n ;P2=0xfe;P1=0xff;while(1){ if(k1==0){ if(n>=9) n=0;else n++;P0=shuzu[n];while(!k1);delay();while(!k1);} }

我们打开Proteus软件,点击左边菜单栏的P按钮 然后再搜索框里输入80c51,选择第一个就是80c51单片机 同理,我们在搜索框里面输入led 找到Optoelectronics,然后再里面选择LED-RED 红色的led,当然其他颜色也可以 点击鼠标右键可以

如果要在上面的六个数码管中点亮第一个数码管,且让它显示“1”,首先确定它的位置是第六个。用八个二进制表示,最低位从0开始,最高位为7 那么它的位码为:11111110 (低电平有效)断码为0x06 其他的以此类推 先要

从第一个灯开始随着时间变化,二进制数的递减,所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程,一直循环下去。红绿蓝四个LED灯循环闪烁,单片机课程试验,连上板子可以直接显示,非常基础。单片机使用codew

F B F B F B F B F B GGGGGG E C E C E C E C E C DDDDD 要能控制每一段。。。

用LED灯摆了个“8”型,如何在不用开关的情况下,在KEIL C 51中让LED灯显示6,显示9,显示8

方法:1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void

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

1:设置一个变量zhidaoi,它可以从0循环到3 2:检测一个已取消缓冲的键。按“+1”3:当I值为每个值时,执行相应的模式。水量灯参考程序 #include #include #定义uchar无符号字符 Ucharj,温度;无效延迟(无符号整型

6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

while(1){recy=0xfe;for(k=1;k<=8;k++){ P1=recy;Delay(50000);recy=recy<<1;} }

{ for(k=0;k

单片机考试,亮灯:8个灯依次按学号后八位闪烁,每位数字是什么就闪烁多少次,如为0则不亮。循环。

P2.6 DJNZ R3, DIS INC R0 LJMP START ;--- TABWEI:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H DB 92H, 82H, 0F8H, 80H, 90H END

void I_INT0(void)interrupt 0 using 1 { if(++Bits==10){ Bits=0;if(++Ten==10){ Ten=0;Bits=1;} } }

while(1){recy=0xfe;for(k=1;k<=8;k++){ P1=recy;Delay(50000);recy=recy<<1;} }

8个LED灯代表一个char型数据的8位?如果是 很简单 a=key_scan();if(a==0){b++;if(b>99)b=0;P0=b;}

你自己已经说出方法了还提什么问,8个LED灯表示8位2进制数,一个简单的自加运算就搞定了,然后直接赋值给LED灯驱动端口。

单片机. 使用8盏led灯30秒钟内表达出0到199的数字,假设全灭为0,全亮为255

我们把实验代码插入单片机,然后点击界面左下角的开始按钮,就可以运行电路。05 如图所示,八个流水灯依次点亮。

unsigned int i=10000,j=10;//闪烁多少次就改j的数值 //执行语句 while(j--){//执行10次后停止 P0=0x00; //赋值语句,点亮八个灯 /*延时功能 【多行注释】*/ while(i--){;}//循环语句 P0=0xff;//熄灭8

} PData=PData+(1<<(i-1));//置最高位为常亮状态 P1=~PData; delay(500); } //停机 while(1){ ; }}

51单片机的P1口有8个端口。0xfe表示最后一位为低电平也就是11111110.小灯当然会亮。然后a变量左移一位就是11111101,表示第二个灯亮其他灭。以此类推,不就是流水灯吗?还有,你的蜂鸣器和灯设置延迟50毫秒?那就相当于

单片机的8位流水灯的问题,

计算1-20的连加和 sum = 0 for i in range(1, 21):sum += i 将结果转换为二进制并显示在LED上 binary = bin(sum)[2:].zfill(8) # 将和转换为8位二进制数,并在左侧填充0以达到8位 for i in range(

所以就无法通过编译,解决方法是在文件头“声明” 一下,让编译器知道在本文件中搜索 delay() 这个函数,从而成功调用。八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的

i只要不等于0说明条件为真 为真的话一直执行 for(j=125;j>0;j--){;} 直到i等于0时while条件为假才退出循环,在这里主要是为了延时进行空操作 这个程序要演示的应该是用8位led表示0到255。还有51单片机还是很简单的

按键、8个LED,安装接口,都没有指定。

二进制只有两个数0和1,0 完了就是 1,然后进位变成10。接着是11、满位进1变成100、101、110、111、1000、1001、1010、1101、1110、1111、10000、10001、10010、100101、101010以此类推。用 @表示灯亮 使用*表示

{ if(P3^1==0) //当按键按下是低电平时 { delay_ms(12);//消抖 if(P3^1==0) return 1;} return 0;} void main(){ uchar cnt=0,key;uchar led[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x

// P1 = abc; //在P1口外接8个LED,低电平发光.abc++; //加,负逻辑将显示为自减.delay(500); //延时,供观察现象.} }

8个LED做8位二进制数显示的程序怎样编程?

下列程序调试成功。使用晶振为12M。 //软件延时,使P1口外接的8个发光二极管,以每秒1位的速度,轮流发光。 //发光顺序:0123,1234,2345,3456,4567,5670,6701,7012。循环。 //---------------------------- #include #include unsigned char a; void main() { unsigned char i, j, k; a = 0x0f; while(1) { P1 = a; //假设8个发光二极管接在P1口. a = _crol_(a, 1); for(i = 8; i > 0; i--) for(j = 250; j > 0; j--) for(k = 250; k > 0; k--); } } //---------------------------- 补充提问:0123不是同时亮,而是0 1 2 3 按顺序亮,再1234按顺序亮... 回答补充提问,改动如下: #include #include void main() { unsigned char a, b, c, i, j, k; a = 0xfe; while(1) { b = a; for(c = 0; c < 4; c++) { P1 = b; b = _crol_(b, 1); for(i = 8; i > 0; i--) for(j = 250; j > 0; j--) for(k = 250; k > 0; k--); } a = _crol_(a, 1); } }
以P1口的8位共阳极LED为例, 初始化: sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; delay函数: void delay(int x) { int a,b; for(a=0;a<x;a++) { for(b=0;b<10000;b++); } } 主程序 void main() while(1) { P1_0=1; delay(1000); P1_0=0; delay(1000); P1_1=1; delay(1000); P1_1=0; delay(1000); //以此类推至P1_7 }
你把八个LED灯接在一个Px口中,一刷就可以了 Px = 0xff;(假设高电平点亮)
#include #define LED P0 /*宏定义LED接于P0口*/ void delay (int); /*声明延迟子函数*/ main() { int i; while(1) { LED=0xfe; for(i=0;i<7;i++) { delay(100); LED=(LED<<1)|0x01; /*最低位LED灯左移一位后进行或运算使得最低位不会为“0”*/ } for(i=0;i<7;i++) { delay(100); LED=(LED>>1)|0x80; /*最低位LED灯右移一位后进行或运算使得最高位不会为“0”*/ } LED=0xff; for(i=0;i<4;i++) { delay(300); LED=~LED; /*所有的LED灯取反全亮或者全灭*/ } } }
ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH MOV R2,#8LOOP: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R2,LOOP MOV P0,#0FFH SJMP $DELAY: MOV R3,#10DLY1: MOV R4,#100DLY2: MOV R5,#250 DJNZ R5,$ DJNZ R4,DLY2 DJNZ R3,DLY1 RET END
很简单,假设P1接8个led,每个线路上有支路按键接到地,led共阳 #include void delaynms(unsigned char i) { unsigned char j; while(i--) for(j=0;j<115;j++) ; } void main() { unsigned char i; for(i=0;i<3;i++) { P1=0x00; delaynms(1000); P1=~P1; delaynms(1000); } while(1) ; }
这个应该在让他亮起的代码中加一个标志变量,例如bit k;在点亮LED时先给标志置位:k=1;而后加一个判断:if(k==1){**点亮LED的代码**},当你想在以后的程序中永久关闭LED时,只要清除这个标志k=0;就可以了。
虽然编程51单片机。而且让每个LED灯都亮得非常好。这可太好了问题。这个技术应该有专门的负责人员来搞定。