單片機課程設計計算器實驗_第1頁
單片機課程設計計算器實驗_第2頁
單片機課程設計計算器實驗_第3頁
單片機課程設計計算器實驗_第4頁
單片機課程設計計算器實驗_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、燕山大學課 程 設 計 說 明 書題目: 計算器實驗 學院(系):年級專業:學 號: 學生姓名: 指導教師: 教師職稱: 燕山大學課程設計(論文)任務書院(系):電氣工程學院 基層教學單位:自動化儀表系學 號090103020059學生姓名樸瑞琦專業(班級)09級儀表二班設計題目計算器實驗設計技術參數1、 獨立完成設計任務;2、 編程,上機調試;3、 連接硬件實驗線路,實現所要求的功能;4、 完成設計,提交課程設計報告。設計要求1、 利用實驗儀上提供的顯示電路和鍵盤電路,做一個簡單的計算器。2、 進一步熟悉LED顯示電路和鍵盤掃描電路的工作原理和編程方法。3、 了解數據計算的基本方法。工作量軟

2、件編程與硬件調試相結合,繪制設計流程圖,并編程進行硬件實現。工作計劃第一天:明確課程設計的任務,繪制硬件電路,軟件流程圖;第二天:根據功能要求編寫程序;第三天:熟悉偉福單片機編程環境,讀程序修改軟件參數和硬件地址,調試程序;第四天:進一步修改程序,查找錯誤,進行硬件調試;第五天:撰寫課程設計報告,完成答辯。參考資料1)單片機原理及應用技術 張淑清編 國防工業出版社2)過程控制系統及儀表 邵裕森 巴筱云編3)單片機及應用 李大友編 高等教育出版社4)機械量測量 機械工業出版社指導教師簽字張淑清基層教學單位主任簽字謝平說明:此表一式四份,學生、指導教師、基層教學單位、系部各一份。2012年 6月

3、29日 摘要單片機的出現是計算機制造技術高速發展的產物,它是嵌入式控制技術的核心,如今,它已廣泛地應用到我們生活的各個領域,如電子、科技、通信、汽車、工業等。計算器在人們的日常中是比較的常見的電子產品之一,可是它還在發展之中,以后必將出現功能更加強大的計算器,基于這樣的理念,本次課程設計的任務是利用單片機設計一個計算器,能夠進行多位簡單的整數加、減、乘、除的運算及具有清零的功能,同時還對其功能進行了擴展,增加了一些特殊運算及錯誤報警功能。它主要由MCS51單片機、A8255、數碼管顯示、鍵盤、蜂鳴器等模塊組成。本計算器是將鍵盤輸入信息經處理通過緩存輸入數碼管顯示出來,鍵盤采用行列掃描式,數碼管

4、采用動態掃描方式,計算功能通過軟件實現,用C語言對單片機可編程芯片進行編程,實現對計算器的設計。關鍵字:單片機、計算器、數碼管、鍵盤目錄摘要3第一章設計目標與設計方案41.1 設計目標與實現方法41.2 方案設計4第2章硬件模塊介紹62.1 運算模塊62.2 輸入模塊7鍵盤的原理82.3 顯示模塊92.3.1 LED的顯示原理92.3.2 動態顯示的工作原理112.4 音頻控制模塊11第3章軟件設計123.1 基本功能設計123.2 擴展功能設計18第4章硬件電路284.1 硬件電路284.2 硬件電路連線28第5章學習心得29參考資料30第一章設計目標與設計方案1.1 設計目標與實現方法1)

5、設計目標:利用實驗儀上提供的顯示電路和鍵盤電路,做一個簡單的計算器。2)實現方法:為了滿足設計的基本要求,可以實現基本的運算(加減乘除),數據清零的功能。另外,還對計算器的功能進行了擴展,添加了一些特殊運算和錯誤報警的功能。我們采用基于MCS51單片機設計計算器,并用LED 數碼管顯示數據,4*6的矩陣鍵盤實現數據輸入,設計仿真和調試要用到WAVE軟件及實驗箱等。1.2 方案設計根據功能要求和指標要求,本系統選用MCS 51 單片機為主控機,通過擴展必要的外圍接口電路,實現對計算器的設計。具體設計方案如下:首先實現計算器的基本功能,即可以進行四則運算,對數字的大小范圍要求不高,故采用可以進行三

