TX-1C單片機實驗板使用手冊_第1頁
TX-1C單片機實驗板使用手冊_第2頁
TX-1C單片機實驗板使用手冊_第3頁
TX-1C單片機實驗板使用手冊_第4頁
TX-1C單片機實驗板使用手冊_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 TX-1C單片機實驗板使用手冊 目錄 TX-1C單片機實驗板使用手冊.1 目錄.2 .3 2學(xué)習(xí)方法介紹.3 3.實驗例程詳細解答.3 閃爍燈.4 流水燈.6 單鍵識別.8 3.4 59秒計數(shù)器.10 矩陣鍵盤檢測.13 利用定時器和蜂鳴器唱歌.19 模數(shù)轉(zhuǎn)換ADC0804的應(yīng)用.23 3.8 數(shù)模轉(zhuǎn)換DAC0832的應(yīng)用.26 3.9 DS18B20溫度測量顯示實驗.28 3.10 1602字符液晶顯示.34 3.11 EEPROM AT24C02實驗.37 3.12 串口通訊實驗.43 聯(lián)系方式.45 4 WAVE使用說明.46 5 KEIL的使用.51 6 STC-ISP軟件的使用.5

2、8 1.準備工作 拿到實驗板后首先需要做的幾件事 當(dāng)用戶拿到實驗板后的第一件事是先看實驗板供電是否正常、下載程序功能是否正常、各芯片功能是否都能成功實現(xiàn),檢測方法如下所示: 1. 先把產(chǎn)品包裝中的四個銅柱及鏍母安裝在實驗板上,具體安裝步驟請查看光盤中的視頻教程。 2. 將包裝中的USB線兩端分別插接實驗板左側(cè)的USB供電接口和電腦USB口,打開實驗板上電源,這時會看到實驗板左側(cè)開關(guān)旁邊的電源指示燈會亮,緊接著會看到實驗板上數(shù)碼管或是流水燈都有隨機的亮滅現(xiàn)象出現(xiàn),也有可能只看到電源指示燈亮而無其它現(xiàn)象,這是因為我們在發(fā)貨前要對產(chǎn)品進行綜合測試,單片機內(nèi)部裝有測試時的程序,用戶不必奇怪,以上狀態(tài)說

3、明實驗板供電系統(tǒng)正常。 3. 安裝STC單片機程序下載軟件,下載光盤中寫好的例程測試各功能是否正常,安裝過程及下載方法在視頻中都有詳細介紹,關(guān)于STC單片機程序下載軟件的STC-ISP安裝,請查看本手冊后面的說明或同光盤中的文檔。 4. 安裝單片機編程軟件KEIL或是WAVE,這兩個軟件在產(chǎn)品配套光盤里的軟件目錄下都有,用戶可自由選擇使用任何一種軟件,這兩種軟件都支持單片機的C語言或是匯編語言編譯,我們推薦用戶使用KEIL,在TX-1C配套的單片機視頻教學(xué)光盤中全部使用的是KEIL軟件講解,在視頻教學(xué)的第1講中有詳細的KEIL軟件建立工程及編譯源代碼的介紹,請大家自行查看。我們在手冊中也做了詳

4、細的介紹,請大家查看本手冊后面的說明。 2學(xué)習(xí)方法介紹 接下來最重要的工作便是跟著配套教學(xué)光盤一講一講的跟著老師做,把老師每講的內(nèi)容都及時的消化,遇到不懂的問題要及時查書,一個個搞明白,不要積累任何小問題,大部分用戶都是從零開始學(xué)起,講座中的內(nèi)容也是從最簡單的開始,一步步深入,只要大家愿意學(xué)、有信心、有毅力、相信大家跟著教學(xué)講座走10天,之后必將會有非常大的收獲。如果用戶沒有購買配套視頻光盤,我們會贈送前三講的內(nèi)容,這三講中非常詳細的介紹了KEIL軟件的使用方法,講了流水燈設(shè)計流程,實驗板上其余的功能就需要靠用戶自來對它進行編程并實現(xiàn)它們了,這樣學(xué)起來只是時間會稍長些,感覺會累點,但只要大家肯

