国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
51單片機(jī)TLC5615-SPI電機(jī)調(diào)速輸出三角鋸齒正弦波程序和Proteus
[打印本頁(yè)]
作者:
eng
時(shí)間:
2021-7-20 18:15
標(biāo)題:
51單片機(jī)TLC5615-SPI電機(jī)調(diào)速輸出三角鋸齒正弦波程序和Proteus
51單片機(jī)DA10位TLC5615-SPI電機(jī)調(diào)速-輸出三角鋸齒正弦波源程序Proteus仿真圖
本次實(shí)驗(yàn)實(shí)現(xiàn)了三角波、鋸齒波、正弦波的轉(zhuǎn)換。并且通過本次實(shí)驗(yàn)可以了解DA10位TLC5615芯片的運(yùn)用。
單5V電源工作;
3線串行接口;
上電時(shí)內(nèi)部自動(dòng)復(fù)位;
10位DAC電路;
推薦工作條件:負(fù)載電阻不得小于2KΩ
TLC時(shí)序電路圖
image.png
(87.02 KB)
下載附件
2021-7-20 17:30 上傳
TLC5615周期取值方法(我這里一個(gè)周期采了512個(gè)點(diǎn))
用EXCEL公式 =INT(SIN( A2 *2 * 3.1415926)/512) * 512+0.5)
TLC5615判斷最高頻率或最低頻率
KEIL5先設(shè)置系統(tǒng)時(shí)鐘為12MHZ
運(yùn)行DEBUG,觀察左側(cè)SEC的差值
用差值乘以采樣的數(shù)值算出來的值是被測(cè)信號(hào)最低時(shí)刻的周期
再把所設(shè)變量數(shù)值加到最大再次運(yùn)行DUBUG得出來的是最高時(shí)刻的周
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
image.jpg
(112.38 KB)
下載附件
2021-7-20 17:30 上傳
[attach]220963[/attach]
部分源碼:完整源碼見附件
#include "reg51.h"
#include "math.h"
#define u8 unsigned char//0--255
#define u16 unsigned int//0--665535
sbit DA_CLK=P3^5;
sbit DA_CS=P3^6;
sbit DA_DAT=P3^7;
u8 j=0,i=0;
u8 tab[]={ //此數(shù)組內(nèi)的數(shù)據(jù)為,da輸出對(duì)應(yīng)電壓值對(duì)應(yīng)的數(shù)字量,0是0V,255是5V
135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,
146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128
};
u16 da;
void delay16(u8 i){while(i--);}
void WriteDA(u16 dat)//寫入0到482的數(shù),控制輸出電壓0-4.71V
{
u8 i;
DA_CS=0;
dat<<=2;//TLC5615的低2位無效
for(i=0;i<12;i++)
{
DA_CLK=0;
DA_DAT=(dat&0x0800)?1:0;
DA_CLK=1;
dat<<=1;
DA_CLK=0;
}
DA_CS=1;
}
//void getSinTab(u8 point,u16 maxnum)
//{
// float x;
// float jiao;
// jiao=360.000/point;
// for(i=0;i<point;i++)
//{
// x=jiao*i; //得到角度值
// x=x*(3.14/180); //角度轉(zhuǎn)弧度 弧度=角度*(π/180)
// tab[i]=(maxnum/2)*sin(x)+(maxnum/2); // tab[i] 為得到的正弦波數(shù)據(jù),用于送給DA輸出。
//}
//}
void main()
{
EA=1;
IT0=1;
EX0=1;
// getSinTab(64,1024);
while(1)
{
if(j==0)
{WriteDA(da++);
if(da>482)da=0;//Vout=2*5V*da/1024。實(shí)際輸出最大為4.6V到4.7V
delay16(1000);}
if(j==2)
{
u16 k;
for(k=0;k<64;k++)
{
// tab[k]<<=6;
WriteDA(tab[k]);
}
}
if(j==1)
{
u16 up;
for(up=0;up<200;up++)
{
WriteDA(up);
}
for(up=200;up>0;up--)
{
WriteDA(up);
}
}
}
}
void INT() interrupt 0
{
if(j<=1) j++;
else j=0;
}
//TLC5615最大輸出電壓為VDD-0.4V。5V的邏輯電平最大輸入電壓為4.6V,參考電壓Vref輸入必須在0~2.3V范圍之內(nèi)
//SPI最大傳輸速度為1.21MHz,DA轉(zhuǎn)換時(shí)間12.5us,故一次寫入數(shù)據(jù)(CS引腳從低電平至高電平跳躍)后須延時(shí)15us左右才可第二次刷入數(shù)據(jù)
復(fù)制代碼
完整單片機(jī)源碼和proteus仿真文件:
DA10位TLC5615-SPI電機(jī)調(diào)速-輸出三角鋸齒正弦波.zip
(402.93 KB, 售價(jià): 5 E幣)
2021-7-20 18:15 上傳
點(diǎn)擊文件名下載附件
售價(jià): 5 E幣
[記錄]
[
購(gòu)買
]
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0