❶ 用c语言编写一个单片机控制LED灯闪烁三次的程序,急求!
# P1上接LED等。
#include "reg51.h"
void delayms(unsigned int x)
{
int i,j;
for(i=x;i>0;i--)
for(j=0;j<120;j++);
}
void main(void)
{
char i;
for(i=0;i<6;i++)
{
P1 = ~P1;
delayms(1000);
}
while(1);
}
❷ led的闪烁次数~~~c语言
给count+1执行的时间并不是1秒 而是一个指令周期的时间 ,是很短的一个时间 ,如果需要精确的1秒 就要用到定时/计数器,用51系列举例,在12M晶振的环境下,无法直接设置1秒的定时器参数,因为最大也就65535微妙,你可以用定时中断加一个计数器的方式实现1秒的定时,比如设置50毫秒定时中断,计数20次,即实现了你得要求。
❸ 想用c语言写一个按键控制小灯闪烁的程序,就是按一下闪烁,再按就熄灭
具体是怎么个不行法。
像你这种按键程序
因为单片机速度非常快,在你按一下按键时,单片机已经循环了很多次程序。
因此这样就会导致,当你按下时,其实k一直==0 一直在执行动作。
所以这种按键需要判断按键是第一次按下(由弹起状态下按下)。而不是一直按着导致的动作。
方法:建一个变量保存上一次按键的值
charLastKey;
LastKey=1;
while(1)
{
if(k==0&&LastKey==1)//按下,且上一次检测按键时是弹起状态
{//这样才能保证每次按下时只执行一次,
//而不是一直在执行
Delay1ms(20);
if(k==0)//确定是第一次按下,执行动作
{
if((n%2)==0)
{
LedFlash();
}
else
{
P0=0xFF;
}
n++;
}
}
LastKey=k;//保存按键状态
}
❹ 用c语言编写单片机按键控制多个led灯闪烁。按一次全亮,再按次全灭;长按5s流水灯模式,再按灭。
你可以简单地认为单片机只能输出5V或者0V的电压 分别对应1和0,那么LED灯的另一端接地或者接5V,如果你 的单片机输出5V接到LED灯,LED灯另一端接地 , 那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理。时间方面可以写大致的延时,或者用定时器,这样就比较精确了,你学会了这个就可以说入门了。
❺ stc89c52单片机C语言编程:按下第1个键3次,才能使8个LED灯左循环闪烁1次
我给你提供一个思路:
1:按键处理部分,定义一个按键变量x,在按键按下后松手变量x加1,判断按键变量
if(x >= 3)
{
x = 0;
处理8个LED灯的函数.............................
}
❻ 单片机控制单个LED闪烁五下的c程序,希望能加讲解,谢谢啦
c语言程序很简单:
#include<reg51.h>//包含头文件
sbit LED=P1^0;//位变量定义
void main()//主程序
{
unsigned char i;//声明一个变量
for(i=0;i<5;i++)/循环5次
{
LED=0;//亮
delayms(500);//延时
LED=1;//灭
delayms(500);//延时
}
while(1);//停止不动
}
延时子程序随便搜一个,如果时间差别太大,可调某些参数
❼ 求单片机c语言程序:当按下按键不放时,led小灯闪5下暂停一会,再闪5下再暂停一会,如此循环(灯看起来是5
#include<reg51.h>
sbit key=P1^0;
sbit led=P1^1;
unsigned char count;
void delayxms(unsigned int xms)
{
unsigned x,y;
for(x=xms;x>0;x--)
for(y=125;y>0;y--);
}
void main()
{
while(1)//进入大循环
{
while(key);//无按键的话,程序等待在此处
delayxms(15);//消抖
while(key);
while(!key)//说明key按下了,如果key没有松开执行本循环体
{
led=~led;
delayxms(500);//间隔1s点亮一次
count++;
if(count==10)//说明闪烁到第5次了
{
count=0;//清计数变量
delayxms(2000);//较大延时2秒
}
}
key=led=1;
count=0;
}
}
❽ c语言 LED灯闪烁程序实现P1、P2口闪烁三次熄灭,到P3、P4口闪烁三次在熄灭 回到开始在循环, 谢谢各位!急
sbit P10=P1^0;//控制LED闪烁
unsigned char count=0;//计数变量
void main()
{
TMOD = 0x01; //设定时器0为模式1,16位模式
TH0=0xdc;
TL0=0x00; //设定时值为10ms,此时晶振频率是11.0592MHZ
//若晶振频率是12MHZ,则初值应为 TH0=0xd8; TL0=0xf0;
ET0 = 1; //定时器0中断打开
EA = 1; //允许CPU中断
TR0 = 1;//启动定时器0
while(1)
{
if(count==40) //0.4秒时间是否到
{
count=0; //计数变量清零,为下一次计数做准备
P10=!P10; //IO口取反,即LED亮灭变化
}
}
}
//定时器0中断处理子程序
void Time0() interrupt 1 using 0
{
TH0=0xdc;
TL0=0x00; //设定时值为10ms
count++; //计数加一
}
另外,团IDC网上有许多产品团购,便宜有口碑
❾ 用单片机c语言一个按键控制led的闪烁和熄灭,就是按一下闪烁,再按就熄灭。
首先你的贴出来的程序不完整,最好贴出完整代码!
其次,如果你的程序没问题的话,你的LED闪烁是必须在你按住按键且不能弹起情况下才会发生的,你是一直按着吗?
而且注意你n的类型,因为你这样一直加,会溢出的
❿ 求一单片机C语言程序,功能是按键按了几下,过了几秒后LED灯亮。例如按了10下按键,过了10秒后LED才亮。
#include <reg51.h>
#include <intrins.h>
sbit P2_0=P2^0; //led
sbit K1 =P1^4 ; //按键
void delayms(unsigned char ms);
void main()
{
unsigned char i=0;
while(1)
{
while(K1==0)
{
i++;
if(i>=10)
{
delayms(10*1000);//延迟10秒
P2_0=0;//点亮led
}
}
}
}
void delayms(unsigned char ms) // 延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
因为手边没有at89s52的单片机所以按照上学时候的记忆写了出来
修改了下不知道为什么会有乱码 按照没有乱码的看
另外不知道你的led和按键是怎么和单片机硬件连接的 你需要按照你的板子进行调整