单片机亮灯程序怎么让8盏灯亮10次然后不亮?

 我来答
张哥小技术
推荐于2018-04-13 · TA获得超过324个赞
知道小有建树答主
回答量:178
采纳率:87%
帮助的人:92.9万
展开全部

用51单片机来简单说明一下:

用8只LED代表8盏灯(D1~D8),限流电阻用一个9脚排阻RP1,原理图如下:


为了视觉观察观察方便,用一个500ms,也就是0.5秒的延时程序来间隔灯的亮灭变化。当然这个时间是可以自由修改的,修改成1秒的话也可以,只是LED亮灭变化快慢不同而已。

下面是延时程序:

void delay500ms(void) //@12.000MHz

{

  unsigned char i, j, k;

  _nop_();

  _nop_();

  i = 23;

  j = 205;

  k = 120;

  do

  {

  do

  {

  while (--k);

  } while (--j);

  } while (--i);

}

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

前面原理图采用P1端口驱动LED,定义LED端口为P1:

#define   IO_LED   P1

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

当端口为0时灯亮,为1时熄灭,为了理解方便,用宏定义来定义LED亮灭,增加可读性,也便于理解,如下:

#define DATA_LED_OFF 0xff

#define DATA_LED_ON 0x00

(程序中写“DATA_LED_OFF”,在编译时编译器会自动编译“0xff”。)

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

用for循环语句实现LED点亮和熄灭10次:

for(i = 0; i < 10; i++)

{

  IO_LED = DATA_LED_ON;  //点亮LED

  delay500ms();

  IO_LED = DATA_LED_OFF;  //熄灭LED

  delay500ms();

}

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

完整的c源程序如下图:


以上仅供参考。

11kxmx
2016-10-26 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2487万
展开全部
C语言很简单的,假设8盏灯由P0口控制,0为灭灯
void main(void)
{
uchar i;
for(i=0;i<10;i++)
{
P0=255;//亮
delayms(500);//延时500ms
P0=0;//灭
delayms(500);//延时
}
P0=0;//可以不要
while(1);//停止
}
void delayms(uint i) //1ms延时程序,硬件不同,延时时间不同
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式