99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖
  • 論壇首頁
  • 逆變/光伏/并網
  • 基于PIC16F877單片機通過SPWM脈寬調制技術軟件產生純正炫波,內容包含MPLAB源文件和protues仿真文件

基于PIC16F877單片機通過SPWM脈寬調制技術軟件產生純正炫波,內容包含MPLAB源文件和protues仿真文件

基于PIC16F877單片機通過SPWM脈寬調制技術軟件產生純正炫波,內容包含MPLAB源文件和protues仿真文件。

輸出波形如下:

波形輸出

protues的原理圖:

原理圖

C程序源代碼:

//  CCP1 PWM做為DAC輸出例子,輸出SPWM 波形,
//  即 sin PWM
//  請注意本例子中兩全局變量的單位是指令周期

#include "pic.h"

  __CONFIG (HS & LVPDIS & WDTDIS);
  unsigned char g_Period=255;    //PWM周期,單位為指令周期,最大值為255
  unsigned char g_DutyWidth=50; //PWM高電平寬度初值,單位為指令周期,最大值為255

#define  B1 RB0   // 按鍵B1狀態(tài)由RB0端口輸入
#define	XTAL_FREQ	4	// 外接晶振主頻,單位為MHz

const unsigned char st[] = 
{
 0x0, 0x2, 0x4, 0x6, 0x8, 0xb, 0xd, 0xf,         //8
 0x11, 0x13, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, //16
 0x23, 0x25, 0x27, 0x29, 0x2b, 0x2d, 0x2f, 0x31, 
 0x33, 0x35, 0x37, 0x39, 0x3b, 0x3d, 0x3f, 0x41,     //32
 0x43, 0x45, 0x47, 0x48, 0x4a, 0x4c, 0x4e, 0x4f, 
 0x51, 0x53, 0x54, 0x56, 0x58, 0x59, 0x5b, 0x5c, 
 0x5e, 0x5f, 0x61, 0x62, 0x64, 0x65, 0x66, 0x68, 
 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x71,    //64
 0x72, 0x73, 0x74, 0x74, 0x75, 0x76, 0x77, 0x78, 
 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 
 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e,    //88
 0x7e, 0x7e //7e(126)
};

void DelayMS(unsigned int ms) //定義延時函數(shù)
{
  unsigned int j=0;
  for(ms;ms>0;ms--)
   for(j=27*XTAL_FREQ;j>0;j--) // 1MHz時約是27,其它主頻請酌情修改
   {
   }
}  


void InitPWM(unsigned char dw)
{
  TRISC2=0; // RC2做為PWM輸出引腳
    
  T2CKPS1=0;  //TMR2預分頻比為1:1
  T2CKPS1=0;
  TMR2ON=1;   // 使能TMR2模塊

  // 設置PWM的工作周期
  PR2=g_Period-1; 
  
  // 設置占空比,本例子忽略高電平最低兩位
  CCPR1L=dw;  //獲得高電平寬度高8位  
  CCP1X=(g_DutyWidth>>1) & 0x01; // 獲得高電平寬度的次低位
  CCP1Y=g_DutyWidth & 0x01;      // 獲得高電平寬度最低位
  CCP1M3=1; //1100:PWM輸出模式
  CCP1M2=1;
  CCP1M1=0;
  CCP1M0=0;
  // 以上四條語句建議寫為:
  // CCP1CON=(CCP1CON & 0xF0) | 0b00001100; 
}

void main()
{ unsigned char i;
  TRISB0=1; // RB0輸入
  InitPWM(50); // 初始化CCP1的PWM方式
  DelayMS(1);//為何延時1mS
  while(1)
  {
    for(i=0;i<90;i++)
    {
      CCPR1L=128+st[i];//128+126=255;
       DelayMS(1);
    }
    for(i=89;i>0;i--)
    {
      CCPR1L=128+st[i];
      DelayMS(1);
    }
    for(i=0;i<90;i++)
    {
      CCPR1L=128-st[i];
       DelayMS(1);
    }
    for(i=89;i>0;i--)
    {
      CCPR1L=128-st[i];
      DelayMS(1);
    }
    //*/
    if(B1==0)  // 若按鍵B1有變化
    {
      DelayMS(30); // 消除機械按鍵前沿抖動
      if(B1==0)  // 再判斷為0說明是一次正常按鍵
      {
         g_DutyWidth+=50;    //增加占空比
         CCPR1L=g_DutyWidth; //賦值給高電平寬度寄存器
         if(g_DutyWidth>=g_Period)  //超出了PWM周期
         {
           g_DutyWidth=0; // 則高電平寬度清零,等待下次按鍵后增值
         }
         while(B1==0); // 等待用戶抬起B(yǎng)1
         DelayMS(30); // 消除機械按鍵后沿抖動
      }
     
    }
  }
}



全部回復(22)
正序查看
倒序查看
pppyyy02
LV.4
2
2014-04-30 11:14
很不錯!
0
回復
345295362
LV.6
3
2014-04-30 23:34
@pppyyy02
很不錯!
  TRISC2=0; // RC2做為PWM輸出引腳
    
  T2CKPS1=0;  //TMR2預分頻比為1:1
  T2CKPS1=0;
  TMR2ON=1;   // 使能TMR2模塊
