0x3f,0xcf,0xf3,0xfc,0xff,0xfc,0xf3,0xcf,0x3f,//两位一起移动 0xff,0xaa};//闪 unsigned int a;main(){ unsigned char i;while(1){ for(i=0;i<29;i++){ P1=xianshi[i];for(a=0;a<30000;

JMP MAIN ORG 30H MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP2,A;输出到P2 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP2,A;

CJNE A,#8, LED8_ON LJMP LOP LED1_ON: MOV P0,#0FEH //亮一个灯 LJMP LOP LED2_ON: MOV P0,#0FDH //亮一个灯 LJMP LOP LED3_ON: MOV P0,#0F8H //亮一个灯 LJMP LOP LED4_ON: MO

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

//对51不是很熟悉了,抄来的,自己修改了下。仿真了,没有问题 include include void timer0_ISR(void) interrupt 1 using 3 { P1 = ~P1;TL0 = 0XFF;TH0 = 0XFF;TF0 = 0;} void

功能:开发板8个发光管一起闪动 实验内容:输出底电平可以点亮RD口的发光管 高电平可以关掉发光管 开发板连接方法:装上J2。/ include //包含单片机内部资源预定义 __CONFIG(0xFF32);//芯片配置字,看门狗关

单片机编程:8个LED灯同亮或者同灭,每中断一次,变反一次~编出程序~~~

MAIN:MOV P1,#81H ACALL DELAY MOV P1,#42H ACALL DELAY MOV P1,#24H ACALL DELAY MOV P1,#18H ACALL DELAY AJMP MAIN DELAY:MOV R3,#5 //延时 L4: MOV R0,#125 L3: MOV R1,#100 L2: MOV R2,#5

while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低

到第7个LED延时一会就结束循环。在这个单片机流水灯代码中,假设使用的是8051单片机。需要定义8个LED灯,分别连接到P1端口的不同引脚上。然后使用一个循环结构来控制这8个LED灯按照一定的顺序逐个亮起,形成流水灯的效果。具

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

怎么用单片机做出8个LED同时亮,但亮度不同的流水灯?

中断处理函数感觉有些问题,for循环之前使用P1=0x0f;然后将for内的P1=0x0f;改为 P1= ~ P1; 同时for 循环中应该需要调用延时函数 Delay(10); 这里的值看你自己设置,保证能分辨闪烁即可

i=P0;//是检测P0端口的值1或0;以便将检测完的数据赋值给P1,从而实现P1口对应的二极管点亮;P1=i;//是将检测到的值用发光二极管点亮显示出来。死循环是一直执行上面两条操作,因为程序一直在检测按键操作,我只要将开关

MAIN:MOV P1,#01111111B ;P1口低电平 对应灯亮 点亮P1.7对应的LED LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#10111111B LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况

举个简单的例子,8个LED灯的正级分别接在P1.0到P.7上面,负极分别接在P2.0到P2.7上面,P1 = 0xff; (P1口全部高电平) P2 = 0x00; (P2口全部低电平),此时电流通过P1口经LED流向P2口,8个灯全部点亮,

因为单片机太快 ,你完全看不出来,所以,你只看到了 所有灯都有亮过,就是全亮了。

如果51单片机发狂的话这里面一直亮着那就说明里面出现的短路了这个问题如果出现短路了一般情况就会出现这样的一种情况所以呢无论从哪个角度讲把方方面面来说的话这个里边这个电其前

MOV P1,A LCALL DELAY LOOP1:RL A INC R1 AJMP MAIN”有点问题,这一段实际上已经构成了循环,运行到INC R1处时,程序回到MAIN处,累加器内数据已经左移了一位,而R1内数据加1,当再次运行到RL A 处,再次左移一

protues仿真,只要一个单片机,P1口接八个led,不需要程序,直接按仿真,都亮了,为什么??

//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }

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

// 单片机控制八个led灯, 仿真实例 可以改为 各种花样。include define uchar unsigned char define uint unsigned int unsigned char TAB[]= {0xff,0xaa,0xff,0xaa,0xff,0xaa,0xff,0xaa,0xff,0x00,0x

左右来回的流水灯

LED=0xff;for(i=0;i<4;i++){ delay(300);LED=~LED; /*所有的LED灯取反全亮或者全灭*/ } } }

利用单片机控制八个led灯,要求:全亮全灭 ,四亮四灭,以从右到左的 流水形式编程,不是用c语言 编

编程语言的种类繁多,总的来说分为机器语言、汇编语言以及高级语言三大类。 机械语言(machine language):计算机可直接识别、运行的二进制代码,执行速度快,资源占用少,但可读性不强,编程复杂; 汇编语言(assembly language):一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。目标代码简短,占用内存少,执行速度快,但缺乏可移植性,编程复杂; 高级语言(High-level programming language):相对于机器语言以及汇编语言,高级语言的可读性强,可移植性高,一般通过事先编好的一个叫做编译程序的机器语言程序编译成用机器指令表示的目标程序。现在流行的高级语言有Java、C语言、C++、C#、Pascal、Basic等等。
1、脚本语言:又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序。 2、编程语言:一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 二、特点不同 1、脚本语言:脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。 2、编程语言:程序在运行时可以改变其结构,开发快速,接近自然语言,易于理解,更方便的代码管理。 三、优缺点不同 1、脚本语言:脚本语言极大地简化了“开发、部署、测试和调试”的周期过程。大多数脚本语言都能够随时部署,而不需要耗时的编译/打包过程。 2、编程语言:任何编程语言的使用都需要确保编写的程序能够根据实际需要及时调整。因此,快速原型开发环境非常重要,在这种环境下,动态语言和相关库的结合可以大大增强其优势。 参考资料来源:百度百科-脚本语言 参考资料来源:百度百科-编程语言
最后的if语句(处理P1.1的)没有放在while(1)中,所以永远不执行
Keil需要和proteus联调的,的安装个驱动,右击keil左边的窗口,在仿真软件中选择使用proteus,应该就行了,程序应该没问题
假如说,第一个灯肯定比第二个灯亮的话,可以直接把8个LED灯的限流电阻弄成不同阻值的。就像楼上说的那样。 但如果想随便变换不同的灯都能有不同的亮度话,硬件电路可以不变,限流电阻都一样。可以在程序里这样写: 首先,例如你要最亮的灯先点亮,隔几十微秒后点亮第二个灯,再相隔同样时间点亮第三个灯……依次类推间隔一定时间点亮八个灯。但间隔时间不要太大,超过十几毫秒就不行了。 然后再间隔相同的时间一次性把灯全关了,再间隔几十微秒回到上面的状态依次点亮灯。……一直这样循环。 这样的话因为人的视力有一定的滞回效果,只要间隔时间不大,你就能看到八个灯不是闪的,而是同时亮,但亮度又不一样。 这是单片机设计中,PWM控制的思路。
你这程序写得太复杂了吧,延时位置不对,主循环程序改成下面这样才行。 while(1) { if(i!=8) { P2=table[i]; i++; while(num<100);num=0; } else i=0; } 还有:c3344c指出的: ET1=1;//这一行应改成ET0 = 1; TR1=1; //这一行应改成TR0 = 1;
//对51不是很熟悉了,抄来的,自己修改了下。仿真了,没有问题 #include #include void timer0_ISR(void) interrupt 1 using 3 { P1 = ~P1; TL0 = 0XFF; TH0 = 0XFF; TF0 = 0; } void timer_init(void) { IE=0x82; //寮€镐讳腑鏂璄A锛屽厑璁稿畾镞跺櫒0涓柇ET0 TCON=0x00; //锅沧瀹氭椂鍣紝娓呴櫎镙囧织 TMOD=0x02; //宸ヤ綔鍦ㄥ畾镞跺櫒0镄勬ā寮?涓? TH0=0x38; //璁剧疆阅嶈浇鍊? TL0=0x38; //璁剧疆瀹氭椂鍣ㄥ垵鍊? TR0=1; //鍚姩瀹氭椂鍣? } void main(void) { //P1 = 0XFF; timer_init(); while (1) ; }
#include“reg52.h” void yanshi() { };/////延伸函数一秒根据晶体的频率自己设置也可以用定时器的中断来设置1秒时间也可以用软件定时器; mian() { p1=0xff; yanshi(); p1=0x00; yanshi(); }