課程設(shè)計(jì)(論文)波形發(fā)生器設(shè)計(jì)_第1頁
課程設(shè)計(jì)(論文)波形發(fā)生器設(shè)計(jì)_第2頁
課程設(shè)計(jì)(論文)波形發(fā)生器設(shè)計(jì)_第3頁
課程設(shè)計(jì)(論文)波形發(fā)生器設(shè)計(jì)_第4頁
課程設(shè)計(jì)(論文)波形發(fā)生器設(shè)計(jì)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、編號: 958 2008年全區(qū)電子制作大賽梧州學(xué)院賽區(qū)比賽設(shè)計(jì)報告書設(shè)計(jì)題目: (d1)波形發(fā)生器 參賽者姓名: 所在學(xué)院: 梧州學(xué)院 所在班級: 05級電子信息工程本科3班 競賽時間: 波形發(fā)生器設(shè)計(jì)與總結(jié)報告摘 要:本設(shè)計(jì)是基于信號發(fā)生芯片max038的多功能波形發(fā)生器。由max038、da轉(zhuǎn)換,max414運(yùn)算放大器、lcd12864顯示、單片機(jī)以及外圍電路構(gòu)成的多波形發(fā)生器。利用max038產(chǎn)生正弦波、三角波、鋸齒波、方波的波形,單片機(jī)通過da轉(zhuǎn)換對max038的控制,從而實(shí)現(xiàn)頻率和占空比的步進(jìn)調(diào)控,在1hz2.4mhz內(nèi)產(chǎn)生任意正弦波、三角波、鋸齒波和方波。 采用max414和tlc

2、549構(gòu)成信號放大采樣電路,用液晶模塊lcd12864可實(shí)現(xiàn)實(shí)時顯示波形的類型、頻率、幅度和占空比等功能;。經(jīng)多次測試,本設(shè)計(jì)整機(jī)具有波形清晰,頻率、相位和幅度相對穩(wěn)定,沒有明顯的失真,采用鍵盤輸入,lcd顯示,操作顯示界面簡單直觀,實(shí)現(xiàn)按步進(jìn)進(jìn)行調(diào)整。 關(guān)鍵詞:單片機(jī) max038 da轉(zhuǎn)換 占空比 lcd12864waveform generatorabstract : the design is based on the signals in the chip-wave generator max038。this multi-wave generator is make up of ma

3、x038, d a conversion, max414 operational amplifiers, lcd12864, scm and the external circuit. max038 is used to generate sine wave, triangle wave, sawtooth and square waveform, scm through d a conversion of the control max038, thus realizing the frequency and duty cycle step-control, in the range of

4、1 hz 2.4mhz generate any sine wave, the triangular wave, sawtooth and square wave。max414 and tlc549 are make up of signal amplification and sampling, with lcd module lcd12864 can achieve real-time display of the waveform type, frequency, magnitude and the function of duty cycle etc。 it is proved to

5、be well functioning ,the output of signal is clear , the frequency, phase and amplitude are comparative stability, there was no obviously distortion, using keyboard input and lcd output,makes it has a simple user interface , realize step-control.keyword: scm max038 d/a converter duty cycle lcd12864目

6、 錄1. 系統(tǒng)設(shè)計(jì) 61.1 設(shè)計(jì)要求 61.1.1 基本要求 61.1.2 發(fā)揮部分 61.2 總體設(shè)計(jì)方案 61.2.1 設(shè)計(jì)思路 61.2.2 方案論證與比較 61.2.3 系統(tǒng)組成 92.1 max038波形發(fā)生電路模塊 92.2 cd4051模擬開關(guān)電路模塊設(shè)計(jì) 102.3 d/a轉(zhuǎn)換電路模塊設(shè)計(jì) 112.4 輸出信號采樣電路模塊設(shè)計(jì) 122.5 lcd12864顯示電路設(shè)計(jì) 122.6 4*4矩陣鍵盤輸入電路模塊 132.7 電源模塊的設(shè)計(jì) 133. 系統(tǒng)軟件設(shè)計(jì)及分析 143.1 系統(tǒng)流程分析 143.2 主體程序流程圖 173.3 部分程序 183.3.1 d/a轉(zhuǎn)換原理程序

