導航:首頁 > 操作系統 > 51單片機dac0832

51單片機dac0832

發布時間:2022-09-27 19:23:42

『壹』 51單片機和DAC0832製作可調頻的信號發生器

你的問題很好解釋啊!
256個點,DAC0832速率為1us左右,理論上頻率可以達到1M/256=3906HZ。
但實際上受器件影響,不一定達到這么高的頻率。
不過由於你用的是51單片機,12T的模式,執行指令的速率非常低,所以真正影響頻率的首先不是DAC0832,而是單片機。因相對於DAC0832的速率,單片機的速率慢了很多,所以單片機的速率是跟不上DAC0832的。
像你程序中用了這么多if,各種判斷,頻率的運算,還要加上中斷的耗時,必定會將頻率降下來了。
12T模式的51,單周期時間為1M,加上這些if啊,運算啊,中斷耗時啊,頻率一下子就降下來了……
所以,要提高速度,取的波形點降低,沒必要高這么多,256太高了。你DAC0832後級做出濾波即可。采樣定理不是說了嘛,采樣速率只要不小於2倍的信號頻率,即可還原出原始波形。理論上波形點只要2點就夠了…… 但實際應用中,取16個點,或者32個點,也是足夠了…… 拿32個點來說,256/32=8,速度一下子就上升8倍……

『貳』 51單片機控制DAC0832產生正弦波,如何用定時器改變頻率,求代碼!

你確定是使用定時器改變頻率??
下面的程序是使用定時器改變幅值的,你要是確定是定時器改變頻率的話,把具體的要求貼出來
#include <reg51.h>
unsigned int i;
code unsigned char Sin[128]={
64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,
109,111,113,115,117,118,120,121,123,124,125,126,126,
127,127,127,127,127,127,127,126,126,125,124,123,121,
120,118,117,115,113,111,109,106,104,102,99,96,94,91,
88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,
36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,
1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,
25,28,31,33,36,39,42,45,48,51,54,57,60};
main()
{
TMOD=0X01;
EA=1;
ET0=1;
TR0=1;
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
while(1)
{
P1=Sin[i];
}
}
void timer0(void) interrupt 1
{
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
i=i+1;
if(i==128)i=0;
}

『叄』 51單片機與DAC0832有一句程序不理解 請大神賜教 如題

不是說地址了嗎?DACR=0或者=1,都是兩路DAC寄存器地址訪問命令,只是輸出的數據(通過數據匯流排送出)什麼都可以。

『肆』 51單片機與DAC0832連接輸出三角波

給你個參考

建三角波的斜線函數,設三角波的幅值=2V,采樣10個點(紅色斜線段),那麼 K=2/10;

如此即可計算出Uo數列:0.2、0.4、0.6、。。。1.8、2.0,按順序送到0832,下降線段就是反過來送。送數的快慢,反映在輸出波形上的頻率,采樣點的多少,就決定了輸出波形的相似度,也叫失真度;

正弦波的計算同理。

這里是交流平台,有問有答。你的問題沒有唯一答案,也沒有標准答案,我的回答算是一個思路,你有不同的想法可以提出來,才知道你想要什麼;

你提出新要求並加分,可以,一聲不吭直接加分的形式就不是個好方法

『伍』 利用MCS51單片機與DAC0832組成一個簡易三角波發生器。

#include<reg52.h> //包含頭文件
#include<intrins.h>
#define uchar unsigned char //宏定義
#define uint unsigned int
uchar pinlv=100;
uint a,b;
uchar code sanjiao[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
}; //三角波取碼
void initclock() //定時器初始化函數
{
TMOD=0x01; //定時器的工作方式
TH0=a;
TL0=b; //定時器賦初值
EA=1; //打開中斷總開關
ET0=1; //打開定時器允許中斷開關
TR0=1; //打開定時器定時開關
}
void main() //主函數
{
m=65536-(15000/pinlv); //定時器初值
a=m/256;
b=m%256;
initclock(); //定時器初始化
while(1)
{
P1=sanjiao[u]; //三角波
}
}
void T0_time()interrupt 1 //定時器
{
TH0=a;
TL0=b;
u++; //變數加
if(u>=64) //一個周期采樣64個點, 所以加到64就清零
u=0; //u清零
//根據不同的初值,定時器定時時間不同,達到不同頻率的目的
}

『陸』 51單片機控制DAC0832產生正弦波,如何用定時器改變頻率,求代碼!

可以用一個定時器中斷,在中斷服務程序裡面,直接把對應的正弦采樣數據置入P1口,通過修改定時器的中斷間隔,達到調整輸出頻率的目的;
假設你的采樣數據的原始采樣率為1KHz, 被采樣正弦波頻率為100Hz,當Timer中斷間隔為1ms時,DAC那裡輸出處理後輸出即為100Hz, 如果中斷間隔為500us,輸出就是200Hz

static unsigned char byIndex=0;
中斷函數裡麵包含如下兩句

P1 = Sin[byIndex++];
byIndex &= 0x7f;

『柒』 51單片機和DAC0832這樣連接屬於什麼方式連接是單緩沖方式嗎

1)單緩沖工作方式 :
一個寄存器工作於直通狀態,
一個工作於受控鎖存器狀態
在不要求多相D/A同時輸出時,可以採用單緩沖方式,
此時只需一次寫操作,就開始轉換,
可以提高D/A的數據吞吐量。
2) 雙緩沖工作方式:
兩個寄存器均工作於受控鎖存器狀態
當要求多個模擬量同時輸出時,可採用雙重緩沖方式。
你看你什麼情況

閱讀全文

與51單片機dac0832相關的資料

熱點內容
十三排電影院坐第幾排 瀏覽:122
尼故福利院 瀏覽:602
哪有好看的電影網站 瀏覽:773
紅顏薄命女斗小說 瀏覽:940
法國電影戀愛love2012電影完整版 瀏覽:459
在線影視 不卡 瀏覽:168
老男孩韓國完整版百度網盤 瀏覽:485
用箱子運水怪結果被放出來了電影 瀏覽:519
徐錦江空中飛人片名 瀏覽:164
手機免費在線看福利電影 瀏覽:457
羅麗星克萊爾經典 瀏覽:342
台灣紅羊有哪些經典電影 瀏覽:568
免下載你懂的 瀏覽:975
新建文件夾1女演員三位 瀏覽:740
不用下載就能看的視頻網站 瀏覽:330
我一個神偷硬生生把國家偷成強國 瀏覽:600
樣子是五歲小男孩和郭富城演的 瀏覽:460
韓國演員也美娜 瀏覽:898
陸離是哪部小說的主角 瀏覽:49
華娛開局佟麗婭 瀏覽:17