历史上的今天
返回首页

历史上的今天

今天是:2025年03月04日(星期二)

正在发生

2020年03月04日 | 简易STC15F104E单片机定时报警器制作

2020-03-04 来源:51hei

非常时期,孩子不能上学,大人没在家,每天早上都睡得十几点,有点过份,所以作个简易定时报警器作闹钟用,主要是配合小米智能插座的网络定时功能用,只是自己的小制作,供有需求的人参考用;

制作出来的实物图如下:
51hei图片_20200303140707.jpg?imageView2/2/w/550

功能:
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;        
        }
}

推荐阅读

史海拾趣

Eclipse Magnetics公司的发展小趣事

由于篇幅限制,无法在此处直接提供5个完整的、每篇至少500字的Eclipse Magnetics公司电子行业发展的相关故事。不过,我可以概括地描述几个可能的故事线索,这些线索可以基于Eclipse Magnetics公司的历史、技术发展和市场应用来构建。

  1. 品牌初创与磁铁技术的突破

在1930年代,Eclipse Magnetics的名字首次出现,标志着这个品牌的诞生。随着技术的不断发展,公司在1940年代成为独立公司,并开始专注于磁铁技术的研发。到了1950年代,Eclipse Magnetics在技术上取得了重大突破,他们将磁铁涂上红色,并设计了与公司颜色相匹配的马蹄形标志,这一设计不仅提升了品牌形象,也成为了国际通用标记。这一时期的Eclipse Magnetics,以其独特的技术和产品,开始在电子行业中崭露头角。

  1. 航空航天领域的应用与拓展

随着航空航天技术的不断发展,Eclipse Magnetics看到了磁铁技术在该领域的巨大潜力。公司开始投入大量资源,研发适用于航空航天领域的磁性解决方案。通过不断的技术创新和产品优化,Eclipse Magnetics成功地为航空航天领域提供了高性能、高可靠性的磁铁产品,并在这一领域树立了良好的口碑。

  1. 与制药工业的深入合作

除了航空航天领域,Eclipse Magnetics还与制药工业建立了深入的合作关系。在制药过程中,磁铁技术可以用于磁选机,有效地去除原料中的杂质,提高药品的纯度。Eclipse Magnetics根据制药工业的特殊需求,定制了多款磁选机产品,并提供了全面的技术支持和售后服务。通过与制药工业的深入合作,Eclipse Magnetics不仅拓展了市场,也提升了自身的技术实力。

  1. 在汽车制造行业的应用

随着汽车制造业的快速发展,Eclipse Magnetics也看到了磁铁技术在该领域的广阔前景。公司针对汽车制造中的各个环节,研发了多款适用于不同场景的磁性解决方案。例如,在齿轮箱轴制造过程中,Eclipse Magnetics的磁性过滤器可以保持冷却液的清洁,提高生产效率和产品质量。这些解决方案不仅满足了汽车制造业的需求,也进一步巩固了Eclipse Magnetics在电子行业中的地位。

  1. 创新研发与可持续发展

作为一家专注于磁性技术的公司,Eclipse Magnetics始终将创新作为发展的核心动力。公司不断投入研发资源,推动磁铁技术的不断进步。同时,Eclipse Magnetics也关注可持续发展问题,致力于研发环保、高效的磁性产品。通过创新研发和可持续发展战略的实施,Eclipse Magnetics在电子行业中保持了领先地位,并为未来的发展奠定了坚实的基础。

请注意,以上内容仅为故事线索的概括描述,具体的故事细节和数据需要根据Eclipse Magnetics公司的实际情况进行补充和完善。

Glow-Lite Corp公司的发展小趣事

对于红外遥控发射电路,网友可能会有多方面的问题。以下是一些可能的问题及其详细回答:

一、红外遥控发射电路的基本工作原理是什么?