6、位數字的運算,選用4*6的鍵盤實現數據輸入,用6個LED 數碼管顯示數據。鍵盤包括數字鍵(09)、符號鍵(+、-、×、÷)、清除鍵和等號鍵,用A、B、C、D、E、F鍵分別代表“+”、“-”、“*”、“/”、“=”、“清零”的功能。擴展功能:用剩余八個鍵分別實現求方、取余、排列、比較、組合、平均數、開方、平方的功能,用8255擴展芯片及蜂鳴器實現錯誤報警的功能。根據需要我們可以采用自上而下的程序設計方法,此方法先從主程序開始設計,然后再編制各子程序,層層細化,逐步求精,最終完成一個復雜程序的設計。程序流程圖如下:第2章 硬件模塊介紹2.1 運算模塊MCS-51 單片機是在一塊

7、芯片中集成了CPU、RAM、ROM、定時器/計數器和多功能I/O等一臺計算機所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數據存儲器(RAM)、程序存儲器(ROM/EPROM)、并行I/O 口、串行口、定時器/計數器、中斷系統及特殊功能寄存器(SFR)。單片機是靠程序運行的,并且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,通過使用單片機編寫的程序可以實現高智能,高效率,以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以進行很快地實現運算功能,如圖2-1所示:MCS51引腳配置圖T2.2 輸入模塊計算器的數據輸入由鍵盤來實現

8、。鍵盤是由若干個按鍵組成的開關矩陣,它是最簡單的單片機輸入設備,通過鍵盤可輸入數據和命令,實現簡單的人機對話。鍵盤根據其結構不同可分為編碼式鍵盤和非編碼式鍵盤兩種。非編碼式鍵盤靠軟件識別,節省硬件,通常采用這種鍵盤。根據鍵盤與單片機接法不同,非編碼鍵盤又分為獨立式和矩陣式兩種。當系統操作較簡單所需按鍵較少時,可采用獨立式非編碼鍵盤,而當系統操作較復雜,需要按鍵較多時,可采用矩陣式非編碼鍵盤。如果采用獨立按鍵的方式,會占用大量的I/O 口資源,故我們采用矩陣式鍵盤輸入。采用四條I/O 線作為行線,六條I/O 線作為列線組成鍵盤。在行線和列線的每個交叉點上設置一個按鍵,這樣鍵盤上按鍵的個數就為4&

9、#215;6個。這種行列式鍵盤結構能有效地提高單片機系統中I/O 口的利用率,如圖21所示:圖2-1 矩陣式鍵盤2.2.1鍵盤的原理如圖22所示,采用列掃描法來識別按鍵。每個按鍵都有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。鍵盤的一端(列線)通過電阻接VCC,而接地是通過程序輸出數字“0”實現的。鍵盤處理程序的任務是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態接地;另一個并行口輸入按鍵狀態,由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表

10、,查出該鍵的功能。當無按鍵閉合時,P10P13 與P14P17 之間開路;當有鍵閉合時,與閉合鍵相連的兩條I/O 口線之間短路。判斷有無按鍵按下的方法是:第一步,置列線P14P17 為輸入狀態,從行線P10P13 輸出低電平,讀入列線數據,若某一列線為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線P14P17 讀入數據,若有某一列為低電平,則對應行線上有鍵按下。綜合一二兩步的結果,可確定按鍵編號。但是鍵閉合一次只能進行一次鍵功能操作,因此須等到按鍵釋放后,再進行鍵功能操作,否則按一次鍵,有可能會連續多次進行同樣的鍵操作。圖22 鍵盤結構2.3 顯示模塊發光二極管LED 是單片機

