freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于ad9851的信號發(fā)生器(帶程序)-展示頁

2024-08-25 16:08本頁面
  

【正文】 q=freq8。 W3=(unsigned char)freqamp。 freq=freq8。 W4=(unsigned char)freqamp。 // SYSCLK = 180 MHz freq= (unsigned long int)(*Freqency)。 // SYSCLK = 180 MHz} FQ_UD_AD9851=1。 W_CLK_AD9851=0。_nop_()。_nop_()。_nop_()。 W_CLK_AD9851=1。_nop_()。_nop_()。 P2=W3。 W_CLK_AD9851=0。_nop_()。_nop_()。_nop_()。 W_CLK_AD9851=1。_nop_()。_nop_()。 P2=W1。 W_CLK_AD9851=0。//字裝入信號,上升沿有效_nop_()。_nop_()。 P2=Control_AD9851。 FQ_UD_AD9851=0。unsigned char W4=0X8e。//附初值為1MHZunsigned char W2=0X38。 // // ////======================unsigned long int freq = 0。sbit FQ_UD_AD9851=P3^3。} 上面的代碼中已經有詳細的注解。 DDS_FQUD=1。 }_nop_()。_nop_()。 _nop_()。 DDS_CLK=0。 _nop_()。_nop_()。 _nop_()。 (0x01))。i8。 bytedata=1。_nop_()。_nop_()。_nop_()。_nop_()。 DDS_CLK=1。 //按時序寫入 D7=(bit)(bytedataamp。 {i++)//先寫32位的頻率控制子(現低位后高位) for(i=0。_nop_()。_nop_()。 DDS_FQUD=0。//模式選擇為六倍頻 int i。 //發(fā)送控制字void send_control( unsigned long return(water)。//外部晶振為30M,6倍頻后180M,其關系由公式算出。 water。 //計算9851控制字,freq為你要輸出的頻率unsigned long control_word(float freq) send_control(x)。 x=control_word(500000)。 AD9851Init()。 DDS_FQUD=0。 x。main(){ DDS_FQUD=0。 DDS_FQUD=1。 DDS_CLK=0。 DDS_CLK=1。 DDS_FQUD=0。 DDS_CLK=0。 void send_control( unsigned long //接外部晶振時鐘 這里為30Munsigned long control_word(float DDS_FQUD=P3^4。 //控制子串傳送位sbit 2007828water************************************************************/include include include 硬件電路圖網上有很多資源,自己去找找!主要看看代碼吧:/*************************************************************其串行發(fā)送方式的控制子表如下:本人主要將用串寫控制子的時序與代碼。其余的剩下幾位由于沒用到也就默認寫為0了。這里我們只解決頻率控制問題。其中前面32位就是頻率控制子了。若看不懂E文,可以發(fā)E_M給我,我有中文資料。AD9851的一些具體介紹這里就不說了。所以要想提高輸出頻率的最大值,就得靠提高系統(tǒng)的外部時鐘Fclk。B的值也不能太大,否則會輸出失真波形。如果此時的相位累加增量為(頻率控制字)為B,那么此時的輸出頻率應為Fout=(B*Fclk)/ N。 如果相位累加器(頻率控制子)的位寬為N位(ad9851的N=32位)這就意味著把一個周期的正弦波形離散成了2的N次方個點,把這些點的幅值存在一個ROM中就構成了正弦查找ROM。通過改變相位累加的增量就很容易的改變的輸出的頻率了。 學過FPGA的同仁們,應該對DDS的原理就會有很好的理解了。下面將有電路圖,以及詳細的代碼。 基于AD9851的信號發(fā)生器最近幾年的電子設計大賽,差不多每年都考了DDS的設計。本人曾經也調試過DDS,但走了一些彎路,在這里寫下一些心得,希望能對初調者有點幫助。用FPGA是很容易把一個簡單型的ad8952燒出來的!其實原理相當的簡單,無非就是由相位累加器,相位調制器,正弦查找ROM,DAC構成。如果系統(tǒng)時鐘為Fclk,即把Fclk分成了2的N次方份。顯然B=1時其最小值為Fclk/ N。Fout的最大值理論上應該至少小于Fclk/4。 下面結合本人的代碼來具體講講AD9851的應用。其DATASHEET上都說的很清楚。AD9851要寫40位的控制子。后面是有1個6倍頻使能位,1個logic0位,1個POWER_DOWN位,還有5位相位模式字。也就是說在代碼中本人只寫了,32位的頻率控制子,還有一個6倍頻使能。AD9851可以用并和串倆中方式寫入控制子。其并的方式的代碼也會給出。ad9851串口驅動程序 //定義管腳sbit D7=P3^3。 //更新發(fā)送頻率 sbit DDS_CLK=P3^5。 freq)。 bytedata)。void AD9851Init(void) //DDS初始化函數,包括DDS復位和初始化為串行發(fā)送{} unsigned long while(1)} {unsigned longwater=*freq。//water=*freq。 //若不用6倍頻,則其關系} bytedata){unsigned char model=0x01。 _nop_()。_nop_()。_nop_()。i32。(0x00000001))。 _nop_()。_nop_()。_nop_()。 //必要的時序延時 DDS_CLK=0。 _nop_()。_nop_()。_nop_()。 } for(i=0。i++)//再寫其他8位控制字,這里只寫了6倍頻使能 { D7=(bit)(modelamp。 DDS_CLK=1。_nop_()。_nop_()。_nop_()。_nop_()。 model=1。 DDS_FQUD=0。其參考DATASHEET中的時序如下:并行方式的驅動代碼如下://======IO Define=======//sbit DDSRST=P2^0。sbit W_CLK_AD9851=P3^4。//unsigned char Control_AD9851 = 0x09。 Phase0 ,power down mode and 6 REFCLK Multiplier enable//unsigned char Control_AD9851 = 0x00。 Phase0 ,power on mode and 6 REFCLK Multiplier disableunsigned char Control_AD9851 = 0x01。 Phase0 ,power onmode and 6 REFCLK Multiplier enableunsigned char W1=0X0e。unsigned char W3=0Xe3。void Parallel2Serial_AD9851(void){ W_CLK_AD9851=0。_nop_()。_nop_()。//延時很重要,對時序 W_CLK_AD9851=1。_nop_()。_nop_()。_nop_()。 W_CLK_AD9851=0。 P2=W2。_nop_()。_nop_()。
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1