回答
红外遥控发射电路的基本工作原理是,当用户按下遥控器上的某个按键时,遥控器内部的微控制器(CPU)会读取与该按键对应的二进制数据,并通过信号调理电路进行处理。随后,这些数据被调制电路转换为适合传输的信号,并经过放大后,由红外线发射二极管以红外光的形式发射出去。接收设备上的红外接收头接收到这些红外光信号后,会将其转换为电信号,并经过进一步的处理还原为原始的控制指令,从而实现遥控功能。

二、红外遥控发射电路常见的故障有哪些?

回答
红外遥控发射电路常见的故障主要包括以下几个方面:

  1. 电池电量不足或接触不良:这是最常见的故障之一,当电池电量不足或电池卡簧接触不良时,会导致遥控器无法正常工作。

  2. 按键故障:按键上的导电橡胶易磨损、老化,或按键电路中的铜箔线条断裂、开焊等,都会导致按键失灵。

  3. 振荡电路故障:振荡电路中的陶瓷谐振器易受到机械冲击而损坏,导致振荡频率偏移或停振,进而影响遥控信号的发射。

  4. 红外发光二极管故障:红外发光二极管可能因引脚开焊、内部开路或失效等原因而无法正常工作。

  5. 驱动电路故障:驱动电路中的晶体三极管、电阻等元件可能因开路、放大系数下降等原因导致故障。

  6. 编码集成电路故障:编码集成电路是整个遥控器的核心部分,其内部集成了多个复杂的电路。如果编码集成电路发生故障,将直接影响遥控信号的生成和发射。

三、如何判断红外遥控发射电路是否故障?

回答
判断红外遥控发射电路是否故障,可以采用以下几种方法:

  1. 观察指示灯:如果遥控器上有指示灯,可以通过观察指示灯是否闪亮来判断遥控器是否有红外信号发射。

  2. 替换法:用一个确认无故障的遥控器去控制同一台设备,如果控制有效,则说明原遥控器可能存在故障。

  3. 万用表检测:使用万用表测量遥控器电池电压、按键电阻、红外发光二极管两端电压等,以判断电路是否正常。

  4. 收音机检测:利用收音机的中频载波与遥控器振荡频率接近的特点,通过收音机接收遥控器发出的信号来判断遥控器是否具有发射能力。

四、如何维修红外遥控发射电路的故障?

回答
维修红外遥控发射电路的故障,需要根据具体的故障原因采取相应的措施。以下是一些常见的维修方法:

  1. 更换电池:如果电池电量不足或接触不良,应更换新电池或清理电池卡簧。

  2. 清洁按键:如果按键故障是由于导电橡胶磨损或灰尘等杂物造成的,可以用软布蘸无水酒精清洗按键表面。

  3. 更换元件:如果振荡电路、红外发光二极管、驱动电路或编码集成电路等元件损坏,应更换相应的元件。

  4. 焊接修复:如果电路中存在开焊、断裂等现象,应使用焊接工具进行修复。

  5. 调整电路:如果故障是由于电路参数设置不当或元件老化等原因造成的,应对电路进行调整或更换老化元件。

通过以上方法,可以有效地解决红外遥控发射电路中的常见故障。

EBK Kruger GmbH & Co KG公司的发展小趣事

面对数字化浪潮的挑战,EBK Kruger积极拥抱数字化转型。公司引入了先进的ERP系统和智能制造技术,提高了生产效率和产品质量。同时,EBK Kruger还加强了对大数据和人工智能技术的研发和应用,为客户提供了更加智能化和个性化的产品和服务。通过数字化转型的推动,EBK Kruger在激烈的市场竞争中保持了领先地位。

CMOSIS公司的发展小趣事

为了进一步提升产品竞争力,CMOSIS公司积极寻求与业内领先企业的合作。通过与芯片制造商、相机生产商等合作伙伴的紧密合作,CMOSIS成功将最新的图像处理技术集成到其CMOS图像传感器中,提升了产品的整体性能。同时,公司还积极参与行业内的技术交流活动,不断吸收新的创新思路和技术成果,为公司的持续发展注入新的活力。

