新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 由Proteus仿真入門單片機學習

        由Proteus仿真入門單片機學習

        作者: 時間:2011-12-03 來源:網絡 收藏

        圖1 所示電路的核心部件是信號處理器U1,雙擊它時可對它進行相應的設定,完成相應的設定后其功能就完全可以用來履行已燒入程序代碼的CPU 的功能;時鐘電路有晶體振蕩器Y1 和瓷片電容C7、C8 組成;信號由U1 的P10-P17 這8 個輸出口輸出,信號再經過上來電阻RP1、R1-R8 分壓輸出和通過電壓跟隨器電路轉化成近似于正弦波信號。

        電阻R1 至R8 滿足如下方程:

        newmaker.com

        newmaker.com


        于是得出S0-S8 分別約為:0、0.0381、0.1464、0.3087、0.5、0.6913、0.8536、0.7619和1。S(n)值確定后,作出S(n)的值在EXCEL 里折線圖如圖2 所示,從圖表中可以看出其形狀類似于正弦信號在-90°到+90°象限內的波形。再依據以上結果,由式(3)可計算出R1-R8 的阻值關系,并按照常用電阻阻值規則,可取定如圖1 電路圖所示電阻阻值。

        newmaker.com

        圖2 S(n)的在Excel 里的折線圖

        3 設計相應程序

        參照前面所設計電路,利用時間中斷程序來產生頻率為1KHz 的正弦波,所設計程序源代碼及相關注釋如下:

        3.1定義P1端口的輸出值

        首先定義P1 端口的輸出,P1 端口將按照數組P1_out[ ]給出的值不停的輸出,也類似于P1 端口的P10 置“1”其他端口置“0”后不停的左移和右移。之所以該數組的大小為16是因為將輸出正弦波周期在時域上分成16 等分。

        code char P1_out[16]=
        {0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x06,0x10,0x20,0x40,0x80};

        3.2初始化時鐘中斷0和1

        在此程序中主要是初始化有關時鐘中斷寄存器。

        void int_init(void)
        { EA=0;//關閉所有中斷,以保證在調用此子程序時中斷不會發生
        TMOD=0x11; //#00000001B ;定義時鐘中斷0 為16 位時鐘發生器
        TCON=0x50; //#00010000B ; 使能時鐘中斷0
        IE=0x0a; //#00000010B ; 運行時鐘中斷0
        IP=0x02; //#00000010B ; 時鐘中斷0 優先
        TL0= (65535-1000/16);
        TH0= ((65535-1000/16)>>8); /*初始化時鐘中斷0 的計數寄存器,系統時鐘12MHz, 所以中斷計數時間為1us,中斷發生時間為1000/16X1us=1/16ms, 頻率為16KHz,除以16 是因為一個周期被分成16 等分*/

        EA=1; //允許中斷發生
        }

        51單片機相關文章:51單片機教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理




        關鍵詞: Proteus 仿真入門

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绥宁县| 孝义市| 静宁县| 牟定县| 乌恰县| 繁昌县| 宜黄县| 绥芬河市| 宁强县| 武隆县| 宁化县| 阿图什市| 黄冈市| 米脂县| 乌鲁木齐县| 宣威市| 井陉县| 靖州| 彭水| 清镇市| 嘉黎县| 弥渡县| 都江堰市| 黎平县| 富蕴县| 山东省| 海口市| 永吉县| 增城市| 郧西县| 扎囊县| 西乌珠穆沁旗| 临海市| 白朗县| 兰溪市| 哈尔滨市| 习水县| 百色市| 利津县| 乐至县| 工布江达县|