單片機課程設計波形發(fā)生器_第1頁
單片機課程設計波形發(fā)生器_第2頁
單片機課程設計波形發(fā)生器_第3頁
單片機課程設計波形發(fā)生器_第4頁
單片機課程設計波形發(fā)生器_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄一、前言2二、設計要求2三、方案設計與論證33.1信號發(fā)生電路方案論證33.3顯示方案論證33.4鍵盤方案論證4四、總體系統(tǒng)設計5五、單元電路設計65.1功能與基本原理65.2主板:MCS-51單片機65.3波形轉(zhuǎn)換(D/A)電路75.4復位電路95.5外部時鐘電路105.6 數(shù)碼管顯示部分電路105.7 鍵盤電路原理11六、系統(tǒng)軟件136.1輸出的各個波形程序146.2延時程序216.3鍵盤掃描程序216.4數(shù)碼管顯示246.5波形頻率調(diào)節(jié)25七、調(diào)試結(jié)果與調(diào)試說明267.1硬件調(diào)試267.2軟件調(diào)試267.3 調(diào)試結(jié)果27八、實驗成果28九、總結(jié)與感想31十、參考文獻32十一、附件材料

2、3311.1元器件清單3311.2實物圖片3511.3程序36一、前言波形發(fā)生器是一種常用的信號源,廣泛地應用于電子電路、自動控制系統(tǒng)和教學實驗等領域。目前使用波形發(fā)生器大部分是利用分立元件組成的起體積大,可靠性差,準確度低。本次課程設計使用的 8051 單片機構(gòu)成的發(fā)生器可產(chǎn)生方波、三角波、鋸齒波、等多種波形,波形的周期可以用程序改變,具有線路簡單、結(jié)構(gòu)緊湊、價格低廉、性能優(yōu)越等優(yōu)點。在本設計的基礎上,加上鍵盤控制,則可通過鍵盤設定所需要的波形頻率。二、設計要求利用51系列單片機、數(shù)碼管或點陣LCD、D/A轉(zhuǎn)換器DAC832等器件,設計一個簡易波形發(fā)生器。該簡易波形發(fā)生器具體設計要求如下:(

3、1)可以輸出單極性和雙極性波形。(2)輸出波形形狀可選。波形包括正弦波、脈沖波、方波,鋸齒波等??梢酝ㄟ^按鍵選擇。(3)輸出頻率可調(diào),可以通過兩個按鍵(+、-)調(diào)整。三、方案設計與論證3.1信號發(fā)生電路方案論證 方案一:通過單片機控制D/A,輸出四種波形。此方案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調(diào)節(jié)。但此方案電路簡單、成本低。方案二:使用傳統(tǒng)的鎖相頻率合成方法。通過芯片IC145152,壓控振蕩器搭接的鎖相環(huán)電路輸出穩(wěn)定性極好的正弦波,再利用過零比較器轉(zhuǎn)換成方波,積分電路轉(zhuǎn)換成三角波。此方案,電路復雜,干擾因素多,不易實現(xiàn)。方案三:利用MAX038芯片組成的電路輸出波形。MAX038是精密

4、高頻波形產(chǎn)生電路,能夠產(chǎn)生準確的三角波、方波、正弦波三種周期性波形。但此方案成本高,程序復雜度高。 以上三種方案綜合考慮,選擇方案一。3.2單片機的選擇論證 方案一:AT89S52單片機是一種高性能8位單片微型計算機。它把構(gòu)成計算機的中央處理器CPU、存儲器、寄存器、I/O接口制作在一塊集成電路芯片中,從而構(gòu)成較為完整的計算機、而且其價格便宜。方案二:C8051F005單片機是完全集成的混合信號系統(tǒng)級芯片,具有與8051兼容的微控制器內(nèi)核,與MCS-51指令集完全兼容。除了具有標準8052的數(shù)字外設部件,片內(nèi)還集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其他數(shù)字外設及功能部件,而且執(zhí)行速度快。但

