用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

作者&投稿:闫赖 (若有异议请与网页底部的电邮联系)
在线等,急,用C语言编程,实现单片机控制两个LED灯:当S1开关闭合时,两个LED灯交替闪烁?~

判断开关对应的端口电平,改变led对应端口即可。
交替闪烁就是在循环中让两个LED端口交替高低电平。
循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。

#include
#define uInt unsigned int
sbit D1=P2^0;
sbit D2=P2^1;
sbit S1=P3^2;
voidmDelayuS( uInt us );
void main()
{
if(S1)
D1=D2=0;
while(S1==0) D1=!D2,mDelayuS(1000),D2=D1;

}
voidmDelayuS( uInt us )
{
while ( us -- ); /* 24MHz MCS51 */
}

bit flash;//闪烁标志位
sbit led=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
void main()

{
P01=P02=0;
flash=0;
led=0;
while(1)
{
scankey();
ledflash();
}
}
void scankey()//键盘扫描
{
P01=1;//行线给1
if(P02)//如果P02也是1则说明接通
{
delay(10);//去抖动10MS
if(P02)//再次确定按键按下
{
while(P02){flash=flash}//按住按键的动作
flash=~flash;//按键按下后执行动作
}
}
}
void ledflash()
{
if(flash)
{
led=1;//点亮
delay(100);//延时100MS
led=0;//熄灭
}
else led=0;
}
void delay(unsigned int i)
{自己根据单片机频率写个1MS带形参的演示程序}

这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)

C语言实现LED灯闪烁控制配套51单片机开发板。

#include    //包含单片机寄存器的头文件

/****************************************
函数功能:延时一段时间

*****************************************/

void delay(void)        //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i;       //定义无符号整数,最大取值范围65535。

for(i=0;i<20000;i++)  //做20000次空循环。

;               //什么也不做,等待一个机器周期。

}

/*******************************************************

函数功能:主函数 (C语言规定必须有也只能有1个主函数)。

********************************************************/
void main(void) 

{

while(1)      //无限循环。

{

P0=0xfe;   //P1=1111 1110B, P0.0输出低电平。

delay();   //延时一段时间。

P0=0xff;   //P1=1111 1111B, P0.0输出高电平。

delay();  //延时一段时间。

}

}

单片机驱动LED灯的源程序:

#include<reg52.h> //头文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定义。

void delay_ms(uint);//mS级带参数延时函数。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延时子程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

扩展资料:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:百度百科-单片机





可以用外部中断计数,来实现流水灯的正转、暂停、以及反转和爆闪。。这是我前几天写的一个这样的程序,楼主可以结合protues 画图仿真,注意程序中所用到的IO端口就行了。

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

uchar a,b;

void delay(uchar z)

{

  uchar i,j,k;

  for(i=z;i>0;i--)

  for(k=20;k>0;k--)

  for(j=110;j>0;j--);

}

 void begain()

  {

EA=1;

EX0=1;

IT0=1;

    }


void main()

{  a=b=0;

   P0=0xfe;

   begain();

   while(1)

{

if(a==1)

{

  P0=_crol_ (P0,1);

   delay(50);

}

  if(a==3)

    {

  P0=_cror_(P0,1);

   delay(50);

}

    if(a==4)

{

 P0=0x00; 

 delay(50);

 P0=0xff;

 delay(50);

 P0=0xfc;

 

}

if(a==5)

{

a=1; 

  

}

}


}


void int0() interrupt 0

{

a++;

if(a==5)

{

a=1; 

  

}


}



百度一下 郭天祥51单片机 有你需要的


