如何编写一个C程序使51单片机LED灯按下列要求点亮

我想让第一和第八个先同时亮,延时一会再让第二和第七同时亮...然后交替回到第八和第一同时亮,请问这个C语言程序该怎么写,如果是闪烁的亮最好(追加分),这里给出灯亮、闪烁的例子和例图。

一、灯亮例程

#include<reg51.h>

/*
让任意一盏灯亮起来 这里暂时让第一盏灯亮起来
*/

sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;//只是先声明4个位

//注意:上述 P1为 大写的P 输出低电平(0)点亮灯 高电平(1)熄灭灯
//另外 变量要先声明再使用 不要在下面随便使用没有声明的变量

void main()
{

//======点亮一盏灯===========================================================
//方法一: 用特殊位变量 (sbit)指定特定灯亮
p10=0;//第一盏灯亮

//方法二: 用P10口整体来整体指定
P1=0XFE;//第一盏灯亮

//======点亮两盏灯===========================================================
//方法一: 用特殊位变量 (sbit)指定特定灯亮
p10=0;//第一盏灯亮
p11=0;//第二盏灯亮

//方法二: 用P10口整体来整体指定
P1=0XFC;//第一盏 第二盏 灯 同时亮 (1111 1100)

//点亮多盏灯 只要让相应位等于0即可

while(1);//暂停
}

二、灯闪例程
#include<reg51.h>

/*
让任意一盏灯闪烁起来 现在让第一盏灯闪烁起来 让其他等或者让多盏灯闪烁 原理是一样的
*/

sbit p10=P1^0;

//注意:上述 P1为 大写的P 输出低电平(0)点亮灯 高电平(1)熄灭
//另外 变量要先声明再使用 不要在下面随便使用没有声明的变量

void main()
{
int i=0;

while(1)//使用 while(1) 是让灭与亮不停的切换 否则亮了一下灭一下 就没了
{
p10=0;

for(i=0;i<40000;i++);//亮一会
//===============================================
p10=1;

for(i=0;i<40000;i++);//灭一会
//亮一会 灭一会就会造成闪烁的效果
}
}

三、单片机仿真板图
如下:5号灯亮

void main() { P1=0XFF; /*定义初始状态为全灭*/while(1) { delay(2000); P1=0X7e; delay(2000); P1=0Xbd; delay(2000);P1=0Xdb;delay(2000); P1=0Xe7; delay(2000); P1=0Xdb;delay(2000); P1=0Xbd;delay(2000); P1=0X7e; delay(2000); P1=0XFF; /********此循环使得发光二极管按照07,16,25,34,43,52,61,70的顺序循环交替两两点亮*******/} /*end while*/}/*end main*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-22
呵呵!你是这个题来依于《单片机C语言轻松入门》,正是用这块实验仿真板,
我们正也是用这本书的,不过快学完了,
不晓上面那几个朋友怎么样咯,我呢,也帮你写了个
看我的吧:

#include<reg51.h>
#include<intrins.h>
void mDelay(unsigned int Delay);
unsigned int i;
unsigned code table[]={
0x7e,0xbd,0xdb,0xe7,
0xe7,0xdb,0xbd
};

void main()
{

P1=0xff;
for(;;)
{
for(i=0;i<7;i++)
{
P1=table[i];
mDelay(15000);
if(i==7)
i=0;
}
}

}

void mDelay(unsigned int Delay)
{
unsigned int i;
for(;Delay>0;Delay--)
for(i=0;i<124;i++)
{;};
}

我在Keil 里帮你调试了下,可以出结果,但不晓得是不是你想要的结果,
我想这样写你比较容易理解,若对了,也要说声谢谢噢
还有什么问题,可以补充…………
第2个回答  2009-03-22
//看看吧!这个肯定行;

#include<reg52.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

//**********************毫秒延时子程序******************125****//
void delay(uint n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<330;j++){}
}

void main()
{
P1=0XFF;
while(1)
{
delay(2000);
P1=0X7e;
delay(2000);
P1=0Xbd;
delay(2000);
P1=0XFF;
}
}
第3个回答  2009-03-23
#include<reg51.h>
main()
{
int i;
while(1)
{
P1=0X7E;
for(i=10000;i>0;i--);
P1=0XBD;
for(i=10000;i>0;i--);
P1=0XDB;
for(i=10000;i>0;i--);
P1=0XE7;
for(i=10000;i>0;i--);
}
}
第4个回答  2009-03-22
太深奥了
相似回答