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

用两个按键控制四个不同颜色的led灯,一个按键为复位键,另一个为转换键,从而实现控制不同的led灯点亮... 用两个按键控制四个不同颜色的led灯,一个按键为复位键,另一个为转换键,从而实现控制不同的led灯点亮 展开
 我来答
博学小赵爱生活
高能答主

2019-05-23 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111849

向TA提问 私信TA
展开全部

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类单片机既是通用型又是总线型,还可以作工控用。

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



宿兴电子
2024-10-18 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡... 点击进入详情页
本回答由宿兴电子提供
犹若枫mM
推荐于2017-09-19 · TA获得超过149个赞
知道答主
回答量:27
采纳率:0%
帮助的人:6.1万
展开全部

可以用外部中断计数,来实现流水灯的正转、暂停、以及反转和爆闪。。这是我前几天写的一个这样的程序,楼主可以结合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; 

  

}


}

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凯个平凡事
2014-04-10
知道答主
回答量:45
采纳率:0%
帮助的人:17.8万
展开全部
百度一下 郭天祥51单片机 有你需要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式