為何TMR1定時器的預分頻要設置2步,一句T2CKPS1=0;不久OK了嗎
0
回復
345295362
LV.6
4
2014-04-30 23:52
@345295362
TRISC2=0;//RC2做為PWM輸出引腳T2CKPS1=0;//TMR2預分頻比為1:1T2CKPS1=0;TMR2ON=1;//使能TMR2模塊為何TMR1定時器的預分頻要設置2步,一句T2CKPS1=0;不久OK了嗎
還有就是你的正弦波實際只是一個直流電壓,并非正負交替輸出的正弦波,模擬示波器沒有時基顯示,這只是一個假象,在實際逆變橋上,不僅最少要用到2路SPWM輸出,還設計死區(qū)時間,正如你所說的,這只是一個DA轉換,輸出一個參考正弦波,通過添加一個2.5V基準源而得到正半周和負半周的正弦信號,實際應用顯然沒多少用處。
0
回復
余健
LV.3
5
2014-05-08 10:41
@345295362
還有就是你的正弦波實際只是一個直流電壓,并非正負交替輸出的正弦波,模擬示波器沒有時基顯示,這只是一個假象,在實際逆變橋上,不僅最少要用到2路SPWM輸出,還設計死區(qū)時間,正如你所說的,這只是一個DA轉換,輸出一個參考正弦波,通過添加一個2.5V基準源而得到正半周和負半周的正弦信號,實際應用顯然沒多少用處。
一切只是為了學習哈
0
回復
zhhufe
LV.5
6
2014-05-18 20:38

學習學習  謝謝分享  請發(fā)一份  zhhufe@yeah.net

0
回復
75482758
LV.6
7
2014-08-28 10:58
來一份學習下,感謝,75482758@qq.com
0
回復
2014-08-28 22:10
不錯!加精。
0
回復
2014-08-29 23:44

求編譯好的hex文件和仿真文件,多謝樓主!

14399956@胖企鵝點抗

0
回復
release
LV.6
10
2014-09-05 08:53
頂一個,順便做標記,有空的時候學習。
0
回復
2014-09-10 22:27
樓主你好,學習學習 821688218@qq.com 求個資料,萬分感謝!
0
回復
劉1234
LV.4
12
2014-09-12 11:10
@電力新員工
樓主你好,學習學習821688218@qq.com求個資料,萬分感謝!

頂一好,

0
回復
余健
LV.3
13
2014-09-13 17:46
@電力新員工
樓主你好,學習學習821688218@qq.com求個資料,萬分感謝!
以發(fā)送,多多交流
0
回復
ssff
LV.5
14
2014-09-20 09:57
@余健
以發(fā)送,多多交流
這才是好帖,謝謝。
0
回復
莫妙文
LV.1
15
2014-09-20 12:49
好貼學習了
0
回復
wj_12691495
LV.8
16
2014-09-20 14:41
@莫妙文
好貼學習了
這個要好好看看。
0
回復
2014-09-21 10:25
樓主什么時候開個手把手教PIC的帖子啊
0
回復
qiankm
LV.5
18
2014-10-05 09:45
,頂上。源代碼公開的必須頂
0
回復
2014-10-16 21:23
求編譯好的hex文件和仿真文件,郵箱zhang1388888@126.com,多謝樓主!
0
回復
lksy
LV.3
20
2014-11-03 08:46
求編譯好的hex文件和仿真文件,多謝樓主! 13261033626@163.com
0
回復
2014-11-08 23:56
我想要整個工程文件研究學習一下可以嗎? zhongqingdianzi@163.com
0
回復
kldmz
LV.3
22
2014-11-10 08:58

好,頂一個

0
回復
囚牛
LV.1
23
2014-12-09 18:16
1243143848@qq.coml樓豬,蝦蝦尼。
0
回復
發(fā)
主站蜘蛛池模板: 性做久久久久久免费观看软件 | 91看片免费版 | 少妇人妻偷人精品无码视频 | 亚洲午夜福利在线观看老司机 | 在线观看中文字幕一区 | 成人一区二区三区久久精品嫩草 | 天天做天天爱天天爽综合网 | 一本一道久久a久久综合蜜桃 | 狠狠噜天天噜日日噜视频麻豆 | 欧美成人黄色 | 网红主播精品视频在线观看 | 一级少妇性生话片 | 国产日韩在线 | 久热精品视频在线观看 | 一区二区三区波多野结衣在线观看 | 免费精品99久久国产综合精品 | 欧美大BBBB流白水 | 亚洲一区二区三区色噜噜 | 国产一区二区高清在线观看 | 国产精品成人一区二区三区吃奶 | 邻居少妇张开腿让我爽了在线观看 | 黑人上司粗大拔不出来 | 日韩欧美中文字幕在线四区 | 加勒比无码专区中文字幕 | 欧美大人和孩做爰aⅴ | 日韩一区二区三区四区区区 | 亚洲国产成人无码AV在线播放 | 国产综合久久一区二区三区 | 国产性色强伦免费视频 | 亚洲狠狠色丁香婷婷综合 | 女人被男人桶爽视频网站 | 91精品一区二区三区综合在线爱 | www.中出| 久草在线观看首页 | 日本一区二区三区精品福利视频 | 久久人人槡人妻人人玩夜色AV | 婷婷色一区| 先锋资源av免费网 | 岛国精品资源网站 | avtt久久 | 男女啪啪免费观看网站 |