基于-單片機(jī)波形發(fā)生器C語言_第1頁(yè)
基于-單片機(jī)波形發(fā)生器C語言_第2頁(yè)
基于-單片機(jī)波形發(fā)生器C語言_第3頁(yè)
基于-單片機(jī)波形發(fā)生器C語言_第4頁(yè)
基于-單片機(jī)波形發(fā)生器C語言_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-. z單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目: 波形發(fā)生器 學(xué) 號(hào): 1202601* 姓 名: * 指導(dǎo)教師: * 信息與電氣工程學(xué)院二零一五年六月-. z波形發(fā)生器設(shè)計(jì)波形發(fā)生器作為一種常用的信號(hào)源,是現(xiàn)代測(cè)試領(lǐng)域應(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)航、宇航等

2、領(lǐng)域。本系統(tǒng)利用單片機(jī)AT89C51采用程序設(shè)計(jì)方法產(chǎn)生鋸齒波、正弦波、三角波三種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),濾波放大,最終由示波器顯示出來,通過鍵盤來控制三種波形的類型選擇、頻率變化,并通過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)開發(fā)系統(tǒng)、AT89C51單片機(jī)、DAC數(shù)模轉(zhuǎn)換芯電路、六位數(shù)碼管LED、矩陣鍵盤、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)生正弦波,方波,三角波,鋸齒波四種波形,通過 C 語言對(duì)單片機(jī)的編程即可產(chǎn)生相應(yīng)的波形信號(hào),并可以通過鍵盤進(jìn)展各種功能的轉(zhuǎn)換和信號(hào)頻率的控制,當(dāng)輸出的數(shù)字信號(hào)通過數(shù)模轉(zhuǎn)換成模擬信號(hào)也就得到所需要的信號(hào)波形,通過運(yùn)算放大器的放大輸

4、出波形,同時(shí)讓顯示器顯示輸出的波形信息。三角波產(chǎn)生思路首先,根據(jù)按鍵設(shè)定的波形頻率,選擇一個(gè)周期適宜的點(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è)周期適宜的點(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)生思路首先,寫一個(gè)表格,然后根據(jù)按鍵設(shè)定的波形頻率,選擇一個(gè)周期適宜的點(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顯示頻率 矩陣鍵盤圖2-1 系統(tǒng)的整體方案設(shè)計(jì)圖 本系統(tǒng)硬

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

7、MHZ和晶振分別接引腳*TAL1和*TAL2,電容 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 通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期的

8、S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到部復(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)開場(chǎng)工作。圖3-2 復(fù)位電路單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài),其中包括使程序計(jì)數(shù)器PC0000H,這說明程序從0000H地址單元開場(chǎng)執(zhí)行。單片機(jī)冷啟動(dòng)后,片RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片RAM區(qū)中的容,21個(gè)特殊功能存放器復(fù)

9、位后的狀態(tài)為確定值統(tǒng)復(fù)位是任何微機(jī)系統(tǒng)執(zhí)行的第一步,使整個(gè)控制芯片回到默認(rèn)的硬件狀態(tài)下。51單片機(jī)的復(fù)位是由RESET引腳來控制的,此引腳與高電平相接超過24個(gè)振蕩周期后,51單片機(jī)即進(jìn)入芯片部復(fù)位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET引腳轉(zhuǎn)為低電平后,才檢查EA引腳是高電平或低電平,假設(shè)為高電平則執(zhí)行芯片部的程序代碼,假設(shè)為低電平便會(huì)執(zhí)行外部程序。51單片機(jī)在系統(tǒng)復(fù)位時(shí),將其部的一些重要存放器設(shè)置為特定的值,至于部RAM部的數(shù)據(jù)則不變。3.3 數(shù)模轉(zhuǎn)換電路DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)

10、用系統(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)生常用的波形。DAC0832電路與單片機(jī)的接口電路如圖3-3所示。圖3-3 D

