历史上的今天
今天是:2025年03月04日(星期二)
2020年03月04日 | 简易STC15F104E单片机定时报警器制作
2020-03-04 来源:51hei
非常时期,孩子不能上学,大人没在家,每天早上都睡得十几点,有点过份,所以作个简易定时报警器作闹钟用,主要是配合小米智能插座的网络定时功能用,只是自己的小制作,供有需求的人参考用;
制作出来的实物图如下:
功能:
1.上电时即启动报警;
2.定时30S后自动停止;
3.报警过程中如有按键按下即停止报警;
硬件:
1.P32按一个按键,作为取消报警用;
2.P35接蜂鸣器,作为报警声;
/*/******************************************************************************
-------------------------STC15F104E定时报警器-----------------------------------
功能:
1.上电时即启动报警;
2.定时30S后自动停止;
3.报警过程中如有按键按下即停止报警;
硬件:
1.P32按一个按键,作为取消报警用;
2.P35接蜂鸣器,作为报警声;
说明:此报警器是配合智能插座(例小米智能插座,带USB那种)用的,主要作用是当闹钟用
//******************************************************************************/
#include
// #include
#include "intrins.h"
#include "stdio.h"
/*/******************************************************************************/
/*/******************************************************************************/
sbit KEY1 = P3^2; //根据原理图,KEY1对应的IO口
sbit BUZZ = P3^5; //根据原理图,CLOCKOUT0
/*/******************************************************************************/
bit time0out_flag = 0; //定时器0超时标志位
bit time1out_flag = 0; //定时器0超时标志位
unsigned char t1_jishu = 0; //定时1计数变量
unsigned int t1_jishu2 = 0; //定时1计数变量2
/*/******************************************************************************/
void Timer1Init(void) //50毫秒@11.0592MHz
{
AUXR &= 0xBF; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x00; //设置定时初值
TH1 = 0x4C; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
}
/*/******************************************************************************/
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
//-----------------------------------------
void delayms(unsigned int t)
{
while(--t) Delay1ms();
}
/*/******************************************************************************/
/*/*********************************************************************************
/***********************************************************************************
//--------------------------------------初始化------------------------------------*/
void START(void)
{
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
Timer1Init(); //50毫秒@11.0592MHz
ET1 = 1; //使能定时器1中断
IT0 = 1; //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX0 = 1; //使能INT0中断
EA = 1;
}
/**********************************************************************************/
/******************************主函数**********************************************/
/**********************************************************************************/
void main(void)
{
START(); //初始化
while(1)
{
WDT_CONTR = 0x37; //看门狗定时器
delayms(1000);
}
}
//-----------------------------------------
//中断0服务程序
void exint0() interrupt 0 //INT0中断入口
{
delayms(20); //中断按键防抖
if(!KEY1)
{
TR1 = 0; //定时器1
t1_jishu = 0;
t1_jishu2 = 0;
BUZZ = 1; //关闭报警
}
}
/* Timer1 interrupt routine */
void tm1_isr() interrupt 3 //using 1
{
t1_jishu ++;
t1_jishu2 ++;
if(t1_jishu == 5)
{
t1_jishu = 0;
BUZZ = ~BUZZ;
}
if(t1_jishu2 == 20*30)
{
BUZZ = 1; //关闭报警
TR1 = 0; //定时器1
t1_jishu = 0;
t1_jishu2 = 0;
}
}
上一篇:单片机风扇模拟控制系统
史海拾趣
|
1 引言 随着二极管泵浦全固态激光器相关技术的不断发展,它在工业、国防科研、生物医学工程等领域的应用越来越广泛,对其输出功率、可靠性要求也不断提高。作为二极管泵浦全固态激光器的重要组成部分的电源,其可靠性、稳定性也就显得格外重要 ...… 查看全部问答> |
|
比较DFF、Latch Single 与Two Phase 优缺? 请问能否比较在一个pipeline电路中 使用D Flip-Flop、Latch Based Single Phase与 Latch Based Two Phase Clocking的优缺点 我有用primetime比较第一者与第三者的最大操作频率,发现第一者会稍微高一些 不知道是不是有做错… 查看全部问答> |
|
CE printf不能用咋办啊??CE 提示建议使用StringCchVPrintfA函数?? 最近移植个库,库以前是在PC上编译的,都是用多字节的printf,在CE下报错, 情况如下: error C2065: \'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA\' : undeclared identifier 然后我就按它的提示使用StringCchPrintfA; 定义了 ...… 查看全部问答> |
|
MC2440G开发板采用核心板与底板分开设计,更有利于用户的二次开发。用户在不需要更改核心部分的情况下只需修改底板就能开发出自己的产品。并且核心板上集成了常用的以太网和音频等功能,简化了用户的设计。核心板和底板的布局和走线 ...… 查看全部问答> |
|
最近需要实现在WINCE5.0中,联接USB口的宽行针式打印机,不知道有没有好的解决方案?如果打印机厂商有好的wince下的驱动,哪就比较简单,如果没有如何解决… 查看全部问答> |
|
我使用的单片机主要用于pwm调速及各种大功率场合,请各位高手给我评价一下以下几种单片机的优劣和特点,以及介绍一下选择单片机的选择! 1.8051f, 2.80c196mc, 3.avr, 4.pic, 5.msp430, 6.dsp, 7.arm 谢谢各位大虾了! 小弟在这有礼了!… 查看全部问答> |
|
我买了3000pcs的STM8S105K6T6C,绝对是从ST原厂出来的全新正品09年的,现在3000pcs里共有513pcs不能烧录数据,其他的都可以正常烧录,这会是什么原因啊,怎么解决啊,求高手帮助!!!… 查看全部问答> |
|
我通过ADC采样一个电压值。我有四个LED。我设了三个电压阈值,低于第一个阈值不亮灯,高于第一个小于第二个阈值亮一个LED。依次类推,电压越高亮的LED也越多。电压有抖动,怎样写这段代码才能使LED平稳的亮,不会闪烁或跳动。… 查看全部问答> |




