基于單片機(jī)的波形發(fā)生器C語(yǔ)言_第1頁(yè)
基于單片機(jī)的波形發(fā)生器C語(yǔ)言_第2頁(yè)
基于單片機(jī)的波形發(fā)生器C語(yǔ)言_第3頁(yè)
基于單片機(jī)的波形發(fā)生器C語(yǔ)言_第4頁(yè)
基于單片機(jī)的波形發(fā)生器C語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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、單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目: 波形發(fā)生器 學(xué) 號(hào): 1202601* 姓 名: * 指導(dǎo)教師: 孫* 信息與電氣工程學(xué)院二零一五年六月波形發(fā)生器設(shè)計(jì)波形發(fā)生器作為一種常用的信號(hào)源,是現(xiàn)代測(cè)試領(lǐng)域內(nèi)應(yīng)用最為廣泛的通用儀器之一。在研制、生產(chǎn)、測(cè)試和維修各種電子元件、部件以及整機(jī)設(shè)備時(shí),都學(xué)要有信號(hào)源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號(hào)并加到被測(cè)器件或設(shè)備上,用其他儀器觀察、測(cè)量被測(cè)儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號(hào),如正弦波,三角波,方波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。本系統(tǒng)

2、利用單片機(jī)AT89C51采用程序設(shè)計(jì)方法產(chǎn)生鋸齒波、正弦波、三角波三種波形,再通過(guò)D/A轉(zhuǎn)換器DAC0832將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),濾波放大,最終由示波器顯示出來(lái),通過(guò)鍵盤(pán)來(lái)控制三種波形的類型選擇、頻率變化,并通過(guò)LED顯示其各自的周期。本次關(guān)于產(chǎn)生不同低頻信號(hào)的信號(hào)源的設(shè)計(jì)方案,不僅在理論和實(shí)踐上都能滿足實(shí)驗(yàn)的要求,而且具有很強(qiáng)的可行性。該信號(hào)源的特點(diǎn)是:體積小、價(jià)格低廉、性能穩(wěn)定、實(shí)現(xiàn)方便、功能齊全。1. 設(shè)計(jì)任務(wù)結(jié)合實(shí)際情況,基于AT89C51單片機(jī)設(shè)計(jì)一個(gè)波形發(fā)生器。該系統(tǒng)應(yīng)滿足的功能要求為:(1) 產(chǎn)生三種波形(三角波、鋸齒波、正弦波);(2) 按鍵選擇波形,加減鍵選擇頻率;(3)

3、 在示波器中顯示三種波形;(4) 在六位數(shù)碼管上顯示周期;主要硬件設(shè)備:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)、AT89C51單片機(jī)、DAC數(shù)模轉(zhuǎn)換芯電路、六位數(shù)碼管(LED)、矩陣鍵盤(pán)、8155芯片、示波器。2. 整體方案設(shè)計(jì)波形發(fā)生器系統(tǒng)以AT89C51單片機(jī)作為整個(gè)系統(tǒng)的控制核心,應(yīng)用其強(qiáng)大的接口功能,構(gòu)成整個(gè)波形發(fā)生器系統(tǒng)。利用 AT89S52 單片機(jī)構(gòu)造多功能信號(hào)發(fā)生器,可產(chǎn)生正弦波,方波,三角波,鋸齒波四種波形,通過(guò) C 語(yǔ)言對(duì)單片機(jī)的編程即可產(chǎn)生相應(yīng)的波形信號(hào),并可以通過(guò)鍵盤(pán)進(jìn)行各種功能的轉(zhuǎn)換和信號(hào)頻率的控制,當(dāng)輸出的數(shù)字信號(hào)通過(guò)數(shù)模轉(zhuǎn)換成模擬信號(hào)也就得到所需要的信號(hào)波形,通過(guò)運(yùn)算放大器的放大輸出波

