51單片機DA10位TLC5615-SPI電機調(diào)速-輸出三角鋸齒正弦波源程序Proteus仿真圖
本次實驗實現(xiàn)了三角波、鋸齒波、正弦波的轉(zhuǎn)換。并且通過本次實驗可以了解DA10位TLC5615芯片的運用。
單5V電源工作;
3線串行接口;
上電時內(nèi)部自動復(fù)位;
10位DAC電路;
推薦工作條件:負載電阻不得小于2KΩ
TLC時序電路圖
image.png (87.02 KB)
下載附件
2021-7-20 17:30 上傳
TLC5615周期取值方法(我這里一個周期采了512個點)
用EXCEL公式 =INT(SIN( A2 *2 * 3.1415926)/512) * 512+0.5)
TLC5615判斷最高頻率或最低頻率
KEIL5先設(shè)置系統(tǒng)時鐘為12MHZ
運行DEBUG,觀察左側(cè)SEC的差值
用差值乘以采樣的數(shù)值算出來的值是被測信號最低時刻的周期
再把所設(shè)變量數(shù)值加到最大再次運行DUBUG得出來的是最高時刻的周
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
image.jpg (112.38 KB)
下載附件
2021-7-20 17:30 上傳
部分源碼:完整源碼見附件
- #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輸出對應(yīng)電壓值對應(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。實際輸出最大為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)換時間12.5us,故一次寫入數(shù)據(jù)(CS引腳從低電平至高電平跳躍)后須延時15us左右才可第二次刷入數(shù)據(jù)
復(fù)制代碼 完整單片機源碼和proteus仿真文件:
DA10位TLC5615-SPI電機調(diào)速-輸出三角鋸齒正弦波.zip
(402.93 KB, 售價: 5 E幣)
2021-7-20 18:15 上傳
點擊文件名下載附件
售價: 5 E幣 [記錄]
[ 購買]
【必讀】版權(quán)免責聲明
1、本主題所有言論和內(nèi)容純屬會員個人意見,與本論壇立場無關(guān)。2、本站對所發(fā)內(nèi)容真實性、客觀性、可用性不做任何保證也不負任何責任,網(wǎng)友之間僅出于學(xué)習(xí)目的進行交流。3、對提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請勿將該數(shù)字內(nèi)容進行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問題與本站無關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網(wǎng)站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來,僅供學(xué)習(xí)用途使用,請務(wù)必下載后兩小時內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請及時聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|