5、努力,終究也一定會學(xué)會的。 3.實驗例程詳細解答 注意:在我要講具體實驗之前這里有必要先介紹一下本實驗板上用到的一些元件的操作方法,對于一個電子制作者或是電子愛好者來說學(xué)會怎么樣搜索自己需要元件的資料是非常重要的,現(xiàn)在市場上各種各樣的芯片非常的多,能實現(xiàn)同一個功能的芯片也有很多種,世界各大芯片制造公司都有生產(chǎn)。所以我們不可能把芯片的功能、名稱及詳細使用方法都記全,也沒有這個必要,但是必須要知道在你需要實現(xiàn)某個功能的時候怎么樣才能找到合適的芯片,下面先給大家推薦兩個搜索網(wǎng)站: 以上兩個網(wǎng)站是中國最大的搜索網(wǎng)站和世界最大的搜索網(wǎng)站,上面幾乎可以搜到你需要的任何信息,大家一定要充分利用身邊可利用的資

6、源,問別人是最沒有辦法的辦法,當(dāng)自己在經(jīng)過多重努力后仍然沒有得到最佳答案,這時再去問別人。 另外需要提醒大家一點,大部分芯片的資料全是英文,大家學(xué)了這么多年英文,現(xiàn)在正是你用它的時候了,對于電子愛好者來說,看芯片的英文介紹就應(yīng)該達到看漢語一樣的水平,建議大家以后裝軟件全裝英文版的,看電影全看國外原聲的,最好連自己電腦的操作系統(tǒng)也裝英文版的,從點點滴滴中增長知識。 再給大家介紹兩個查芯片資料的網(wǎng)站: 這里的芯片資料比較全,如果沒有找到你要的資料,那可參考 ,這里有全世界所有的芯片資料,并且每天都在更新。 鎖存器(74HC573):顧名思義,就是把輸入端的數(shù)據(jù)鎖存(或送)到輸出端,請看下圖中的U3

7、元件,第11角(鎖存端)為高電平的時候,右邊D0-D7的輸入與左邊Q0-Q7的輸出是直通的,就是說,輸入端是什么電平,輸出端就是什么電平,可以把它當(dāng)作不存在。當(dāng)?shù)?1角為低電平的時候,左右兩端就被斷開了,無論輸入端怎么變化,輸出端都不會變化,當(dāng)?shù)?1角由低電平變?yōu)楦唠娖降囊凰查g,輸入端的數(shù)據(jù)立刻被傳送到輸出端,并且在11角保持為高電平期間,輸出端數(shù)據(jù)始終的輸入端數(shù)據(jù)相同,如果此時我們再次把第11角設(shè)置為低電平,那么以后當(dāng)輸入端無論再怎么變化,輸出端都不會變化而是保持剛才第11角在下降沿(由高電平到低電平跳變)之間時輸入端的值,這樣就達到了鎖存數(shù)據(jù)的目的,這也就是所謂的總線設(shè)計思路,一個8位的數(shù)

8、據(jù)線加一個鎖存器后就可以擴接多個元件,當(dāng)選通哪個元件的片選信號,就送數(shù)據(jù)給那個元件。先說這個元件,以后用到別的元件我們再解釋。下面開始講解例程。 閃爍燈 實驗要求 點亮與單片機口相連的發(fā)光二極管,延時約,然后熄滅,再延時約,再點亮,如此循環(huán)下去。 實驗?zāi)康?初步了解單片機IO口輸出高低電平的方法,延時函數(shù)的時間估算。 關(guān)于延時函數(shù)的時間估算問題在視頻第二講有詳細演示介紹。 硬件電路 源代碼 #include<reg51.h> /* 上面這行是一個"文件包含"處理。所謂"文件包含"是指一個文件將另外一個文件的內(nèi)容全部包含進來這里的程序雖然只寫了