4、形,同時(shí)讓顯示器顯示輸出的波形信息。(1) 三角波產(chǎn)生思路首先,根據(jù)按鍵設(shè)定的波形頻率,選擇一個(gè)周期內(nèi)合適的點(diǎn)數(shù),根據(jù)點(diǎn)數(shù)和峰值計(jì)算相鄰2個(gè)點(diǎn)的幅度的步進(jìn)值,根據(jù)點(diǎn)數(shù)和頻率設(shè)定相鄰2點(diǎn)的時(shí)間值,計(jì)算出定時(shí)器的初值,然后,設(shè)置一個(gè)變量每進(jìn)一次定時(shí)中斷DA數(shù)據(jù)就加幅值步進(jìn),當(dāng)?shù)扔诳傸c(diǎn)數(shù)的一半時(shí),每進(jìn)一次定時(shí)中斷就把DA數(shù)據(jù)減幅值步進(jìn)直到DA數(shù)據(jù)為0,計(jì)數(shù)變量清零。每進(jìn)一次定時(shí)中斷輸出刷新DA的數(shù)據(jù)就可以產(chǎn)生一定頻率和幅值的三角波。(2)鋸齒波產(chǎn)生思路首先,根據(jù)按鍵設(shè)定的波形頻率,選擇一個(gè)周期內(nèi)合適的點(diǎn)數(shù),根據(jù)點(diǎn)數(shù)和峰值計(jì)算相鄰2個(gè)點(diǎn)的幅度的步進(jìn)值,根據(jù)點(diǎn)數(shù)和頻率設(shè)定相鄰2點(diǎn)的時(shí)間值,計(jì)算出定時(shí)器的

5、初值,然后,定時(shí)輸出刷新DA的數(shù)據(jù)就可以產(chǎn)生一定頻率和幅值的波形。(3)正弦波產(chǎn)生思路首先,寫(xiě)一個(gè)表格,然后根據(jù)按鍵設(shè)定的波形頻率,選擇一個(gè)周期內(nèi)合適的點(diǎn)數(shù),根據(jù)點(diǎn)數(shù)和峰值計(jì)算相鄰2個(gè)點(diǎn)的幅度的步進(jìn)值,根據(jù)點(diǎn)數(shù)和頻率設(shè)定相鄰2點(diǎn)的時(shí)間值,計(jì)算出定時(shí)器的初值,然后,設(shè)置一個(gè)變量每進(jìn)一次定時(shí)中斷DA數(shù)據(jù)就加幅值步進(jìn),當(dāng)?shù)扔诳傸c(diǎn)數(shù)的一半時(shí),每進(jìn)一次定時(shí)中斷就查表把DA數(shù)據(jù)減幅值步進(jìn)直到DA數(shù)據(jù)為0,計(jì)數(shù)變量清零。每進(jìn)一次定時(shí)中斷查表輸出刷新DA的數(shù)據(jù)就可以產(chǎn)生一定頻率和幅值的正弦波。DAC0832時(shí)鐘電路放大、濾波電路AT89C51復(fù)位電路 示波器顯示波形LED顯示頻率 矩陣鍵盤(pán)圖2-1 系統(tǒng)的整體

6、方案設(shè)計(jì)圖 本系統(tǒng)硬件主要由D/A轉(zhuǎn)換器、顯示系統(tǒng)、矩陣鍵盤(pán)等幾部分組成。各模塊的主要功能如下:(1) D/A轉(zhuǎn)換器的功能是把單片機(jī)輸出的數(shù)字信號(hào)轉(zhuǎn)換成0-5V的模擬信號(hào)。(2) 顯示系統(tǒng)中六位數(shù)碼管顯示波形頻率,示波器顯示波形。(3) 矩陣鍵盤(pán)選擇波形,增加減少頻率。3. 系統(tǒng)硬件電路設(shè)計(jì)3.1 時(shí)鐘電路單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩方式。在引腳XTAL1 和 XTAL2 外接晶體振蕩器,構(gòu)成了內(nèi)部振蕩方式。由于單片機(jī)內(nèi)部有一個(gè)高增益的反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩,并產(chǎn)生振動(dòng)時(shí)鐘脈沖。晶振通常選用 6MHZ、12MHZ、24MHZ。本設(shè)計(jì)中時(shí)鐘電路圖

7、如圖3-1,我們選擇了12MHZ和晶振分別接引腳XTAL1和XTAL2,電容 C1,C2 均選擇為 30pF,對(duì)振蕩器的頻率有穩(wěn)定作用,當(dāng)頻率較大時(shí),正弦波、三角波、鋸齒波中每一點(diǎn)的延時(shí)時(shí)間為幾微妙,故延時(shí)時(shí)間還要加上指令時(shí)間才能獲得較大的頻率波形。單片機(jī)的時(shí)序單位振蕩周期:晶振的振蕩周期,又稱時(shí)鐘周期,為最小的時(shí)序單位。機(jī)器周期:1個(gè)機(jī)器周期由12個(gè)振蕩周期組成,是計(jì)算機(jī)執(zhí)行一種基本操作的時(shí)間單位。指令周期:執(zhí)行一條指令所需的時(shí)間。一個(gè)指令周期由1-4個(gè)機(jī)器周期組成,依據(jù)指令不同而不同. 圖3-1 時(shí)鐘電路3.2 復(fù)位電路復(fù)位引腳 RST 通過(guò)一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來(lái)

