技术文档

单片机led延时 单片机小制作,智能触摸延时开关

小编 2025-07-15 技术文档 23 0

单片机小制作,智能触摸延时开关

功能设计

图1.1 电路原理图

本智能开关的电路如图1.1所示,设计了两种工作模式,分别为静态模式和工作模式。静态模式下,红、绿、黄LED指示灯亮,点阵屏和节能灯都是熄灭状态;工作模式下,相应的LED指示灯熄灭,点阵屏和节能灯开启。

为了使用方便,本智能开关设计了3个触摸按键(见图1.2)。

图1.2 实际效果图(LED下方为触摸式开关,节能灯以220U指示灯代替)

绿键:在静态模式(上电即进入静态模式)下,触摸此键即进入工作模式,绿色指示灯熄灭,节能灯和点阵屏开启,延时1min后转入静态模式。

黄键:在静态模式下,触摸此键则进入工作模式,黄色指示灯熄灭,节能灯和点阵屏开启,延时2min后转入静态模式。

红键:在静态模式下,触摸此键则进入工作模式,红色指示灯熄灭,节能灯和点阵屏开启,延时4min后转入静态模式。

材料准备

表1.1 元器件清单

制作过程

1.测试点阵的行列引脚。因为点阵引脚排列不规则,所以我们需要先测其引脚,然后记录在纸上。注意,每一排引脚有行也有列,一定要耐心测试。

2.将排孔、铜线、LED焊接在万用板上。固定好之后,将点阵屏插到排孔上。注意I/O接口线要平行排列,且上端要做成按钮式,既美观大方又容易触发。

3.将余下的电子元器件焊接在另外一块板上。注意,元器件布局要以连线不交插、美观大方作为两个基本点。还要注意,继电器要远离单片机,防止其干扰单片机电路。

4.按照电路图将元器件连接起来,这个工作很是烦琐,一定要有耐心。注意尽量不要使导线交叉,点阵连接最好用不同颜色的排线连接。

5.用铜柱将两块板子固定在一起。至此,开关的硬件已完工。

软件设计

程序包括主程序、初始化程序、触摸键检测子程序、提醒显示子程序、定时器0溢出中断子程序。

初始化程序除了对继电器、3个LED指示灯、点阵屏进行设置外,还必须将P0置1设为高阻输入状态,这是实现触摸功能的前提。

触摸键检测子程序的任务是根据触摸键操作来执行相应的处理程序,例如,触摸了绿指示灯的触摸按键,接下来单片机要执行4个任务:(1)打开定时器中断;(2)打开继电器,开启节能灯;(3)熄灭绿指示灯;(4)调用提醒显示子程序。注意,触摸键检测子程序需检测单片机引脚高电平,跟普通按键正好相反,当然消抖延时也是必不可少的。

提醒显示子程序的任务是显示所在位置的楼层数。

定时器中断的任务是延时一段时间,然后关掉定时器中断、继电器及提醒显示子程序,打开对应指示灯。定时器延时时间的到来需用中断次数和标志位相与作为判定条件。

另外,要提醒大家几点,调试的时候应该根据出现的现象分析程序哪一部分有问题,程序尽量条理清晰、模块化,以节省调试时间。切记不要使用交流电源,那样对触摸键的干扰会很大。编程部分难度不大,我相信,只要用心编写,耐心调试,把错误一步一步改正过来,大家会很快享受到电子制作带给我们的快乐。

单片机控制LED灯闪烁

控制原理:

单片机有32位输入输出口,能够实现高电平/低电平的输入输出。

高电平—>电源—>5V左右电压—>逻辑电平1

低电平—>接地—>0V左右的电压—>逻辑电平0

从图中可以看出,只要让单片机P0^0位输出低电平,LED发光二极管就点亮,只要让单片机P0^0位输出高电平,LED发光二极管就灭。如果要让发光二极管亮,休息一会儿,发光二极管灭,休息一会儿,不断循环上述过程。就出现发光二极管闪烁。

C语言程序如下:

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

函数功能:LED灯闪烁

作者:烽火相约

时间:2018年11月13号

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

#include<reg51.h> //头文件

sbit led=P0^0; //端口定义

void delay(); //子函数声明

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

函数名称:main()

函数功能:实现LED灯闪烁

子函数:delay()

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

void main()

{

while(1) //一直循环

{

led=~led;//取反

delay();//延时

}

}

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

函数名称:delay()

函数功能:实现延时的功能

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

void delay()

{

unsigned int i=20000;//变量的定义

while(i--);//循环 直到i=0

}

相关问答

单片机 编程里控制 LED 灯一闪一灭的 延时 语句工作原理是什么?

单片机每执行一天机器码/语句,都是需要时间的。有机器周期,指令周期,时钟周期之分。那么单片机要延时就很简单了。就是做一些无关紧要的指令来达到消耗时间延...

求助: 单片机 C语言中 延时 程序怎么样计算?-ZOL问答

这个程序的延时多少要看你的时钟芯片的大小!一般的如果你用的是12M的晶振的话!voidDelay_ms(unsignedintnms)//ms延时精确的到ms{unsignedint...

单片机 延时 延时 时间长度是怎么算的?最好有一个例子,来...

单片机的延时可以使用定时器和循环来实现。以下是两种常见的方式:1.使用定时器延时时间长度取决于定时器的时钟源和预分频器的设置。例如,如果使用...

单片机 的外部中断仿真实验。在 单片机 P1口上接有8只 LED 。在外部中断0输入引脚(P3.2)接一只按钮开关K1?

中断处理函数感觉有些问题,for循环之前使用P1=0x0f;然后将for内的P1=0x0f;改为P1=~P1;同时for循环中应该需要调用延时函数Delay(10);这里的值看你自...

单片机 c语言的 延时 程序500ms?

51单片机执行一个语句相当于24个晶振周期,for(j=110;j>0;j--);这个语句每次执行相当于执行4个语句,也就是96个晶振周期,执行110次,你用的单片机应该是11.0592...

单片机 制作 led 显示器,怎么让字滚动,思路是什么-ZOL问答

voiddelay(uintz)//延时子函数{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidmain(){wh...

单片机 中的 延时 程序的 延时 时间怎样计算的?

比如说:voiddelay(){intx;chary;for(x=1000;x>0;x--){for(y=100;y>0;y--)};}x每减一次,y减100次,x一共减...

51 单片机 中R0,R1,R2.都表示的是什么,很多时候看不懂.比如说O...

[最佳回答]这个叫做软件延时程序.由于单片机每执行一条指令都需要时间.上面的程序用文字描述:DELAY:MOVR5,#20;延时子程序,延时0.2秒这句是将十进制数20这...

32 单片机 怎么设置20毫秒的 延时 ?

要实现20毫秒的延时,可以使用定时器来实现。首先需要配置定时器的时钟源和分频系数,使得定时器的时钟频率为1MHz。然后设置定时器的计数值为20000(即20毫秒的...

单片机 延时 100毫秒的程序?

闪烁一定要有个流程和延时,比如while(1){亮灯,延时200毫秒,灭灯,延时200毫秒,}如果延时太短了,就闪的很快眼睛感觉一直是亮着的。最好有个100毫秒以上的延...

猜你喜欢