哈理工智能儀器設(shè)計(jì)報(bào)告_第1頁(yè)
哈理工智能儀器設(shè)計(jì)報(bào)告_第2頁(yè)
哈理工智能儀器設(shè)計(jì)報(bào)告_第3頁(yè)
哈理工智能儀器設(shè)計(jì)報(bào)告_第4頁(yè)
哈理工智能儀器設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、哈 爾 濱 理 工 大 學(xué)課 程 實(shí) 踐 題 目: 智能儀器原理及設(shè)計(jì) 姓 名: xxxxxxxx 班 級(jí): 測(cè)控12-5班 學(xué) 號(hào): 1205010510 指導(dǎo)教師: 苑惠娟 成 績(jī): 完成時(shí)間: 2015年6月18日 目錄目錄2一、實(shí)驗(yàn)?zāi)康募捌湟饬x31.1 實(shí)驗(yàn)?zāi)康?1.2 實(shí)驗(yàn)意義3二、實(shí)驗(yàn)內(nèi)容42.1 設(shè)計(jì)波形42.2 設(shè)計(jì)內(nèi)容42.3 實(shí)驗(yàn)用設(shè)備4三、實(shí)驗(yàn)要求43.1 繪制原理圖及線路板圖43.2 編寫(xiě)程序完成以下任務(wù)43.3 實(shí)驗(yàn)安排5四、 硬件電路設(shè)計(jì)54.1 單片機(jī)電路54.2 顯示及鍵盤(pán)接口電路54.3 D/A轉(zhuǎn)換電路64.4 USB串口模塊74.5 時(shí)鐘電路和復(fù)位電路74.

2、6 8路LED94.7 PCB設(shè)計(jì)圖9五、 程序設(shè)計(jì)10六、 軟硬件調(diào)試16七、 波形圖17八、 心得體會(huì)18九、 參考文獻(xiàn)18一、實(shí)驗(yàn)?zāi)康募捌湟饬x1.1 實(shí)驗(yàn)?zāi)康?(1) 設(shè)計(jì)動(dòng)態(tài)LED顯示、鍵盤(pán),畫(huà)出原理圖及線路板圖,使學(xué)生對(duì)智能儀器中最基本的輸入輸出方法具有感性認(rèn)識(shí)。 (2) 通過(guò)一個(gè)相對(duì)完整的程序編程,使學(xué)生能夠?qū)纹瑱C(jī)知識(shí)和智能儀器的設(shè)計(jì)融會(huì)貫通,同時(shí)掌握對(duì)智能儀器的軟件構(gòu)成及“硬件軟化”方法。1.2 實(shí)驗(yàn)意義波形發(fā)生器作為一種常用的信號(hào)源,是現(xiàn)代測(cè)試領(lǐng)域內(nèi)應(yīng)用最廣泛的通用儀器之一。波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號(hào)和用戶定義信號(hào),并保證高精度、高穩(wěn)定性、可重復(fù)性和易操作性的電子儀器

3、。函數(shù)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點(diǎn),不僅可以模擬各種復(fù)雜信號(hào),還可對(duì)頻率、幅值、相移、波形進(jìn)行動(dòng)態(tài)、及時(shí)的控制,并能夠與其它儀器進(jìn)行通訊,組成自動(dòng)測(cè)試系統(tǒng),因此被廣泛用于自動(dòng)控制系統(tǒng)、震動(dòng)激勵(lì)、通訊和儀器儀表領(lǐng)域。在 70 年代前,信號(hào)發(fā)生器主要有兩類(lèi):正弦波和脈沖波,而函數(shù)發(fā)生器介于兩類(lèi)之間,能夠提供正弦波、余弦波、方波、三角波、上弦波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時(shí),需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。這個(gè)時(shí)期的波形發(fā)生器多采用模擬電子技術(shù),而且模擬器件構(gòu)成的電路存在著尺寸大、價(jià)格貴、功耗大等缺點(diǎn),并且要產(chǎn)生較為復(fù)雜的信號(hào)波形,則電路結(jié)構(gòu)非常復(fù)雜。同時(shí),主要表現(xiàn)為兩

