欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

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

作者:韓冰   來源:本站原創   點擊數:  更新時間:2013年11月29日   【字體:

#include <hidef.h>      /* 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選擇SA\SB 作為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);
    }      
    }
  
}

關閉窗口

相關文章