8、抑制噪聲,在每個(gè)機(jī)器周期的 S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號(hào)。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。本設(shè)計(jì)選擇了按鍵復(fù)位如圖3-2,在系統(tǒng)運(yùn)行時(shí),按一下按鍵,就在 RST 斷出現(xiàn)一段高電平,使器件復(fù)位。此時(shí) ALE、PSEN、P0、圖3-2時(shí)鐘電路圖P1、P2、P4 輸出高電平,RST 上輸入返回低電平以后,變退出復(fù)位狀態(tài)開(kāi)始工作。 圖3-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)R

9、AM區(qū)中的內(nèi)容,21個(gè)特殊功能寄存器復(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ù)則不變。3.3 數(shù)模轉(zhuǎn)換電路DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低

10、廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。DAC0832的主要特性參數(shù)如下:1)分辨率為8位;2)電流穩(wěn)定時(shí)間1us;3)可單緩沖、雙緩沖或直接數(shù)字輸入;4)只需在滿量程下調(diào)整其線性度;5)單一電源供電(+5V+15V);6)低功耗,200mW。DAC0832的工作原理:利用8位D/A轉(zhuǎn)換器DAC0808,可以將8位數(shù)字量轉(zhuǎn)換成模擬量輸出。數(shù)字量輸入的范圍為0255,對(duì)應(yīng)的模擬量輸出的范圍在VREF-到VREF+之間。根據(jù)這一特性,可以利用單片機(jī)的并行口輸出的數(shù)字量,產(chǎn)生常用的波形。

11、DAC0832電路與單片機(jī)的接口電路如圖3-3所示。 圖3-3 DAC0832與單片機(jī)的接口電路3.4 運(yùn)算放大電路 圖3-4 運(yùn)算放大電路 LM324的5管腳與DAC0832的(IOUT2)12管腳相連,LM324的6管腳與DAC0832的(IOUT1)11管腳相連,LM324的7管腳與DAC0832的REF(9)管腳相連.第一級(jí)運(yùn)算放大器的作用是將DAC0832輸出的電流信號(hào)轉(zhuǎn)化為電壓信號(hào)V1,第二級(jí)運(yùn)算放大器的作用是將V1通過(guò)反向放大電路-(R2/R1)倍。 題目要求輸出的電壓在0-5V可調(diào),而V1的電壓大約是5V,所以R1選擇5K的電阻,R2選擇10K的電位器,這樣最大的輸出電壓為5*

12、(10/2)=10,最小電壓為0,可以實(shí)現(xiàn)題目要求的0-5V。3.5 矩陣鍵盤(pán)電路 圖3-5 矩陣鍵盤(pán)電路圖中鍵盤(pán)獨(dú)立鍵盤(pán)行引出的四根線接8155芯片的PC口,六根列線接8155芯片的PA口,采用線反轉(zhuǎn)法掃描鍵盤(pán),確定鍵位。如圖按鍵K1為頻率加、K2為頻率減,按鍵K4切換三角波,按鍵K5切換鋸齒波,按鍵K6切換正弦波。3.6 六位數(shù)碼管(LED)顯示電路 圖3-6 LED顯示電路本設(shè)計(jì)選擇了6位共陰極數(shù)碼管如圖3-6,它的6個(gè)發(fā)光二極管的陰極(二極管正端)連接在一起,通常公共陰極接低電平電平,其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字

13、段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。 顯示電路用于顯示信號(hào)的頻率,并且使系統(tǒng)能根據(jù)按鍵實(shí)時(shí)顯示先關(guān)信息。該系統(tǒng)中添加一個(gè)74LS241 鎖存器,用于驅(qū)動(dòng)數(shù)碼顯示管,使其更易于控制,增加顯示的準(zhǔn)確性。數(shù)碼管第三位用來(lái)顯示波形信號(hào)的頻率,頻率是以100HZ步進(jìn)顯示。 要使顯示管顯示不同的數(shù)字或者字符,需要使端口輸出相應(yīng)的字型碼,顯示器的字形與字碼關(guān)系如表3-6:共陰極012345673FH06H5BH4FH66H6DH7DH07H89ABCDEF7FH6FH77H7CH39H5EH79H71H 4.

