keil5如何编写开关灯程序(keil亮灯程序)

Keil四个LED灯点亮程序

keil使用教程编写第一个led灯程序

1、新建一个空文件夹

2、打开keil--newuVisionproject

3、选择目录,命名文件

4、选择芯片

5、添加文件

6、编写C51单片机程序

7、生成可以加载单片机里的hex文件

8、编译生成hex文件

9、将hex文件导入单片机

Keil编程:51单片机键盘控制LED

#includereg51.h

#includeintrins.h

#define uchar unsigned char

uchar led1,led2;

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

void delay(int a)

{

uchar i;

while(a--)for(i=0;i120;i++);

}

main()

{

unsigned int i;

led1=0xfe;

led2=0xfc;

while(1)

{

P0=0x55;

if(key1==0)

{

P0=led1;

led1=_crol_(led1,1);

delay(200);

}

if(key2==0)

{

P0=led2;

led1=_crol_(led1,2);

delay(200);

}

if(key3==0)

{

for(i=1;i500;i++)

{

P0=0xff;

delay(i);

P0=0x00;

delay(500-i);

}

for(i=1;i500;i++)

{

P0=0x00;

delay(i);

P0=0xff;

delay(500-i);

}

}

}

}

keil编写一个程序,控制一排灯泡从两端开始亮,用C语言。。

很简单啊,假定用P1驱动灯泡,按下列步骤:

1、P1=0x81,表示1、8亮,延时一段时间;

2、P1=0x42,表示2、7亮,延时一段时间;

3、P1=0x24,表示3、6亮,延时一段时间;

4、P1=0x81,表示4、5亮,延时一段时间;

重复1-4步即可。

怎么在Keil C51 v709中写程序实现灯泡依次亮

在keil里新建一个工程并保存,再新建一个文本然后保存文本为main.c(名字随便去,但是格式要为.c) ,把下面的代码放到main.c里。点开(Target)旁边的+号(展开工程)看到

source Group 文件夹,选中右键菜单倒数第四个有Add files to Group"source Group",选择它,然后会打开文件夹选择刚才的main.c点添加(在右下角,点一下就可以了),再点Close。现在右键Target,有工程选项(右键菜单第一个),会打开选项卡,第三个选项卡output里勾选Creat hex file(产生hex文件),现在点工程菜单里有一个build target,就可以产生hex文件了,把文件下载到单片机里就好了。注意:单片机的P1口应该接7个LED灯,才会有这样的效果

代码如下(以下程序以单片机at89c51为例):

#include"reg51.h"

#define P1 GPIO1

void delay1s();

void main()

{

    GPIO1=0x80;      //初始化P1口       

    while(1)

    {

        if(GPIO1==0x00) GPIO1=0x80;       //实现P1口7个灯循环亮

        delay1s();                        //灯亮1S

        else GPIO1=GPIO11;              //下一个灯亮,使灯依次亮

     }

}

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

下面是用C51编写的简单程序:

#include reg51.h

#include intrins.h

sbit io_Key = P1 ^ 1;

sbit led1 = P1 ^ 2;

sbit led2 = P1 ^ 3;

sbit led3 = P1 ^ 4;

unsigned char ucCount = 0;

bit flag05s = 0;

//---------------------------------

void delay125us(void) //@12.000MHz

{

unsigned char i;

i = 60;

while (--i);

}

void Timer0Init(void) //10毫秒@12MHz

{

TMOD = 0xF0; //设置定时器模式

TMOD |= 0x01; //设置定时器模式

TL0 = 0xF0; //设置定时初值

TH0 = 0xD8; //设置定时初值

TR0 = 1; //开定时器0

ET0 = 1; //开定时器0中断

EA = 1; //开总中断

}

//T0中断用来计数器溢出

void zd0(void) interrupt 1

{

TL0 = 0xF0; //设置定时初值

TH0 = 0xD8; //设置定时初值

if(++ucCount = 50)

{

ucCount = 0;

flag05s = 1; //g_flag05s = isYes定时0.52秒到,用于测量周期延时

}

}

void main(void)

{

unsigned char CountTemp = 0, ucState = 0;

Timer0Init();

while(1)

{

//-------------------------------

//简单的按键检测程序:

io_Key = 1;

_nop_();

if( io_Key == 0 )

{

CountTemp = 0;

do

{

delay125us();

if( io_Key != 0 ) break;

} while(++CountTemp 160); // 延时20ms去抖动

if(CountTemp 160)//如果按键时间有效,改变状态

{

switch(ucState)

{

case(0):

{

ucState = 1;

led1 = 0;

led2 = 0;

led3 = 0;

}

break;

case(1):

{

ucState = 2;

led1 = 0;

led2 = 0;

led3 = 0;

}

break;

case(2):

{

ucState = 0;

led1 = 0;

led2 = 1;

led3 = 1;

}

break;

}

while(io_Key == 0); //等待按键释放

}

}

//------------------------------

//每0.5秒改变一下LED状态

if(flag05s == 1)

{

flag05s = 0;

switch(ucState)

{

case(0):

{

led1 = !led1;

led2 = !led2;

led3 = !led3;

}

break;

case(1):

{

bit ledTemp = led1;

led1 = led2;

led2 = led3;

led3 = ledTemp;

}

break;

//LED常亮可以忽略改变LED状态

/*

case(2):

{

led1 = 0;

led2 = 0;

led3 = 0;

}

break;

*/

}

}

}

}

//-----------------------------------------------

//上面程序中有很多地方可以优化,这里只是给出一个参考供学习。

361知讯网

本文链接:http://pdidw.com/keil/46132.html

发表评论

评论列表

还没有评论,快来说点什么吧~