剛開(kāi)始想用單片機(jī)做個(gè)頻率連續(xù)可調(diào)的信號(hào)發(fā)生器,后來(lái)就聯(lián)想到了當(dāng)時(shí)用FPGA做的DDS信號(hào)發(fā)生器了。然后上網(wǎng)搜資料,哈哈,這個(gè)還真有人做過(guò),大概看了一下人家的講解,就開(kāi)始干活啦!
DDS信號(hào)發(fā)生器的頻率計(jì)算公式如下:
其中fout為輸出頻率, M為累加器每次的步進(jìn)值,N為累加器的位數(shù),我這里采用的是unsigned int 16位的累加器。在FPGA系統(tǒng)中這個(gè)fc為系統(tǒng)時(shí)鐘,也就是有源晶振經(jīng)過(guò)分頻后的頻率。但是在單片機(jī)中我們只能用單片機(jī)進(jìn)中斷的頻率來(lái)作為fc。
fc的設(shè)置需要注意的是1、進(jìn)中斷的周期要大于中斷程序執(zhí)行的時(shí)間 2、進(jìn)中斷的周期也要大于DAC兩次寫(xiě)入數(shù)據(jù)的時(shí)間。
我采用的硬件stc12c5a08s2 24m晶振 dac0832
上最終效果圖
幾個(gè)頻率的測(cè)試波形
10Hz頻率測(cè)試
正弦波
方波
三角波
鋸齒波
制作經(jīng)歷:
昨天用單片機(jī)模擬個(gè)DDS信號(hào)發(fā)生器,畫(huà)了個(gè)板子。從開(kāi)始做板子就各種不順。。。。。。打印時(shí)打印機(jī)沒(méi)墨啦,地線(xiàn)我用的鋪銅,悲催的是鋪地墨太淺,沒(méi)法只好拿著油性筆把地線(xiàn)重新描了下。好吧,做板去,腐蝕順利。然后拿到板子測(cè)量電源和地沒(méi)短路,開(kāi)始焊接,一切順利。再次檢測(cè)電源和地是否短路,萬(wàn)用表討厭的滴滴聲想起來(lái)啦。。。。。。啊蒼天啊,短路啦,我焊接水平?jīng)]那么差吧,一個(gè)小板子竟然焊短路 啦!好吧開(kāi)始檢查電路,把電源線(xiàn)從頭看到尾看不出來(lái)短路啊,好吧再看兩遍,還是沒(méi)短路啊。沒(méi)法開(kāi)始上刀子割電源線(xiàn),割了兩刀短路范圍縮小啦,然后就逮著那一小段電源線(xiàn)左看右看上看下看沒(méi)短路啊,當(dāng)時(shí)就有點(diǎn)崩潰。然后打開(kāi)pcb,就沿著這條線(xiàn)對(duì)電路,暈死。。。。。。問(wèn)題是我描地線(xiàn)時(shí)把復(fù)位按鍵當(dāng)做獨(dú)立按鍵啦,本來(lái)接電源的線(xiàn)硬給畫(huà)到了地上,割開(kāi)不短路啦。可是我焊接前測(cè)試?yán)舶,沒(méi)短路啊親,怎么突然蹦出來(lái)電路缺陷短路啊,見(jiàn)鬼。上電,電源燈不亮。。。。。。趕緊拔下電源,摸摸芯片不熱啊,準(zhǔn)備好萬(wàn)用表,直接接在單片機(jī)的地和vcc上,上電,電壓正常,懷疑電源燈電路可能斷啦,一摸led焊盤(pán)直接翹起來(lái)啦,這的歸功于那沒(méi)墨的打印機(jī)。然后補(bǔ)線(xiàn),硬件搞定
下載測(cè)試程序,咦,下不進(jìn)去!我一開(kāi)始懷疑下載管腳沒(méi)接緊,我就輕微晃晃它,咦,怎么這么活絡(luò),翻過(guò)啦瞅瞅,下載的兩條插針焊盤(pán)全完蛋啦,好吧使用替換法,在其他板子上下載程序試試,可以下進(jìn)去,片子沒(méi)問(wèn)題,然后把片子裝到原來(lái)那個(gè)板子上,檢測(cè)程序不運(yùn)行。上示波器測(cè)試晶振管腳,沒(méi)波形,哈哈,問(wèn)題鎖定,晶振沒(méi)工作。這個(gè)晶振是在其他板子上拆的,是不是拆時(shí)間長(zhǎng)燒壞啦,換晶振,還不工作,好吧,我換30p電容,檢測(cè)晶振有波形,程序運(yùn)行,一切搞定。!
總結(jié)越悲催越是小問(wèn)題不斷。。。。。。
注:中間來(lái)回拔單片機(jī),一不留神,單片機(jī)兩根管腳硬生生鉆進(jìn)手指里!