4、個(gè)突出問(wèn)題,一是通過(guò)電位器的調(diào)節(jié)來(lái)實(shí)現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié)。在 70 年代后,微處理器的出現(xiàn),可以利用處理器、A/D/和 D/A,硬件和軟件使波形發(fā)生器的功能擴(kuò)大,產(chǎn)生更加復(fù)雜的波形。這時(shí)期的波形發(fā)生器多以軟件為主,實(shí)質(zhì)是采用微處理器對(duì) DAC的程序控制,就可以得到各種簡(jiǎn)單的波形。 90 年代末,出現(xiàn)幾種真正高性能、高價(jià)格的函數(shù)發(fā)生器、但是HP公司推出了型號(hào)為 HP770S的信號(hào)模擬裝置系統(tǒng),它由 HP8770A任意波形數(shù)字化和 HP1776A波形發(fā)生軟件組成。HP8770A實(shí)際上也只能產(chǎn)生8 中波形,而且價(jià)格昂貴。不久以后,Analogic公

5、司推出了型號(hào)為 Data-2020的多波形合成器,Lecroy 公司生產(chǎn)的型號(hào)為9100 的任意波形發(fā)生器等。 到了二十一世紀(jì),隨著集成電路技術(shù)的高速發(fā)展,出現(xiàn)了多種工作頻率可過(guò) GHz 的DDS 芯片,同時(shí)也推動(dòng)了函數(shù)波形發(fā)生器的發(fā)展,2003 年,Agilent的產(chǎn)品 33220A能夠產(chǎn)生 17 種波形,最高頻率可達(dá)到 20M,2005 年的產(chǎn)品N6030A 能夠產(chǎn)生高達(dá) 500MHz 的頻率,采樣的頻率可達(dá) 1.25GHz。由上面的產(chǎn)品可以看出,函數(shù)波形發(fā)生器發(fā)展很快近幾年來(lái),國(guó)際上波形發(fā)生器技術(shù)發(fā)展主要體現(xiàn)在以下幾個(gè)方面:(1) 過(guò)去由于頻率很低應(yīng)用的范圍比較狹小,輸出波形頻率的提高,

6、使得波形發(fā)生器能應(yīng)用于越來(lái)越廣的領(lǐng)域。波形發(fā)生器軟件的開(kāi)發(fā)正使波形數(shù)據(jù)的輸入變得更加方便和容易。波形發(fā)生器通常允許用一系列的點(diǎn)、直線和固定的函數(shù)段把波形數(shù)據(jù)存入存儲(chǔ)器。同時(shí)可以利用一種強(qiáng)有力的數(shù)學(xué)方程輸入方式,復(fù)雜的波形可以由幾個(gè)比較簡(jiǎn)單的公式復(fù)合成 v=f (t)形式的波形方程的數(shù)學(xué)表達(dá)式產(chǎn)生。從而促進(jìn)了函數(shù)波形發(fā)生器向任意波形發(fā)生器的發(fā)展,各種計(jì)算機(jī)語(yǔ)言的飛速發(fā)展也對(duì)任意波形發(fā)生器軟件技術(shù)起到了推動(dòng)作用。目前可以利用可視化編程語(yǔ)言(如Visual Basic ,Visual C 等等)編寫(xiě)任意波形發(fā)生器的軟面板,這樣允許從計(jì)算機(jī)顯示屏上輸入任意波形,來(lái)實(shí)現(xiàn)波形的輸入。 (2) 與VXI資源

7、結(jié)合。目前,波形發(fā)生器由獨(dú)立的臺(tái)式儀器和適用于個(gè)人計(jì)算機(jī)的插卡以及新近開(kāi)發(fā)的VXI模塊。由于VXI總線的逐漸成熟和對(duì)測(cè)量?jī)x器的高要求,在很多領(lǐng)域需要使用VXI系統(tǒng)測(cè)量產(chǎn)生復(fù)雜的波形,VXI的系統(tǒng)資源提供了明顯的優(yōu)越性,但由于開(kāi)發(fā)VXI模塊的周期長(zhǎng),而且需要專(zhuān)門(mén)的VXI機(jī)箱的配套使用,使得波形發(fā)生器VXI模塊僅限于航空、軍事及國(guó)防等大型領(lǐng)域。在民用方面,VXI模塊遠(yuǎn)遠(yuǎn)不如臺(tái)式儀器更為方便。 (3) 隨著信息技術(shù)蓬勃發(fā)展,臺(tái)式儀器在走了一段下坡路之后,又重新繁榮起來(lái)。不過(guò)現(xiàn)在新的臺(tái)式儀器的形態(tài),和幾年前的己有很大的不同。這些新一代臺(tái)式儀器具有多種特性,可以執(zhí)行多種功能。而且外形尺寸與價(jià)格,都比過(guò)去

