需要一个C语言程序。51单片机控制:按键按一下,延迟1分钟后开灯,灯亮半个小时就熄灭的程序?急需!

作者&投稿:芝剂 (若有异议请与网页底部的电邮联系)
各位大神帮我编写一个c51单片机延时程序,功能:按一下开关LED亮10秒后熄灭。~

用定时器计时10就可以了,检测到按键按下后启动定时器,在定时器的中断函数里判断到了10秒就关闭LED

#include
#define
uint
unsigned
int
sbit
LED
=
P1^0;
sbit
KEY1
=
P1^2;
void
delay(uint);
void
main(void)
{
LED
=
1;
//初始化LED熄灭
KEY1
=
1;
//赋值KEY1高电平
while(1)
{
if(!KEY1)
//检测到按键按下
{
LED
=
~LED;
/*LED取反,此时LED
=
0,灯亮。当松手时,KEY1
=
1,不满足if语句不
进入循环,LED继续保持当前状态即LED
=
0,如果再次按下按键,此时检测到KEY1
=
0,进入循
环,LED取反得到LED
=
0,灯亮。*/
delay(500);
/*此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。*/
}
}
}
void
delay(uint
z)
//延时函数
{
uint
x,
y;
for(x=85;
x>0;
x--)
for(y=z;
y>0;
y--);
}
可下载到单片机验证。

如果对时间要求不精确,用软延时即可。
#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这个数
//取值范围0-255,数值越大,延时越长
{;}
}
}
void delay1s(uint i) //1s延时程序

{
for(;i>0;i--){delay1ms(1000);}
}

void main()
{
led=0;

while(1)
{
if (s==0)
{
delayms(20);
if (s==0);{delay1s(60);led=1; }
}
if(led==1){delay1s(1800);led=0; }
}
}
如果对时间要求精确,则要用到定时器,还要确保电路外接有晶振,并已知晶振频率


用C语言怎么编写一个从1加到10的程序...新手求解
include <stdio.h> void main(){ int n;int sum=0; \/\/初始sum变量值为0;for(n=1;n<=10;n++){ sum=sum+n; \/\/从一加到10;} printf("1+2+...+10=%d",sum);}

如何用c语言编写程序,输入一个数n不一定是整数,判定n是小于0,等于0还是...
```c include <stdio.h> int main() { double n;printf("请输入一个数:");scanf("%lf", &n);if (n < 0) { printf("输入的数是负数\\n");} else if (n == 0) { printf("输入的数是零\\n");} else { printf("输入的数是正数\\n");} return 0;} ```在程序中,首先...

用C语言编写一个能被7整除数的个数的程序。
函数调用后,函数将回到下一条指令。2、使用FOR(;;)或While(1)如果goto语句已经过时,那么对程序创建无限循环应该如何去做呢,这是一些硬件工程师可能会疑惑的问题。毕竟,之前都是通过创建一个goto语句然后再返回到main语句。解决这一问题就要利用C语言中已经存在的循环语句for和while。