5、其價格較貴以上兩種方案綜合考慮,選擇方案一。3.3顯示方案論證方案一:采用LED數(shù)碼管。LED數(shù)碼管由8個發(fā)光二極管組成,每只數(shù)碼管輪流顯示各自的字符。由于人眼具有視覺暫留特性,當每只數(shù)碼管顯示的時間間隔小于1/16s時人眼感覺不到閃動,看到的是每只數(shù)碼管常亮。方案二:采用LCD液晶顯示器1602。其功率小,效果明顯,顯示編程容易控制,可以顯示字母,但價格較貴。以上兩種方案綜合考慮,選擇方案一。3.4鍵盤方案論證方案一:采用獨立按鍵,他的按鍵的數(shù)目比少,但是它的結(jié)構(gòu)簡單,方便操作,執(zhí)行效率高等優(yōu)勢。方案二:采用矩陣鍵盤,它以較少得IO口實現(xiàn)了按鍵的功能,隨之其操作比較復雜。經(jīng)對比,由于我們需求

6、的按鍵比較多,對執(zhí)行的效率比較高,所以采用矩陣按鍵。四、總體系統(tǒng)設計該系統(tǒng)采用單片機作為數(shù)據(jù)處理及控制核心,由單片機完成人機界面、系統(tǒng)控制、信號的采集分析以及信號的處理和變換,采用按鍵輸入,利用數(shù)碼管顯示電路輸出數(shù)字顯示的方案。將設計任務分解為按鍵電路、數(shù)碼顯示電路等模塊。 總體方框圖五、單元電路設計本系統(tǒng)由單片機、波形轉(zhuǎn)換(D/A)電路、顯示接口電路、鍵盤電路、電源電路等五部分組。原理圖如下圖所示5.1功能與基本原理功能:形成掃描碼、鍵值識別、案件處理、參數(shù)設置、字符設置等形成液晶顯示波形的類型及頻率和幅值;通過定時器0產(chǎn)生定時中斷,形成波形的數(shù)字編碼,并輸出到D/A接口電路和顯示驅(qū)動電路。

7、5.2主板:MCS-51單片機如果按功能劃分,它由8個部件組成,即微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、I/O口(P0口、P1口、P2口、P3口)、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)的集中控制方式。軟、硬件設計是必不可少的,為了滿足功能和指標的要求,資源分配為:單片機用12MHz晶振,P0口與DAC0832相連;P2口接矩陣按鍵,實現(xiàn)頻率、幅值以及波形的選擇;P0口同時接74LS374,控制數(shù)碼管的顯示。5.3波形轉(zhuǎn)換(D/A)電路功能:將波形樣值得編碼轉(zhuǎn)換成模擬值,完成波形的輸出。由一片DAC0832和LM324運放組成。DAC0

8、832是一個具有兩個輸入數(shù)據(jù)寄存器的8位DAC。目前生產(chǎn)的DAC芯片分為兩類,一類芯片內(nèi)部設置有數(shù)據(jù)寄存器,不需要外加電路就可以直接與微型計算機接口。另一類芯片內(nèi)沒有數(shù)據(jù)寄存器,輸出信號隨數(shù)據(jù)輸入線的狀態(tài)的變化而變化,因此不能直接與微型計算機接口,必須通過并行口與微型計算機接口。DAC0832是具有20條引線的雙列直插式CMOS器件,它內(nèi)部具有兩級數(shù)據(jù)寄存器,完成8位電流D/A轉(zhuǎn)換,股不需要外加電路。DAC0832是電流輸出型,示波器上顯示波形,通常需要電壓信號,電流信號到電壓信號的轉(zhuǎn)換可以用運算放大器LF356實現(xiàn)。 單片機想DAC0832發(fā)送數(shù)字編碼,產(chǎn)生不同的輸出。先利用采樣定理對各種波

9、形進行抽樣,然后把各種采樣值進行編碼,收到的數(shù)字量存入各個波形表,執(zhí)行程序時通過查表的方法依次取出,經(jīng)過D/A轉(zhuǎn)換后輸出就可以得到波形。假如N個點構(gòu)成波形的一個周期,則DAC0832輸出N個樣點值后,樣值點形成運動軌跡,即,一個周期。重復輸出N個點后,成為第二個周期。5.4復位電路這種復位電路的工作原理是:單片機的復位電路在剛接通電時,剛開始電容是沒有電的,電容內(nèi)的電阻很低,通電后,5V的電通過電阻給電容進行充電,電容兩端的電會由0V慢慢的升到4V左右(此時間很短一般小于0.3秒),RC構(gòu)成的微分電路在上電瞬間產(chǎn)生一個微分脈沖,其寬度大于兩個機器周期,89C51將復位。正因為這樣,復位腳的電由

