单片机单按键控制led台灯

发布者:文江桂青最新更新时间:2015-06-24 来源: 51hei关键字:单片机  单按键控制  led台灯 手机看文章 扫描二维码
随时随地手机看文章
按键控制LED台灯亮度 C语言方案

功能要求:单独一个按键控制LED台灯的亮度,上电默认关机,分5个档位。
第一档:100%亮度
第二档:65%亮度
第三档:35%亮度
第四档:20%亮度
第五档:10%亮度
第六档:关机

思路:设定一个改变占空比的变量PWM,每按一次按键PWM值自加一次(自加值看需要定,比如PWM+=100),值越小产生的驱动脉冲频率越高。PWM函数采用模拟方法产生,从成本上考虑,带中断,定时器等功能的单片机价格比较高。所以采用价格低廉的低档单片机。鉴于仿真方便,本程序采用PIC16F505(当然也可以用12F508等芯片)。

端口连接:RC1—LED RC0----蜂鸣器 RC5----按键

程序代码:
#include
__CONFIG(0X034);
#define uchar unsigned char
#define uint unsigned int

#define uchar unsigned char
#define uint unsigned int
uint PWM, H,L;


void delay(uint x)//任意时间延时函数
{
uint c,d;
for(c=x;c>0;c--)
for(d=110;d>0;d--);

}

void KEY1()//按键扫描函数,按压有效(非松手有效),并且不影响LED点亮效果,都可以用此类扫描函数
{
static bit valid=0;
static bit finish=0;

if(valid==0)
{
if(RC5==0)

if(finish==0)
{
finish=1;

RC0=1;
delay(10);
RC0=0;//蜂鸣器,每按一下响一声
RC1=0;//此语句非常重要,如果不加这句,到最低档的时候,不能关机而直接进入最高档。

PWM+=100; //按键有效,PWM增加100


}
}
else
{
valid=0;
finish=0;
}
}
else 
{
if(RC5==0)valid=1;
}
}

 


void LED_ON()//模拟PWM函数,算法简单直观,通过改变PWM值去改变LED点亮和熄灭的时间的间隔达到调光的目的。
{


H=PWM;
L=500-H;

RC1=0;
while(H--);
RC1=1;
while(L--);

}
void main()

PORTC=0X00;
TRISC=0X10;
PWM=0;

while(1)//用此语句达到上电关机(LED熄灭状态),当有按键按下的时候,break语句跳出while循环
{
RC1=0;
if(RC5==0)break;
}

while(1)
{
KEY1();//按键扫描,此函数将改变PWM的值
If(PWM<500)//只要PWM值小于500,每按下一次,都会执行LED_ON()函数,且每次的PWM值都以100的倍数增加,达到调光目的。
{
LED_ON();
}
If(PWM>500)//如果大于500则把PWM清零,且LED关机。

PWM=0;
RC1=0;
}
}

}

关键字:单片机  单按键控制  led台灯 引用地址:单片机单按键控制led台灯

上一篇:一键多功能(按键控制LED亮度)
下一篇:关于同步通信和异步通信

推荐阅读最新更新时间:2024-03-16 14:04

