keil使用教程编写第一个led灯程序1、新建一个空文件夹2、打开keil-->newuVisionproject3、选择目录,命名文件4、选择芯片5、添加文件6、编写C51单片机程序7、生成可以加载单片机里的hex文件8、编译生成hex文件9、将hex文件

延时一次为1MS,系统用的是8M晶振,你用的是0.2S,调用时把参数设置为200就行了,你16个灯我不知道你是用8个IO口驱动呢还是16个IO口驱动,驱动跑马灯可以用数据右以左移的方法,也可以用查表法!参考参考吧!void

P1口接8个LED灯,P3口接4个按键K1~K4,用于控制流水灯的四种效果,仿真图如下。

05 LED模拟交通灯 /* 名称:LED模拟交通灯 说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。 */ #include #define uchar u

void wait (void) { /* wait function */ ; /* only to delay for LED flashes */ } void main (void) { unsigned int i; /* Delay var */ unsigned char j; /* LED var */ while (1)

两种方法,一种是给驱动16和灯的口每次变化赋和显示值,这种最好理解,32次变化写32行输出然后每个输出后面再加一个延时就可以了。另一种是用位移指令for循环 也要写两个for 一个渐亮的一个渐灭的

你用74HC595吧,只用3根线就可以控制了,一个74HC595输出为8位,这样可以控制8个LED,而且每个74HC595都可以级联的,例如一共有5个74HC595,都是级联的,所以实际上3个IO口即可控制5*8=40个LED!当然,级联的多少,就看你

用keil编一个用四个按钮控制16个led灯形成不同变化的程序,能够停止变化

P2=led_data;//默认第一位亮 if(key==0)Delay_ms(10);if(key==0){ while(!key);Delay_ms(500); //延时0.5s led_data=_crol_(led_data,1);//移位函数,使led_date向左循环移动1位 } } } 向左转|

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; /

while(1){ if(key == 0){ delay(20);//适当延时,消除按键抖动,自己看实际情况修改时间 if(key == 0)temp = ~temp;} P2 = temp;} }

使用软件简单的控制,根据P2端口的数值作为依据去控制8个LEd灯亮,比如当P2=000控制一个,P2=001控制另外一个,以此类推。。

用keil设置51单片机p2口0 1 2作为开关控制8个led灯亮

下面是用C51编写的简单程序:include include sbit io_Key = P1 ^ 1;sbit led1 = P1 ^ 2;sbit led2 = P1 ^ 3;sbit led3 = P1 ^ 4;unsigned char ucCount = 0;bit flag05s =

{ while(xx--);} int main(){ u4 a=0;for(a=0;a<3;a++){ LED1=!LED1;d_d(60000);} while(1); // 添加一个无限循环,防止程序重新启动 return 0;} 现在,这个程序应该只会让LED闪烁三次,然后停止。

1.最简方案——利用延时函数:进入主函数后,初始化LED,设置一个延时初始值,然后进入while循环,里边只做四件事,打开LED,利用键盘返回值作延时函数参数,关闭LED,利用键盘返回值作延时函数参数。2.精确解决方案——定时器

1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。3、接着创建延迟函数,如下图所示,输入以下代码。4、然后创建C语言主函数,如下图

1、首先利用16位定时器1实现定时1s,控制LPC1114微控制器的GPIO引脚PIO19上的LED灯状态反转。2、其次设置16位定时器1工作在PWM模式,利用另外一个定时器定时增大或者减小占空比。3、最后实现PIO1_9上的LED灯渐亮渐灭的呼吸

LED = 1; //熄灭小灯 for (i=0; i30000; i++); //延时一段时间 } } 大家把这个程序编译一下,下载到里,就会发现 LED2 这个小灯会闪烁了。

keil编程led灯闪烁调节速度

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

while(!key1){ delay(10);if(key1)k=1;} while(!key2){ delay(10);if(key2)k=2;} while(!key3){ delay(10);if(key3)k=3;} } void main(){ while(1){ keyscan();switch(k){ case 1:{ for(j

一键多空流水灯汇编语言程序编写方法是:设置一个变量,来检测按键的次数,从而控制程序分支来达到控制不同流水灯的效果例如:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV R6,#0FEH MOV R7,#0 LOOP:JB P1.0,LOOP1 JNB

if (key_time==4)key_flag=1;if (time_500)time_500--;else {flag_500ms=1;time_500=10;} }

} while(++CountTemp > 160); // 延时20ms去抖动 if(CountTemp > 160)//如果按键时间有效,改变状态 { switch(ucState){ case(0):{ ucState = 1;led1 = 0;led2 = 0;led3 = 0;} break;case(1):{

如何用单片机一个按钮开关控制3个灯3种效果。流水。闪烁。还有一直亮。用keil编程。

led2;sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;void delay(int a){uchar i;while(a--)for(i=0;i<120;i++);}main(){unsigned int i;

3.编写程序:使用单片机的编程软件(如Arduino IDE、Keil等),编写控制LED灯的程序。以下是一个简单的示例程序(以Arduino为例):// 定义LED灯连接的引脚 const int ledPin = 13;void setup() { // 将LED引脚设置为

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

//INT0 控制灯 //增加了P1口的流水灯功能。//--- include include define uchar unsigned char define uint unsigned int sbit LED = P0^0;uchar i,j;//--- void main(){ j = 0xf

单片机一个按键控制一个LED灯怎么处理,求程序,用keil软件的,谢谢.

单片机流水灯C语言程序的源代码如下:include //51系列单片机定义文件 define uchar unsigned char //定义无符号字符 define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void){ uint

1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

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

8个就可以类推)\r\r1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。

include sbit key = P1^0;//按键 void delay(unsigned int time){ unsigned int i,j;for(i=0; i

在51单片机中用c语言keil写程序实现用一个按键控制8个灯的亮和灭(按下按键全部灯亮,按下按键全

//第一个实验://假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7//假设K1按键在P2.3引脚#include#includesbit k1=P2^3;//假设K1按键在P2.3引脚void main(){ P0=0xfe; while(1) { if(k1==0) { while(k1==0); P0=_crol_(P0,1); } } }//第二个实验://假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7#includechar led[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff};void main(){ char i=0; char counter=0; TMOD=0x01;//T0 工作方式1 TH0=(655356-50000)/256;//延时50ms TL0=(655356-50000)%256;//延时50ms TR0=1;//启动T0 while(1) { if(TF0==1)//查询 { TH0=(655356-50000)/256;//重新延时50ms TL0=(655356-50000)%256;//重新延时50ms counter++; if(counter==10)//延时0.5秒 { counter=0;//重新开始新一轮0.5秒延时 i++; if(i==16) { i=0; } P0=led[i];//点灯 } } } }
可以做的。
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
#include sbit key=P1^0; sfr LED=P0; main() { while(1) if(key==0)P0=0xc0; else P0=0xff; }
你的电路图画错了,发光二极管放反了,或者把+5V换成地
#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的位置循环左移一位 } }
#include void Delay1ms(unsigned int count) /*延时函数,延迟时间为count×1ms)*/ { unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); } main() { unsigned char LEDIndex = 0; /*声明8位变量LEDIndex,用来指示8个LED中哪个被点亮,初始值为00000000*/ bit LEDDirection = 1; /*声明位变量LEDDirection,用来指示点亮的方向,初始值为1*/ while(1) /*一直循环执行大括号里面的语句*/ { if(LEDDirection) /*当LEDDirection=1时,0000 0001左移LEDIndex位,取反后送给P2端口,点亮一个LED*/ P2 = ~(0x01<<LEDIndex); else /*当LEDDirection=0时,1000 0000右移LEDIndex位,取反后送给P2端口,点亮一个LED*/ P2 = ~(0x80>>LEDIndex); if(LEDIndex==7) /*当一次循环结束时,把LEDDirection取反,下次循环时将以相反的顺序点亮*/ LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; /*LEDIndex+1对8取余,保证LEDIndex在0~7之间*/ Delay1ms(500); /*延时500ms,即LED的点亮间隔为0.5s*/ } }
#include sbit key = P1^0;//按键 void delay(unsigned int time) { unsigned int i,j; for(i=0; i<time; i++) for(j=0; j<1000; j++) {;} } void mian() { unsigned int temp =0x00; while(1) { if(key == 0) { delay(20);//适当延时,消除按键抖动,自己看实际情况修改时间 if(key == 0) temp = ~temp; } P2 = temp; } }
很简单啊,假定用P1驱动灯泡,按下列步骤: 1、P1=0x81,表示1、8亮,延时一段时间; 2、P1=0x42,表示2、7亮,延时一段时间; 3、P1=0x24,表示3、6亮,延时一段时间; 4、P1=0x81,表示4、5亮,延时一段时间; 重复1-4步即可。
怎么个控制法,是流水控制16个灯4种流水状态还是一个键控制4个led