10、低電位升到高電位,引起了內(nèi)部電路的復位工作,RST端電壓慢慢下降,降到一定電壓值以后,即為低電平,單片機開始正常工作(這是單片機的上電復位,也叫初始化復位);當按下復位鍵時,電容兩端放電,電容又回到0V了,于是又進行了一次復位工作(這是手動復位原理)。5.5外部時鐘電路采用11.0592MHz的晶振和兩個22pf的電容組成時鐘電路部分5.6 數(shù)碼管顯示部分電路 兩個 74LS374鎖存單片機P0口的信息,一個發(fā)送給數(shù)碼管,控制顯示數(shù)碼管的位顯示,另一個發(fā)送給MC1413,MC1413控制數(shù)碼管的段顯示。5.7 鍵盤電路原理 在單片機應用系統(tǒng)中為了控制系統(tǒng)的工作狀態(tài),以及向系統(tǒng)輸入數(shù)據(jù),應用系統(tǒng)

11、應設有按鍵或鍵盤,實現(xiàn)簡單的人機會話。鍵盤是一組按鍵的組合,按鍵通常是一種常開型按鈕開關(guān),平時按鍵的兩個觸點處于斷開狀態(tài),按下鍵時它們才閉合。六、系統(tǒng)軟件軟件設計上,根據(jù)功能分了幾個模塊編程。模塊主要有:主程序模塊、三角波模塊、正弦波模塊、方波模塊、延時子程序模塊等。顯示波形模塊是利用DAC0832的8位特點,把波形的數(shù)據(jù)以8位數(shù)據(jù)的形勢送進CPU中,只要一按鍵就能顯示波形。void main()uint num=0; uchar state,key_rd = 0xff;LED_Init();TMOD = 0x01;/LED_show(tab3,0x02);LED_show(tab3,0x01

12、);while(key_rd!=1) & (key_rd!=2) & (key_rd!=3) & (key_rd!=5) & (key_rd!=6) & (key_rd!=7)key_rd = test();state = key_rd;while(1)LED_show(tab3,0x01);switch(state)case 1:dan_fb(timer);break;case 2:dan_zx(timer);break;case 3:dan_sanj(timer);break;case 5:shuang_fb(timer);break;case 6:shuang_zx(timer);bre

13、ak;case 7:shuang_sanj(timer);break;6.1輸出的各個波形程序void dan_fb(uchar xms) /單極性方波int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;TH0 = tab1xms / 256;TL0 = tab1xms % 256;shuchu(0x80);TR0 =

14、1;while(!TF0)TF0 = 0;LED_show(tabtimer,0x02);TH0 = tab1xms / 256;TL0 = tab1xms % 256;shuchu(0xff);TR0 = 1;while(!TF0)TF0 = 0;void dan_zx(uchar xms) /單極性正弦波uint i;int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) t

15、imer=2; else timer=timer-1;for(i=1;i0;i-)TH0 = 0xff;TL0 = tab2xms;shuchu(total1i);TR0 = 1;while(!TF0)TF0 = 0;void dan_sanj(uchar xms) /單極性三角波uchar i;int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else

16、timer=timer-1;for(i=0x80;(i=0x80);i+)TH0 = 0xff;TL0 = tab3xms;shuchu(i);TR0 = 1;while(!TF0)TF0 = 0;LED_show(tabtimer,0x02);for(i=0xff;i0x80;i-)TH0 = 0xff;TL0 = tab3xms;shuchu(i);TR0 = 1;while(!TF0)TF0 = 0;void shuang_fb(uchar xms) /雙極性方波int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (

17、num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;TH0 = tab1xms / 256;TL0 = tab1xms % 256;shuchu(0x01);TR0 = 1;while(!TF0)TF0 = 0;LED_show(tabtimer,0x02);TH0 = tab1xms / 256;TL0 = tab1xms % 256;shuchu(0xff);TR0 = 1;while(!TF0)TF0 = 0;void shuang_zx

18、(uchar xms) /雙極性正弦波uint i;int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;for(i=0;i0;i-)TH0 = 0xff;TL0 = tab4xms;shuchu(total1i);TR0 = 1;while(!TF0)TF0 = 0;/LED_show(tabc,0x01);for(i=

19、0;i0;i-)TH0 = 0xff;TL0 = tab4xms;shuchu(256 - total1i);TR0 = 1;while(!TF0)TF0 = 0;void shuang_sanj(uchar xms) /雙極性三角波uchar i;int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;for(i=0x00

20、;i=0x01;i-)TH0 = 0xff;TL0 = tab5xms;shuchu(i);TR0 = 1;while(!TF0)TF0 = 0;6.2延時程序void Delay(uint xms)uint i,j;for(i=xms;i0;i-)for(j=50;j0;j-)6.3鍵盤掃描程序uchar test()uchar temp,key=0xff;P2 = 0xfe;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2

21、;switch(temp)case 0xee:key = 0;break;case 0xde:key = 1;break;case 0xbe:key = 2;break;case 0x7e:key = 3;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;P2 = 0xfd;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xed:k

22、ey = 4;break;case 0xdd:key = 5;break;case 0xbd:key = 6;break;case 0x7d:key = 7;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;P2 = 0xfb;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xeb:key = 8;break;case 0xdb:k

23、ey = 9;break;case 0xbb:key = 10;break;case 0x7b:key = 11;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;P2 = 0xf7;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xe7:key = 12;break;case 0xd7:key = 13;break;case 0x

24、b7:key = 14;break;case 0x77:key = 15;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;return key;6.4數(shù)碼管顯示void LED_Init()WRSEG = 0;Delay(1);P0 = 0x00;WRSEG = 1;Delay(1);WRSEG = 0;WRBIT = 0;Delay(1);P0 = 0x00;WRBIT = 1;Delay(1);WRBIT = 0;void LED_show(uchar LED_tab, uchar LED_num)WRBIT = 0;P0 = 0

25、x00;WRBIT = 0;WRSEG = 0;P0 = 0x00;P0 = LED_tab;WRSEG = 1;WRSEG = 0;WRBIT = 0;P0 = LED_num;WRBIT = 1;WRBIT = 0;6.5波形頻率調(diào)節(jié)int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;七、調(diào)試結(jié)果與調(diào)試說明7.1硬件

26、調(diào)試 在把所有的器件焊接到電路板上之后,先用萬用表對電路板進行檢查,檢查無誤后再進行通電測試,經(jīng)測試電路板沒有問題,各個器件都能正常工作。7.2軟件調(diào)試1. 輸入源程序輸入源程序時,應以西文方式輸入字母和符號,且中文注釋前要加分號。2.對源程序進行匯編和糾錯根據(jù)自動匯編提供的錯誤信息逐條糾正錯誤,直至匯編信息提示無誤。3.確定調(diào)試方案在調(diào)試程序前認真分析源程序,確定各功能程序運行的預期結(jié)果。然后結(jié)合源程序應達到的結(jié)果,通過某些關(guān)鍵參數(shù)和實驗現(xiàn)象檢驗程序運行結(jié)果正確與否。并針對具體的分析和觀察對象選擇較合適的調(diào)試方法。如單步運行、跟蹤運行、連續(xù)運行、快速運行至光標處、設置斷點等調(diào)試方法。4.調(diào)試

27、程序1) 調(diào)試子程序。由于程序比較多,整體調(diào)試不容易發(fā)現(xiàn)和改正錯誤,故采取子程序調(diào)試的方法,但要明確子程序的具體功能。例如:調(diào)試顯示子程序時,只將顯示子程序進行匯編,確認無誤后單步執(zhí)行,觀察CPU窗口和DATA窗口以及CODE窗口相應單元的變化是否跟預期的一樣。如果有問題找出問題所在。采取各個擊破的方法調(diào)試好各個子程序。2)確定各子程序無誤后,再調(diào)試完整的程序,要注意各子程序之間的銜接以及和主程序之間的調(diào)用和返回。運行后,觀察有無顯示,顯示的變化過程是否正確。若運行結(jié)果不正確,首先應根據(jù)程序運行的實際現(xiàn)象分析判斷哪些因素可引起相關(guān)故障,再通過調(diào)試方法逐一認證和排除。通過反復調(diào)試,發(fā)現(xiàn)并排除軟件

28、與硬件存在的各類問題,以滿足系統(tǒng)設計的預期目的。7.3 調(diào)試結(jié)果在最后綜合調(diào)試的時候,出現(xiàn)了一個問題,在高頻率的時候,數(shù)碼管能正常顯示輸出波的頻率,但是在當調(diào)低波形的頻率時,數(shù)碼管開始閃爍,且頻率越低閃爍的越厲害。經(jīng)過思考和檢查程序,發(fā)現(xiàn)原來是延時時間設的太長,數(shù)碼管刷新時間太長,沒達到人眼視覺暫留效果。后來把延時時間改短之后這個問題就解決了。 八、實驗成果單極性方波 單極性正弦波 單極性三角波 雙極性方波 雙極性正弦波 雙極性三角波九、總結(jié)與感想經(jīng)過將近一周的課程設計,終于完成了我們的簡易波形發(fā)生器的設計,基本達到設計要求,從心底里來說,還是很高興的。但高興之余不得不深思呀!在本次設計的過程

29、中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多。對于單片機設計,其硬件電路是比較簡單的,主要是解決程序設計的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設計的靈魂所在。因此在整個設計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關(guān)鍵的問題所在,這需要對單片機的結(jié)構(gòu)很熟悉。因此可以說單片機的設計是軟件和硬件的結(jié)合,二者是密不可分的。通過這次的課程設計,讓我真正的認識到課程設計的重要性,不但可以通過具體課題的設計工作學習到相關(guān)的新知識,而且可以課堂上所學習的知識用于實踐。當在實際運用單片

30、機的時候,才發(fā)現(xiàn)原來自己所學的知識并不熟悉,運用起來更是生疏,沒有實現(xiàn)學以致用的目的,而且還發(fā)現(xiàn)了原來很多存在的疏忽,如簡單的指令一直都用錯了。這次波形發(fā)生器的課程設計基本運用了單片機學習中的很多知識,如單片機的結(jié)構(gòu)及基本原理,指令系統(tǒng)和C語言程序設計,D/A轉(zhuǎn)換接口技術(shù)等等。電路設計和程序設計都 參考了教材上的實例,但是在實際仿真的過程中卻發(fā)現(xiàn)有些不妥只處,不能實現(xiàn)預期的結(jié)果,這樣也提醒了自己書本不一定都是對的,所學的知識必須要充分理解再加以靈活的運用,更要注意具體問題具體分析解決。此外,通過實際的仿真操作,更加熟悉了PROTEUS 、Keil和Protel DXP軟件的操作流程,為以后的更

31、好地學習和運用創(chuàng)造了條件。要設計一個成功的電路,必須要有耐心,在整個電路的設計過程中,花費時間最多的是各個單元電路的連接及電路的細節(jié)設計上,如在多種方案的選擇中,我仔細比較分析其原理以及可行的原因。這就要求我們對硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對之靈活應用。同時在本次設計過程中,我還學會了高效率的查閱資料、運用工具書、利用網(wǎng)絡查找資料。我發(fā)現(xiàn),在我們所使用的書籍上有一些知識在實際應用中其實并不是十分理想,各種參數(shù)都需要自己去調(diào)整,這就要求我們應更加注重實踐環(huán)節(jié)。十、參考文獻單片機原理與接口技術(shù),李升主編,北京大學出版社,2011年單片機原理及應用實驗指導書,屈波等編,2012年

32、微處理器綜合實訓系統(tǒng)模塊化設計戴建 編 2012年單片機原理及應用,趙德安等編,機械工業(yè)出版社,2009年十一、附件材料11.1元器件清單波形發(fā)生器電路(數(shù)碼管)元件清單序號名稱規(guī)格封裝數(shù)量1插座雙排針I(yè)DC1012插頭座4腳*5mmMKDS15_4RMI13插頭座2.54mm*4(4針)SIP414按鍵12*12KEY12175跳線插針,短路棒SIP216晶振11.0592MHZXTAL-117發(fā)光二極管紅色(3mm)LED0.118二極管IN4148DIODE-0.319電阻1KAXIAL0.3110電阻10KAXIAL0.3111電阻20KAXIAL0.3112排阻4K7-8SIP911