9、一行,但C編譯器在處理的時候卻要處理幾十或幾百行,這里包含的目的在于本程序要使用P1這個符號,而P1是在這個頭文件中定義的。大家可以在編譯器目錄下面用記事本打開這個文件看看。 */ sbit P1_0=P10; /定義IO口這步的目的是讓編/譯器知/道P1_0代表的就是單片機的口 void delay02s(void) /延時秒子程序 unsigned char i,j,k; /定義3個無符號字符型變量。 for(i=20;i>0;i-) /三個FOR循環(huán)用來延時,這里為 for(j=20;j>0;j-) /什么是大家可以用WAVE或KEIL for(k=248;k>0;k-

10、); /設(shè)置斷點仿真,就可知道大概 /是了。 void main(void) /每一個C語言程序有且只有一個主函數(shù), while(1) /循環(huán)條件永遠為真,以下程序一直執(zhí)行下去。 P1_0=0; / I/O口輸出低電平,小燈被點亮。 delay02s(); /延時經(jīng)過秒。 P1_0=1; / I/O口輸出高電平,小燈熄滅。 delay02s(); /延時經(jīng)過秒。 流水燈 實驗要求 單片機P1口相連的8個發(fā)光二極管中的一個循環(huán)移位點亮,同時蜂鳴器發(fā)出滴滴的響聲。 蜂鳴器用一PNP三極管驅(qū)動,集電極(C極)通過蜂鳴器線圈接5V電源,基極(B極)是控制端,發(fā)射極(E極)接地,當(dāng)三極管C,B極PN結(jié)正

11、偏時,PN結(jié)導(dǎo)通,即B極為低電平時,三極管導(dǎo)通,蜂鳴器發(fā)聲,視頻中有介紹,若大家有疑問可參考模電書。 實驗?zāi)康?掌握循環(huán)移位的工作原理和操作方法,學(xué)會使用C51封裝好的函數(shù)庫C51LIB,延時函數(shù)的時間估算。 硬件電路 源代碼 #include <reg51.h> #include <intrins.h> /后面要用到它里面的_crol_(k,l)函數(shù) 這個函數(shù)的意思是把一個字符變量k循環(huán)左移l位,關(guān)于它的說明請查看安裝KEIL目錄下的KeilC51HLP文件夾里面的c51lib,這個文件里面有各種用C語言封裝好的函數(shù)庫,我們在以后使用其中某些函數(shù)時可以直接使用而自己不

12、必再寫。 unsigned char a,b,k,j; /定義四個字符變量 sbit beep=P23; / 定義蜂鳴器的接口 void delay10ms() /延時子程序,大約延時10ms for(a=100;a>0;a-) for(b=225;b>0;b-); void main() k=0xfe; /先給k一個初值11111110等待移位 while(1) delay10ms(); beep=0; /打開蜂鳴器 delay10ms(); /讓它響10ms beep=1; /關(guān)閉蜂鳴器 j=_crol_(k,1); /把k循環(huán)左移一位 k=j; /把移完的值再送給k P1=j

13、; /同時把值送到P1口點亮發(fā)光二極管 /再次循環(huán) 單鍵識別 實驗要求 每按一次獨立鍵盤的S2鍵,與P1口相連的八個發(fā)光二極管中點亮的一個往下移動一位。 注意:關(guān)于按鍵去抖動的解釋,我們在手動按鍵的時候,由于機械抖動或是其它一些非人為的因素很有可能會造成誤識別,一般手動按下一次鍵然后接著釋放,按鍵兩片金屬膜接觸的時間大約為50ms左右,在按下瞬間到穩(wěn)定的時間為5-10ms,在松開的瞬間到穩(wěn)定的時間也為5-10ms,如果我們再首次檢測到鍵被按下后延時10ms左右再去檢測,這時如果是干擾信號將不會被檢測到,如果確實是有鍵被按下,則可確認,以上為按鍵識別去抖動的原理。 實驗?zāi)康?獨立按鍵的識別方法、

14、鍵盤消抖等。 硬件電路 源代碼 #include <reg52.h> sbit BY1=P34; /定義按鍵的輸入端S2鍵 unsigned char count; /按鍵計數(shù),每按一下,count加1 unsigned char temp; unsigned char a,b; void delay10ms(void) /延時程序 unsigned char i,j; for(i=20;i>0;i-) for(j=248;j>0;j-); key() /按鍵判斷程序 if(BY1=0) /判斷是否按下鍵盤,當(dāng)單片機上電時所有IO口為高電平,S2鍵一端接地另一端接,所以

15、當(dāng)鍵被按下時口直接接地,此時檢測肯定為低電平。 delay10ms(); /延時,軟件去抖動干擾 if(BY1=0) /再次檢測確認按鍵按下 count+; /按鍵計數(shù)加1 if(count=8) /計8次重新計數(shù) count=0; /將count清零 while(BY1=0);/等待按鍵釋放,如果鍵未釋放則一直在此等待。 move() /廣告燈向下移動移動函數(shù) a=temp<<count; / 這三句為一個循環(huán)移位,相當(dāng)于前面提到的 b=temp>>(8-count);/ _crol_()函數(shù),這里是自己寫的過程,大家可對比 P1=a|b; /下。 main() co

16、unt=0; /初始化參數(shù)設(shè)置 temp=0xfe; P1=0xff; P1=temp; while(1) /永遠循環(huán),掃描判斷按鍵是否按下 key(); /調(diào)用按鍵識別函數(shù) move(); /調(diào)用廣告燈移動函數(shù) 3.4 59秒計數(shù)器 實驗要求 使用軟件延時的方法實現(xiàn)0-59秒自動計數(shù)器,用數(shù)碼管的前兩位顯示出來。 實驗?zāi)康?練習(xí)進位操作,數(shù)碼管動態(tài)顯示。 硬件電路 源代碼 /59秒自動計數(shù)器 #include<reg51.h> #define uchar unsigned char uchar j,k,i,a,A1,A2,second; sbit dula=P26; /鎖存器控制

17、端定義 sbit wela=P27; uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/數(shù)字編碼 void delay(uchar i) /延時函數(shù) for(j=i;j>0;j-) for(k=125;k>0;k-); void display(uchar sh_c,uchar g_c) /顯示函數(shù) dula=0; P0=tablesh_c; /顯示十位 dula=1; dula=0; wela=0; P0=0xfe; wela=1;

18、wela=0; delay(5); /亮5ms P0=tableg_c; /顯示個位 dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); /亮5ms void main() /主函數(shù) while(1) second+; /秒加一 if(second=60) /判斷是否到60 second=0; /如果到了則清零 A1=second/10; /沒到則分離出十位和個位 A2=second%10; for(a=50;a>0;a-) /顯示部分。至于時間大概是多少 /請用戶用軟件仿真看時間約等于1秒 display(A1,A2);/便可,如果需要

19、精確定時請用定時器 矩陣鍵盤檢測 實驗要求 依次按下4*4矩陣鍵盤上從第1到第20個鍵,同時在六位數(shù)碼管上依次顯示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。 說明:本實驗板上數(shù)碼管為共陰極。 靜態(tài)數(shù)碼管顯示原理(視頻中有詳細介紹):這里就共陰極數(shù)碼管顯示原理進行講解,一位數(shù)碼管內(nèi)一共有8個發(fā)光二極管,對共陰極來說其8個發(fā)光二極管的陰極在數(shù)碼管內(nèi)部全部接在一起,也就是“共陰”說法的來源,陽極是獨立的,設(shè)計電路時一般把陰極接地,當(dāng)我們從外部給任一個陽極加一個高電平時這個發(fā)光二極管就亮了,如果想要出一個8字,并且把右下角的小數(shù)點也點亮的話,那可以給8個陽極全總送高電平,想出幾就

20、給相對應(yīng)的發(fā)光二極管送高電平,因此我們在顯示數(shù)字的時候首先做的就是給0-9十個數(shù)字編好碼,在要它亮什么數(shù)字的時候直接把這個編碼送到它的陽極就行了。另外說一下,一般的數(shù)碼管每一段亮至少需要10個毫安的電流,而單片機的IO口送不出如此大的電流,所以我們需要加數(shù)碼管的驅(qū)動電路,可以用上拉電阻的方法,也可以使用專門的驅(qū)動芯片,本實驗板使用的74HC573,其輸出電流較大,足夠點亮數(shù)碼管。 本實驗板上的六位數(shù)碼管中每個的相同段號(段指a,b,c,d,e,f,g,h)全部是接在一起的,其中每一個位(陰極)是獨立的,所以在做靜態(tài)顯示的時候所有的數(shù)碼管只能顯示相同的數(shù)字,當(dāng)然可以控制顯示幾位,如果讓它們顯示不

21、同的數(shù)字那就得給每一個數(shù)碼管加一套驅(qū)動電路了。但這樣做是沒有必要的,后面我們會講到關(guān)于數(shù)碼管動態(tài)顯示原理。 下面給出本實驗板共陰極數(shù)碼管數(shù)字編碼 矩陣鍵盤的四行分別與連接,四列分別與連接。 實驗?zāi)康?學(xué)會矩陣鍵盤的檢測,掌握數(shù)碼管靜態(tài)顯示原理。 硬件電路 鍵盤電路見3.3 源代碼 /4*4鍵盤檢測程序,按下鍵后相應(yīng)的代碼顯示在數(shù)碼管上 #include<reg51.h> sbit beep=P23; /蜂鳴器接口 sbit dula=P26; /控制數(shù)碼管段選的鎖存器鎖存端 sbit wela=P27; /控制數(shù)碼管位選的鎖存器鎖存端 unsigned char i=100; un

22、signed char j,k,temp,key; void delay(unsigned char i) /可自定義延時長短的延時函數(shù) /當(dāng)i=10時大約為10毫秒 for(j=i;j>0;j-) for(k=125;k>0;k-); unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; / 0-F編碼 display(unsigned char num) / 顯示子函數(shù) P0=tablenum; /將第num個顯示編碼

23、送P0口 dula=1; /一個下降沿將數(shù)據(jù)鎖存 dula=0; P0=0xc0; /位選通全部的數(shù)碼管 wela=1; /一個下降沿將數(shù)據(jù)鎖存 wela=0; void main() dula=0; /先關(guān)閉兩個鎖存器 wela=0; while(1) /進入檢測總循環(huán) P3=0xfe; /給送低電平,其余為高電平 temp=P3; /把P3口數(shù)據(jù)讀回來 temp=temp&0xf0; /把P3口與11110000相與 if(temp!=0xf0) /如果有鍵按下剛一定不相等,于是進入/下一步檢測 delay(10); /延時去抖動 if(temp!=0xf0) /再次判斷是否有鍵按

24、下 temp=P3; /判斷為有,再次讀P3口數(shù)據(jù) switch(temp) /因為我們剛才是將第一行置的低 /在這里再判斷是第幾列 case 0xee: /如果temp=0xee則為第一行和第一列 key=0; /的交叉點,由此我們知道是矩陣鍵盤 break; /上的第一個鍵被按下,我們給key=0。 case 0xde: /以后依此類推 key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; while(temp!=0xf0) /這段程序是檢測按鍵是否被釋放 temp=P3; /如果沒有釋放就一直等待并且 temp=t