11、應用系統中的一宗簡單而常用的輸出設備,其在系統中的主要作用是顯示單片機的輸出數據、狀態等。因而作為典型的外圍器件,LED 顯示單元是反映系統輸出和操作輸入的有效器件。LED 具備數字接口可以方便的和大年紀系統連接;它的優點是工作電壓低,響應速度快,價格低,壽命長等,因而在單片機應用系統中獲得了廣泛的應用,所以在此設計中我首先選用了LED作為顯示器件。2.3.1 LED的顯示原理LED顯示器的結構及其段名如圖23所示,連同小數點在內,共有8個LED燈,點亮合適的字段,即能顯示09的數字和某些字符、符號。這種顯示器有兩種形式:一種是發光二極管的陰極連在一起的共陰極顯示器,另一種是陽極連在一起的共陽

12、極顯示器。共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極COM接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。圖23 LED段碼為了顯示數字或符號,要為LED顯示器提供代碼,即字形代碼。七段發光二極管,再加上一個小數點位,共計8段,因此提供的字形代碼的長

13、度正好是一個字節。簡易計算器用到的數字09的共陰極字形代碼如下表21所示:顯示字形gfgdcba段碼001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh9110011167hA111011177hB11111007chC011100139hD10111105ehE111100179hF111000171h表2-1 09七段數碼管共陰極字形代碼2.3.2 動態顯示的工作原理點亮顯示器的方法有靜態和動態兩種,這里顯示位數較多,采用動態顯示較合適,如圖24

14、所示,所謂動態顯示,就是用掃描的方法一位一位輪流點亮顯示器的各位,該方法只需一個8位段輸出口和一個8位掃描輸出口,后者的作用是依次接通各位LED。對于顯示器的每一位來說,每隔一段時間點亮一次,利用人眼的視覺暫留效應可以看到整個動態顯示,但必須保證掃描速度足夠快,字符才不閃爍。圖24 數碼管的動態顯示2.4 音頻控制模塊如圖25所示為音頻放大濾波電路,端口輸入的方波經放大濾波后,驅動揚聲器發聲。聲音的頻率由端口輸入時延時控制,不同頻率的脈沖控制喇叭發出不同的音調。圖25 音頻放大濾波電路第3章 軟件設計3.1 基本功能設計1、實驗現象:可以實現基本的運算加減乘除以及數據清零的功能,用A、B、C、

15、D、E、F鍵分別代表“+”、“-”、“*”、“/”、“=”、“清零”。2、程序流程圖數據送顯示緩沖子程序框圖如下:開始顯示位上移數值為0?數值<0否是無符號位符號位顯示“-”數值對10取模,送顯示最低位數值除以10數值對10取模,送顯示位否返回 是數據送顯示緩沖子程序框圖運算主程序框圖如下:開始初始化參數LED顯示有鍵輸入讀取鍵碼鍵碼是?數字鍵清零鍵功能鍵輸入數值狀態清零數值送顯示緩沖根據上次功能鍵和輸入的數據計算結果本次功能鍵?是?是“=”其它鍵計算最后結果保存結果和功能鍵結果送顯示緩沖等待數值輸入運算主程序流程圖3、基本功能實現程序:#define LEDLen 6/設置LED顯示位

16、數為六位#define PB1 2#define PB0 1xdata unsigned char OUTBIT _at_ 0x9002; / 位控制口xdata unsigned char OUTSEG _at_ 0x9004; / 段控制口xdata unsigned char IN _at_ 0x9001; / 鍵盤行碼讀回口unsigned char LEDBufLEDLen;unsigned char LEDMAP = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e,

17、 0x79, 0x71; / 共陰極數碼管字形代碼void Delay(unsigned char CNT) / 延時子程序 unsigned char i; while (CNT- !=0) for (i=100; i !=0; i-);void DisplayLED() / 逐位顯示數碼管 unsigned char i, j; unsigned char Pos; unsigned char LED; Pos = 0x20; for (i = 0; i < LEDLen; i+) OUTBIT = 0; / trun off all LED LED = LEDBufi; OUTSE