8、的類(lèi)似產(chǎn)品減少了一半。 在研制、生產(chǎn)、測(cè)試和維修各種電子元件、部件及整機(jī)設(shè)備時(shí),都需要用信號(hào)源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號(hào)并加到被測(cè)器件或設(shè)備上,用其他儀器觀察、測(cè)量被測(cè)儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類(lèi)電子儀器、它可以產(chǎn)生多種波形信號(hào),如正弦波、三角波、方波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。 此次課程設(shè)計(jì)使我們能夠?qū)W以致用,將自己所學(xué)的理論知識(shí)用于實(shí)踐,提高我們動(dòng)手能力,也使我們初步掌握一些分析問(wèn)題和解決問(wèn)題的方法,使我們從中體會(huì)到理論問(wèn)題轉(zhuǎn)化為實(shí)際問(wèn)題所要經(jīng)過(guò)的過(guò)程和兩者之間的差距。二、實(shí)驗(yàn)內(nèi)容2.1 設(shè)計(jì)

9、波形 輸出方波和正弦波。2.2 設(shè)計(jì)內(nèi)容(1) 設(shè)計(jì)數(shù)字式波形發(fā)生器,畫(huà)出硬件電路原理圖。(2) 編寫(xiě)程序生成各種波形,而且頻率可調(diào)。(3) 確定所生成的波形頻率范圍。(4) 用鍵盤(pán)控制生成的波形及頻率。(5) 數(shù)碼管顯示輸出波形的類(lèi)型及頻率。2.3 實(shí)驗(yàn)用設(shè)備HC6800實(shí)驗(yàn)板,示波器,計(jì)算機(jī)三、實(shí)驗(yàn)要求3.1 繪制原理圖及線路板圖 (1) 6位數(shù)碼顯示(動(dòng)態(tài)數(shù)碼管顯示方式)。 (2) 6個(gè)按鍵,4個(gè)發(fā)光管顯示。3.2 編寫(xiě)程序完成以下任務(wù) (1) 鍵盤(pán)識(shí)別。 (2) 動(dòng)態(tài)LED顯示。 (3) 使用按鍵通過(guò)D/A輸出要求的波形并顯示頻率。 3.3 實(shí)驗(yàn)安排 序號(hào)實(shí)踐內(nèi)容實(shí)踐天數(shù)實(shí)踐場(chǎng)所1熟悉

10、HC6800實(shí)驗(yàn)板硬件電路;設(shè)計(jì)及繪制硬件電路原理圖,PCB圖2實(shí)驗(yàn)室2設(shè)計(jì)鍵盤(pán)控制程序和LED顯示程序,并調(diào)試1實(shí)驗(yàn)室3設(shè)計(jì)波形發(fā)生程序并調(diào)試,完成設(shè)計(jì)報(bào)告2實(shí)驗(yàn)室合計(jì)完成設(shè)計(jì)5實(shí)驗(yàn)室4、 硬件電路設(shè)計(jì)4.1 單片機(jī)電路圖4-14.2 顯示及鍵盤(pán)接口電路功能:LED顯示,按鍵掃描。由LED數(shù)碼管顯示器和獨(dú)立按鍵組成,獨(dú)立按鍵與89C51的P1口相連,而單片機(jī)的P0口與LED數(shù)碼管連接。當(dāng)某一按鍵按下一次時(shí),掃描程序掃描到之后,通過(guò)P0口將信號(hào)發(fā)送到LED。掃描及顯示利用程序?qū)崿F(xiàn),不斷掃描獨(dú)立按鍵,當(dāng)某一按鍵按下時(shí),隨即執(zhí)行程序段,完成相應(yīng)的功能。當(dāng)按下鍵1輸出正弦波,鍵2輸出方波,鍵3控制頻

