c语言控制一个灯
❶ 51单片机一个开关控制一盏灯的c程序是什么
一个简单的开关控制一盏灯的c程序如下:
#include<reg52.h>
sbit S1=P1^4; //将S1位定义为P1^4,检测独立按键
sbit led0=P1^0; //将led0定义为P1.0口的LED
/***********************************************************************************************************************************************
延时函数
***********************************************************************************************************************************************/
void delay(void)
{
unsigned int i;
for(i=5000;i>0;i--)
;
}
/***********************************************************************************************************************************************
主函数
***********************************************************************************************************************************************/
void main(void)
{
while(1)
{
if(S1==0) //判断是否有键按下
{
delay(); //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键
if(F0==0) //用F0标志位判断键按下是否已经处理,因刚学c语言没多久,
//不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用
{
F0=1; //F0置1,表示这次按键按下已处理
led0=~led0; //将LED亮灭状态取反
}
}
else 高握腔 戚衫 //S1=1说明按键释放
{
F0=0; 皮悄 //F0清零,清按键已处理标志
}
}
}
❷ 独立键盘用一个按键,控制一个灯的亮灭,用C语言怎么写程序
sbit KEY = P0^1;
sbit LED = P0^2;
int keyscan(void)
{
bit keyval=0;
if(KEY)
{
delay(30);//延时消抖
if(KEY)
{
keyval = ~keyval; //值取反
if(keyval )
{
LED = 1;//led亮
}
else
{
LED = 0;//led灭
}
}
}
}
❸ 单片机 用C语言怎么编写用一个按钮,控制一盏灯的亮与灭的程序
读取连接按键的IO口,判断是否为低电平,如果是,延时(十毫秒左右可以),再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。参考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按键释放,IO口恢复高电平led=!led;//按键控制程序}}
❹ 用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--);
}
(4)c语言控制一个灯扩展阅读:
单片机应用分类:
通用型:
这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式亮敏扒通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型:
这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。
另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,敬昌大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型:
这是按照单片机(Microcontrollers)大致应用的领域拿乱进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。
通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
参考资料来源:网络-单片机
❺ 用定时期控制一个交通灯亮c语言程序
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitRED_A=P0^0;//东西向指示灯
sbitYELLOW_A=P0^1;
sbitGREEN_A=P0^2;
sbitRED_B=P0^3;//南北向指示灯
sbitYELLOW_B=P0^4;
sbitGREEN_B=P0^5;
//延时倍数,闪烁次数,操作类型
变量
ucharTime_Count=0,Flash_Count=0,Operation_Type=1;
//定时器0中断函数
voidT0_INT()interrupt1
{
TL0=-50000/256;
TH0=-50000%256;
switch(Operation_Type)
{
case1://东西向绿灯与南北向红灯亮5s
RED_A=0;YELLOW_A=0;GREEN_A=1;
RED_B=1;YELLOW_B=0;GREEN_B=0;
if(++Time_Count!=100)return;//5s(100*50ms)切换
Time_Count=0;
Operation_Type=2;
break;
case2://东西向黄灯开始闪烁,绿灯关闭
if(++Time_Count!=8)return;
Time_Count=0;
YELLOW_A=~YELLOW_A;GREEN_A=0;
if(++Flash_Count!=10)return;//闪烁
Flash_Count=0;
Operation_Type=3;
break;
case3://东西向红灯与南北向绿灯亮5s
RED_A=1;YELLOW_A=0;GREEN_A=0;
RED_B=0;YELLOW_B=0;GREEN_B=1;
if(++Time_Count!=100)return;//5s(100*50ms)切换
Time_Count=0;
Operation_Type=4;
break;
case4://南北向黄灯开始闪烁,绿灯关闭
if(++Time_Count!=8)return;
Time_Count=0;
YELLOW_B=~YELLOW_B;GREEN_A=0;
if(++Flash_Count!=10)return;//闪烁
Flash_Count=0;
Operation_Type=1;
break;
}
}
//主程序
voidmain()
{
TMOD=0x01;//T0方式1
IE=0x82;
TR0=1;
while(1);
}