...单片机,用4*4矩阵键盘输入数据,并在LCD1602上显示出来的c语言...
void lcd1602_WriteCmd(const uchar cmd){lcd1602_CheckBusy();lcd1602_rs=0;lcd1602_rw=0;lcd1602_e=1;LCD1602_PORT=cmd;lcd1602_e=0;} \/*** 函数名称:lcd1602_WriteData()* 函数功能:写数据* 入口参数:c--待写数据* 出口参数:无***\/ void lcd1602_WriteData(const uchar c){lcd1602_...

用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压...
用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压值在0~5V之间的方波。#include<reg52.h> //包含头文件#include<intrins.h>#define uchar unsigned char /

一个用C语言做51单片机做流水灯控制向左移动一位,右边补0的一段程序...
\/\/右边补0,直接移位就可以temp<,=1; 如果流水灯只有一个亮,下面的程序就是对的,移位之后补1.include "reg51.h"void delay(unsigned char m);main(){ unsigned char temp;temp=0xfe; \/\/temp=1111 1110,使得P1口的某个引脚为低电平(亮)while(1){ P1=temp; \/\/P1口的数据来自...

单片机,C语言编程的问题,编一个程序。
DispBuf[5-i]=m%10; \/\/为便于理解,楼主可随写几个6位以内数字,推敲该小段程序即可 m=m\/10;} } void mDelay(uint Delay) \/\/延时程序 { uint i;for(;Delay>0;Delay--)for(i=0;i<124;i++);} main() \/\/中断方式{ unsigned long m;P1=0xff; \/\/流水灯禁用 P0=0xf...

以51单片机为基体 用C语言设计一个计数器 要求显示数据8位 有复位功 ...
void dis_cnter(void) 显示计数器值子程序开始 {uchar i; 定义字符型局部变量i P3_7=1;P3_6=1; 消隐有效,允许显示 for(i=0;i8;i++) 循环8次 {SBUF=SEG7[cnt];while(!TI);TI=0;} 根据8个单元的计数值查表发送显示 P3_7=0; 关闭消隐,正常显示 } 显示计数器值子程序结束 void ...

单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED...
\/\/不懂得可以查一下资料 }。3、打开烧写软件,点击【打开文件】,寻找刚刚编写的程序。4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。6、程序下载进单片机以后就能够看到八个led点亮了前面三个。

高分 急 C语言编写 单片机 关于电子钟的程序
const scan[]={0xFE,0xFD,0xFB,0xF7,0xef};\/\/选定第几个数码管 typedef struct\/\/定义时间结构体 { char week;\/\/星期 char hour;\/\/小时 char minute;\/\/分 char second;\/\/秒 } time;unsigned char timer0_tick,i=0,keyA=0,keyB=0,mode=0;time now;static void timer0_isr(void...

需要一个C语言程序。51单片机控制:按键按一下,延迟1分钟后开灯,灯亮半...
如果对时间要求不精确,用软延时即可。include<reg52.h> define uchar unsigned char define uint unsigned int sbit s=P1^0;sbit led=P1^1;void delayms(uint i) \/\/1ms延时程序 { uchar j;for(;i>0;i--){ for(j=0;j<125;j++)\/\/如果延时时间误差较大,可按比例改变125这个数 \/\/取值...

用C语言编写,单片机89C51控制,四个按键控制灯亮,用一个P3口控制8个LED...
\/*图片上的P3.3口不接,LED 正端接个470欧电阻到5V电源,LED负端接P3口*\/ include"c51.h"include"stdio.h"define Key0 P1^0 define Key1 P1^2 define Key2 P1^3 define Key3 P1^4 define LED0 P3^0 define LED0 P3^1 define LED0 P3^2 define LED0 P3^...

...让前三个LED灯分别以1ms,1s,5s的频率闪烁,怎么用c语言写,谢谢...
LED1 1ms闪烁人眼分辨不出来 定时器设定为16位定时50ms 另设一变量作定时器中断计数,到10(0.5S)的倍数时LED2取反,到50(2.5S)的倍数时LED3取反 include<reg52.h> sbit led1=P0^0;sbit led2=P0^1;sbit led3=P0^2;unsigned int count;void main(){ TMOD=0x01; \/\/定时器0...

鄢陵县17865389881: 单片机控制一个led灯亮灭C编程 -
蔚萱噻吗: #include <reg52.h> //52系列单片机头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; //声明单片机P1口的第一位 void delay1s(); //声明子函数 void main() //主函数 {while(1) //大循环{led1=0; /*点亮第一个发光二极管*/delay1s...