11、率調(diào)小,鍵4控制頻率調(diào)大。圖4-2-1 共陰極數(shù)碼管圖4-2-2 六路獨(dú)立按鍵4.3 D/A轉(zhuǎn)換電路功能:將波形樣值編碼轉(zhuǎn)換成模擬值,輸出波形。 由一片PCF8591組成。PCF8591是具有I2C總線接口的8位A/D及D/A轉(zhuǎn)換器。有四路A/D轉(zhuǎn)換輸入,1路D/A模擬輸出,也就是既可以作D/A轉(zhuǎn)換也可以作A/D轉(zhuǎn)換。PCF8591靠數(shù)據(jù)線SDA和時(shí)鐘線SCL和90C51聯(lián)系。單片機(jī)以I2C協(xié)議向PCF8591發(fā)送數(shù)字編碼,產(chǎn)生不同的輸出。利用采樣定理對(duì)各種波形進(jìn)行抽樣,然后把各種采樣值進(jìn)行編碼,收到的數(shù)字量存入各個(gè)波形表,執(zhí)行程序時(shí)通過(guò)查表的方法依次取出,經(jīng)過(guò)D/A轉(zhuǎn)換后輸出就可以得到波形。

12、如N個(gè)點(diǎn)構(gòu)成波形的一個(gè)周期,則PCF8591輸出N個(gè)樣點(diǎn)值后,樣值點(diǎn)形成運(yùn)動(dòng)軌跡,即一個(gè)周期。利用單片機(jī)的中斷時(shí)間控制輸出周期的速度,也就是控制輸出的波形的頻率。圖4-3 D/A轉(zhuǎn)換電路電路圖4.4 USB串口模塊圖4-44.5 時(shí)鐘電路和復(fù)位電路單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)內(nèi)各種微操作的時(shí)間基準(zhǔn);復(fù)位操作則使單片機(jī)的片內(nèi)電路初始化,使單片機(jī)從一種確定的狀態(tài)開(kāi)始運(yùn)行。 (1) 時(shí)鐘電路單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩方式。圖4-5-1 時(shí)鐘部分電路圖在引腳XTAL1和XTAL2外接晶體振蕩器或陶瓷諧振蕩器,構(gòu)成了內(nèi)部振蕩方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)

13、外接晶振后,就構(gòu)成了自積振蕩,并產(chǎn)生振蕩時(shí)鐘脈沖。晶振通常選用6MHZ、12MHZ、或24MHZ。單片機(jī)的時(shí)序單位振蕩周期:晶振的振蕩周期,又稱(chēng)時(shí)鐘周期,為最小的時(shí)序單位。狀態(tài)周期:振蕩頻率經(jīng)單片機(jī)內(nèi)的二分頻器分頻后提供給片內(nèi)CPU的時(shí)鐘周期。因此一個(gè)狀態(tài)周期包含2個(gè)振蕩周期。機(jī)器周期:1個(gè)機(jī)器周期由6個(gè)狀態(tài)周期12個(gè)振蕩周期組成,是計(jì)算機(jī)執(zhí)行一種基本操作的時(shí)間單位。指令周期:執(zhí)行一條指令所需的時(shí)間。一個(gè)指令周期由1-4個(gè)機(jī)器周期組成,依據(jù)指令不同而不同. (2) 單片機(jī)的復(fù)位狀態(tài)當(dāng)MCS-5l系列單片機(jī)的復(fù)位引腳RST(全稱(chēng)RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),根據(jù)應(yīng)用的要求,復(fù)位操作

14、通常有兩種基本形式:上電復(fù)位和上電或開(kāi)關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。上電或開(kāi)關(guān)復(fù)位要求電源接通后,單片機(jī)自動(dòng)復(fù)位,并且在單片機(jī)運(yùn)行期間,用開(kāi)關(guān)操作也能使單片機(jī)復(fù)位。上電后,由于電容C3的充電和反相門(mén)的作用,使RST持續(xù)一段時(shí)間的高電平。當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時(shí),按下復(fù)位鍵K后松開(kāi),也能使RST為一段時(shí)間的高電平,從而實(shí)現(xiàn)上電或開(kāi)關(guān)復(fù)位的操作。圖4-5-2 復(fù)位電路單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài),其中包括使程序計(jì)數(shù)器PC0000H,這表明程序從0000H地址單元開(kāi)始執(zhí)行。單片機(jī)冷啟動(dòng)后,片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi)RAM區(qū)中的內(nèi)容,21個(gè)特殊功能寄存器