基于PIC16F877A单片机的一种车载红外夜视仪设计
0 引言 随着汽车市场的快速发展和安防意识的日益强化,人们对汽车安全保障技术的要求越来越高,而现有汽车照明系统在雪夜、雪天或大雾等能见度较低情况下视距不远、效果不佳的弊病成为汽车行驶的安全隐患之一。更严重的是在夜晚行车时,驾驶员通常会被对方车辆的灯光干扰出现盲区,容易发生车祸。夜视系统却可以在黑暗中帮助驾驶员导航,使驾驶员在有灯光和黑暗两种情况下都能看清驾驶环境。因此开发一种结构简单、性能稳定、可靠性好、适用性强的汽车红外夜视系统,具有重要的市场应用前景。 1 系统总体设计 1)系统原理 根据工作原理的不同,红外夜视系统分为被动红外夜视系统和主动红外夜视系统。主动红外夜视系统利用其所携带的红外光源主动照射目标,由光学系
[单片机]
基于PIC16F877A<font color='red'>单片机</font>的一种车载红外夜视仪设计
51单片机和LCD12864贪吃蛇
单片机源程序如下: #include 12864.h #include tcs_resource.h #define num 15 //用来描述蛇在液晶上面一个点的结构体 struct she { unsigned char x,y,value; unsigned char direction; }; struct loop_queue //利用循环数组实现循环队列,拐点不会超过15个。所以大小选15足以。 { unsigned int front; unsigned int rear; unsigned int count; struct she da
[单片机]
51<font color='red'>单片机</font>和LCD12864贪吃蛇
单片机系统中大容量数据存储器的系统扩展
1 引言 MCS-51单片机系统扩展时,一般使用P0口作为地址低8位(与数据口分时复用),而P2口作为地址高8位,它共有16根地址总线,寻址空间为64KB。但在实际应用中,有一些特殊场合,例如,语音信号的采集,程控交换机话单的存储,地形图信号的收取等,需要有大于64KB的数据存储器。文章根据作者实际使用的应用系统,介绍一种大容量数据存储器的扩展系统。该系统主机采用8031,扩展了三片62256,共96KB的动态数据存储器,上面介绍其硬件组成及软件处理方法。 2 系统的硬件组成 62256是32K×8位的数据存储器,共有15根地址线,扩展96KB数据存储器的硬件连接原理如图1所示:为了给系统进行其它外设的扩展,占用了系统14根地址
[单片机]
如何减少单片机程序中的bug?
对于如何减少单片机程序的bug,邓宏杰给出了一些建议,他指出系统运行中应考虑的超范围管理参数有: 1.物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理。 2.资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。在程式设计中,对资源参数不允许超范围使用。 3.应用参数。这些应用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限。 4.过程参数。指系统运行中的有序变化的参数。
[单片机]
堆栈操作类指令(2条)举例——mcs51单片机汇编语言
堆栈操作类 指令 (2条) 这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。 PUSH data ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中 POP data ;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数
[单片机]
采用AT89C51单片机实现动态车辆检测器系统的设计
引言 随着经济的发展,不停车收费系统(ETC)已在我国悄然兴起。不停车收费系统主要是由通讯、监控、收费三大系统组成。整个系统可靠运行的一个重要环节就是车辆检测器。在不停车收费系统中它是检测驶向通讯区域的车辆并命令天线进行通信的传感器,具有进入检测、车速检测、车型判别等功能;它是检测出离开通信区域的车辆、根据ETC车道控制器的判断控制栏杆、路侧显示器的传感器,具有进入检测功能;它具有检测车辆通过,控制清除针对该车辆的路侧显示器的显示内容以及控制针对后续车辆的显示的功能,并命令栏杆关闭的功能。 考虑到性能、价格、技术复杂性、可靠性、维护要求、适用范围等因素,我们这种车辆检测器是基于地感线圈原理研制的。 1、动态车辆检测器设计
[单片机]
采用AT89C51<font color='red'>单片机</font>实现动态车辆检测器系统的设计
基于单片机SPI器件的串口控制
   0 引 言   串行外设接口(Serial Peripheral InteRFace,SPI)是一种高速同步串行输入/输出端口,近年来广泛应用于移位寄存器、D/A转换器、A/D转换器、串行E2PROM、LED显示驱动器等外部设备的扩展。SPI接口可以共享,便于组成带多个SPI接口器件的系统。其传送速率可编程,连接线少,具有良好的扩展性。    1 SPI接口介绍   SPI是摩托罗拉公司推出的一种同步串行通信接口,用于微处理器、微控制器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,E2PROM,FLASH ROM,A/D转换
[嵌入式]
单片机内部模拟比较器的应用
一般来说,内部带A/D转换器的单片机价格都比较昂贵,而且一般只有8到10位的分辨率,这在高分辨率要求的场合显然不适用;而普通的单片机则根本没有A/D转换器。随着现代电子技术的发展,出现了一些体积小、内含模拟比较器的单片机,如ATMAL的AT89C2051、ZILOG的Z86E04、MICROCHIP的PIC16C620等,这些单片机在使用时连接比较器的端口一般只作普通I/O使用,而对其内置的模拟比较器的应用却很少。下面以AT89C2051为例,谈谈利用单片机内置模拟比较器来构成A/D转换器的新方法。 1 硬件转换电路 AT89C2051是MCS51单片机系列中的一种,它虽然只有20个引脚,却集成了51系列单片机的标准内核,
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved