




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)原理及應(yīng)用課程設(shè)計(jì)-基于stc89c52的信號(hào)發(fā)生器 武漢紡織大學(xué)單片機(jī)原理及應(yīng)用課程設(shè)計(jì)姓 名:向彬彬 學(xué) 號(hào): 1103751068 班 級(jí): 光電1102班指導(dǎo)教師: 鄒崇濤 所在院系:電子與電氣工程學(xué)院 2013年12月目錄1設(shè)計(jì)目的及要求3 1-1設(shè)計(jì)目的3 1-2設(shè)計(jì)要求32方案設(shè)計(jì)3 2-1總體方案設(shè)計(jì)3 2-1.1系統(tǒng)原理分析3 2-2硬件電路設(shè)計(jì)4 2-2.1主要芯片介紹4 2-3軟件設(shè)計(jì)7 2-3.1軟件程序流程圖7 2-3.2發(fā)送數(shù)據(jù)子程序8 2-3.3波形產(chǎn)生過(guò)程83 protues仿真. 94調(diào)試及實(shí)驗(yàn)結(jié)果105實(shí)驗(yàn)中遇到的問(wèn)題12 5-1錯(cuò)誤12 5-2不足1
2、26心得體會(huì)127參考文獻(xiàn)13附錄 程序清單.14基于stc89c52的信號(hào)發(fā)生器課程設(shè)計(jì)報(bào)告設(shè)計(jì)目的及要求設(shè)計(jì)目的 1掌握各個(gè)接口芯片如dac0832等的功能特性及接口方法,并能運(yùn)用其實(shí)現(xiàn)一個(gè)簡(jiǎn)單的微機(jī)應(yīng)用系統(tǒng)功能器件。 2以單片機(jī)為基礎(chǔ),設(shè)計(jì)并開(kāi)發(fā)能輸出多種波形(正弦波、三角波、方波等)且頻率可變的函數(shù)發(fā)生器。 3利用所學(xué)單片機(jī)的理論知識(shí)進(jìn)行軟硬件整體設(shè)計(jì),鍛煉我們理論聯(lián)系實(shí)際、提高我們的綜合應(yīng)用能力。 4通過(guò)運(yùn)用相關(guān)芯片實(shí)現(xiàn)信號(hào)發(fā)生器的功能,從而達(dá)到熟練掌握各種器件的目的,同時(shí),鍛煉動(dòng)手能力及編程調(diào)試能力,更深地理解課上所學(xué)的單片機(jī)的知識(shí),增加電子電路知識(shí),提升作為一個(gè)電子信息工程專業(yè)學(xué)
3、生的專業(yè)素養(yǎng)設(shè)計(jì)要求 1用單片機(jī)加之dac芯片等器件,實(shí)現(xiàn)能產(chǎn)生方波,三角波,正弦波且頻率可變的信號(hào)發(fā)生器。 2熟悉各個(gè)器件的性能和使用方法,特別是89c52,掌握他們之間的連接和數(shù)據(jù)傳輸方法,能夠熟練使用它們及編寫程序。 3完成單片機(jī)和dac的選型,了解不同波形的產(chǎn)生原理和設(shè)計(jì)方案,畫出硬件電路圖,并編程完成軟件部分,最后調(diào)試觀察產(chǎn)生不同類型的波形信號(hào)。方案設(shè)計(jì)總體方案設(shè)計(jì)通過(guò)要求分析,以下幾點(diǎn)是解題的關(guān)鍵:用單片機(jī)加之da芯片,實(shí)現(xiàn)能產(chǎn)生方波,三角波,正弦波信號(hào)發(fā)生器掌握89c51和dac0832轉(zhuǎn)換芯片之間的連接和數(shù)據(jù)傳輸方法,熟練使用它們及編寫程序系統(tǒng)原理分析 數(shù)字信號(hào)可以通過(guò)數(shù)/模轉(zhuǎn)
4、換器轉(zhuǎn)換成模擬信號(hào),因此可通過(guò)產(chǎn)生數(shù)字信號(hào)再轉(zhuǎn)換成模擬信號(hào)的方法來(lái)獲得所需要的波形。89c52單片機(jī)本身就是一個(gè)完整的微型計(jì)算機(jī),具有組成微型計(jì)算機(jī)的各部分部件:中央處理器cpu、隨機(jī)存取存儲(chǔ)器ram、只讀存儲(chǔ)器rom、i/o接口電路、定時(shí)器/計(jì)數(shù)器以及串行通訊接口等,只要將89c51再配置鍵盤及、數(shù)模轉(zhuǎn)換及波形輸出、放大電路等部分,即可構(gòu)成所需的波形發(fā)生器,其信號(hào)發(fā)生器構(gòu)成系統(tǒng)框圖如下圖所示。圖1 系統(tǒng)框圖硬件電路設(shè)計(jì)主要芯片介紹 1單片機(jī)stc89c52介紹 stc89c52是stc公司生產(chǎn)的一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash存儲(chǔ)器。stc89c52
5、使用經(jīng)典的mcs-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得stc89c52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,512字節(jié)ram, 32 位i/o 口線,看門狗定時(shí)器,內(nèi)置4kb eeprom,810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外 stc89c52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定
6、時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35mhz,6t/12t可選。外形及引腳排列如下圖所示: at89c51管腳說(shuō)明: vcc:供電電壓。 gnd:接地。 p0口:p0口為一個(gè)8位漏級(jí)開(kāi)路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。 p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙
7、向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)
8、器進(jìn)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩
9、器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無(wú)效。 /psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 /ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式
10、1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 xtal2:來(lái)自反向振蕩器的輸出。圖2 stc89c52引腳圖 2dac0832介紹: 1) dac0832是8分辨率的d/a轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)da芯片以其價(jià)格低廉、接口簡(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)成。 圖中,vdd和agnd為電源端和接地端,din,out
11、為數(shù)據(jù)輸入端和輸出端,refin應(yīng)給予2.7-5.5v的參考電壓,此電壓根據(jù)所需波形的復(fù)制而定。 2) 5616的十六位數(shù)據(jù)值包括兩部分: d0d7:8位數(shù)據(jù)輸入線,ttl電平,有效時(shí)間應(yīng)大于90ns否則鎖存器的數(shù)據(jù)會(huì)出錯(cuò) ile:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效; cs:片選信號(hào)輸入線(選通數(shù)據(jù)鎖存器),低電平有效; wr1:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ile、cs、wr1的邏輯組合產(chǎn)生le1,當(dāng)le1為高電平時(shí),數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,le1的負(fù)跳變時(shí)將輸入數(shù)據(jù)鎖存; xfer:數(shù)據(jù)傳輸控制信號(hào)輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns
12、)有效; wr2:dac寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由wr2、xfer的邏輯組合產(chǎn)生le2,當(dāng)le2為高電平時(shí),dac寄存器的輸出隨寄存器的輸入而變化,le2的負(fù)跳變時(shí)將數(shù)據(jù)鎖存器的內(nèi)容打入dac寄存器并開(kāi)始d/a轉(zhuǎn)換。 iout1:電流輸出端1,其值隨dac寄存器的內(nèi)容線性變化; iout2:電流輸出端2,其值與iout1值之和為一常數(shù); rfb:反饋信號(hào)輸入線,改變r(jià)fb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度; vcc:電源輸入端,vcc的范圍為+5v+15v; vref:基準(zhǔn)電壓輸入線,vref的范圍為-10v+10v; agnd:模擬信號(hào)地; dgnd:數(shù)字信號(hào)地。
13、 圖3 dac0832芯片引腳圖 3)硬件連接 如圖4,是dac0832與51單片機(jī)的連接方式。圖4 dac0832與單片機(jī)連接圖 3lcd1602介紹 工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5x7或者5x11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義cgram,顯示效果也不好)。 1602lcd是指顯示的內(nèi)容為16x2,即可以顯示兩行,
14、每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。 市面上字符液晶大多數(shù)是基于hd44780液晶芯片的,控制原理是完全相同的,因此基于hd44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。圖5 lcd1602引腳圖 4 lm324介紹 lm324系列器件帶有差動(dòng)輸入的四運(yùn)算放大器。與單電源應(yīng)用場(chǎng)合的標(biāo)準(zhǔn)運(yùn)算放大器相比,它們有一些顯著優(yōu)點(diǎn)。該四放大器可以工作在低到3.0伏或者高到32伏的電源下,靜態(tài)電流為mc1741的靜態(tài)電流的五分之一。共模輸入范圍包括負(fù)電源,因而消除了在許多應(yīng)用場(chǎng)合中采用外部偏置元件的必要性。每一組運(yùn)算放大器可用圖6所示的符號(hào)來(lái)表示,它有5個(gè)引出腳,其中“+”、“-”
15、為兩個(gè)信號(hào)輸入端,“v+”、“v-”為正、負(fù)電源端,“vo”為輸出端。兩個(gè)信號(hào)輸入端中,vi-(-)為反相輸入端,表示運(yùn)放輸出端vo的信號(hào)與該輸入端的位相反;vi+(+)為同相輸入端,表示運(yùn)放輸出端vo的信號(hào)與該輸入端的相位相同。圖6 lm324芯片引腳圖軟件設(shè)計(jì)軟件程序流程圖如下: 需要明確的是,該設(shè)計(jì)最核心的部分是信號(hào)發(fā)生部分,要想完成此設(shè)計(jì),最先應(yīng)該設(shè)計(jì)的是怎樣產(chǎn)生各種波形,只有產(chǎn)生了波形,才會(huì)有后續(xù)進(jìn)行精確地調(diào)試,產(chǎn)生完波形后,需要完成單片機(jī)與dac0832之間的數(shù)據(jù)通信,編寫程序,可以先編寫該程序進(jìn)行數(shù)據(jù)傳送的調(diào)試。圖7 程序流程圖 發(fā)送數(shù)據(jù)子程序: dac0832單緩沖方式是控制輸
16、入寄存器和dac寄存器同時(shí)接收資料,或者只用輸入寄存器而把dac寄存器接成直通方式。此方式適用只有一路模擬量輸出或幾路模擬量異步輸出的情形。波形產(chǎn)生過(guò)程 1)方波產(chǎn)生過(guò)程 方波的實(shí)現(xiàn)只需開(kāi)始的時(shí)候設(shè)置一個(gè)初值然后直接輸出這個(gè)值就行了,輸出一段時(shí)間后,然后再重新置一個(gè)數(shù)據(jù),然后再輸出這個(gè)數(shù)據(jù)一段時(shí)間,但是此時(shí)的時(shí)間一定要等于前面那段時(shí)間。這樣才是一個(gè)方波。由此可以調(diào)節(jié)兩個(gè)電壓維持的時(shí)間,產(chǎn)生占空比不同的方波,相比于模擬電驢,這樣的方式輸出的方波占空比更加精確,且電壓更加穩(wěn)定。 2)三角波產(chǎn)生過(guò)程 三角波的輸出的基礎(chǔ)是鋸齒波,將鋸齒波的產(chǎn)生當(dāng)作是三角波的前半部分,然后再相反的舉行減法,逐漸減為零,
17、如此循環(huán),即可產(chǎn)生三角波。類似的,通過(guò)改變延時(shí)時(shí)間可以改變輸出的頻率,通過(guò)改變最大值,可以改變輸出的電壓。輸出的波形連續(xù)性好,且波形很光滑。 3)正弦波產(chǎn)生過(guò)程 正弦波的實(shí)現(xiàn)實(shí)際上是一個(gè)查表過(guò)程,所查的每一個(gè)值都對(duì)應(yīng)著一個(gè)電壓,并且對(duì)應(yīng)著的電壓匯成圖形即為正弦波,然后重復(fù)這樣一個(gè)過(guò)程即可產(chǎn)生連續(xù)的正弦波.產(chǎn)生的正弦波,波形光滑且頻率可調(diào)。protues仿真 1 仿真連接圖圖8 仿真連接圖 2 仿真波形圖圖9 三角波仿真圖圖10 方波仿真圖圖11 正弦波仿真圖調(diào)試及實(shí)驗(yàn)結(jié)果 1 開(kāi)始時(shí),我們并未接低通濾波電路。因此所得到的波形誤差很大,但是基本形狀大致一樣。圖12 實(shí)際方波圖1圖13 實(shí)際三角波
18、圖1圖14 實(shí)際正弦波圖1 最終,我們加入低通濾波電路之后,所得到的波形圖得到了很大的改善,但是由于我們?cè)O(shè)計(jì)的波形頻率范圍在1000hz以下,所以還是有一些誤差。圖15 修改后的實(shí)際三角波圖16 修改后的實(shí)際方波圖17 修改后的實(shí)際正弦波實(shí)驗(yàn)中遇到的問(wèn)題錯(cuò)誤 1) 最初lcd1602顯示錯(cuò)誤,總是一排黑方塊;后來(lái)通過(guò)搜索,終于知道是因?yàn)槌跏蓟绦蛴袉?wèn)題,改正之后正常顯示。 2) 在實(shí)驗(yàn)室調(diào)試波形時(shí),最開(kāi)始因?yàn)闆](méi)有加低通濾波器,導(dǎo)致輸出波形失真嚴(yán)重;后來(lái)加了低通濾波電路后,效果大大改善。 3) 開(kāi)始復(fù)位電路不起作用,后來(lái)經(jīng)檢查是因?yàn)榫€路連接時(shí)出現(xiàn)問(wèn)題,最后復(fù)位電路正常。不足 1)由于我們?cè)O(shè)計(jì)的低
19、通濾波電路截止頻率為1500hz,而信號(hào)發(fā)生器的頻率范圍在1000hz以下,因此還是有噪聲的影響。 2)由于運(yùn)放的參數(shù)是理想值,實(shí)際有差距,因此幅度誤差比較大。 3)本設(shè)計(jì)只能頻率可調(diào),幅度無(wú)法調(diào)整。心得體會(huì) 通過(guò)這次課程設(shè)計(jì),令我們對(duì)單片機(jī)有了更好的掌握,鍛煉了我們的編程能力,在課程設(shè)計(jì)中,我們遇到的最大的挑戰(zhàn),就是對(duì)程序的調(diào)試,我們收獲最大的地方也在于此,我們需要逐條運(yùn)行每一小段調(diào)試程序,逐段逐句進(jìn)行編程調(diào)試,我們嘗試用匯編和c語(yǔ)言兩種語(yǔ)言進(jìn)行編程,將課上的學(xué)習(xí)的知識(shí)進(jìn)行了運(yùn)用。在此次試驗(yàn)中,我們還深刻體會(huì)到了理論與現(xiàn)實(shí)的差別。在protues仿真中,只要將線路連接好后,所得的仿真結(jié)果便是
20、理想中的波形,而現(xiàn)實(shí)中還必須考慮到電路中的噪聲,電磁干擾等。通過(guò)此次課程設(shè)計(jì),我們真的學(xué)到了許多課堂上學(xué)不到的實(shí)戰(zhàn)經(jīng)驗(yàn)。參考文獻(xiàn)單片機(jī)原理與應(yīng)用設(shè)計(jì) ,張毅剛, 電子工業(yè)出版社, 2011年。單片微機(jī)原理及其接口技術(shù),胡漢才,清華大學(xué)出版社,2003年。單片機(jī)原理與應(yīng)用,孫亟芳,北京航空航天大學(xué)出版社,2004年。單片機(jī)程序設(shè)計(jì)基礎(chǔ),周航慈,北京航空航天大學(xué)出版社,2001年。附錄 程序清單1 波形生成數(shù)組(pltable.h)#ifndef _pltable_h_#define _pltable_h_/*這兩組數(shù)組很重要,需要根據(jù)波形來(lái)調(diào)試,選擇合適的值,使輸出波形達(dá)到頻率要求*/uchar
21、 code waveth 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe;uchar code wavetl0x16,0x9a,0x20,0x5e,0x88,0xa3,0xb8,0xc3,0xce,0xd6, /正弦波頻率調(diào)整中間值0xbc,0xce,0x58,0x8a,0xa9,0xbf,0xcb,0xd8,0xe0,0xee,/三角波頻率調(diào)整
22、中間值0x98,0x60,0xa0,0x42,0x44,0xce,0x5a,0xb3,0xf5,0x3c; /*/uchar code triangle_tab /每隔數(shù)字8,采取一次0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb
23、8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00;uchar code sine_tab256/輸出電壓從0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,
24、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,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1
25、,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,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部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x
26、5d,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,0x00,0x00,0x00,0x00,/輸出電壓從最小值到0(正弦波1/4部分)0x00,0x00,0x00,
27、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,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x
28、7c,0x80; #endif2 鍵盤控制子程序key.h#ifndef _key_h_#define _key_h_#include adc0832.h#include delay.h#include lcd1602.hbit st0;bit duqu0;sbit keyp32;unsigned char keytemp;unsigned int total_freq; /總頻率void key_int0 interrupt 0ea0; tr00; /關(guān)總中斷與定時(shí)器delay50; /延時(shí)夠嗎ifkey0 /確實(shí)有按鍵按下而引發(fā)中斷delay50;if key0keytempp3&0xf8
29、; switchkeytempcase 0xf0:/選擇波形 waveform+;ifwaveform2 waveform0; break; case 0xe8: /頻率按規(guī)定單位依次增加 wavefreqwaveform+;ifwavefreqwaveform10 wavefreqwaveform1; break;case 0xd8: /頻率按規(guī)定單位依次衰減wavefreqwaveform-;ifwavefreqwaveform1 wavefreqwaveform10;break; thtempwavethwaveform*10+wavefreqwaveform-1; /方括號(hào)中選取第幾個(gè)
30、數(shù)后,并把該值賦給t_temptltempwavetlwaveform*10+wavefreqwaveform-1;total_freq wavefreqwaveform * freq_unitwaveform; /求輸出頻率(個(gè)數(shù)*單位)lcd_hang25total_freq%10+0x30;lcd_hang35total_freq%10+0x30; /在液晶中顯示個(gè)位,0x30 在液晶顯示中表示數(shù)字0total_freq/10; lcd_hang24total_freq%10+0x30;lcd_hang34total_freq%10+0x30; /在液晶中顯示時(shí)十位total_freq/
31、10; lcd_hang23total_freq%10+0x30;lcd_hang33total_freq%10+0x30; /在液晶中顯示時(shí)百位total_freq/10; lcd_hang22total_freq%10+0x30; lcd_hang32total_freq%10+0x30;/在液晶中顯示時(shí)千位disp_lcd0x80,&lcd_hang1waveform*16; /在第一行顯示 disp_lcd0xc0,lcd_hang2; /在第二行顯示wavecount0; /抽點(diǎn)計(jì)數(shù)清零while!key;ea1; tr01; /開(kāi)啟總中斷與定時(shí)器#endif3 dac0832數(shù)模轉(zhuǎn)
32、換子程序dac0832.h#ifndef _adc0832_h_#define _adc0832_h_#define dadata p1/da數(shù)據(jù)端口uchar wavecount; /抽點(diǎn)計(jì)數(shù)uchar thtemp,tltemp;/傳遞頻率的中間變量uchar judge1;/在方波輸出函數(shù)中用于簡(jiǎn)單判別作用uchar waveform; /當(dāng)其為0、1、2時(shí),分別代表三種波uchar code freq_unit35,25,100; /三種波的頻率單位uchar idata wavefreq31,1,1; /給每種波定義一個(gè)數(shù)組單元,用于存放單位頻率的個(gè)數(shù)sbit da_s1 p27;/
33、 控制dac0832的8位輸入寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)處于直通狀態(tài),否則,輸出將被鎖存void triangle_out/三角波輸出dadatatriangle_tabwavecount+;ifwavecount64 wavecount0;da_s10; /打開(kāi)8位輸入寄存器da_s11; /關(guān)閉8位輸入寄存器void sine_out /正弦波輸出dadatasine_tabwavecount+;da_s10; /打開(kāi)8位輸入寄存器da_s11; /關(guān)閉8位輸入寄存器void square_out /方波輸出judgejudge; ifjudge1 dadata0xff;else
34、dadata0x00;da_s10; /打開(kāi)8位輸入寄存器da_s11; /關(guān)閉8位輸入寄存器#endif4 lcd1602顯示子程序lcd1602.h#ifndef _lcd1602_h_#define _lcd1602_h_#include delay.huchar code lcd_hang1zxwave sj wave jx wave system is ready! now to switch. save finish! reading ;uchar idata lcd_hang216f hz ;uchar idata lcd_hang316f hz v;/*1602液晶的相關(guān)函數(shù)*/sbit rsp20;sbit rwp21;sbit lcdenp22;sbit lcdbfp07;/sbit stp21;/sbit shp22;/sbit dsp20;unsigned char i,j; /*void lcd_waitvoid/讀忙狀態(tài)rs0;rw1;lcden1;lcden0;/下降沿whilelcdbf;lcden0;lcden1; /仿真才需要此
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025銀行從業(yè)資格證考試網(wǎng)絡(luò)直播學(xué)習(xí)課程及試題答案
- 兒童課題申報(bào)書范文
- 2022屆高考統(tǒng)考化學(xué)人教版一輪復(fù)習(xí)教師用書:第1部分 第8章 第4節(jié) 難溶電解質(zhì)的溶解平衡教案
- 2025年銀行從業(yè)資格證考試應(yīng)對(duì)策略試題及答案
- 項(xiàng)目管理考試交流平臺(tái)試題及答案
- 微生物檢驗(yàn)與疾病防控試題及答案
- 勇往直前學(xué)期新氣象計(jì)劃
- 項(xiàng)目管理專業(yè)人士考核方法試題及答案
- 資格認(rèn)證考試技能提升試題及答案
- 獨(dú)特復(fù)習(xí)方式的證券從業(yè)試題及答案
- 十八項(xiàng)醫(yī)療核心制度培訓(xùn)新版-課件
- 【醫(yī)療】急診預(yù)檢分診專家共識(shí)課件
- 工作場(chǎng)所有害因素職業(yè)接觸限值課件-
- 2023年鄭州信息工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試筆試模擬試題及答案解析
- 好書推薦-《三毛流浪記》77955課件
- 領(lǐng)悟社會(huì)支持量表(PSSS)
- 自動(dòng)控制原理全套ppt課件(完整版)
- 手衛(wèi)生相關(guān)知識(shí)考核試題與答案
- 《同分母分?jǐn)?shù)加減法》教學(xué)課件人教新課標(biāo)
- 產(chǎn)業(yè)經(jīng)濟(jì)學(xué)第三版(蘇東水)課后習(xí)題及答案完整版
- 首件檢驗(yàn)記錄表(標(biāo)準(zhǔn)樣版)
評(píng)論
0/150
提交評(píng)論