7、183.3.2 占空比調(diào)節(jié)程序 203.3.3 波形選擇程序 223.3.4 頻段選擇程序 233.3.5鍵盤掃描程序 233.3.6 頻率顯示部分程序 273.3.7 lcd12864顯示程序 323.3.8數(shù)據(jù)采樣部分程序 374. 系統(tǒng)調(diào)試及數(shù)據(jù)處理 384.1 電路調(diào)試 384.2 軟件調(diào)試 384.3 數(shù)據(jù)處理及誤差分析 404.4 設(shè)計(jì)總結(jié) 425. 參考文獻(xiàn) 431. 系統(tǒng)設(shè)計(jì)1.1 設(shè)計(jì)要求1.1.1基本要求(1)具有產(chǎn)生正弦波、方波、三角波三種周期性波形的功能。(2)輸出波形的頻率范圍為100hz20khz,重復(fù)頻率可調(diào),頻率步進(jìn)間隔100hz。 (3) 輸出波形的幅度范圍0

8、5v(峰-峰值),可按步進(jìn)0.1v(峰-峰值)調(diào)整。(4)輸出顯示波形的型類、周期和幅度的功能。1.1.2 發(fā)揮部分(1)鍵盤輸入產(chǎn)生任意波形。(2)輸出波形頻率范圍擴(kuò)展至100hz200khz.(3)增加穩(wěn)幅輸出功能,當(dāng)負(fù)載變化時,輸出電壓幅度變化±3%。1.2 總體設(shè)計(jì)方案1.2.1 設(shè)計(jì)思路題目要求設(shè)計(jì)一個波形發(fā)生器,波形發(fā)生器的輸出為正弦波、方波、三角波和鋸齒波。設(shè)計(jì)中利用max038單片函數(shù)信號發(fā)生器的特性,產(chǎn)生各種波形。輸入部分采用運(yùn)算放大器對微弱信號進(jìn)行放大使波形易于觀察??刂撇糠钟脝纹瑱C(jī)和鍵盤組成的人機(jī)交互控制界面。采樣部分采用運(yùn)算放大器和a/d轉(zhuǎn)換芯片。而顯示部分則

9、用帶字庫的液晶模塊lcd12864,lcd12864可以直觀顯示波形的型類、頻率、幅度和占空比等功能。1.2.2 方案論證與比較1. 波形發(fā)生電路的設(shè)計(jì)方案論證與選擇 方案一:采用分立元件構(gòu)成非穩(wěn)態(tài)的多諧振振蕩器,根據(jù)具體需要加入積分電路等構(gòu)成波形發(fā)生器。但這種信號發(fā)生器輸出頻率范圍窄,而且電路參數(shù)設(shè)定較繁瑣,輸出的波形易受外界環(huán)境影響,不穩(wěn)定,對電路硬件要求很高,不易實(shí)現(xiàn)。 方案二:利用單片集成芯片實(shí)現(xiàn)函數(shù)信號發(fā)生器。這種信號發(fā)生器能產(chǎn)生多種波形信號且達(dá)到較高頻率,且易于調(diào)試,成本低。 方案三:利用專用直接數(shù)字合成dds芯片實(shí)現(xiàn)函數(shù)信號發(fā)生器。這種信號發(fā)生器能產(chǎn)生任意波形并達(dá)到很高頻率,但成

10、本較高。綜合以上三種方案,從性能和制作成本考慮,本設(shè)計(jì)采用方案二,即采用單片機(jī)控制鍵盤輸入通過d/a轉(zhuǎn)換控制單片函數(shù)信號發(fā)生芯片max038產(chǎn)生可調(diào)頻率、幅度和占空比的波形信號。2. 開關(guān)電路的設(shè)計(jì)方案論證與選擇方案一:采用機(jī)械式開關(guān),應(yīng)用最為普遍,價格低廉,操作簡單,只需讓兩段需要導(dǎo)通的導(dǎo)體接觸就可以使電路導(dǎo)通,但開關(guān)控制過程必須要有機(jī)械力的參與才能才能完成控制工作,響應(yīng)時間決定于撥動的速度。方案二:采用電子模擬開關(guān),模擬開關(guān)是一種三穩(wěn)態(tài)電路,它可以根據(jù)選通端的電平,決定輸人端與輸出端的狀態(tài)。當(dāng)選通端處在選通狀態(tài)時,輸出端的狀態(tài)取決于輸人端的狀態(tài);當(dāng)選通端處于截止?fàn)顟B(tài)時,則不管輸人端電平如何