11、AC0832與單片機(jī)的接口電路3.4 運(yùn)算放大電路圖3-4 運(yùn)算放大電路 LM324的5管腳與DAC0832的IOUT212管腳相連,LM324的6管腳與DAC0832的IOUT111管腳相連,LM324的7管腳與DAC0832的REF9管腳相連.第一級(jí)運(yùn)算放大器的作用是將DAC0832輸出的電流信號(hào)轉(zhuǎn)化為電壓信號(hào)V1,第二級(jí)運(yùn)算放大器的作用是將V1通過反向放大電路-R2/R1倍。 題目要求輸出的電壓在0-5V可調(diào),而V1的電壓大約是5V,所以R1選擇5K的電阻,R2選擇10K的電位器,這樣最大的輸出電壓為5*10/2=10,最小電壓為0,可以實(shí)現(xiàn)題目要求的0-5V。3.5 矩陣鍵盤電路圖3-

12、5 矩陣鍵盤電路圖中鍵盤獨(dú)立鍵盤行引出的四根線接8155芯片的PC口,六根列線接8155芯片的PA口,采用線反轉(zhuǎ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ā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額

13、定段導(dǎo)通電流來確定相應(yīng)的限流電阻。顯示電路用于顯示信號(hào)的頻率,并且使系統(tǒng)能根據(jù)按鍵實(shí)時(shí)顯示先關(guān)信息。該系統(tǒng)中添加一個(gè)74LS241 鎖存器,用于驅(qū)動(dòng)數(shù)碼顯示管,使其更易于控制,增加顯示的準(zhǔn)確性。數(shù)碼管第三位用來顯示波形信號(hào)的頻率,頻率是以100HZ步進(jìn)顯示。 要使顯示管顯示不同的數(shù)字或者字符,需要使端口輸出相應(yīng)的字型碼,顯示器的字形與字碼關(guān)系如表3-6:共陰極012345673FH06H5BH4FH66H6DH7DH07H89ABCDEF7FH6FH77H7CH39H5EH79H71H4. 系統(tǒng)程序設(shè)計(jì)4.1 主程序流程圖 開場(chǎng) 變量、數(shù)組、端口初始化函數(shù)初始化定時(shí)器T0初始化,開中斷 按鍵掃

14、描波形模式選擇頻率加減選擇 減 加查表、定時(shí)器0定時(shí)時(shí)間計(jì)算數(shù)碼管顯示示波器顯示 給DAC0832直圖4-1 主流程圖 主程序首先將需要初始化的局部進(jìn)展初始化,然后負(fù)責(zé)循環(huán)執(zhí)行按鍵掃描,數(shù)碼管顯示、DA數(shù)據(jù)輸出和示波器顯示。 這些過程都是以模塊化的程序?qū)崿F(xiàn)的,程序中有,按鍵掃描程序、數(shù)碼管掃描顯示程序、定時(shí)器定時(shí)計(jì)算程序、查表程序和DA數(shù)據(jù)輸出程序,通過調(diào)用這些程序完成波形的產(chǎn)生,幅值和頻率的改變。4.2 按鍵處理子程序流程圖程序位于函數(shù)Scan-Key()和Shao-Key()中,函數(shù)位于主循環(huán)中,每循環(huán)一次調(diào)用一次,檢測(cè)鍵盤是否按下,如果按下去延時(shí)抖動(dòng),然后檢測(cè)到底是哪個(gè)按鍵按下,針對(duì)不同

