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

正文內(nèi)容

基于dds和單片機(jī)的信號發(fā)生器設(shè)計(jì)-資料下載頁

2024-11-16 20:41本頁面

【導(dǎo)讀】合成技術(shù)發(fā)展的主要目標(biāo)。本設(shè)計(jì)是以STC89C52單片機(jī)為控制核心的DDS頻率合成信號發(fā)生器。文中詳細(xì)介紹了硬件電路設(shè)計(jì)的原理和DDS芯片AD9835的使用。該信號發(fā)生器輸出的波形頻率和幅值在一定范圍內(nèi)可任意改變,與傳統(tǒng)信

  

【正文】 9835 上電工作 D12 是復(fù)位位 RESET: 當(dāng) D12=1 時(shí),相位累加器被置于零相位,對應(yīng)一個(gè)滿度的模擬輸出。 D11 是清零位 CLR: 當(dāng) D11=1時(shí), SYNC 和 SELSRC 被置零, CLR自動復(fù)位到零 . 數(shù)據(jù)控制字主要用 于給 AD9835 加載頻率和相位值,其格式如表 所列。該控制字由 4 位命令 C3~ C0、 4 位地址 A3~ A0 和 8 位數(shù)據(jù) D7~ D0 三部分組成。其中 4 位地址 A3~ A0 就是表 所代表的頻率或相位寄存器的地址。 表 數(shù)據(jù)控制字 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 C3 C2 C1 C0 A3 A2 A1 A0 MSB LSB 4 位命令 C3~ C0 主要用于設(shè)定頻率和相位寄存器的選擇及數(shù)據(jù)寫入,其值及其對應(yīng)的功能如表 所列 。 表 數(shù)據(jù)控制字中的 C 命令 C3 C2 C1 C0 命令 0 0 0 0 從串口給所選相位寄存器寫入 16 位相位字 0 0 0 1 從串口給所選相位寄存器寫入 8 位相位字 0 0 1 0 從串口給所選頻率寄存器寫入 16 位頻率字 0 0 1 1 從串口給所選頻率寄存器寫入 8 位頻率字 0 1 0 0 選擇相位寄存器: SELSRC=1 時(shí),用位 PSEL0( D9)和PSEL1(D10)選擇相位寄存器。 攀枝花學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 26 SELSRC=0 時(shí),用引腳 PSEL0 和 PSEL1選擇相位寄存器。 0 1 0 1 選擇頻 率寄存器: SELSRC=1 時(shí),用位 FSELECT(D11)選擇頻率寄存器。 SELSRC=0時(shí),用引腳 FSELECT 選擇頻率寄存器。 0 1 1 0 僅一次寫入即可同時(shí)設(shè)定頻率寄存器和相位寄存器: SELSRC=1 時(shí),用位 PSEL0( D9)和PSEL1(D10)選擇相位寄存器,用位FSELECT(D11)選擇頻率寄存器。 SELSRC=0 時(shí),用引腳 PSEL0 和 PSEL1選擇相位寄存器,用引腳 FSELECT 選擇頻率寄存器。 0 1 1 1 測試,用于制造商檢查的保留命令 ○ 3 編程 AD9835 的編程實(shí)際上就是單片機(jī)通過 AD9835 的串行數(shù)據(jù)輸入線向 AD9835 寫入初始化控制字和數(shù)據(jù)控制字。初始化控制字用于設(shè)置 AD9835 的電源模式、復(fù)位和清零等,還可以選擇在調(diào)制中是使用引腳還是位來控制 AD9835。一旦設(shè)定后, AD9835 將保持設(shè)定狀態(tài)不變,直到重新設(shè)置。數(shù)據(jù)控制字主要用于給 AD9835 設(shè)定輸出頻率。 子程序 AD9835_ INIT(void)中的前面兩條語句就是給 AD9835 寫入表 的初始化控制字,對 AD9835 復(fù)位清零,控制字的值為 F800H。接下來 的四組語句寫入表 的數(shù)據(jù)控制字,用于設(shè)定輸出頻率。每個(gè)控制字由 4 位命令、 4 位地址和 8 位頻率值三部分組成,頻率值只有 8 位,對于 32 位的頻率值來說,需要寫四次才能完成。頻率寄存器的 4 字節(jié)值由子程序 AD9835_WORK(void)計(jì)算出來,并被保存在 freq_word[4]的字符數(shù)組中,以便寫入程序和顯示程序調(diào)用。 AD9835 的輸出頻率可由下面公式計(jì)算 式( ) 式中的 △ phase 是相位增量; fclk是基準(zhǔn)時(shí)鐘頻率,這里為 50MHz,當(dāng)基準(zhǔn)時(shí)鐘頻率一定時(shí), AD9835 可輸出的最低信號頻率為 式( ) 將 fclk=50MHz 代入公式( ),可求得 fmin=。令 3 軟件程序設(shè)計(jì) 27 式( ) 將 fmin= 代入公式( ),可求得 k=。 當(dāng)需要 AD9835 輸出某一頻率為 f 的信號時(shí),由式( ),式( )和式( )可求出相應(yīng)的相位增量為 式( ) 實(shí)際上,相位增量就是決定 AD9835 輸出頻率的數(shù)據(jù)控制字中的頻率數(shù)據(jù),將它寫入 AD9835 的頻率寄存器中,就能使 AD9835 輸出需要的信號頻率。直接使用公式 ()就行了。子程 序 AD9835_WORK(void)就是利用公式 ()進(jìn)行計(jì)算的。 子程序 AD9835_INIT(void)中最后三條語句是用表 的初始化控制字讓 AD9835進(jìn)入正常電源工作模式,控制字的值為 C000H,其中 D15=D14=1,SLEEP=RESET=CLR=0。 16 位的控制字分為 2 字節(jié),由子程序 AD9835_WORD(uchar)寫入 AD9835,由于子程序 AD9835_BYTE(uchar)一次只能寫入 1 字節(jié),所以,需要調(diào)用 AD9835_WORD(uchar)兩次才能完成。 下面是有關(guān) AD9835 初始化編程的四個(gè)子程序。 void AD9835_BYTE(uchar a) { uchar n=0。 for(n=0。n8。n++) { if(((an)amp。0x80)==0) { SDATA=0。 } else { SDATA=1。 } SCLK=0。 _nop_()。 _nop_()。 SCLK=1。 } } void AD9835_WORD(uchar *p) { 攀枝花學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 28 FSYNC=0。 AD9835_BYTE(*p)。 p++。 AD9835_BYTE(*p)。 FSYNC=1。 } void AD9835_INIT(void) { uchar dds[2]={0xF8,0x00}。 AD9835_WORD(dds)。 dds[0]=0xA0。 dds[1]=0x00。 AD9835_WORD(dds)。 dds[0]=0x33。 dds[1]=freq_word[0]。 AD9835_WORD(dds)。 dds[0]=0x22。 dds[1]=freq_word[1]。 AD9835_WORD(dds)。 dds[0]=0x31。 dds[1]=freq_word[2]。 AD9835_WORD(dds)。 dds[0]=0x20。 dds[1]=freq_word[3]。 AD9835_WORD(dds)。 dds[0]=0xC0。 dds[1]=0x00。 AD9835_WORD(dds)。 } void AD9835_WORK(void) { unsigned long Z=0。 float X。 X=(freq[0]*+freq[1]*1+freq[2]*10+freq[3]*100+freq[4]*1000+freq[5]*10000+freq[6]*100000+freq[7]*1000000)*。 Z=X。 freq_word[3]=(char)Z。 freq_word[2]=(char)(Z8)。 freq_word[1]=(char)(Z16)。 freq_word[0]=(char)(Z24)。 } 3 軟件程序設(shè)計(jì) 29 4 4 矩陣鍵盤程序設(shè)計(jì) 4 4 矩陣鍵盤識別處理 每個(gè)按鍵 有它的行值和列值 , 行值和列值的組合就是識別這個(gè)按鍵的編碼。矩陣的行線和列線 分成兩個(gè) 4 位 并行接口和 單片機(jī) 通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“ 0” 和 “ 1” , 按鍵 的一端通過電阻接 VCC,而接地是通過程序輸出數(shù)字 “0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動。兩個(gè) 4 位 并行口中,一個(gè) 并行口 輸出掃描碼,使按鍵逐行動態(tài)接地 ; 另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。 鍵盤 程序 流程圖如圖 開 始按 鍵 按 下延 時(shí) 去 抖確 認(rèn) 按鍵 按 下P 1 = 0 X F 0P 1 = 0 X F E本 行 是 否 有按 鍵 按 下P 1 = 0 X F D本 行 是 否 有按 鍵 按 下P 1 = 0 X F B本 行 是 否 有按 鍵 按 下P 1 = 0 X F 7是是否否否否否是按 鍵 特 征 碼是是查 鍵 值 表結(jié) 束 圖 鍵盤程序流程圖 4 4 矩陣鍵盤的編程方法 ○ 1 先讀取鍵盤的狀態(tài),得到按鍵的特征編碼 先從 P0 口的高四位輸出高電平,低四位輸出低電平,從 P0 口的高四位讀取鍵盤狀態(tài)。再從 P1 口的高四位輸出高電平,低四位依次輸出低電平,從 P0 口的高四位讀取鍵盤狀態(tài)。將兩次讀取結(jié)果組合起來就可以得到當(dāng)前按鍵的特征編碼。用同樣的方法可以得到其它 15 個(gè)按鍵的特征編碼。 使用掃描查詢法運(yùn)行,用 C 語言編寫的鍵盤掃描程序如 下 攀枝花學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 30 uchar KEY_SCAN(void) { uchar sccode,recode。 KEY_SDATA=0xf0。 if((KEY_SDATAamp。0xf0)!=0xf0) { DELAY_MS(12)。 if((KEY_SDATAamp。0xf0)!=0xf0) { sccode=0xfe。 //行 while((sccodeamp。0x10)!=0) { KEY_SDATA=sccode。 if((KEY_SDATAamp。0xf0)!=0xf0) { recode=(KEY_SDATAamp。0xf0) | 0x0f。// 列 return((~sccode)+(~recode))。 } else sccode=(sccode1) | 0x01。 } } } return NO_KEY。 } 程序中的 DEL_MS(12)語句是延時(shí),作用是延時(shí)去抖。 ○ 2 根據(jù)按鍵的特征編碼,查表得到按鍵的順序編碼。 上面程序的返回值為掃描后得到 的鍵值,這些值是一些不規(guī)則的數(shù),在程序中不好處理,可以使用下面程序?qū)⑺麄冝D(zhuǎn)換成 0~15 的數(shù)字。這 0~15 的數(shù)字和實(shí)際鍵盤鍵位功能一一對應(yīng),可以通過此程序修改鍵盤鍵位功能布局。 uchar KEY_TABLE(k)//可根據(jù)實(shí)際鍵盤實(shí)物修改 { uchar TempNum。 switch(k) { case 0x88: TempNum=1。 break。 case 0x48: TempNum=2。 break。 case 0x28: TempNum=3。 break。 case 0x18: TempNum=10。 break。 case 0x84: TempNum=4。 break。 case 0x44: TempNum=5。 break。 case 0x24: TempNum=6。 break。 3 軟件程序設(shè)計(jì) 31 case 0x14: TempNum=15。 break。 case 0x82: TempNum=7。 break。 case 0x42: TempNum=8。 break。 case 0x22: TempNum=9。 break。 case 0x12: TempNum=0。 break。 case 0x81: TempNum=14。 break。 case 0x41: TempNum=13。 break。 case 0x21: TempNum=12。 break。 case 0x11: TempNum=11。 break。 default: break。 } return TempNum。 } LCD1602 編程 LCD1602 指令說明及時(shí)序 LCD1602 液晶模塊內(nèi)部的控制器共有 11 條控制指令,如表 所示: 表 LCD1602 控制命令表 序號 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清顯示 0 0 0 0 0 0 0 0 0 1 2 光標(biāo)返回 0 0 0 0 0 0 0 0 1 * 3 置輸入模式 0 0 0 0 0 0 0 1 I/D S 4 顯示開 /關(guān)控制 0 0 0 0 0 0 1 D C B 5 光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符發(fā)生存貯器地址 0 0 0 1 字符發(fā)生存貯器地址 8 置數(shù)據(jù)存貯器地址 0 0 1 顯示數(shù)據(jù)存貯器地址 9 讀忙標(biāo)志或地址 0 1 BF 計(jì)數(shù)器地址 10 寫數(shù)到 CGRAM 或DDRAM) 1 0 要寫的數(shù)據(jù)內(nèi)容
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1