11、,輸出端都呈高阻狀態(tài)。模擬開關(guān)在電子設(shè)備中主要起接通信號或斷開信號的作用。由于模擬開關(guān)具有功耗低、速度快、無機(jī)械觸點(diǎn)、體積小和使用壽命長等特點(diǎn)。其內(nèi)部電路組成和工作原理如圖1圖1 模擬開關(guān)的電路組成和工作原理綜上所述,本設(shè)計(jì)技術(shù)要求波型選擇開關(guān)響應(yīng)速度快,所以采用方案二,使用8選1模擬開關(guān)cd4051。3. d/a轉(zhuǎn)換器的設(shè)計(jì)方案與論證 方案一:按照輸出類型的不同可以分為電壓輸出型和電流輸出型器件。 電壓輸出型d/a轉(zhuǎn)換器采用內(nèi)置的輸出放大器來實(shí)現(xiàn)低阻抗的輸出,沒有放大部分的延遲,可以做到很高的速度且一般用于高阻抗負(fù)載的情況下。電流輸出型d/a轉(zhuǎn)換器則用得較少。 方案二:按照接口類型的不同可以

12、分為串行輸出和并行輸出器件。并行d/a轉(zhuǎn)換器的轉(zhuǎn)換速度快,但占用i/o多。串行d/a轉(zhuǎn)換器輸出建立時間相對于并行d/a轉(zhuǎn)換器稍長,但芯片與cpu連接時使用引線少、電路簡單,成本低。 方案三:按照數(shù)字量的位數(shù)可以分為8位、10位、12位、16位等d/a轉(zhuǎn)換器,位數(shù)越大分辨率越大但相應(yīng)的成本也越高。 綜上所述,綜合三個方案中選擇性價比較好的d/a轉(zhuǎn)換器,本設(shè)計(jì)采用maxim公司的8位串行電壓輸出型d/a轉(zhuǎn)換器max517。4. 信號采樣電路的設(shè)計(jì)方案 方案一:采用并行a/d轉(zhuǎn)換芯片,并行方式一般在轉(zhuǎn)換后可直接接收,轉(zhuǎn)換時間快但使用芯片的引腳比較多。 方案二:采用串行a/d轉(zhuǎn)換芯片,串行方式所用芯片

13、引腳少,封裝小,在pcb板上占用的空間也小,但需要軟件處理才能得到所需的數(shù)據(jù)。 綜上所述,結(jié)合本設(shè)計(jì)對數(shù)據(jù)采樣的各項(xiàng)要求和單片機(jī)引腳的具體情況,采用ti公司的8位串行a/d轉(zhuǎn)換芯片tlc549.通過單片機(jī)at89s52產(chǎn)生滿足時序要求的輸入/輸出時鐘,以及對a/d芯片的片選控制,完成對整個a/d轉(zhuǎn)換過程的控制。tlc549具有8位分辨率模數(shù)轉(zhuǎn)換,最大轉(zhuǎn)換時間為17us,每秒訪問和轉(zhuǎn)換最多可達(dá)40000次,功耗低,可以滿足本設(shè)計(jì)要求。5. 顯示方式的設(shè)計(jì)方案論證與選擇 方案一:采用led數(shù)碼管顯示。如果需要顯示的內(nèi)容較多,過多增加數(shù)碼管的個數(shù)顯然不可行,進(jìn)行輪流顯示則控制復(fù)雜,此外,數(shù)碼管需要較

