新聞中心

        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();

        }

        }

        }

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灌云县| 鹿泉市| 广宁县| 皮山县| 桐梓县| 怀远县| 威宁| 徐闻县| 于田县| 呼和浩特市| 石泉县| 建平县| 柘荣县| 封开县| 屏山县| 札达县| 三江| 平利县| 柳河县| 铜陵市| 顺昌县| 双城市| 山西省| 延边| 波密县| 孟州市| 南京市| 奎屯市| 汉寿县| 靖宇县| 都匀市| 阜南县| 志丹县| 婺源县| 理塘县| 同德县| 朝阳县| 乐平市| 横峰县| 福鼎市| 桐乡市|