15、復(fù)位后的狀態(tài)為確定值統(tǒng)復(fù)位是任何微機(jī)系統(tǒng)執(zhí)行的第一步,使整個(gè)控制芯片回到默認(rèn)的硬件狀態(tài)下。51單片機(jī)的復(fù)位是由RESET引腳來(lái)控制的,此引腳與高電平相接超過(guò)24個(gè)振蕩周期后,51單片機(jī)即進(jìn)入芯片內(nèi)部復(fù)位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET引腳轉(zhuǎn)為低電平后,才檢查EA引腳是高電平或低電平,若為高電平則執(zhí)行芯片內(nèi)部的程序代碼,若為低電平便會(huì)執(zhí)行外部程序。51單片機(jī)在系統(tǒng)復(fù)位時(shí),將其內(nèi)部的一些重要寄存器設(shè)置為特定的值,至于內(nèi)部RAM內(nèi)部的數(shù)據(jù)則不變。4.6 8路LED發(fā)光二極管用于按鍵檢測(cè),檢查按鍵掃描是否成功,以驗(yàn)證程序的有效性。圖4-6 8路LED4.7 PCB設(shè)計(jì)圖5、 程序設(shè)計(jì)#in

16、clude<reg52.h>#include <I2C.H>#define PCF8591 0x90 /PCF8591 ?unsigned char AD_CHANNEL;unsigned long xdata LedOut8;unsigned char D=127;unsigned char flag=0,time1=0,timeflag=0,num=1;unsigned char signal=0;float freq;unsigned int frequence,freqtemp=0;float time=1000;unsigned int time0;unsig

17、ned char code SinTab250=109,112,114,117,119,122,125,127,130,133,135,138,140,143,145,148,150,153,155,158,160,162,165,167,169,171,173,176,178,180,182,184,186,187,189,191,193,194,196,197,199,200,202,203,204,206,207,208,209,210,211,212,213,213,214,215,215,216,216,216,217,217,217,217,217,217,216,216,216,

18、215,215,214,213,213,212,211,210,209,208,207,206,204,203,202,200,199,197,196,194,193,191,189,187,186,184,182,180,178,176,173,171,169,167,165,162,160,158,155,153,150,148,145,143,140,138,135,133,130,127,125,122,119,117,114,112,109,106,104,101,98,96, 93, 90, 88, 85, 83, 80, 77, 75, 72,70, 67, 65, 63, 60

19、, 58, 55, 53, 51, 49,46, 44, 42,40, 38, 36, 34,32, 30, 29, 27, 25, 23, 22, 20, 19,17, 16, 15, 13,12, 11, 10, 9, 8, 7, 6, 5, 4,4, 3, 3, 2, 2, 1, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8,9, 10, 11, 12 ,13, 15, 16, 17, 19,20, 22, 23, 25, 27, 29, 30, 32, 34, 36, 38, 40, 42, 44, 46, 49, 51, 53, 55,

20、 58, 60, 63, 65, 67, 70, 72,75, 77, 80, 83, 85, 88, 90, 93, 96, 98, 101,104,106,109; sbit key1=P11;sbit key2=P12;sbit key3=P13;sbit key4=P14;sbit key5=P15;sbit key6=P16;sbit ssss=P34;#define uchar unsigned char#define uint unsigned intuchar dis_buf; /?uchar temp;uchar key; /?void delay0(uchar x); /x

21、*0.14MSvoid keydown(void);#define delayNOP(); _nop_();_nop_();_nop_();_nop_();/ ? LED ? 0 12 3 4 56 78 9 a b cd e funsigned char code LED7Code = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;sbit LS138A = P22; /?138?A?P2.2? sbit LS138B = P23; /?138?B?P2.3?sbit LS138

22、C = P24; /?138?C?P2.4?sbit ceshi=P34;void delay(unsigned int i); /?char DelayCNT; /? LED ?, ? 0-9 - unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsigned char flag1=0,flag2=0,flag3=0;/*DAC ?, ? */bit DACconversion(unsigned char sla,unsigned char c, unsigned ch

23、ar Val) Start_I2c(); /? SendByte(sla); /? if(ack=0)return(0); SendByte(c); /? if(ack=0)return(0); SendByte(Val); /?DAC? if(ack=0)return(0); Stop_I2c(); /? return(1);/* * ? */void delay(unsigned int i) char j; for(i; i > 0; i-) for(j = 200; j > 0; j-);void keydown()if(key1=0)delay(1);if(key1=0)

24、TR0=0;TR1=0;signal=1;flag1=1;flag2=0;flag3=0;freq=100000/(0.250*1000*num);frequence=(unsigned int)freq;while(key1=0);TR0=1;TR1=1;if(key3=0)delay(1);if(key3=0)TR0=0;TR1=0;signal=3;flag3=1;flag1=0;flag2=0;freq=10000/(0.002*1000*num);frequence=(unsigned int)freq;while(key3=0);TR0=1;TR1=1;if(key4=0)dela

