当前位置:首页 » 编程语言 » c语言中断控制led
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中断控制led

发布时间: 2022-04-24 17:27:01

① 51单片机c语言对流水灯编程,用定时中断做 LED等从两边向中间亮

可以用一个数组存放LED灯的状态,在定时器里面为LED赋值数组里面的值就行
例如
LED_arr[10]
=
{0x81,0x42,0x24,0x18,0x24,0x42,0x81};
LED
=
LED_arr[pos++];

② C语言控制LED灯

//!没有硬件方案,以下只包含逻辑

intpush_count=0;//记录按钮按下次数

//!处理亮灯
voidlight(intled_num)
{
switch(led_num)
{
case1:
{
;//点亮灯1
}break;
case2:
{
;//点亮灯1
}break;
default:
;//灭所有灯
break;
}
}

//!处理按键中断
voidpush_interrupt()
{
//判断按键是否有效
push_count++;
if(1==push_count)
{
light(1);
}
elseif(2==push_count)
{
light(2);
}
elseif(8==push_count)
{
light(0);
push_count=0;
}
}

③ 用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

C语言实现LED灯闪烁控制配套51单片机开发板。

#include //包含单片机寄存器的头文件

/****************************************
函数功能:延时一段时间

*****************************************/

void delay(void) //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i; //定义无符号整数,最大取值范围65535。

for(i=0;i<20000;i++) //做20000次空循环。

; //什么也不做,等待一个机器周期。

}

/*******************************************************

函数功能:主函数 (C语言规定必须有也只能有1个主函数)。

********************************************************/
void main(void)

{

while(1) //无限循环。

{

P0=0xfe; //P1=1111 1110B, P0.0输出低电平。

delay(); //延时一段时间。

P0=0xff; //P1=1111 1111B, P0.0输出高电平。

delay(); //延时一段时间。

}

}

单片机驱动LED灯的源程序:

#include<reg52.h> //头文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定义。

void delay_ms(uint);//mS级带参数延时函数。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延时子程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(3)c语言中断控制led扩展阅读:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:网络-单片机



④ 用一个按键控制一个LED灯用中断方式实现按一下亮0.5秒然后灭0.5,再按一下亮1秒然后灭1秒

while(1) /* 主循环 */
{
if( Key ==0)
{
for( i = 0; i < 1; i++ )
{
LED= 0; /* 端口送高电平,LED熄亮 */
DelayMs(500); /* 延时大概0.5S */
LED = 1; /* 端口送低电平,LED点灭 */
DelayMs(500); /* 延时大概0.5S */
} /* 延时10ms,消抖 */

{
if( Key == 0) LED = ~LED;/* 再次检测按键是否按下,如果有,将LED状态取反 */
for( i = 0; i <1; i++ )
{
LED= 0; /* 端口送高电平,LED熄亮 */
DelayMs(1000); /* 延时大概1S */
LED = 1; /* 端口送低电平,LED点灭 */
DelayMs(1000); /* 延时大概1S */
}

}
}
}
}

⑤ C语言编程控制LED灯亮灭

如果你LED的接口一个低电平,即0,灯就会亮,给一个高电平,1,就会灭。如果要一闪一闪的,只需给亮和灭的中间加延时,控制亮灭次数,可以使用一个循环。

⑥ 单片机C语言定时中断LED灯程序求修改

#include<reg52.h>
sbit P00=P0^0;
sbit key=P1^0;
unsigned int i=0;
void main(void)
{
TMOD=0x10;//设定定时器的工作模式为定时器1方式1
TH1=15536/256;//向定时器装入初值高八位
TL1=15536%256;//向定时器装入初值低八位
EA=1;//开总开关
ET1=1;//开分开关
TR1=1;//启动定时器
while(1)
{
if(key==0)TR1=0;

else TR1=1;

}
}
void t1(void) interrupt 3//定时器0服务函数
{
TH1=15536/256;//向定时器装入初值高八位
TL1=15536%256;//向定时器装入初值低八位

if(++i==30)//延时1.5S
{
i=0;
P00=~P00;//闪烁
}
}

⑦ 单片机C语言写一条中断程序,一上电就是LED闪烁,按下开关走中断里面的,LED一直亮,

#include<reg51.h>
#defineucharunsignedchar
sbitled=P1^0;
sbitkey=P3^2;
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
voidext0()interrupt0
{
led=0;
while(key==0);
}
main()
{
EX0=1;
IT0=1;
EA=1;
whlile(1)
{
led=0;
delay(200);
led=1;
delay(200);
}
}

⑧ 单片机中怎样中断控制led灯隔一秒闪烁一次,c语言的,麻烦高手贴个程序看一下,最好用定时器t0。

设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s
然后再1s时的定时器中断子程序中设置输出脚的电平交替即可

⑨ 用51单片机一个开关控制个LED灯;程序用C语言,中断控制函数写

1. 51单片机有很多种,请指定型号;

2. 一个开关控制个LED灯,请指定具体的线路连接
3. 中断控制函数,不同的51单片机有多种中断源,请指定

⑩ 急求利用定时中断方式0实现led每0.4秒闪烁一次的c语言程序!谢谢!!!

#include<reg52.h>
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++; //计数加一
}