14、多連線,使電路復(fù)雜,功耗比較大。 方案二:采用帶字庫的液晶模塊lcd12864顯示??梢燥@示字符、圖片,利用單片機(jī)直接驅(qū)動液晶顯示模塊,設(shè)計(jì)簡單,且顯示界面寬大美觀舒適,耗電小。 綜上所述,本設(shè)計(jì)要顯示的內(nèi)容較多,所以選擇方案二,采用lcd12864實(shí)時顯示波形的型類、頻率、占空比和幅度等功能。6. 電源模塊的設(shè)計(jì)方案論證與選擇方案一:采用升壓型穩(wěn)壓電路。用兩片mc34063芯片分別將3v的電池電壓進(jìn)行直流斬波調(diào)壓,得到+5v的穩(wěn)壓輸出。只需使用兩節(jié)電池,既節(jié)省了電池又減小系統(tǒng)體積重量,但該電路供電電流小,供電時間短,無法保證系統(tǒng)長期穩(wěn)定運(yùn)作。 采用方案二:采用環(huán)形變壓器,與普通變壓器相比激磁

15、能量和鐵心損耗將減少25%,電效率高達(dá)95%以上,漏磁小,電磁輻射小,振動噪聲小,無需另加屏蔽層來屏蔽電磁干擾,適合用在高靈敏度和易受高頻影響的電子設(shè)備上。加上三端固定穩(wěn)壓器獲得±5v電源,+5v用lm7805輸出,-5v用lm7905輸出,先在變壓器的輸出段用一個用整流二極管組成的整流橋整流,再用電容濾掉高頻成分,這樣就可以獲得一個紋波系數(shù)小、穩(wěn)定的電壓。綜上所述,選擇方案二,采用環(huán)形變壓器三端穩(wěn)壓器電路。1.2.3 系統(tǒng)組成 經(jīng)過以上方案的比較和論證,最終確定的系統(tǒng)組成框圖如圖1.1.6所示。單片機(jī)4*4鍵 盤電 路lcd12864顯示電路頻段 電容選擇 電路波形發(fā)生電 路d/a

16、轉(zhuǎn)換電路輸出信號放大電 路ad采樣電路圖1.1.6 系統(tǒng)組成框圖2. 單元電路設(shè)計(jì)2.1 max038波形發(fā)生電路模塊max038的外圍電路如下圖所示,引腳a0、a1接單片機(jī)i/o口,引腳cosc接電容選擇電路的x引腳,引腳ref是輸出正2.5v電壓,用作控制占空比的d/a轉(zhuǎn)換器的基準(zhǔn)電壓輸入,in引腳是頻率控制引腳,通過一個25k電阻與d/a轉(zhuǎn)換器輸出端相連。 圖2.1 max038外圍電路圖若負(fù)載是容性較大的負(fù)載,則max038的輸出端與一個50的電阻相連。由于max038的輸出信號為恒定的2v(p-p),且輸出電流不高,所以必須依靠輸出級的放大電路來提供足夠的輸出電壓和電流,由放大電路和

17、a/d轉(zhuǎn)換芯片組成數(shù)據(jù)采樣系統(tǒng)則可以實(shí)現(xiàn)數(shù)據(jù)采樣。所以設(shè)計(jì)應(yīng)該滿足以下要求:(1) 首先,要求放大電路具有很高的頻寬。因?yàn)檩敵鲂盘栕畲蠡l為20mhz,起三角波和矩形波的高次諧波成分很高,只有高頻寬才能得到不失真的輸出波形。(2) 其次,高頻大信號放大要求放大電路有足夠的輸出電壓轉(zhuǎn)換速率。(3) 另外,要帶動低阻負(fù)載,放大電路的電流輸出能力也是個重要參數(shù)。要在100的負(fù)載上輸出6v信號,則放大器至少要有60ma的連續(xù)電流輸出能力。2.2 cd4051模擬開關(guān)電路 cd4051 開關(guān)電路見圖2.2。cd4051相當(dāng)于一個單刀八擲開關(guān),開關(guān)接通哪一通道,由輸入的3位地址碼abc來決定。其真值表見表

18、1。 “ en”是禁止端,當(dāng) “en”=1時,各通道均不接通。此外,cd4051還設(shè)有另外一個電源端vee,以作為電平位移時使用,從而使得通常在單組電源供電條件下工作的 cmos電路所提供的數(shù)字信號能直接控制這種多路開關(guān),并使這種多路開關(guān)可傳輸峰峰值達(dá)15v的交流信號。圖2.2 cd4051模擬開關(guān)電路表1 真值表輸入狀態(tài)接通通道encba0000“0”0001“1”0010“2”0011“3”0100“4”0101“5”0110“6”0111“7”1均不接通2.3 d/a轉(zhuǎn)換電路模塊d/a轉(zhuǎn)換電路由2片max517及外圍電路組成,分別與max038的in引腳和dadj引腳相連,如圖2.2,其