25、y(1);if(key4=0)TR0=0;TR1=0;num+=1;if(flag1=1)freq=100000/(0.250*1000*num);frequence=(unsigned int)freq;if(flag2=1)freq=100000/(0.22*1000*num);frequence=(unsigned int)freq;if(flag3=1)freq=10000/(0.002*1000*num);frequence=(unsigned int)freq;while(key4=0);TR0=1;TR1=1;if(key5=0)delay(1);if(key5=0)TR0=0;

26、TR1=0;num-=1;if(num=0)num=1;if(flag1=1)freq=100000/(0.250*1000*num);frequence=(unsigned int)freq;if(flag2=1)freq=100000/(0.22*1000*num);frequence=(unsigned int)freq;if(flag3=1)freq=10000/(0.002*1000*num);frequence=(unsigned int)freq;while(key5=0);TR0=1;TR1=1;/*/main() unsigned int i,j,LedNumVal=1 ;

27、unsigned int LedOut10; DelayCNT=0;EA=1;/? ET0=1;/?T0? TMOD=0X01;/?1?0.05? TR0=1;/? TH0=-1000/256;/? TL0=-1000%256;/ ?while(1)DACconversion(PCF8591,0x40, D); /DAC?keydown(); /? if(freqtemp!=frequence) freqtemp=frequence; LedOut0=Disp_Tabfrequence%10000/1000; LedOut1=Disp_Tabfrequence%1000/100|0x80; i

28、f(flag1=1|flag2=1) LedOut2=Disp_Tabfrequence%100/10; else LedOut2=Disp_Tabfrequence%100/10; LedOut3=Disp_Tabfrequence%10; LedOut4=Disp_Tab0; /? LedOut5=Disp_Tabsignal; /? for( i=0; i<8; i+) P0 = LedOuti; switch(i) /?switch ?138? ? ? case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS1

29、38B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; case 3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break;case 5:LS138A=1; LS138B=0; LS138C=1; break;case 6:LS138A=0; LS138B=1; LS138C=1; break;case 7:LS138A=1; LS138B=1; LS138C=1; break; for (j = 0 ; j&

30、lt;90 ;j+) ; /? time0=(int)time; P0 = 0; void Timer0 (void) interrupt 1 using 1/?TH0=(65535-1000)/256;/? TL0=(65535-1000)%256;/ ?timeflag+;if(timeflag=num)timeflag=0;if(flag1=1)/?time1+;if(time1=250)time1=0;D=SinTabtime1;if(flag2=1)/?D+;if(D=220)D=0;if(flag3=1)flag+;/?flag=flag%100;if(flag<=50)D=

31、0;if(flag>50)D=255;6、 軟硬件調(diào)試 在單片機(jī)編程中主要出現(xiàn)問(wèn)題: (1) 鍵盤(pán)掃描時(shí),多次掃描的問(wèn)題,最終加入循環(huán)語(yǔ)句,是按鍵松開(kāi)時(shí)執(zhí)行,解決。 (2) 共256個(gè)樣值點(diǎn)的正弦波輸出時(shí),不能完整顯示的問(wèn)題,采用每隔3個(gè)樣值點(diǎn)輸出一個(gè)的方案,減少樣值數(shù)量從而增大輸出頻率。 (3) 中斷時(shí)間問(wèn)題,因?yàn)槎〞r(shí)器中斷時(shí)間過(guò)短引起的波形不能正常顯示問(wèn)題。最終考慮了D/A轉(zhuǎn)換時(shí)間,以及程序段的執(zhí)行時(shí)間,使一次中斷時(shí)間不小于100毫秒,得以解決。 (4) 數(shù)碼管顯示的閃動(dòng)問(wèn)題,加大了對(duì)動(dòng)態(tài)顯示數(shù)碼管的掃描頻率,更改了由浮點(diǎn)數(shù)構(gòu)成的頻率計(jì)算公式,解決了計(jì)算引起的程序執(zhí)行時(shí)間過(guò)長(zhǎng)問(wèn)題。正弦波頻率范圍問(wèn)題,通過(guò)計(jì)算子程序段執(zhí)行時(shí)間,定時(shí)器中斷時(shí)間,DA轉(zhuǎn)換

溫馨提示

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

評(píng)論

0/150

提交評(píng)論