用C语言编一个计算圆周率的程序,用户输入指定位数,并计算到指定位数(精 ...
int a,b,c,d,e,f[2801],g,i,n;char pi[801]="",t[5]="";for(a=10000,b=0,c=2800;b-c;f[b++]=2000);\/\/a\/5 for(i=e=0;d=0,g=c*2;c-=14,e=d%a){ for(b=c;d+=f[b]*a,f[b]=d%--g,d\/=g--,--b;d*=b);n=e+d\/a,t[0]=t[1]=t[2]=t[3...

用C语言编写一个简单程序,有哪些步骤,可以举一个例子详细讲解下吗?_百 ...
return 0;\/\/最后,因为main函数有一个int的返回类型限定,那么我们使用return语句返回一个int类型的值 0.} \/\/这样就结束了。一个简单的但又完整的C程序就有了,\/\/下一步就是使用编译器编译成目标的可执行文件:\/\/如果是windows下的vc++,那么需要分别点击编译,链接两个按钮生成hello.exe可执行文件...

c语言设计一个简单的计算器程序
scanf("%d%d",&i,&j);//输入要计算的数值 switch(select){ case1:printf("%d+%d=%d\n",i,j,num=i+j);//实现加法功能 break;case2:printf("%d-%d=%d\n",i,j,num=i-j);//实现减法功能 break;case3:printf("%d*%d=%d...

用c语言编写一个程序,要求如下
源程序在这里,Win7+C-Free 5.0测试通过 先上截图 include <stdio.h> include <string.h> define MAXLEN 20 \/\/数组长度 void input(); \/\/输入P\/Q void mul(); \/\/多项式乘法 void outputS(); \/\/输出S int main(void){ float p[MAXLEN],q[MAXLEN], \/\/p,q输入元素...

vs怎么创建c语言项目
在Visual Studio中创建C语言项目,可以按照以下步骤进行: 1.打开Visual Studio程序,点击“创建新项目”。 2.在新弹出的界面中,选择“C++”选项,因为C语言是基于C++的。 3.进入Visual Studio主界面后,在右边的“解决方案管理器”中找到“源文件”,右键点击并选择"添加”,然后选择“新建项”。 4.在弹出的窗口中,...

C语言编写一个程序,急用!!高分悬赏(正确答案追加分数)
include <stdio.h> include <stdlib.h> include <conio.h> include void Menu();void Plus();void Minus();void Multiply();void Dir();int main(){ int n, flag = 0;while(1){ Menu();do { flag = 0;scanf("%d", &n);switch(n){ case 1: Plus(); break;case 2: Min...

用C语言设计一个学生信息查询系统程序
1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。2、编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。3、在源文件中创建main源文件和Stu源文件。再main文件中写入int mian()代码。4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。5、在Stu源文件的...

新宾满族自治县13894577352: 需要一个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++)//如果延时时间误差较大,...

新宾满族自治县13894577352: 51单片机C语言控制按键蜂鸣器 -
茌向通络: unsigned char flag=1; //定义上升沿ready标志 while(1) {if(key1&&flag) // 默认key1下拉至GND,若产生上升沿,则响一次,同时清零标志 {SPK=1;delay();SPK=0;flag=0;}if(!key1) { flag=1;} //检测key1是否归零 准备第二次上升沿,是,则标志位置1...... } 仅供参考

新宾满族自治县13894577352: 求一个51单片机的多路温度控制系统的C语言程序. -
茌向通络: #include<reg52.h> #include<math.h>#include<INTRINS.H>#define uchar unsigned char#define uint unsigned int;/******************************************************************//* 定义端口 *//******************************************************************/ ...

新宾满族自治县13894577352: 在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按键全部灯亮,按下按键全部灯灭) -
茌向通络: 你首先要确定你的电路.选择什么单片机和数码管,8个按键最简单8个IO口控制.一般简单的是用三极管驱动数码管.如果你会C语言的话,很容易上手.自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个...

新宾满族自治县13894577352: 急求简单51单片机控制电路C语言程序
茌向通络: 【2011-3-8已更新,有结果吱一下】 砖头如下: #inlcude &lt;reg51.h&gt; sbit OUT=P2^0; sbit Key=P3^3; #define DELAYCONST 50000// #define DELAYCONST2 20//简单的定时参数设定. void Delay(char j) { unsigned int k,l; for(j=0;j&lt;60;j++) ...

新宾满族自治县13894577352: 用c语言控制51单片机 发出一个高电频1信号从而带动一个小马达的程序怎么写 -
茌向通络: 比如你接到P0.0口上,你可以这样定义和引用:sbit MD=P0^0; MD=0; //马达不动作 MD=1; //马达动作 你的马达工作电压是多少啊?单片机的驱动电流都很小,应该带不起来的,建议你使用IO连接到一个三极管上面,用三极管驱动!如果想驱动几个电机的话就用uln2004驱动!

新宾满族自治县13894577352: 求一个51单片机简单的中断C语言程序 -
茌向通络: #include //头文件#define uint unsigned int //宏定义,如果你不嫌麻烦可以直接省略#define uchar unsigned char void delay(uint); //字程序声明 sbit D1=P1^0 ; //位定义 第一盏灯 sbit D2=P1^1 ; //第二盏,同上 sbit D3=P1^2 ; // 3 sbit D4=P1^3 ; ...

新宾满族自治县13894577352: 急求51单片机计数器的C程序!!! -
茌向通络: #include "reg51.h" unsigned char time; void main() { EX0=1; //开外部中断 IT0=1;//设置边沿触发 EA=1; //开放全局中断 while(1) { P0=~time; // 通过P0口的LED显示出计数值(二进制形式) } } void INT_0() interrupt 0 { while(INT0==0); time++;//每按下一次计数加1.}

新宾满族自治县13894577352: 用51单片机控制固态继电器的通断的C语言程序 -
茌向通络: .......... int key_number=0;while(这里填判断你按键按下的代码) {if(key_number=0) //第一次按下 {..... // 省略处根据自己的要求补上你的代码key_number+=1;} else if(key_number=1) //第二次按下{.....key_number+=1;}else if(key_number=2) //第三次按下{.....key_number+=1;} } .........大概是这样

新宾满族自治县13894577352: 51单片机,c语言编程 一个按键控制6盏灯 第一下所有灯灭(不管灯亮灭) 第 -
茌向通络: #include#define u16 unsigned int#define u8 unsigned char sbit key=P2^0; u8 count=0; u8 sk(){ static u8 ms; if(key==0){ if(ms if(ms==5){ return 0; } } return 1; } void main()//主函数 { while(1){ if(sk()==0){ count++; switch(count){ case 1:P1=0xff;...

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