25、emp&0xf0; beep=0; /蜂鳴器一直響 beep=1; /釋放后關(guān)閉蜂鳴器 display(key); /顯示按下相應(yīng)鍵值的數(shù)據(jù) P1=0xfe; /將第一個發(fā)光二極管點亮(我寫 /程序的時候測試用的) P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: k

26、ey=7; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; display(key); P1=0xfc; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: key=10; break; case 0x7b: key=11; break

27、; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; display(key); P1=0xf8; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; while(t

28、emp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; display(key); P1=0xf0; 利用定時器和蜂鳴器唱歌 實驗要求 用單片機的口輸出不同占空比的方波來控制與它相連的蜂鳴器,當(dāng)方波的占空比不同時蜂鳴器發(fā)出的音調(diào)就不同,由此根據(jù)歌曲的音調(diào)編程實現(xiàn)讓蜂鳴器唱歌。 占空比:一個周期中,高電平的長度比上總周期的長度的值再乘上100%。標(biāo)準方波的占空比為50%. 實驗?zāi)康?學(xué)會利用單片機的定時器,掌握蜂鳴器的發(fā)聲操作。 硬件電路 源代碼 #include "reg51.h" unsigned char Coun

29、t; sbit _Speak =P23 ; /蜂鳴器控制腳 unsigned char code SONG = /祝你平安,以下為編碼 0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x

30、26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x

31、18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30, 0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0

32、x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10, 0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00, /路邊的野華不要采 , 以下為這首歌的編碼 0x30,0x1C,0x10,0x20,0x

33、40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30, 0

34、x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0

35、x40,0x20,0x15,0x1F, 0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,

36、0x40,0x13,0x40,0x18,0x80,0x00, ; void Time0_Init() /定時器0初始化函數(shù) TMOD = 0x01; /工作模式選擇 IE = 0x82; /中斷設(shè)置 TH0 = 0xD8; /裝初值 TL0 = 0xEF; /12MZ晶振,10ms void Time0_Int() interrupt 1 /定時器0中斷子函數(shù) TH0 = 0xD8; TL0 = 0xEF; Count+; /長度加1 /*- 1MS延時子程序 -*/ void Delay_xMs(unsigned int x) unsigned int i,j; for( i =0;i &l

37、t; x;i+ ) for( j =0;j<3;j+ ); /*- 功能:歌曲播放子程序i為播放哪一段曲目 -*/ void Play_Song(unsigned char i) unsigned char Temp1,Temp2; unsigned int Addr; Count = 0; /中斷計數(shù)器清0 Addr = i * 217; while(1) Temp1 = SONGAddr+; if ( Temp1 = 0xFF ) /休止符 TR0 = 0; Delay_xMs(100); else if ( Temp1 = 0x00 ) /歌曲結(jié)束符 return; else Te

38、mp2 = SONGAddr+; TR0 = 1; while(1) _Speak = _Speak; Delay_xMs(Temp1); if ( Temp2 = Count ) Count = 0; break; /*- 功能:主程序 -*/ void main() Time0_Init(); /定時器0中斷初始化 while(1) Play_Song(0); /播放 模數(shù)轉(zhuǎn)換ADC0804的應(yīng)用 實驗要求 從ADC0804 的模擬量通道輸入05V 之間的模擬電壓,通過ADC0804 轉(zhuǎn)換成數(shù)字量送給單片機,經(jīng)單片機處理后在數(shù)碼管上以十進制形成顯示出來。 實驗?zāi)康?學(xué)習(xí)如果用單片機控制ADC0804芯片進行數(shù)模轉(zhuǎn)換,掌握數(shù)碼管動態(tài)掃描顯示的原理。 動態(tài)掃描:就六位數(shù)碼管顯示123456舉例說明如下:先讓第一個數(shù)碼管顯示1,其余的全部不亮,1大約亮幾毫秒,然后熄滅,緊接著立即讓第二個數(shù)碼管顯示2,其余的全部

溫馨提示

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

評論

0/150

提交評論