鄢陵县17865389881: 51单片机控制led亮5分钟灭五分钟循环5次 c程序怎么写? -
蔚萱噻吗: -(void) processDigit:(int)digit{ currentNumber = currentNumber *10 + digit;[displayString appendString: [NSString stringWithFormat : @"%i",digit]]; display.text = displayString;}-(IBAction) clickDigit: (UIButton*) sender{ int digit = sender.tag; [self processDigit:digit];}

鄢陵县17865389881: 单片机C语言按键控制LED灯 -
蔚萱噻吗: 其实是一样的,也没什么哪个规范这一说,这个看个人习惯了首先if(SW13==0)是判断此引脚是否为0 (按键按下)然后一个delay用于按键防抖动 没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮然后通过while...

鄢陵县17865389881: keil软件用单片机控制8个LED流水灯来回点亮(C语言程序) -
蔚萱噻吗: #include "reg51.h"main(){unsigned int i,j;while(1){P1=0xfe; //点亮第一个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfd; //点亮第二个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfb; //点亮第三个LEDfor(i=200;i>0;i--)for(j=500;j>...

鄢陵县17865389881: 单片机控制单个LED闪烁五下的c程序,希望能加讲解,谢谢啦 -
蔚萱噻吗: c语言程序很简单: #include<reg51.h>//包含头文件 sbit LED=P1^0;//位变量定义 void main()//主程序 { unsigned char i;//声明一个变量 for(i=0;i<5;i++)/循环5次 { LED=0;//亮 delayms(500);//延时 LED=1;//灭 delayms(500);//延时 } while(1);//停止不动 } 延时子程序随便搜一个,如果时间差别太大,可调某些参数

鄢陵县17865389881: 用C语言编写,单片机控制LED灯并用定时器延时,每隔一秒使LED依次点亮 -
蔚萱噻吗: 定义一个引脚,用一个while,分别赋值0.1,中间用delay()

鄢陵县17865389881: 单片机 用c语言编写 一个按键切换led样式 -
蔚萱噻吗: 将按键一边接单片机I/O口,一边接地.这样,按键按下时,该I/O口为低电平,未按下时是高电平(单片机上电后I/O口默认为高电平),假如按键接在了P1^0口,程序如下 #include<reg52.h> sbit key=P1^0; void main() {while(1){if(key==0){(led样式1程序)else{(led样式2程序)}}} } 这样,当按键按下时,led是样式一;松开时是样式二

鄢陵县17865389881: 跪求高手解决一个单片机的C语言编程(LED实验)
蔚萱噻吗: /**************************************** **实验功能: ** 8个LED灯,先闪烁3次,再从左到右依次亮 ** 再从右到左依次亮,亮的时间延时1秒 ****************************************/ #include <AT89X52.H> void delay1s(void) { unsigned int uiTemp1 ; ...

鄢陵县17865389881: 信号变化控制led灯的亮灭,单片机c语言编程 -
蔚萱噻吗: 首先要看Led灯和单片机的连接情况,如果你只是控制亮灭,只需要看单片机端口控制即可,关键是配置端口的DDRx方向寄存器和PORTx数据寄存器,比如端口A的0引脚控制一个灯,要配置它的输出高电平或是低电平以达到控制灯的亮灭,那就 灯亮:DDRA |= BIT(0); //输出 PORTA |= BIT(0);//高电平 灯灭:DDRA |= BIT(0); //输出 PORTA &= ~BIT(0);//低电平 其余的就看你电路如何连接的,每个端口寄存器的每一位控制一个引脚,你可以查查芯片的数据手册,上边有个表格的.如果你要控制灯的亮暗程度,选择使用PWM输出来控制,你需要看定时计数器.

鄢陵县17865389881: 51单片机控制led灯,用c语言编程 -
蔚萱噻吗: 给你一个矩阵键盘的参考程序 行列扫描:通过高四位全部输出低电平,低四位输出高电平.当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网