19、中與dadj相連的d/a轉(zhuǎn)換器是雙極性輸出。為了保證d/a轉(zhuǎn)換器總線在空余方式為高電平,所以接上拉電阻。另max517a為調(diào)節(jié)占空比輸出,所以要用雙極性接法,運(yùn)算放大器采用的是max414是美信公司的4路輸出精密運(yùn)算放大器,。d/a模塊轉(zhuǎn)換選用2路用于雙極性輸出正負(fù)電壓的轉(zhuǎn)換。 圖2.2 d/a轉(zhuǎn)換電路模塊圖2.4 輸出信號采樣電路模塊設(shè)計(jì) 輸出信號采樣電路模塊設(shè)計(jì)由一片max414和tlc549構(gòu)成,分別與單片機(jī)p3.5、p3.6和 p3.7腳連接,如圖2.3,其中max414將輸出 模擬信號放大,模擬輸入信號(analog in)經(jīng)過tlc549內(nèi)部采樣/保持器至8-bit逐次比

20、較式a/d轉(zhuǎn)換器。片選控制端(cs_,低有效)和輸入/輸出時鐘端(i/o clock)與獨(dú)立的內(nèi)部系統(tǒng)時鐘通過內(nèi)部邏輯控制電路,實(shí)現(xiàn)外部接口與內(nèi)部的數(shù)據(jù)傳輸,通過單片機(jī)從而實(shí)現(xiàn)波形幅度的控制。如圖2.3輸出信號采樣電路模塊設(shè)計(jì)2.5 lcd12864顯示電路設(shè)計(jì)采用帶字庫的點(diǎn)陣圖形液晶模塊lcd12864,可以顯示漢字、字符和圖形等。且功耗很低,顯示效果美觀。lcd12864的d0d7接單片機(jī)p0口,rs、rw和lcden分別接p2.0、p2.1和p2.2口。可調(diào)電阻rp21用來調(diào)節(jié)lcd顯示屏的亮度。psb接高電平,表示這里采用的是并行數(shù)據(jù)控制方式。如圖2.4 lcd12864顯示電路設(shè)計(jì)2

21、.6 4*4矩陣鍵盤輸入電路模塊 輸入電路模塊采用4*4矩陣鍵盤輸入,如圖2.5,行列分別與單片機(jī)的p1口連接。按鍵設(shè)置在行、列線的交點(diǎn)上,行、列線分別連接到按鍵開關(guān)的兩端。對鍵盤的工作過程可分兩步:第一步是cpu首先檢測鍵盤上是否有鍵按下;第二步是消抖;第三步是識別是哪一個鍵按下。檢測鍵盤上有無鍵按下可采用查詢工作方式、定時掃描工作方式和中斷工作方式。 圖2.5 4*4矩陣鍵盤輸入電路2.7 電源模塊的設(shè)計(jì)電源電路是用環(huán)形變壓器三端固定穩(wěn)壓器獲得±5v電源,+5v用7805輸出,-5v用7905輸出,環(huán)形變壓器的電壓經(jīng)過三端固定穩(wěn)壓器,再經(jīng)整流橋整流,用電容濾掉高頻成分。如圖2.6

22、: 圖2.6 ±5v穩(wěn)壓電源電路3. 系統(tǒng)軟件設(shè)計(jì)及分析3.1 系統(tǒng)流程分析4*4鍵盤輸入全部用作功能鍵,鍵盤具體劃分如下:第一行主要功能是占空比調(diào)節(jié),有微調(diào)加1、粗調(diào)減5、粗調(diào)加5、占空比50%;第二行主要功能是頻率的調(diào)節(jié),有頻段選擇,微調(diào)加1,粗調(diào)加10,微調(diào)減1;第三行實(shí)現(xiàn)其他功能,有波形選擇,幅度刷新。先輸入功能鍵然后按照要求執(zhí)行程序。其中d2是選擇max038產(chǎn)生的波形,d1是計(jì)算和輸出頻率,d0是控制波形占空比,單片機(jī)通過cd4051控制頻段范圍,在選擇的頻段范圍內(nèi)通過設(shè)定的按鍵步進(jìn)調(diào)節(jié)就可以得到需要的信號。頻率數(shù)值設(shè)定在102.4mhz范圍內(nèi)直接送到lcd12864顯示