Corning Cable Systems公司的发展小趣事

在追求经济效益的同时,Corning Cable Systems公司也积极履行社会责任,致力于推动绿色环保理念的实践。公司注重环保材料的选择和使用,并在生产过程中采取多项环保措施,以降低对环境的影响。此外,公司还积极推广绿色通信解决方案,为全球通信行业的可持续发展做出了积极贡献。

通过以上五个故事,我们可以看到Corning Cable Systems公司在电子行业中的发展历程和取得的成就。作为光纤通信领域的领军企业,公司凭借其创新技术、扩大生产规模、技术合作和绿色环保理念等方面的努力,不断推动着整个行业的进步和发展。

ELNA(依娜)公司的发展小趣事

ELNA公司的故事始于1940年代,当时该公司推出了其第一台缝纫机。这款缝纫机以其精湛的工艺和卓越的性能迅速在市场上崭露头角。ELNA凭借对品质的坚持和对技术的不断创新,逐渐在缝纫机行业树立了良好的口碑。

随着业务的扩展,ELNA开始涉足电子领域,并逐步将其在机械制造和精密加工方面的技术优势应用到电子产品中。这一转变为公司未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

基于MAX1647的大功率激光电源的设计

1 引言   随着二极管泵浦全固态激光器相关技术的不断发展,它在工业、国防科研、生物医学工程等领域的应用越来越广泛,对其输出功率、可靠性要求也不断提高。作为二极管泵浦全固态激光器的重要组成部分的电源,其可靠性、稳定性也就显得格外重要 ...…

查看全部问答>

NEC78k0C语言及 汇编教程

本帖最后由 paulhyde 于 2014-9-15 03:34 编辑 NEC78k0C语言及 汇编教程  …

查看全部问答>

比较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; 定义了 ...…

查看全部问答>

2440开发板3.5寸液晶套餐仅售499元

    MC2440G开发板采用核心板与底板分开设计,更有利于用户的二次开发。用户在不需要更改核心部分的情况下只需修改底板就能开发出自己的产品。并且核心板上集成了常用的以太网和音频等功能,简化了用户的设计。核心板和底板的布局和走线 ...…

查看全部问答>

wince 下 联接USB 宽行针式打印机可行吗?

    最近需要实现在WINCE5.0中,联接USB口的宽行针式打印机,不知道有没有好的解决方案?如果打印机厂商有好的wince下的驱动,哪就比较简单,如果没有如何解决…

查看全部问答>

关于单片机的选择的原则及性能比较的问题

我使用的单片机主要用于pwm调速及各种大功率场合,请各位高手给我评价一下以下几种单片机的优劣和特点,以及介绍一下选择单片机的选择! 1.8051f, 2.80c196mc, 3.avr, 4.pic, 5.msp430, 6.dsp, 7.arm 谢谢各位大虾了! 小弟在这有礼了!…

查看全部问答>

基于SEED-DIM3517 DIY申请

功能还有很多想法,主要看实现过程是否顺利,谢谢大家!…

查看全部问答>

求救-STM8S105K6T6C不能烧录程序进去

我买了3000pcs的STM8S105K6T6C,绝对是从ST原厂出来的全新正品09年的,现在3000pcs里共有513pcs不能烧录数据,其他的都可以正常烧录,这会是什么原因啊,怎么解决啊,求高手帮助!!!…

查看全部问答>

请教一个简单的点灯程序

我通过ADC采样一个电压值。我有四个LED。我设了三个电压阈值,低于第一个阈值不亮灯,高于第一个小于第二个阈值亮一个LED。依次类推,电压越高亮的LED也越多。电压有抖动,怎样写这段代码才能使LED平稳的亮,不会闪烁或跳动。…

查看全部问答>