新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 輸出1KHz和500Hz的音頻信號驅動揚聲器

        輸出1KHz和500Hz的音頻信號驅動揚聲器

        作者: 時間:2016-11-12 來源:網絡 收藏

        輸出

        用P1.0輸出,作報警信號,要求信號響100ms,信號響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
        #include

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 舒城县| 腾冲县| 沧州市| 会泽县| 惠东县| 沭阳县| 遂溪县| 西和县| 射阳县| 醴陵市| 崇州市| 北辰区| 山东| 藁城市| 时尚| 长宁区| 绥宁县| 栾川县| 中牟县| 明水县| 淮安市| 出国| 化州市| 灯塔市| 曲麻莱县| 许昌市| 策勒县| 南汇区| 兴业县| 沙河市| 岳池县| 吉木乃县| 德州市| 万州区| 行唐县| 吉水县| 衡阳市| 石棉县| 巫山县| 河池市| 大冶市|