23、。表3.1 波形選擇關(guān)系 波形選擇邏輯關(guān)系表數(shù)值a0a1輸出波形000方波,脈沖波1x1正弦波211三角波,鋸齒波表3.2 鍵盤界面鍵盤操作界面微調(diào)+粗調(diào)-粗調(diào)+占空比50%頻段微調(diào)+粗調(diào)+微調(diào)-波形幅度刷新 首先由=/,電流由0.5v5v通過電阻r12=25k,得到20200a的電流,拋開重疊的頻段不計(jì), 表3.3 max038頻率范圍及電容關(guān)系圖 在d/a轉(zhuǎn)換部分和波形發(fā)生部分則根據(jù)以下公式計(jì)算:控制頻率d/a轉(zhuǎn)換器公式: 控制占空比d/a轉(zhuǎn)換器公式: 電路的振蕩頻率為:=(1-0.2915)=(1-0.2915)/波形占空比為: 由于電路原因以及程序問題,設(shè)計(jì)的波形發(fā)生器產(chǎn)生的波形的占空

24、比、頻率、振幅等不可能如理論那么準(zhǔn)確。 3.2 主體程序流程圖開 始初 始 化功能 lcd顯示 鍵盤 掃描頻率調(diào)制波形選擇占空比調(diào)制顯示數(shù)值范圍是否在10%90%max038的a0、a1選擇波形計(jì)算d/a所需要數(shù)據(jù)d0選擇8個頻段之一計(jì)算d/a所需要數(shù)據(jù)d1單片機(jī)輸入d0串行數(shù)據(jù)單片機(jī)輸入d1串行數(shù)據(jù)采集a/d所需要數(shù)據(jù)d2單片機(jī)輸入d2串行數(shù)據(jù)3.3 部分程序3.3.1 d/a轉(zhuǎn)換原理程序/*控制頻率的串行max517的函數(shù)*/* 起始條件子函數(shù) */void start0(void)sda0 = 1;scl0 = 1;_nop_();sda0 = 0;_nop_();/* 停止條件子函數(shù)

25、*/void stop0(void)sda0 = 0;scl0 = 1;_nop_();sda0 = 1;_nop_();/* 應(yīng)答子函數(shù) */void ack0(void)sda0 = 0;_nop_();scl0 = 1;_nop_();scl0 = 0;/* 發(fā)送數(shù)據(jù)子程序,ch為要發(fā)送的數(shù)據(jù) */void sendda0(uchar ch)uchar bitcounter = 8; /位數(shù)控制uchar tmp; /中間變量控制dotmp = ch;scl0 = 0;if (tmp&0x80)=0x80)/如果最高位是sda0 = 1;elsesda0 = 0;scl0 = 1

26、;tmp = ch<<1;/左移ch = tmp;bitcounter-;while(bitcounter);scl0 = 0;/* 串行da轉(zhuǎn)換子函數(shù) */void dacout0(uchar ch)start0();/ 發(fā)送啟動信號sendda0(0x58);/ 發(fā)送地址字節(jié)ack0();sendda0(0x00);/ 發(fā)送命令字節(jié)ack0();sendda0(ch);/ 發(fā)送數(shù)據(jù)字節(jié)ack0();stop0();/ 結(jié)束一次轉(zhuǎn)換3.3.2 占空比調(diào)節(jié)程序/*控制占空比的串行max517的函數(shù)*/* 起始條件子函數(shù) */void start1(void)sda1 = 1;scl

27、1 = 1;_nop_();sda1 = 0;_nop_();/* 停止條件子函數(shù) */void stop1(void)sda1 = 0;scl1 = 1;_nop_();sda1 = 1;_nop_();/* 應(yīng)答子函數(shù) */void ack1(void)sda1 = 0;_nop_();scl1 = 1;_nop_();scl1 = 0;/* 發(fā)送數(shù)據(jù)子程序,ch為要發(fā)送的數(shù)據(jù) */void sendda1(uchar ch)uchar bitcounter = 8; /位數(shù)控制uchar tmp; /中間變量控制dotmp = ch;scl1 = 0;if (tmp&0x80)=

