欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 簡易STC15F104E單片機定時報警器制作 附程序 [打印本頁]

作者: aking991    時間: 2020-3-3 14:09
標題: 簡易STC15F104E單片機定時報警器制作 附程序
非常時期,孩子不能上學,大人沒在家,每天早上都睡得十幾點,有點過份,所以作個簡易定時報警器作鬧鐘用,主要是配合小米智能插座的網絡定時功能用,只是自己的小制作,供有需求的人參考用;

制作出來的實物圖如下:


功能:
1.上電時即啟動報警;
2.定時30S后自動停止;
3.報警過程中如有按鍵按下即停止報警;

硬件:
1.P32按一個按鍵,作為取消報警用;
2.P35接蜂鳴器,作為報警聲;


/*/******************************************************************************
-------------------------STC15F104E定時報警器-----------------------------------

功能:
1.上電時即啟動報警;
2.定時30S后自動停止;
3.報警過程中如有按鍵按下即停止報警;

硬件:
1.P32按一個按鍵,作為取消報警用;
2.P35接蜂鳴器,作為報警聲;

說明:此報警器是配合智能插座(例小米智能插座,帶USB那種)用的,主要作用是當鬧鐘用
//******************************************************************************/
        #include <STC15F104E.H>
//        #include <RTX51TNY.H>
        #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;        
        }
}




作者: 51hei團團    時間: 2020-3-3 15:09
好東東,能分享下源碼工程包嗎?
作者: jmkl128    時間: 2020-3-4 08:23
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;

這些刪掉會咋樣?
作者: chinarenxx    時間: 2020-3-16 01:16
測試后,好像沒聲音,蜂鳴輕響了一下就沒聲了。是不是沒有發聲代碼,樓主用的是有源直流蜂鳴器嗎。
作者: hbcqd    時間: 2020-3-16 12:31
思路很好,沒有實物,不太直觀,謝謝分享!




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1