14、系統(tǒng)程序設(shè)計(jì)4.1 主程序流程圖 開(kāi)始 變量、數(shù)組、端口初始化函數(shù)初始化定時(shí)器T0初始化,開(kāi)中斷 按鍵掃描波形模式選擇頻率加減選擇 減 加查表、定時(shí)器0定時(shí)時(shí)間計(jì)算數(shù)碼管顯示示波器顯示 給DAC0832直圖4-1 主流程圖 主程序首先將需要初始化的部分進(jìn)行初始化,然后負(fù)責(zé)循環(huán)執(zhí)行按鍵掃描,數(shù)碼管顯示、DA數(shù)據(jù)輸出和示波器顯示。 這些過(guò)程都是以模塊化的程序?qū)崿F(xiàn)的,程序中有,按鍵掃描程序、數(shù)碼管掃描顯示程序、定時(shí)器定時(shí)計(jì)算程序、查表程序和DA數(shù)據(jù)輸出程序,通過(guò)調(diào)用這些程序完成波形的產(chǎn)生,幅值和頻率的改變。4.2 按鍵處理子程序流程圖程序位于函數(shù)Scan-Key()和Shao-Key()中,函數(shù)位于

15、主循環(huán)中,每循環(huán)一次調(diào)用一次,檢測(cè)鍵盤(pán)是否按下,如果按下去延時(shí)抖動(dòng),然后檢測(cè)到底是哪個(gè)按鍵按下,針對(duì)不同的按鍵按下采取不同的動(dòng)作。因?yàn)榘存I采用的是掃描法,故需要注意消抖的處理,在此用軟件法去抖動(dòng)即可。軟件法去抖動(dòng)的實(shí)質(zhì)是軟件延時(shí),即檢測(cè)到某一鍵狀態(tài)變化后延時(shí)一段時(shí)間,再檢測(cè)該按鍵的狀態(tài)是否保持著,如是則作為按鍵處理,否則,視為抖動(dòng),不予理睬。去抖動(dòng)的延時(shí)時(shí)間一般參考資料多描述為20ms左右,在實(shí)際應(yīng)用中應(yīng)大于20ms。否則,會(huì)導(dǎo)致按一次多處理,影響程序正常執(zhí)行。按鍵掃描入口有鍵按下?NY 延時(shí)該鍵按下?N得到按鍵號(hào)Y 返回圖4-2 鍵盤(pán)控制程序流程圖4.3 數(shù)碼管輸出子程序流程圖數(shù)碼管顯示入口

16、 關(guān)位碼 送段碼 開(kāi)位碼結(jié)束圖4-3 數(shù)碼管子程序流程圖數(shù)碼管輸出程序是送段選碼和位選碼的程序,位于主程序中。輪流點(diǎn)亮6個(gè)數(shù)碼管,每大約5ms變換一次,由于輪換的次數(shù)太快,由于視覺(jué)暫留效應(yīng),看上去是6個(gè)數(shù)碼管看上去好像一直點(diǎn)亮。5. 系統(tǒng)調(diào)試5.1 Proteus軟件仿真調(diào)試(1)鍵K4按下,示波器顯示三角波(2) 鍵K5按下,示波器顯示鋸齒波(3) 鍵K6按下,示波器顯示正弦波 5.2 Proteus仿真原理圖 圖5- Proteus仿真原理圖5.2 硬件調(diào)試在單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)中,將AT89C51的P1口用8排位線接到DAC0832的Dl口,DAC0832的CS5和WR端口接地,VOUT接

17、示波器輸入端。打開(kāi)示波器,調(diào)節(jié)水平與垂直方向,屏幕上出現(xiàn)一條水平亮線即可。按下按鍵K4,示波器輸出三角波形,再連續(xù)按下鍵K1,波形周期隨之增大,六位數(shù)碼管顯示的數(shù)字亦隨之增加。按下鍵K6,示波器則輸出正弦波,再連續(xù)按下鍵K2,波形周期隨之減小,六位數(shù)碼管顯示的數(shù)字亦隨之減小。按下鍵K5,示波器輸出鋸齒波,連續(xù)按下K1或K2,示波器顯示的波形的周期隨之增大或減小,六位數(shù)碼管上顯示的周期數(shù)也隨之增大減小。6. 程序清單#include<reg51.h>#include<absacc.h> #include<intrins.h>#include<stdlib

18、.h>#include<math.h>#define PA8155 XBYTE0XFF21#define PB8155 XBYTE0XFF22#define PC8155 XBYTE0XFF23#define PP8155 XBYTE0XFF20#define uint unsigned int #define uchar unsigned char uint j,i;uint XSSJ,num,SS;uchar Xi=0,Xl=0xfe; uint KeyY,KeyNum,NUMM=3;uint numbsj=0,numbjc=0,numbsin=0; uchar stab

