51单片机怎么只控制一颗LED灯闪烁

不是指P0 P1 P2 P3控制,这样控制都是8颗灯,我要的是假设只由P10这个引脚控制一颗LED灯闪烁,其他都不要做。下面是我编程的一部分,延时函数没写出来
#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器

void delay(unsigned int i); //声明延时函数

main()
{

P10 = 0x00; //置P0口为低电平

delay(600); // 延时

P10 = 0xff; //置P0口为高电平

delay(600); // 延时

}为什么这样子不行呢,如果P10改为控制8颗灯得P1等就可以,希望解释,顺便给出正确的程序哦

1、新建项目,如图所示。

2、添加头文件,创建延迟函数。

3、创建C主函数。

4、添加死循环效果。

5、点亮LED灯。P1=0x7e;二进制11111110。

6、添加延迟效果。

注意事项:

很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-24
首先你要知道既然是控制一个LED灯的话,那么就只需要一个IO口控制就可以了。那么在程序中你只需要改变一个IO口的状态。
你这个程序首先是,P10是什么东西,如果是一个IO口的话,为什么后面会是0X00,和0XFF,这是什么意思, 这是八位的表示方式,一位需要用这么多的数据来表示么。你只需要置1,和清零就可以了。就是说 P10 = 0;P10 = 1,这种方式的就可以了。而且你还需要在程序的最开始定义P10是什么东西的。单片机是不知道P10 是什么的。
如果是一个八位端口的话,这样定义是没有错的。但是控制的就是8个IO口了。本回答被提问者采纳
第2个回答  2011-07-21
因为P1^0是P1的第零位,只能赋值0或者1;而P1是一个8位寄存器
正确程序如下:
#include <reg51.h>
sbit led=P1^0; //P1^0这个端口接led
void delay(unsigned int i);
main()
{
while(1)
{
led=0;
delay(600);
led=1;
delay(600);
}
}
void delay(unsigned int ms)
{
unsigned int x,y;
for(x=ms;x>0;x--)
for(y=100;y>0;y--);
}
第3个回答  2011-07-21
void delay(unsigned int i); //声明延时函数

main()
{

P1 = 0x00; //置P0口为低电平

delay(600); // 延时

P1 = 0x01; //置P0口为高电平

delay(600); // 延时
第4个回答  2011-07-21
你先定义 sbit P10 = P1^0; 要想把P10设为0,就直接写 P10 = 0;设为1,就写P10 = 1;0x00和0xff是8位数据不能给一个位的。

51单片机C程序实验LED灯:[1]单个灯闪烁
该延时子程序通过循环计数来实现延时功能。在主程序中调用该延时子程序,即可控制LED灯的闪烁频率。主程序的具体实现如下:c void main() { while(1) { \/\/ 点亮LED \/\/ 关闭LED delay(1000); \/\/ 延时1秒 } } 在主程序中,通过循环调用点亮和关闭LED的操作,并在每次操作之间调用延时子程序,从而...

51单片机怎么只控制一颗LED灯闪烁
1、新建项目,如图所示。2、添加头文件,创建延迟函数。3、创建C主函数。4、添加死循环效果。5、点亮LED灯。P1=0x7e;二进制11111110。6、添加延迟效果。注意事项:很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要...

51单片机怎么用c语言写一个按钮控制一个led的闪烁,按一下开始闪烁,再按...
led=1;\/\/点亮 delay(100);\/\/延时100MS led=0;\/\/熄灭 } else led=0;} void delay(unsigned int i){自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)...

51单片机C程序实验LED灯:[1]单个灯闪烁
程序清单 说明: 先写的延时子程序,放在了前面 然后是闪烁的主程序 includereg51.h sbit led=P1^0; \/\/延时子程序 void delay() { int i; for(i=0;i=30000;i++); } \/\/主程序 void main() { led=0; while(1) { led=~led; delay(); } } 完成结果仿真图 (tip:双击单片机,选...

51单片机 2个独立按键控制一个led
if(!k1) { \/\/先检测二级开关 delay1(10); \/\/消抖 if(!k1) { while(!k1); \/\/等待松开 \/\/松开后,再检测 k3:if(!k3) { \/\/再检测总开关 delay1(10); \/\/消抖 if(!k3) { while(!k3);\/\/等待松开 LED = ~LED;\/\/亮灭交替 } } } } ...

用单片机控制一个灯闪烁
include<reg51.h> \/\/包含51单片机寄存器定义的头文件 void main(void){ while(1){ P1=0xfe; \/\/P1=1111 1110B delay();P1=0Xff;\/\/灯灭 delay(); \/\/延时 } } void delay() \/\/ 延时程序 { int i,j;for(i=100;i>0;i--)for(j=100;j>0;j--);} 延时程序里面i,j的数字...

怎样用51单片机设计三个按键控制一个灯的程序,C程序
程序如下 include<reg51.h> sbit led1=P1.0;sbit key=P1.1;sbit key1=P1.2;sbit key2=P1.3;void main(){ while(1){ if((key|key1|key2)==0){led1=~led1;while((key|key1|key2)==0);} } 没试过 可能有些地方不对 你自己改改 反正思路就这样了 ...

51单片机一键控制一个LED,每按一下按键LED闪烁一种频率,共闪烁三种频 ...
while(1) { switch(n) { case 0: led = 1; readkey(); break; \/\/熄灭 case 1: delay(); readkey(); \/\/慢速闪烁 case 2: delay(); readkey(); \/\/中速闪烁 case 3: delay(); readkey(); led = ~led; \/\/快速闪烁 } } } ...

51单片机一个IO口只能控制一盏LED灯吗?
1. 一般而言,如果不接其他IC在中间,只能控制一个灯:进制里有“码”的概念,使用二进制的单片机的一个I\/O口只能输出高电平或低电平,那么就只有开关两种状态。既然如此,使用一个IO口便只能控制外围的一个开关状态。开关则对应led灯的亮暗。2. 引申一下,多个io口则是可以控制多个开关,如果简单点...

单片机如何让数码管每一位单独闪烁?
什么叫单独闪烁?是每一位显示不同的东西还是只显示一位?如果是显示不同的东西就是用循环 依次选择每一位 然后送数据 之后选择下一位 送数据 这样循环 如果是只显示一位是只选择一位就可以了

相似回答