15、的按鍵按下采取不同的動(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 鍵盤控制程序流程圖4.3 數(shù)碼管輸出子程序流程圖數(shù)碼管顯示入口 關(guān)位碼 送段碼 開位碼完畢圖4-3 數(shù)碼管子程序流程圖數(shù)碼管輸出程序是送段選碼和位選碼的程序,位于主程

16、序中。輪流點(diǎn)亮6個(gè)數(shù)碼管,每大約5ms變換一次,由于輪換的次數(shù)太快,由于視覺暫留效應(yīng),看上去是6個(gè)數(shù)碼管看上去好似一直點(diǎn)亮。系統(tǒng)調(diào)試5.1 Proteus軟件仿真調(diào)試1鍵K4按下,示波器顯示三角波鍵K5按下,示波器顯示鋸齒波鍵K6按下,示波器顯示正弦波5.2 Proteus仿真原理圖圖5- Proteus仿真原理圖5.2 硬件調(diào)試在單片機(jī)實(shí)驗(yàn)開發(fā)系統(tǒng)中,將AT89C51的P1口用8排位線接到DAC0832的Dl口,DAC0832的CS5和WR端口接地,VOUT接示波器輸入端。翻開示波器,調(diào)節(jié)水平與垂直方向,屏幕上出現(xiàn)一條水平亮線即可。按下按鍵K4,示波器輸出三角波形,再連續(xù)按下鍵K1,波形周期

17、隨之增大,六位數(shù)碼管顯示的數(shù)字亦隨之增加。按下鍵K6,示波器則輸出正弦波,再連續(xù)按下鍵K2,波形周期隨之減小,六位數(shù)碼管顯示的數(shù)字亦隨之減小。按下鍵K5,示波器輸出鋸齒波,連續(xù)按下K1或K2,示波器顯示的波形的周期隨之增大或減小,六位數(shù)碼管上顯示的周期數(shù)也隨之增大減小。6. 程序清單*include*include *include*include*include*define PA8155 *BYTE0*FF21*define PB8155 *BYTE0*FF22*define PC8155 *BYTE0*FF23*define PP8155 *BYTE0*FF20*define uint

18、unsigned int *define uchar unsigned char uint j,i;uint *SSJ,num,SS;uchar *i=0,*l=0*fe; uint KeyY,KeyNum,NUMM=3;uint numbsj=0,numbjc=0,numbsin=0; uchar stable16=0*3F,0*06,0*5B,0*4F,0*66,0*6D,0*7D,0*07, 0*7F,0*6F,0*77,0*7C,0*39,0*5E,0*79,0*71 ;/* 0f十六個(gè)數(shù)的代碼 */uchar *table6=0*00,0*00,0*00,0*00,0*00,0*00

19、;unsigned char code Tab= /* 正弦波一周期采樣256次,把幅值按比例放大*/輸出電壓從0到最大值正弦波1/4局部0*80,0*83,0*86,0*89,0*8D,0*90,0*93,0*96,0*99,0*9C,0*9F,0*A2,0*A5,0*A8,0*AB,0*AE,0*B1,0*B4,0*B7,0*BA,0*BC,0*BF,0*C2,0*C5,0*C7,0*CA,0*CC,0*CF,0*D1,0*D4,0*D6,0*D8,0*DA,0*DD,0*DF,0*E1,0*E3,0*E5,0*E7,0*E9,0*EA,0*EC,0*EE,0*EF,0*F1,0*F2,0

20、*F4,0*F5,0*F6,0*F7,0*F8,0*F9,0*FA,0*FB,0*FC,0*FD,0*FD,0*FE,0*FF,0*FF,0*FF,0*FF,0*FF,0*FF,/輸出電壓從最大值到0正弦波1/4局部0*FF,0*FF,0*FF,0*FF,0*FF,0*FF,0*FE,0*FD,0*FD,0*FC,0*FB,0*FA,0*F9,0*F8,0*F7,0*F6,0*F5,0*F4,0*F2,0*F1,0*EF,0*EE,0*EC,0*EA,0*E9,0*E7,0*E5,0*E3,0*E1,0*DF,0*DD,0*DA,0*D8,0*D6,0*D4,0*D1,0*CF,0*CC,0*

21、CA,0*C7,0*C5,0*C2,0*BF,0*BC,0*BA,0*B7,0*B4,0*B1,0*AE,0*AB,0*A8,0*A5,0*A2,0*9F,0*9C,0*99,0*96,0*93,0*90,0*8D,0*89,0*86,0*83,0*80,/輸出電壓從0到最小值正弦波1/4局部0*80,0*7C,0*79,0*76,0*72,0*6F,0*6C,0*69,0*66,0*63,0*60,0*5D,0*5A,0*57,0*55,0*51,0*4E,0*4C,0*48,0*45,0*43,0*40,0*3D,0*3A,0*38,0*35,0*33,0*30,0*2E,0*2B,0*2

22、9,0*27,0*25,0*22,0*20,0*1E,0*1C,0*1A,0*18,0*16,0*15,0*13,0*11,0*10,0*0E,0*0D,0*0B,0*0A,0*09,0*08,0*07,0*06,0*05,0*04,0*03,0*02,0*02,0*01,0*00,0*00,0*00,0*00,0*00,0*00,/輸出電壓從最小值到0正弦波1/4局部0*00,0*00,0*00,0*00,0*00,0*00,0*01,0*02,0*02,0*03,0*04,0*05,0*06,0*07,0*08,0*09,0*0A,0*0B,0*0D,0*0E,0*10,0*11,0*13

23、,0*15,0*16,0*18,0*1A,0*1C,0*1E,0*20,0*22,0*25,0*27,0*29,0*2B,0*2E,0*30,0*33,0*35,0*38,0*3A,0*3D,0*40,0*43,0*45,0*48,0*4C,0*4E,0*51,0*55,0*57,0*5A,0*5D,0*60,0*63,0*66,0*69,0*6C,0*6F,0*72,0*76,0*79,0*7C,0*80;void Scan_Key(void);void Shao_Key(void) ;void delay(unsigned int *);void *ianShiSJ(void);void

24、Sanjiaobo(void) ;void Juchibo(void);void Zheng*ianbo(void);uint WW,W;void Sanjiaobo(void)/*產(chǎn)生三角波*/ =0*FF; for(WW=0;WW120;WW+) P1=;/*三角波最大值*/ -; for(SS=0;SSnumbsj;SS+) _nop_; for(W=0;W120;W+) P1=; +; for(SS=0;SSnumbsj;SS+) _nop_; uint QQ,QQQ; void Juchibo(void)/*產(chǎn)生鋸齒波*/ QQQ=0*FF ;for(QQ=0;QQ120;QQ+)

25、P1=QQQ;/*鋸齒波最大值*/ QQQ-; for(SS=0;SSnumbjc;SS+) _nop_; _nop_; uint AA;void Zheng*ianbo(void)/*產(chǎn)生正弦波*/ for(AA=0;AA255;AA+) P1=TabAA;/* 查表 */ for(SS=0;SSnumbsin;SS+) _nop_; _nop_; void *ianShiSJ(void)/*數(shù)碼管顯示信號(hào)周期*/ *table0=stable0; *table1=stable(*SSJ)%10);/個(gè)位 *table2=stable(*SSJ)%100)/10;/十位 *table3=st