28、0x80)/如果最高位是sda1 = 1;elsesda1 = 0;scl1 = 1;tmp = ch<<1;/左移ch = tmp;bitcounter-;while(bitcounter);scl1 = 0;/* 串行da轉(zhuǎn)換子函數(shù) */void dacout1(uchar ch)start1();/ 發(fā)送啟動信號sendda1(0x58);/ 發(fā)送地址字節(jié)ack1();sendda1(0x00);/ 發(fā)送命令字節(jié)ack1();sendda1(ch);/ 發(fā)送數(shù)據(jù)字節(jié)ack1();stop1();/ 結(jié)束一次轉(zhuǎn)換3.3.3 波形選擇程序/*/void boxing(uchar

29、boxing) /*波形選擇*/ switch(boxing) case 0:a0=0;a1=1;send_str(0x93,name04,6);break; /正弦波 case 1:a0=0;a1=0;send_str(0x93,name05,6);break; /方波 case 2:a0=1;a1=0;send_str(0x93,name06,6);break; /三角波 case 3:a0=1;a1=0;send_str(0x93,name07,6);break; /矩齒波 case 4:a0=0;a1=0;send_str(0x93,name08,6);break; /脈沖 defau

30、lt:break; 3.3.4 頻段選擇程序/*/void pinduan(uchar pinduan) /*單位控制頻段選擇函數(shù)*/ switch(pinduan) case 0: y2 = 0;y1 = 0;y0 = 0;send_num(0x85,0,1); break; /*選擇100uf電容*/ case 1: y2 = 0;y1 = 0;y0 = 1;send_num(0x85,1,1); break; /*選擇10uf電容*/ case 2: y2 = 0;y1 = 1;y0 = 0;send_num(0x85,2,1); break; /*選擇1uf電容*/ case 3: y

31、2 = 0;y1 = 1;y0 = 1;send_num(0x85,3,1); break; /*選擇0.1uf電容*/ case 4: y2 = 1;y1 = 0;y0 = 0;send_num(0x85,4,1); break; /*選擇0.01uf電容*/case 5: y2 = 1;y1 = 0;y0 = 1;send_num(0x85,5,1); break; /*選擇1000pf電容*/case 6: y2 = 1;y1 = 1;y0 = 0;send_num(0x85,6,1); break; /*選擇100pf電容*/case 7: y2 = 1;y1 = 1;y0 = 1;s

32、end_num(0x85,7,1); break; /*選擇20pf電容*/default:break;3.3.5 鍵盤掃描程序/*/鍵盤掃描uchar keyscan(void)uchar temp;p1=0xfe;temp=p1;/讀p3temp=temp&0xf0;delay1ms(25);if(temp!=0xf0)delay1ms(100); /去抖if(temp!=0)switch(temp)case 0xe0:num=table0;flag=1;break;case 0xd0:num=table1;flag=1;break;case 0xb0:num=table2;fla

33、g=1;break;case 0x70:num=table3;flag=1;break;while(temp!=0xf0)temp=p1;temp=temp&0xf0;p1=0xfd;temp=p1;/讀p3temp=temp&0xf0;if(temp!=0xf0)delay1ms(50); /去抖if(temp!=0)switch(temp)case 0xe0:num=table4;flag=1;break;case 0xd0:num=table5;flag=1;break;case 0xb0:num=table6;flag=1;break;case 0x70:num=tab

34、le7;flag=1;break;while(temp!=0xf0)temp=p1;temp=temp&0xf0;p1=0xfb;temp=p1;/讀p3temp=temp&0xf0;if(temp!=0xf0)delay1ms(50); /去抖if(temp!=0)switch(temp)case 0xe0:num=table8;flag=1;break;case 0xd0:num=table9;flag=1;break;case 0xb0:num=table10;flag=1;break;case 0x70:num=table11;flag=1;break;while(te

35、mp!=0xf0)temp=p1;temp=temp&0xf0;p1=0xf7;temp=p1;/讀p3temp=temp&0xf0;if(temp!=0xf0)delay1ms(50); /去抖if(temp!=0)switch(temp)case 0xe0:num=table12;break;case 0xd0:num=table13;break;case 0xb0:num=table14;break;case 0x70:num=table15;break;while(temp!=0xf0)temp=p1;temp=temp&0xf0;return (num);3.

36、3.6 頻率顯示部分程序/*頻率顯示*/void display_pinlv(void)ulong f1,f2;uint f3,f4;if(f<1000)f3=(uint)(f);send_n(0x8b,f3,3);wr_data('.');f4=(uint)(f*1000);f4=f4%1000;send_n(0x8d,f4,3);send_str(0x8f,pinlv0,2);else if(f>=1000)f1=(ulong)f/1000;f2=(ulong)f%1000;send_n1(0x8b,f1,4);send_n1(0x8d,f2,3);send_s

