新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > XS128單片機實驗:在示波器上模擬乒乓球比賽

        XS128單片機實驗:在示波器上模擬乒乓球比賽

        作者: 時間:2016-12-01 來源:網絡 收藏
        #include /* common defines and macros */
        #include "derivative.h" /* derivative-specific definitions */
        /*****************************************************************/
        // This progam is the second homework from Fresscale Traning
        // 本題是電子設計大賽的題目:在示波器模擬乒乓球的比賽;
        //示波器工作在XY李薩如圖模式下;設定兩路PWM波通過改變占空比,
        // 在低通濾波器的作用下,控制電壓的變化,轉化為xy坐標下,黑點的
        // 的周期運動。本題的難點是PWM的產生,xy的關系用單片機內的變量類型
        // 準確表示出來。還有就是根據自己的頻率選取不同的低通濾波電路
        //1)PWM初始化子程序
        /*************************************************************************
        //功 能:完成PWM模塊初始化
        //入口參數:無
        //出口參數:無
        *************************************************************************/
        void PWM_Init(void)
        {
        PWME = 0x00; //禁止PWM模塊
        PWMPRCLK = 0x00; //CLOCKA的預分頻設置為8/clockb的預分頻設置為8
        PWMSCLA = 5; //SA的分頻因子設置為5
        PWMSCLB = 5; //SB的分頻因子設置為5
        PWMCLK = 0x05; //通道0/2選擇SASB 作為PWM時鐘
        PWMPER0 = 200; //通道0周期寄存器設置為200
        PWMPER2 = 200; //通道2周期寄存器設置為200
        PWMDTY0 = 0; //通道0占空比寄存器設置
        PWMDTY2 = 0; //通道2占空比寄存器設置
        PWMPOL = 0x05; //PWM輸出先為高電平,之后變為低電平
        PWMCAE = 0x00; //左對齊輸出
        PWMCTL = 0x00; //不級聯
        PWME = 0x05; //使能PWM通道0/2
        }
        //2)延時子程序
        /*************************************************************************
        //功 能:實現一段時間的延時
        //入口參數:無
        //出口參數:無
        *************************************************************************/
        void delay(unsigned int delay_time)
        {
        unsigned int loop_i, loop_j; //定義循環變量

        for (loop_i=0; loop_i< delay_time; loop_i++)
        {
        for (loop_j=0; loop_j<5000; loop_j++)
        {
        ;
        }
        }
        }
        //3)主程序
        /*************************************************************************
        //功 能:初始化PWM模塊,并實現輸出波形占空比的增大和減小
        //入口參數:無
        //出口參數:無
        *************************************************************************/
        void main(void)
        {
        uchar loop_index; //定義循環變量
        long temp;
        uchar ceshi ;
        PWM_Init();
        while(1){
        for(loop_index=0;loop_index<200;loop_index++) {
        temp=loop_index;
        PWMDTY0 = temp;

        PWMDTY2 = (1480*temp-7*temp*temp+95000)/1000;
        delay(5);
        }

        for(loop_index=200;loop_index>0;loop_index--) {
        temp=loop_index;
        PWMDTY0 = temp;
        PWMDTY2 = (1480*temp-7*temp*temp+95000)/1000;
        delay(5);
        }
        }

        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 镇坪县| 齐齐哈尔市| 呼图壁县| 玛纳斯县| 昌平区| 海安县| 通山县| 泸西县| 高邑县| 九台市| 曲水县| 白朗县| 涿鹿县| 阳曲县| 石楼县| 百色市| 石城县| 潮安县| 洪雅县| 上犹县| 翁牛特旗| 涞源县| 若尔盖县| 甘孜| 横峰县| 门头沟区| 柳州市| 怀安县| 通海县| 罗城| 永善县| 土默特左旗| 黔江区| 墨江| 乌拉特前旗| 辽阳县| 辽中县| 韶山市| 黔江区| 江安县| 永德县|