新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 報警產生器

        報警產生器

        作者: 時間:2011-02-27 來源:網絡 收藏

        1.實驗任務

        P1.0輸出1KHz500Hz的音頻信號驅動揚聲器,作報警信號,要求1KHz信號響100ms500Hz信號響200ms,交替進行,P1.7接一開關進行控制,當開關合上響報警信號,當開關斷開告警信號停止,編出程序。

        2.電路原理圖

        4.6.1

        3.系統板上硬件連線

        (1. 把“系統”區域中的P1.0端口用導線連接到“音頻放大模塊”區域中的SPK IN端口上;

        (2. 在“音頻放大模塊”區域中的SPK OUT端口上接上一個8歐的或者是16歐的喇叭;

        (3. 把“系統”區域中的P1.7/RD端口用導線連接到“四路撥動開關”區域中的K1端口上;

        4.程序設計內容

        (1. 信號產生的方法

        500Hz信號周期為2ms,信號電平為每1ms變反1次,1KHz的信號周期為1ms,信號電平每500us變反1次;

        5.程序框圖

        4.6.2

        6.匯編源程序

        FLAG BIT 00H

        ORG 00H

        START: JB P1.7,START

        JNB FLAG,NEXT

        MOV R2,#200

        DV: CPL P1.0

        LCALL DELY500

        LCALL DELY500

        DJNZ R2,DV

        CPL FLAG

        NEXT: MOV R2,#200

        DV1: CPL P1.0

        LCALL DELY500

        DJNZ R2,DV1

        CPL FLAG

        SJMP START

        DELY500: MOV R7,#250

        LOOP: NOP

        DJNZ R7,LOOP

        RET

        END

        7.C語言源程序

        #include AT89X51.H>

        #include INTRINS.H>

        bit flag;

        unsigned char count;

        void dely500(void)

        {

        unsigned char i;

        for(i=250;i>0;i--)

        {

        _nop_();

        }

        }

        void main(void)

        {

        while(1)

        {

        if(P1_7==0)

        {

        for(count=200;count>0;count--)

        {

        P1_0=~P1_0;

        dely500();

        }

        for(count=200;count>0;count--)

        {

        P1_0=~P1_0;

        dely500();

        dely500();

        }

        }

        }

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蒙城县| 衡水市| 本溪市| 罗江县| 扎囊县| 长宁区| 建平县| 驻马店市| 鸡东县| 乐陵市| 舟曲县| 行唐县| 锦州市| 广德县| 龙江县| 平阴县| 涟水县| 阳信县| 连云港市| 中阳县| 淳安县| 海晏县| 四会市| 泰州市| 新津县| 罗田县| 泽州县| 荆门市| 绥芬河市| 武定县| 深州市| 诸城市| 商南县| 体育| 荥阳市| 凭祥市| 温泉县| 赤城县| 梅河口市| 鸡东县| 无极县|