37、tr(0x8f,pinlv0,2);void dispaly(uchar key)switch(key)case 0x01:zhankb=zhankb+1;if(zhankb>255) zhankb=128;dacout1(zhankb);send_n(0x9e,zhankb,3);flag=0;break;case 0x02:/占空比加5zhankb=zhankb+5;if(zhankb>255) zhankb=128;dacout1(zhankb);send_n(0x9e,zhankb,3);flag=0;break;case 0x03:/占空比減5zhankb=zhankb-

38、5;if(zhankb<0) zhankb=128;dacout1(zhankb);send_n(0x9e,zhankb,3);flag=0;break;case 0x04:/%50占空比zhankb=128;dacout1(zhankb);send_n(0x9e,zhankb,3);flag=0;break;case 0x05: /頻段選擇pinduan1+;if(pinduan1=8) pinduan1=0;pinduan(pinduan1);if(pinduan1=0) cf=100.0;else if(pinduan1=1) cf=10.0;else if(pinduan1=2)

39、 cf=1.0;else if(pinduan1=3) cf=0.1;else if(pinduan1=4) cf=0.01;else if(pinduan1=5) cf=0.001;else if(pinduan1=6) cf=0.0001;else if(pinduan1=7) cf=0.00002;flag=0;break;case 0x06: /頻率微調(diào)pinlv+;if(pinlv=256) pinlv=0;dacout0(pinlv);flag=0;break;case 0x07: /頻率粗調(diào)pinlv=pinlv+10;if(pinlv=260) pinlv=0;dacout0(

40、pinlv);flag=0;break;case 0x08:if(pinlv>=0&&pinlv<256) pinlv-; /頻率微減if(pinlv<0)pinlv=255;dacout0(pinlv);flag=0;break;case 0x09: /波形選擇boxing1+;if(boxing1=5) boxing1=0;if(boxing1>=0&&boxing1<=2)zhankb=128;dacout1(zhankb);send_n(0x9e,zhankb,3);else if(boxing1=3) /鋸齒波zhankb

41、=255; dacout1(zhankb);send_n(0x9e,zhankb,3);else if(boxing1=4)/脈沖zhankb=255;dacout1(zhankb);send_n(0x9e,zhankb,3);flag=0;break;case 0x0a:vb=0;flag=0;break;f=(float)(pinlv/(1382400*cf)*1000000);/頻率經(jīng)過多次修正if(cf=10.0) f=f*1.24;f=f*0.9059;f=f*0.986245;else if(cf=1.0) f=f*1.3496;f=f*0.9207;f=f*0.993563;if

42、(f>=20)&&(f<90)f=f*1.04291;else f=f*1.03728;else if(cf=0.1) f=f*1.2291;f=f*0.9157;f=f*1.006446;if(f>=50)&&(f<800)f=f*1.00627;else if(cf=0.01) f=f*1.0948;f=f*1.0059;f=f*1.004845;if(f>=600)&&(f<10000)f=f*0.986245;f=f*1.013944;else f=f*1.000117;f=f*0.991806;else if(cf=0.001) f=f*1.1612;f=f*0.983087;f=f*0.998906;if(f>=4000)&&(f<100000)f=f*1.005727;else f=f*1.005328;else if(cf=0.0001) f=f*0.705555;f=f*1.002186;if(f>=20000)&&(f<600000)f=f*1.0176;else f=f*0.980089;else if(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論