26、able(*SSJ)%1000)/100;/百位 *table4=stable0; *table5=stable0; void T0_time() interrupt 1 /50ms TH0=(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(); /求鍵盤號(hào) switch(KeyNum) /鍵盤01的次數(shù) case 0: numbjc=numbjc+1; num

27、bsj=numbsj+1; numbsin=numbsin+1; break; case 1: numbjc=numbjc-1; numbsj=numbsj-1; numbsin=numbsin-1; break; default: NUMM=KeyNum;break; /不變 switch(NUMM) case 3: *SSJ=5*numbjc+10; break; case 4: *SSJ=10*numbsj+20; break; case 5: *SSJ=10*numbsin+23; break; default: break; *ianShiSJ(); void main() int

28、q; for(q=0;q=15;q+) stableq=stableq;*SSJ=10;*ianShiSJ();/求顯示數(shù)據(jù)IP=0*08; PP8155=0*43 ;EA=1;ET0=1;ET1=1;TMOD=0*11;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) Zh

29、eng*ianbo() ;void delay(unsigned int *) for(j=0;j*;j+) for(i=0;i120;i+); void Scan_Key(void) /判斷有鍵按下 uint i; PA8155=0*00; PB8155=0*FF; i=PC8155; i=i; i=i&0*0f; if(i!=0) KeyY=1; else KeyY=0; uchar Keyh,Keyl;void Shao_Key(void)/求鍵盤號(hào) Keyl=0*fe; PB8155=0*FF; for( KeyNum=0; KeyNum=5; KeyNum+) PA8155=Keyl;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論