18、G = LED; / 段選 OUTBIT = Pos; / trun on one LED 位選 Delay(1); Pos >>= 1; unsigned char KeyTable = 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05, 0x08, 0x00, 0x01, 0x04, 0x07; / 鍵盤各鍵代碼unsigned char TestKey() / 檢查鍵盤是否有鍵按下 OUTBIT = 0

19、; return (IN & 0x0f); unsigned char GetKey() / 得到按下鍵的數值unsigned char Pos; unsigned char i; unsigned char k; i = 6; Pos = 0x20; do OUTBIT = Pos; Pos >>= 1; k = IN & 0x0f; while (-i != 0) && (k = 0); if (k != 0) i *= 4; if (k & 2) i += 1; else if (k & 4) i += 2; else if (

20、k & 8) i += 3; OUTBIT = 0; do Delay(10); while (TestKey(); return(KeyTablei); / 將被按下鍵的代碼返回給主程序 else return(0xff); / 如果沒有鍵按下,返回清零代碼0xff#define ADD 0x0a / 宏定義,各運算對應相應鍵的代碼#define SUB 0x0b#define MUL 0x0c#define DIV 0x0d#define EQU 0x0e#define CLR 0x0fvoid DisplayResult(signed int Result) / 計算結果逐位送入

21、顯示緩沖區中 unsigned char i; if (Result >= 0) / 數值大于0 / 不顯示符號位 LEDBuf0 = 0; else / 在符號位顯示 - LEDBuf0 = 0x40; Result = - Result; LEDBuf1 = 0; LEDBuf2 = 0; LEDBuf3 = 0; LEDBuf4 = 0; / 數值對10取模,所得結果為最低位 LEDBuf5 = LEDMAPResult % 10; Result = Result / 10; i = 4; / 如果數值除以10后不等于0,繼續向高位顯示 while (Result != 0) LE

22、DBufi- = LEDMAPResult % 10; Result = Result / 10; void main()signed int Last, Result;/ 定義整型變量Last,Result分別存放第一個運算數,第二個運算數和結果 unsigned char OP; unsigned char Key; / 定義字符型變量OP,Key分別存放上一運算符、當前輸入鍵 Last = 0; / 給變量賦初值 Result = 0; OP = ADD; DisplayResult(Result); / 將0送到顯示緩沖區 while (1) while (!TestKey() Dis

23、playLED(); / 用于顯示按下的數及結果 / 讀取鍵碼 Key = GetKey(); / 得到按下鍵的代碼 if ( (Key >= 0) && (Key <= 9) ) / 是數字鍵Result = Result*10 + Key;/ 輸入數值 / 數值送顯示緩沖 DisplayResult(Result);/ 數值送顯示緩沖 else if (Key = CLR) / 是清零鍵Last = 0; Result = 0; OP = ADD;/ 狀態清零DisplayResult(Result); / 數值送顯示緩沖 else if ( (Key=ADD)

24、 | (Key=SUB) | (Key=MUL) | (Key=DIV) | (Key=EQU) ) / 是功能鍵 switch (OP) /上一按鍵是? case ADD: Result = Last + Result; break; case SUB: Result = Last - Result; break; case MUL: Result = Last * Result; break; case DIV: Result = Last / Result; / 根據上一鍵進行相應的運算,計算最后結果 break; if (Key = EQU) / 功能鍵是=Last = 0; OP =

25、 ADD;/ 重新賦初值 else / 是其它功能鍵 / 保存結果, 保存按鍵功能 Last = Result; OP = Key; DisplayResult(Result); /將結果送顯示緩沖Result = 0;/ 等待下一個數值輸入. 3.2 擴展功能設計1、實驗現象:除了可以進行加減乘除的基本運算外,還可進行求方、取余、排列、比較、組合、平均數、開方、平方運算;當輸入、輸出超過顯示范圍時,蜂鳴器會發聲報警,起到提示作用。2、程序流程圖:開始初始化參數LED顯示有鍵輸入讀取鍵碼鍵碼是?數字鍵清零鍵功能鍵輸入數值狀態清零根據上次功能鍵和輸入的數據計算結果本次功能鍵?是?是“=”其它鍵計

26、算最后結果保存結果和功能鍵等待數值輸入是否超范圍?報警數值送顯示緩沖是否超范圍否是報警結果送顯示緩沖否是擴展后程序流程圖3、擴展后的程序:#include <reg51.h>#include <math.h>#define mode 0x82;#define LEDLen 6 /設置LED顯示位數為六位#define PB1 2#define PB0 1xdata unsigned char Control _at_ 0x8003;xdata unsigned char Speaker _at_ 0x8000;xdata unsigned char OUTBIT _at

27、_ 0x9002; / 位控制口xdata unsigned char OUTSEG _at_ 0x9004; / 段控制口xdata unsigned char IN _at_ 0x9001; / 鍵盤行碼讀回口unsigned char LEDBufLEDLen;unsigned char LEDMAP = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71; / 共陰極數碼管字形代碼void Delay(unsigned char CNT) / 延時子

28、程序 unsigned char i; while (CNT- !=0) for (i=100; i !=0; i-);void DisplayLED() / 逐位顯示數碼管 unsigned char i, j; unsigned char Pos; unsigned char LED; Pos = 0x20; for (i = 0; i < LEDLen; i+) OUTBIT = 0; / trun off all LED LED = LEDBufi; OUTSEG = LED; / 段選 OUTBIT = Pos; / trun on one LED 位選 Delay(1); P

29、os >>= 1; unsigned char KeyTable = 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05, 0x08, 0x00, 0x01, 0x04, 0x07; / 鍵盤各鍵代碼unsigned char TestKey() / 檢查鍵盤是否有鍵按下 OUTBIT = 0; return (IN & 0x0f); unsigned char GetKey() / 得到按下鍵的數值u

30、nsigned char Pos; unsigned char i; unsigned char k; i = 6; Pos = 0x20; do OUTBIT = Pos; Pos >>= 1; k = IN & 0x0f; while (-i != 0) && (k = 0); if (k != 0) i *= 4; if (k & 2) i += 1; else if (k & 4) i += 2; else if (k & 8) i += 3; OUTBIT = 0; do Delay(10); while (TestKey(

31、); return(KeyTablei); / 將被按下鍵的代碼返回給主程序 else return(0xff); / 如果沒有鍵按下,返回清零代碼0xff#define ADD 0x0a / 宏定義,各運算對應相應鍵的代碼#define SUB 0x0b#define MUL 0x0c#define DIV 0x0d#define EQU 0x0e#define CLR 0x0f#define qf 0xff#define qy 0x14#define jc 0x15#define bj 0x16#define zh 0x10#define pys 0x11#define kf 0x12#d

32、efine pf 0x13void DisplayResult(signed int Result) / 計算結果逐位送入顯示緩沖區中 unsigned char i; if (Result >= 0) / 數值大于0 / 不顯示符號位 LEDBuf0 = 0; else / 在符號位顯示 - LEDBuf0 = 0x40; Result = - Result; LEDBuf1 = 0; LEDBuf2 = 0; LEDBuf3 = 0; LEDBuf4 = 0; / 數值對10取模,所得結果為最低位 LEDBuf5 = LEDMAPResult % 10; Result = Resul

33、t / 10; i = 4; / 如果數值除以10后不等于0,繼續向高位顯示 while (Result != 0) LEDBufi- = LEDMAPResult % 10; Result = Result / 10; unsigned char PulseCNT;unsigned char Pulse;unsigned ToneHigh, ToneLow;code unsigned int Tone=64778;void Timer() interrupt 1 TR0 = 0; TH0 = ToneHigh; TL0 = ToneLow; TR0 = 1; Speaker = Pulse;

34、 Pulse +; PulseCNT-;void main()signed int Last, Result,i; / 定義整型變量Last,Result分別存放第一個運算數,第二個運算數和結果unsigned int ttttt,x; unsigned char OP; unsigned char Key; / 定義字符型變量OP,Key分別存放上一運算符、當前輸入鍵 Last = 0; / 給變量賦初值 Result = 0; OP = ADD; ttttt=1; x=0; Control = mode; Pulse = 0; TMOD = 0x01; / 方式 1 , 記時器 IE =

35、0x82; / EA=1, IT0 = 1 DisplayResult(Result); / 將0送到顯示緩沖區 while (1) while (!TestKey() DisplayLED(); / 用于顯示按下的數及結果 / 讀取鍵碼 Key = GetKey(); / 得到按下鍵的代碼 if ( (Key >= 0) && (Key <= 9) ) / 是數字鍵Result = Result*10 + Key;/ 輸入數值if (Result<0) ToneHigh = Tone >> 8; ToneLow = Tone & 0xff

36、; TH0 = ToneHigh; TL0 = ToneLow; TR0 = 1; PulseCNT = 200; while (PulseCNT != 0) ; / 發 100 個脈沖 Speaker = 0; TR0 = 0; DisplayResult(Result);/ 數值送顯示緩沖 else if (Key = CLR) / 是清零鍵Last = 0; Result = 0; OP = ADD;/ 狀態清零DisplayResult(Result); / 數值送顯示緩沖 else if ( (Key=ADD) | (Key=SUB) | (Key=MUL) | (Key=DIV)

37、| (Key=EQU) |(Key=qf)|(Key=qy)|(Key=jc)|(Key=bj)|(Key=zh)|(Key=pys)|(Key=kf)|(Key=pf) ) / 是功能鍵 switch (OP) /上一按鍵是? case ADD: Result = Last + Result;if (Result<0) ToneHigh = Tone >> 8; ToneLow = Tone & 0xff; TH0 = ToneHigh; TL0 = ToneLow; TR0 = 1; PulseCNT = 200; while (PulseCNT != 0) ;

38、/ 發 100 個脈沖 Speaker = 0; TR0 = 0; break; case SUB: Result = Last - Result; break; case MUL: Result = Last * Result; if (Result<0) ToneHigh = Tone >> 8; ToneLow = Tone & 0xff; TH0 = ToneHigh; TL0 = ToneLow; TR0 = 1; PulseCNT = 200; while (PulseCNT != 0) ; / 發 100 個脈沖 Speaker = 0; TR0 = 0

39、; break; case DIV: Result = Last / Result; / 根據上一鍵進行相應的運算,計算最后結果 break; case qf: for (i=Result;i>0;i-) ttttt= ttttt*Last; Result=ttttt; if (Result<0) ToneHigh = Tone >> 8; ToneLow = Tone & 0xff; TH0 = ToneHigh; TL0 = ToneLow; TR0 = 1; PulseCNT = 200; while (PulseCNT != 0) ; / 發 100 個

40、脈沖 Speaker = 0; TR0 = 0; break; case qy: Result = Last % Result; break; case jc: ttttt=Last-1; for(i=0;i<Result-1;i+) Last=Last*ttttt; ttttt-; Result=Last; if (Result<0) ToneHigh = Tone >> 8; ToneLow = Tone & 0xff; TH0 = ToneHigh; TL0 = ToneLow; TR0 = 1; PulseCNT = 200; while (PulseCNT != 0) ; / 發 100 個脈沖 Speaker = 0; TR0 = 0; break; case bj: if(Last<Result) Result=Last; break; case zh: x=Result; ttttt=Last-1; for(i=0;i<Result-1;i+) Last=Last*ttttt/x; ttttt-; x-; Result = Last ;if (Result<0) ToneHigh = Tone >> 8; ToneLow

溫馨提示

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

評論

0/150

提交評論