/***************************
独立按键控制继电器
***************************/
#include
#define uchar unsigned char
sbit KEY = P1 ^ 0;
sbit RelayEN = P0 ^ 0; //定义继电器开启信号
void Timer0Init(); //声明定时器0初始化函数
void RelayProcess(); //声明断电器处理函数
uchar count = 0; //计秒数
void main() //主函数
{
RelayEN = 1; //开机时关闭继电器,否则一上电继电器有动作;
Timer0Init();
RelayProcess();
}
void Timer0Init() //定时器初始化函数
{
TMOD |= 0x01; //“|”使用多个定时器时不受影响
TH0 = 0xFC; //定时1MS
TL0 = 0x67;
TR0 = 1; //开启定时器0
EA = 1; //开启总中断
ET0 = 1; //开启定时器0中断
}
void RelayProcess() //继电器处理函数
{
KEY = 0x01; //读外部状态时,先使端口输出高电平;
while (1)
{
if(!KEY) //判定有无按键按下
{
if(count >= 20) //判定秒数是否达到20MS,即去抖
{
count = 0;
if(!KEY)
{
RelayEN = ~RelayEN;//当按键按下时,改变继电器的状态
while(!KEY); //等待按键释放;
}
}
}
}
}
void Timer0() interrupt 1 //定时器0中断函数
{
TH0 = 0xFC; //重新赋值给定时器0
TL0 = 0x67;
count++; //计秒数
}
关键字:按键 继电器控制
引用地址:
简单的按键继电器控制
推荐阅读最新更新时间:2024-03-16 16:10
单片机按键的三种方法
分享单片机按键的三种方法 方法一: #include reg52.h typedef unsigned int uInt16;sbit LED1 = P2^0; sbit KEY1 = P3^4; sbit KEY2 = P3^5;void DelayMS(uInt16 ValMS) { uInt16 uiVal,ujVal; for(uiVal = 0; uiVal ValMS; uiVal++) for(ujVal = 0; ujVal 113; ujVal++); }// 函数功能:毫秒延时// 函数功能:扫描按键并做出相应LED灯亮灭动作void main(void) { w
[单片机]
基于Small RTOS51的PS/2键盘驱动程序开发
引言 随着嵌入式系统的发展,嵌入式软件设计向软件平台靠近,单片机软件设计不再是单一线程结构方式,而是逐步采用多任务的设计思想。实时操作系统使得实时应用程序的设计、扩展和维护变得更容易,无需大的改动就可以增加新的功能。然而随着任务的增加,要求输入的数据也会增加,类型也呈多样化。如果仍然用矩阵式扫描键盘,势必浪费单片机巨大的资源,且增加了成本。若用PC机标准PS/2键盘取而代之,将可解决以上矛盾。本文介绍基于实时操作系统Small RTOS51的PS/2键盘驱动程序的设计,具有响应快,移植性强,占用资源少等优点。 1 驱动的设计 驱动的实现一般可用以下几种方法:① 使用任务编写;② 使用消息编写;③ 使用信号量编写。PS
[嵌入式]
Bridgetek发布新智能控制设备的PanL继电器
随着 PanL 继电器的发布,Bridgetek 进一步拓展了其 PanL 智能家居连接平台解决方案的适用范围。这个最新单元的作用是为已安装的系统带来更强大的功能,从而提高舒适度。它是通过 PanL 系统的 HMI 触摸显示屏为智能切换功能提供的一种手段。由于在智能家居实施中加入了 PanL 继电器,用户将能够打开或关闭家用电器(如洗衣机、微波炉、洗碗机、烤面包机、电饭锅、水壶等)和其他电气设备(如风扇、灯和室外加热器)。 Bridgetek 的 PanL 继电器的外壳紧凑、轻薄(尺寸为 145.7 毫米 x 96.7 毫米 x 29.50 毫米),技术先进。主控采用一颗高性能,频率 100MHz,32 位的 FT903 RI
[嵌入式]
用扫描法读出4×4矩阵键盘,在数码管显示按键值
//电路说明如下。 //单片机:使用51系列兼容的即可; //4 4矩阵键盘:接在P1口; //两位数码显示器: P0口输出七段码,P2口输出位选码。 //============================================================== //C语言程序如下。 /************************************************************* * 文件名: KEY_LED.c * 功能 : 对4 4矩阵键盘进行输出,在数码管后两位显示按键值。 ***************************************************
[单片机]
STM32按键的检测
STM32的按键检测相对比较简单,首先按部就班的初始化连接的到的i/o,然后写一个按键扫描函数,这个和51单片机的差不多。 以下是一个比较典型的例子: 利用按键控制LED: key.h文件 #ifndef__KEY_H #define__KEY_H #include sys.h“ #defineKEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键0 #defineKEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键1 #defineKEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读取
[单片机]
基于51单片机的四路抢答器仿真
当主持人按下开始按键后,开始倒计时60秒,选手开始抢答,当有选手抢答后其它选手抢答无效。 并且选手抢答后倒计时停止。 由于我没有设置新一轮按键,如果需要使用新一轮抢答可以加按键开启新一轮抢答 定时器配置代码 #include REGX52.H void Timer0_Init(void) { TMOD &= 0xF0; //配置定时器模式 TMOD |= 0x01; //设置定时器0模式 TL0 = 0x3c; //设置定时初值50ms产生一次中断 TH0 = 0xb0; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计
[单片机]
按键处理与按键防抖动例子
/***************************************************** 本程序的目标是这样的: 1:不使用INTn中断功能,按键接在普通IO上 2:由定时器T/C2每隔一段时间检测按键一次, 并具有防抖动功能 3:每点击按键一次,在按键松开后,变量A=A+1 4:如果按键按下后不放,则每隔 n ms 就做A=A+1运算一次 5:在按键按下期间,CPU除了处理按键外,还必须能正常运行主程序 6:本程序的系统时钟是1MHz *****************************************************/ #include #include #include
[单片机]
Tiny210按键分层分离(总线-驱动-设备模型)
led_dev.c驱动源码: #include linux/module.h #include linux/version.h #include linux/init.h #include linux/kernel.h #include linux/types.h #include linux/interrupt.h #include linux/list.h #include linux/timer.h #include linux/init.h #include linux/serial_core.h #include linux/platform_device.h // 分配/设置/注册一个platfo
[单片机]