19、le16=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71 ;/* 0f十六個(gè)數(shù)的代碼 */uchar Xtable6=0x00,0x00,0x00,0x00,0x00,0x00;unsigned char code Tab= /* 正弦波一周期內(nèi)采樣256次,把幅值按比例放大*/輸出電壓從0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE,0xB

20、1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/輸出電壓從最大值到0(正弦波1/4部分)0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0x

21、FD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDF,0xDD,0xDA,0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1,0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80,/輸出電壓從0到最小值(正弦波1/4部分)0

22、x80,0x7C,0x79,0x76,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51,0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27,0x25,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0

23、x00,0x00,0x00,0x00,/輸出電壓從最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x25,0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E,0x51,0x55,0x57,0x5A,

24、0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x80;void Scan_Key(void);void Shao_Key(void) ;void delay(unsigned int x);void XianShiSJ(void);void Sanjiaobo(void) ;void Juchibo(void);void Zhengxianbo(void);uint WW,WWW,W;void Sanjiaobo(void)/*產(chǎn)生三角波*/ WWW=0XFF; for(WW=0;WW<120;WW+) P1=WWW;/*

25、三角波最大值*/ WWW-; for(SS=0;SS<numbsj;SS+) _nop_; for(W=0;W<120;W+) P1=WWW; WWW+; for(SS=0;SS<numbsj;SS+) _nop_; uint QQ,QQQ; void Juchibo(void)/*產(chǎn)生鋸齒波*/ QQQ=0XFF ;for(QQ=0;QQ<120;QQ+) P1=QQQ;/*鋸齒波最大值*/ QQQ-; for(SS=0;SS<numbjc;SS+) _nop_; _nop_; uint AA;void Zhengxianbo(void)/*產(chǎn)生正弦波*/ fo

26、r(AA=0;AA<255;AA+) P1=TabAA;/* 查表 */ for(SS=0;SS<numbsin;SS+) _nop_; _nop_; void XianShiSJ(void)/*數(shù)碼管顯示信號(hào)周期*/ Xtable0=stable0; Xtable1=stable(XSSJ)%10);/個(gè)位 Xtable2=stable(XSSJ)%100)/10;/十位 Xtable3=stable(XSSJ)%1000)/100;/百位 Xtable4=stable0; Xtable5=stable0; void T0_time() interrupt 1 /50ms TH0

27、=(65536-50000)/256;TL0=(65536-50000)%256; num+; if(num=5) /250ms num=0; Scan_Key(); delay(10); Scan_Key(); if(KeyY=1) /有鍵按才會(huì)執(zhí)行 KeyY=0; Shao_Key(); /求鍵盤(pán)號(hào) switch(KeyNum) /鍵盤(pán)01的次數(shù) case 0: numbjc=numbjc+1; numbsj=numbsj+1; numbsin=numbsin+1; break; case 1: numbjc=numbjc-1; numbsj=numbsj-1; numbsin=numbs

28、in-1; break; default: NUMM=KeyNum;break; /不變 switch(NUMM) case 3: XSSJ=5*numbjc+10; break; case 4: XSSJ=10*numbsj+20; break; case 5: XSSJ=10*numbsin+23; break; default: break; XianShiSJ(); void main() int q; for(q=0;q<=15;q+) stableq=stableq;XSSJ=10;XianShiSJ();/求顯示數(shù)據(jù)IP=0X08; PP8155=0x43 ;EA=1;ET

29、0=1;ET1=1;TMOD=0X11;TH0=(65536-50000)/256; / 高八位TL0=(65536-50000)%256;TH1=(65536-1000)/256; / 高八位TL1=(65536-1000)%256; TR0=1;TR1=1; while(1) while(NUMM=3) Juchibo(); while(NUMM=4) Sanjiaobo(); while(NUMM=5) Zhengxianbo() ; void delay(unsigned int x) for(j=0;j<x;j+) for(i=0;i<120;i+); void Scan_Key(void) /判斷有鍵按下 uint i; PA8155=0x00; PB8155=0XFF; i=PC8155; i=i; i=i&0x0f; if(i!=0) KeyY=1; else KeyY=0; uchar Keyh,Keyl;void Shao_Key(void)/求鍵盤(pán)號(hào) Keyl=0Xfe; PB8155=0XFF; for( KeyNum=0; KeyNum<=5; KeyNum+) PA8155=Keyl

溫馨提示

  • 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)論