久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
問大神:STC8A8K64S4A12芯片怎么單獨使用里面PWM部分產生正弦波信號
[打印本頁]
作者:
zz2200
時間:
2019-8-9 13:52
標題:
問大神:STC8A8K64S4A12芯片怎么單獨使用里面PWM部分產生正弦波信號
同標題
作者:
angmall
時間:
2019-8-12 14:23
一個SPWM帶有死區的程序 用STC8A8K64S4A12單片機編寫的SPWM
//一個SPWM帶有死區的程序 用STC8A8K64S4A12單片機編寫的SPWM
//介紹了一種高性能微機控制的單相 SPWM 變頻調速系統
// SPWM信號經低通濾波后可變換為正弦波,窄帶范圍內的方波經低通濾波后可變換為相應頻率的正弦波
//程序能用,如果不是你想要的頻率,那就 自己改一下數據 記得同時要替換數組里面的值
#define MAIN_Fosc 24000000L //定義主時鐘
#include "STC8.H"
unsigned int code T_SinTable[]={
1220, 1256, 1292, 1328, 1364, 1400, 1435, 1471, 1506, 1541,
1575, 1610, 1643, 1677, 1710, 1742, 1774, 1805, 1836, 1866,
1896, 1925, 1953, 1981, 2007, 2033, 2058, 2083, 2106, 2129,
2150, 2171, 2191, 2210, 2228, 2245, 2261, 2275, 2289, 2302,
2314, 2324, 2334, 2342, 2350, 2356, 2361, 2365, 2368, 2369,
2370, 2369, 2368, 2365, 2361, 2356, 2350, 2342, 2334, 2324,
2314, 2302, 2289, 2275, 2261, 2245, 2228, 2210, 2191, 2171,
2150, 2129, 2106, 2083, 2058, 2033, 2007, 1981, 1953, 1925,
1896, 1866, 1836, 1805, 1774, 1742, 1710, 1677, 1643, 1610,
1575, 1541, 1506, 1471, 1435, 1400, 1364, 1328, 1292, 1256,
1220, 1184, 1148, 1112, 1076, 1040, 1005, 969, 934, 899,
865, 830, 797, 763, 730, 698, 666, 635, 604, 574,
544, 515, 487, 459, 433, 407, 382, 357, 334, 311,
290, 269, 249, 230, 212, 195, 179, 165, 151, 138,
126, 116, 106, 98, 90, 84, 79, 75, 72, 71,
70, 71, 72, 75, 79, 84, 90, 98, 106, 116,
126, 138, 151, 165, 179, 195, 212, 230, 249, 269,
290, 311, 334, 357, 382, 407, 433, 459, 487, 515,
544, 574, 604, 635, 666, 698, 730, 763, 797, 830,
865, 899, 934, 969, 1005, 1040, 1076, 1112, 1148, 1184,
};
#define PwmClk_1T 0
#define PwmClk_2T 1
#define PwmClk_3T 2
#define PwmClk_4T 3
#define PwmClk_5T 4
#define PwmClk_6T 5
#define PwmClk_7T 6
#define PwmClk_8T 7
#define PwmClk_9T 8
#define PwmClk_10T 9
#define PwmClk_11T 10
#define PwmClk_12T 11
#define PwmClk_13T 12
#define PwmClk_14T 13
#define PwmClk_15T 14
#define PwmClk_16T 15
#define PwmClk_T2 16
#define EAXSFR() P_SW2 |= 0x80 /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作對象為擴展SFR(XSFR) */
#define EAXRAM() P_SW2 &= ~0x80 /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作對象為擴展RAM(XRAM) */
#define PWM_Enable() PWMCR |= 0x80 /* 使能PWM波形發生器,PWM計數器開始計數 */
#define PWM_Disable() PWMCR &= ~0x80 /* 關閉PWM波形發生器 */
#define P2n_standard(bitn) P2M1 &= ~(bitn), P2M0 &= ~(bitn)
#define P2n_push_pull(bitn) P2M1 &= ~(bitn), P2M0 |= (bitn)
#define P2n_pure_input(bitn) P2M1 |= (bitn), P2M0 &= ~(bitn)
#define P2n_open_drain(bitn) P2M1 |= (bitn), P2M0 |= (bitn)
#define PWM_VECTOR 22
#define PWM_DeadZone 12 /* 死區時鐘數, 6 ~ 24之間 */
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
sbit OE245 =P4^1;
sbit LED_OUT =P3^3;
#define Port P1 //設置CPU和模塊的通訊接口
u8 PWM_Index; //SPWM查表索引
void delay(unsigned long d)
{
while(d--);
}
//========================================================================
// 函數: void PWM_config(void)
// 描述: PWM配置函數。
// 參數: none.
// 返回: none.
// 版本: VER1.0
// 日期:
// 備注:
//========================================================================
void PWM_config(void)
{
EAXSFR(); // 訪問XFR
PWM3T1 = 65; // 第一個翻轉計數
PWM3T2=1220; // 第二個翻轉計數
PWM3CR =0; // PWM3輸出選擇P2.3, 無中斷
PWM3CR |= 0x80; // 相應PWM通道的端口為PWM輸出口,受PWM波形發生器控制 ENC30
PWM3CR &= ~0x40; // 設置PWM輸出端口的初始電平為0 C3INI
P23 = 0;
P2n_push_pull(1<<3); //IO初始化, 上電時為高阻
PWM4T1= 65-PWM_DeadZone; // 第一個翻轉計數低字節
PWM4T2 = (1220+PWM_DeadZone); // 第二個翻轉計數高字節
PWM4CR = 0; // PWM4輸出選擇P2.2, 無中斷
PWM4CR |= 0x80; // 相應PWM通道的端口為PWM輸出口,受PWM波形發生器控制 ENC40
// PWMCFG &= ~0x04; // 設置PWM輸出端口的初始電平為0 C4INI
PWM4CR |= 0x40; // 設置PWM輸出端口的初始電平為1
P24 = 1;
P2n_push_pull(1<<4); //IO初始化, 上電時為高阻
PWMC = 2400; // PWM計數器的高字節
PWMCKS = PwmClk_1T; // 時鐘源: PwmClk_1T,PwmClk_2T, ... PwmClk_16T, PwmClk_Timer2
EAXRAM(); // 恢復訪問XRAM
PWMCR |= ENPWM; // 使能PWM波形發生器,PWM計數器開始計數
// PWMCR &= ~ECBI; // 禁止PWM計數器歸零中斷
PWMCR |= ECBI; // 允許PWM計數器歸零中斷
// PWMFDCR = ENFD | FLTFLIO | FDIO; //PWM失效中斷控制, ENFD | FLTFLIO | EFDI | FDCMP | FDIO
}
/**********************************************/
void main(void)
{
unsigned char i;
OE245 =0;
LED_OUT =1;
PWM_config(); //初始化PWM
EA = 1; //允許全局中斷
while (1)
{
for(i=1;i!=0;i<<=1) // 0000 0000
{
Port =~i; //0111 1111
delay(200000);
}
}
}
/********************* PWM中斷函數************************/
void PWM_int (void) interrupt PWM_VECTOR
{
u16 j;
u8 SW2_tmp;
if(PWMCFG & CBIF) //PWM計數器歸零中斷標志 PWMCFG
{
PWMCFG &= ~CBIF; //清除中斷標志
SW2_tmp = P_SW2; //保存SW2設置
EAXSFR(); //訪問XFR
j = T_SinTable[PWM_Index];
PWM3T2H = (u8)(j >> 8); //第二個翻轉計數高字節
PWM3T2L = (u8)j; //第二個翻轉計數低字節
j += PWM_DeadZone; //死區
// 指向PWM4
PWM4T2H = (u8)(j >> 8); //第二個翻轉計數高字節
PWM4T2L = (u8)j; //第二個翻轉計數低字節
P_SW2 = SW2_tmp; //恢復SW2設置
if(++PWM_Index >= 200) PWM_Index = 0;
}
}
復制代碼
單片機SPWM波 產生正弦波的源程序及工具
http://www.zg4o1577.cn/bbs/dpj-55510-1.html
作者:
cjm82
時間:
2019-8-12 22:50
如果要求不高,用50%占空比輸出方波,經過一個截止頻率等于方波頻率的4階以上低通濾波器,出來的基本就是個正弦波了.
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲一区亚洲二区
|
国产成人在线播放
|
青青久草
|
日韩免费视频
|
激情黄色在线观看
|
国产精品久久久亚洲
|
亚洲精品2区
|
av黄色网
|
色综合天天综合网国产成人网
|
日韩免费
|
欧美综合视频
|
精品一区二区三区电影
|
成人精品鲁一区一区二区
|
免费看91
|
欧美成人在线免费
|
欧洲一级视频
|
久久国产精品免费视频
|
91精品国产91久久久久久
|
夜夜撸av
|
国产精品视频一二三区
|
精品国产一区二区三区性色av
|
国产大毛片
|
国产在线精品一区二区三区
|
国产成人免费视频网站高清观看视频
|
污视频在线免费观看
|
男人的天堂在线视频
|
精品国产乱码久久久久久闺蜜
|
日韩精品视频在线播放
|
精品视频免费
|
久久久久国产一区二区三区四区
|
91免费观看国产
|
亚洲av毛片
|
夏同学福利网
|
国产精品1区2区3区 男女啪啪高潮无遮挡免费动态
|
欧美国产精品一区二区三区
|
日韩在线一区二区
|
天天干成人网
|
国产在线精品一区
|
国产福利91精品一区二区三区
|
亚洲第一视频
|
国产精品精品视频
|