33、3排阻2K2-8SIP9114排阻4K7-4SIP5115電容30P(22P)CAP0.2216電容104CAP0.2517電容10ufRB-.1/.2118電容100ufRB-.1/.2119集成電路AT89S52DIP40120集成電路74LS374DIP20221集成電路DAC0832DIP20122集成電路LM324DIP14123集成電路MC1413DIP16124數(shù)碼管紅色0.5英寸SM4205625集成插座14PDIP14126集成插座16PDIP16127集成插座20PDIP20328集成插座28PDIP28129集成插座40PDIP40211.2實物圖片11.3程序#incl

34、ude#include#define uchar unsigned char#define uint unsigned intsbit WRSEG = P35;sbit WRBIT = P34;sbit SL0832 = P32;sbit WR0832 = P33;uchar timer = 0;uchar a,b,c;uchar code tab = 0x6d,0x4f,0x5b,0x3f,0x06,0x66,0x7d,0x07,0x7f,0x6f;uchar code total1 = 128,130,132,135,137,139,141,143,146,148, 150,152,154

35、,156,159,161,163,165,167,169, 171,173,175,178,180,182,184,186,188,189, 191,193,195,197,199,201,203,204,206,208, 210,211,213,215,216,218,219,221,222,224, 225,227,228,229,231,232,233,234,236,237, 238,239,240,241,242,243,244,245,246,247, 247,248,249,249,250,251,251,252,252,253, 253,253,254,254,254,254,

36、255,255,255,255, 255;uint tab1 = 55536,50384,40536; /定時器初值uchar tab2 = 0xa5,0x6a,0x03; /單正弦波定時器初值uchar tab3 = 0xbc,0x96,0x4f; /單三角波定時器初值uchar tab4 = 0xdb,0xc0,0x8a; /雙正弦波定時器初值uchar tab5 = 0xe2,0xce,0xa7; /雙三角波定時器初值void Delay(uint xms); /延時函數(shù)申明void shuchu(uchar V) SL0832 = 0;WR0832 = 0;P0 = V;SL0832

37、= 1;WR0832 = 1;void LED_Init()WRSEG = 0;Delay(1);P0 = 0x00;WRSEG = 1;Delay(1);WRSEG = 0;WRBIT = 0;Delay(1);P0 = 0x00;WRBIT = 1;Delay(1);WRBIT = 0;void LED_show(uchar LED_tab, uchar LED_num)WRBIT = 0;P0 = 0x00;WRBIT = 0;WRSEG = 0;P0 = 0x00;P0 = LED_tab;WRSEG = 1;WRSEG = 0;WRBIT = 0;P0 = LED_num;WRBIT

38、 = 1;WRBIT = 0;uchar test()uchar temp,key=0xff;P2 = 0xfe;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xee:key = 0;break;case 0xde:key = 1;break;case 0xbe:key = 2;break;case 0x7e:key = 3;break;while(temp != 0xf0)temp =

39、 P2;temp = temp & 0xf0;P2 = 0xfd;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xed:key = 4;break;case 0xdd:key = 5;break;case 0xbd:key = 6;break;case 0x7d:key = 7;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;P

40、2 = 0xfb;temp = P2;temp = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xeb:key = 8;break;case 0xdb:key = 9;break;case 0xbb:key = 10;break;case 0x7b:key = 11;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;P2 = 0xf7;temp = P2;tem

41、p = temp & 0xf0;if(temp != 0xf0)Delay(10);temp = P2;temp = temp & 0xf0;if(temp != 0xf0)temp = P2;switch(temp)case 0xe7:key = 12;break;case 0xd7:key = 13;break;case 0xb7:key = 14;break;case 0x77:key = 15;break;while(temp != 0xf0)temp = P2;temp = temp & 0xf0;return key;void Delay(uint xms)uint i,j;for

42、(i=xms;i0;i-)for(j=110;j0;j-)void dan_fb(uchar xms) /單極性方波int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;TH0 = tab1xms / 256;TL0 = tab1xms % 256;shuchu(0x80);TR0 = 1;while(!TF0)TF0 = 0;LED_show(tabtimer,0x02)

溫馨提示

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

最新文檔

評論

0/150

提交評論