




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
云龍單片機(jī)技術(shù)發(fā)限有限公司TX-1C擴(kuò)展版單片機(jī)開發(fā)系統(tǒng)使用手冊云龍單片機(jī)技術(shù)發(fā)限有限公司目錄TX-1C擴(kuò)展版單片機(jī)開發(fā)系統(tǒng)使冊.............................................................................1目錄...............................................................................................................................21.準(zhǔn)備工作...................................................................................................................32學(xué)習(xí)方法介紹3.實驗例程詳細(xì)解答3.1閃爍燈3.2流水燈3.3單鍵識別3.459秒計數(shù)器3.5矩陣鍵盤檢測3.6利用定時器和蜂鳴器唱歌3.7模數(shù)轉(zhuǎn)換ADC0804的應(yīng)用3.8數(shù)模轉(zhuǎn)換DAC0832的應(yīng)用3.9DS18B20溫度測量顯示實驗3.101602字符液晶顯示3.11EEPROMAT24C02實驗3.12串口通訊實驗.............................................................................................................3....................................................................................................3................................................................................................................4................................................................................................................6............................................................................................................8.....................................................................................................10..................................................................................................13..............................................................................19.............................................................................23...........................................................................26.........................................................................28.......................................................................................34............................................................................37..............................................................................................43聯(lián)系方式.....................................................................................................................454.WAVE使用說明.................................................................................................465.KEIL的使用6.STC-ISP軟件的........................................................................................................51使用...........................................................................................58云龍單片機(jī)技術(shù)發(fā)限有限公司1.準(zhǔn)備工作拿到實驗板后首先需要做的幾件事當(dāng)用戶拿到實驗板后的第一件事是先看實驗板供電是否正常、下載程序功能是否正常、各芯片功能是否都能成功實現(xiàn),檢測方法如下所示:1.先把產(chǎn)品包裝中的四個銅柱及鏍母安裝在實驗板上,具體安裝步驟請查看光盤中的視頻教程。2.將包裝中的USB線兩端分別插接實驗板左側(cè)的USB供電接口和電腦USB口,打開實驗板上電源,這時會看到實驗板左側(cè)開關(guān)旁邊的電源指示燈會亮,緊接著會看到實驗板上數(shù)碼管或是流水燈都有隨機(jī)的亮滅現(xiàn)象出現(xiàn),也有可能只看到電源指示燈亮而無其它現(xiàn)象,這是內(nèi)部裝有測試時的程序,用戶不必奇怪,以上狀態(tài)說明正常。因為我們在發(fā)貨前要對產(chǎn)品進(jìn)行綜合測試,單片機(jī)實驗板供電系統(tǒng)3.安裝STC單片機(jī)程序下載軟件,下載光盤中寫好的例程測試各功能是否正常,安裝過程及下載方法在視頻中都有詳細(xì)介紹,關(guān)于STC單片機(jī)程序下載軟件的STC-ISP安裝,請查看本手冊后面的說明或同光盤中的文檔。4.安裝單片機(jī)編程軟件KEIL或是錄下都有,用戶可自由選擇使用任何一種軟件,這兩種軟件都支持單片機(jī)的語言或是匯編語言編譯,我們推薦用戶使用KEIL,在TX-1C配套的單片機(jī)視頻教學(xué)光盤中全部使用的是KEIL軟件講解,在視頻教學(xué)的第1講中有詳細(xì)的KEILWAVE,這兩個軟件在產(chǎn)品配套光盤里的軟件目C軟件建立工程及編譯源代碼的介紹,請大家自行查看。我們在手冊中也做了詳細(xì)的介紹,請大家查看本手冊后面的說明。2學(xué)習(xí)方法介紹接下來最重要的工作便是跟著配套教學(xué)光盤一講一講的跟著老師做,把老師每講的內(nèi)容都及時的消化,遇到不懂的問題要及時查書,一個個搞明白,不要積累任何小問題,大部分用戶都是從零開始學(xué)起,講座中的內(nèi)容也是從最簡單的開始,一步步深入,只要大家愿意學(xué)、有信心、有毅力、相信大家跟著教學(xué)講座走10天,之后必將會有非常大的收獲。如果用戶沒有購買配套視頻光盤,我們會贈送前三講的內(nèi)容,這三講中非常詳細(xì)的介紹了KEIL軟件的使用方法,講了流水燈設(shè)計流程,實云龍單片機(jī)技術(shù)發(fā)限有限公司驗板上其余的功能就需要靠用戶自來對它進(jìn)行編程并實現(xiàn)它們了,這樣學(xué)起來只是時間會稍長些,感覺會累點,但只要大家肯努力,終究也一定會學(xué)會的。3.實驗例程詳細(xì)解答注意:在我要講具體實驗之前這里有必要先介紹一下本實驗板上用到的一些元件的操作方法,對于一個電子制作者或是電子愛好者來說學(xué)會怎么樣搜索自己需要元件的資料是非常重要的,現(xiàn)在市場上各種各樣的芯片非常的多,能實現(xiàn)同一個功能的芯片也有很多種,世界各大芯片制造公司都有生產(chǎn)。所以我們不可能把芯片的功能、名稱及詳細(xì)使用方法都記全,也沒有這個必要,但是必須要知道在你需要實現(xiàn)某個功能的時候怎么樣才能找到合適的芯片,下面先給大家推薦兩個搜索網(wǎng)站:以上兩個網(wǎng)站是中國最大的搜索網(wǎng)站和世界最大的搜索網(wǎng)站,上面幾乎可以搜到你需要的任何信息,大家一定要充分利用身邊可利用的資源,問別人是最沒有辦法的辦法,當(dāng)自己在經(jīng)過多重努力后仍然沒有得到最佳答案,這時再去問別人。另外需要提醒大家一點,大部分芯片的資料全是英文,大家學(xué)了這么多年英文,現(xiàn)在正是你用它的時候了,對于電子愛好者來說,看芯片的英文介紹就應(yīng)該達(dá)到看漢語一樣的水平,建議大家以后裝軟件全裝英文版的,看電影全看國外原聲的,最好連自己電腦的操作系統(tǒng)也裝英文版的,從點點滴滴中增長知識。再給大家介紹兩個查芯片資料的網(wǎng)站:這里的芯片資料比較全,如果沒有找到你要的資料,那可參考,這里有全世界所有的芯片資料,并且每天都在更新。鎖存器(74HC573):顧名思義,就是把輸入端的數(shù)據(jù)鎖存(或送)到輸出端,請看下圖中的U3元件,第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)輸入端無論再云龍單片機(jī)技術(shù)發(fā)限有限公司怎么變化,輸出端都不會變化而是保持剛才第11角在下降沿(由高電平到低電平跳變)之間時輸入端的值,這樣就達(dá)到了鎖存數(shù)據(jù)的目的,這也就是所謂的總線設(shè)計思路,一個8位的數(shù)據(jù)線加一個鎖存器后就可以擴(kuò)接多個元件,當(dāng)選通哪個元件的片選信號,就送數(shù)據(jù)給那個元件。先說這個元件,以后用到別的元件我們再解釋。下面開始講解例程。3.1閃爍燈[實驗要求]點亮與單片機(jī)P1.0口相連的發(fā)光二極管,延時約0.2S,然后熄滅,再延時約0.2S,再點亮,如此循環(huán)下去。[實驗?zāi)康腯初步了解單片機(jī)IO口輸出高低電平的方法,延時函數(shù)的時間估算。關(guān)于延時函數(shù)的時間估算問題在視頻第二講有詳細(xì)演示介紹。[硬件電路][源代碼]#include<reg51.h>/**********************************************************上面這行是一個"文件包含"處理。所謂"文件包含"是指一個文件將另外一個文內(nèi)容全部包含進(jìn)來這里的程序雖然只寫了一行,但C編譯器在處理的時候卻要處理幾十或幾百行,這里包含reg51.h的目的在于本程序要使用P1這個符號,而P1是在reg51.h這個頭文件中定義的。大家可以在編譯器目錄下面用記事本打開這個件的云龍單片機(jī)技術(shù)發(fā)限有限公司文件看看。*********************************************************/sbitP1_0=P1^0;//定義IO口這步的目的是讓編//譯器知//道P1_0代表的就是單片機(jī)的P1.0口//延時0.2秒子程序voiddelay02s(void){unsignedchari,j,k;//定義3個無符號字符型變量。for(i=20;i>0;i--)//三個FOR循環(huán)用來延時,這里為//什么是0.2S大家可以用WAVE或KEIL設(shè)置斷點仿真,就可知道大概//是0.2S了。for(j=20;j>0;j--)for(k=248;k>0;k--);//}voidmain(void)//每一個C語言程序有且只有一個主函數(shù),{while(1)//循環(huán)條件永遠(yuǎn)為真,以下程序一直執(zhí)行下去。{P1_0=0;//I/O口P1.0輸出低電平,小燈被點亮。delay02s();//延時經(jīng)過0.2秒。P1_0=1;//I/O口P1.0輸出高電平,小燈熄滅。delay02s();//延時經(jīng)過0.2秒。}}3.2流水燈[實驗要求]單片機(jī)P1口相連的8個發(fā)光二極管中的一個循環(huán)移位點亮,同時蜂鳴器發(fā)出滴滴的響聲。蜂鳴器用一PNP三極管驅(qū)動,集電極(C極)通過蜂鳴器線圈接5V電源,基極(B極)是控制端,發(fā)射極(E極)接地,當(dāng)三極管C,B極PN結(jié)正偏時,PN結(jié)導(dǎo)通,即B極為低電平時,三極管導(dǎo)通,蜂鳴器發(fā)聲,視頻中有介紹,若大家有疑問可參考模電書。云龍單片機(jī)技術(shù)發(fā)限有限公司[實驗?zāi)康腯掌握循環(huán)移位的工作原理和操作方法,學(xué)會使用C51封裝好的函數(shù)庫C51LIB,延時函數(shù)的時間估算。[硬件電路][源代碼]#include<reg51.h>#include<intrins.h>//后面要用到它里面的_crol_(k,l)函數(shù)l位,說明請查看安裝KEIL這個函數(shù)的意思是把一個字符變量k循環(huán)左移關(guān)于它的云龍單片機(jī)技術(shù)發(fā)限有限公司目錄下的\Keil\C51\HLP文件夾里面的c51lib,這個文件里面有各種用C語言封裝好的函數(shù)庫,我們在以后使用其中某些函數(shù)時可以直接使用而自己不必再寫。unsignedchara,b,k,j;//定義四個字符變量sbitbeep=P2^3;//定義蜂鳴器的接口voiddelay10ms()//延時子程序,大約延時10ms{for(a=100;a>0;a--)for(b=225;b>0;b--);}voidmain(){k=0xfe;while(1){//先給k一個初值11111110等待移位delay10ms();beep=0;//打開蜂鳴器delay10ms();//讓它響10msbeep=1;j=_crol_(k,1);//k=j;//關(guān)閉蜂鳴器把k循環(huán)左移一位//把移完的值再送給kP1=j;//同時把值送到P1口點亮發(fā)光二極管}//再次循環(huán)}3.3單鍵識別[實驗要求]每按一次獨立鍵盤的S2鍵,與P1口相連的八個發(fā)光二極管中點亮的一個往下移動一位。注意:關(guān)于按鍵去抖動的解釋,我們在手動按鍵的時候,由于機(jī)械抖動或是其它一些非人為的因素很有可能會造成誤識別,一般手動按下一次鍵然后接著釋放,按鍵兩片金屬膜接觸的時間大約為50ms左右,在按下瞬間到穩(wěn)定的時間為5-10ms,在松云龍單片機(jī)技術(shù)發(fā)限有限公司開的瞬間到穩(wěn)定的時間也為5-10ms,如果我們再首次檢測到鍵被按下后延時10ms左右再去檢測,這時如果是干擾信號將不會被檢測到,如果確實是有鍵被按下,則可確認(rèn),以上為按鍵識別去抖動的原理。[實驗?zāi)康腯獨立按鍵的識別方法、鍵盤消抖等。[硬件電路][源代碼]#include<reg52.h>sbitBY1=P3^4;//定義按鍵的輸入端S2鍵unsignedcharcount;//按鍵計數(shù),每按一下,count加1unsignedchartemp;unsignedchara,b;voiddelay10ms(void)//延時程序{unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}key(){//按鍵判斷程序if(BY1==0)//判斷是否按下鍵盤,當(dāng)單片機(jī)上電時所有IO口為高電平,S2鍵一端接地另一端接P3.4,所以當(dāng)鍵被按下時P3.4口直接接地,此時檢測P3.4肯定為低電平。{delay10ms();//延時,軟件去抖動干擾云龍單片機(jī)技術(shù)發(fā)限有限公司if(BY1==0)//再次檢測確認(rèn)按鍵按下{count++;//按鍵計數(shù)加1if(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(){count=0;//初始化參數(shù)設(shè)置temp=0xfe;P1=0xff;P1=temp;while(1)//永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下{key();//調(diào)用按鍵識別函數(shù)move();//調(diào)用廣告燈移動函數(shù)}}3.459秒計數(shù)器[實驗要求]云龍單片機(jī)技術(shù)發(fā)限有限公司使用軟件延時的方法實現(xiàn)0-59秒自動計數(shù)器,用數(shù)碼管的前兩位顯示出來。[實驗?zāi)康腯練習(xí)進(jìn)位操作,數(shù)碼管動態(tài)顯示。[硬件電路][源代碼]//59秒自動計數(shù)器#include<reg51.h>#defineucharunsignedcharucharj,k,i,a,A1,A2,second;sbitdula=P2^6;//鎖存器控制端定義sbitwela=P2^7;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)字編碼云龍單片機(jī)技術(shù)發(fā)限有限公司voiddelay(uchari)//延時函數(shù){for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(ucharsh_c,ucharg_c)//顯示函數(shù){dula=0;P0=table[sh_c];//dula=1;顯示十位dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(5);//亮5msP0=table[g_c];//顯示個位dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);//亮5ms}voidmain(){//主函數(shù)while(1){second++;//秒加一if(second==60)//判斷是否到60second=0;//如果到了則清零云龍單片機(jī)技術(shù)發(fā)限有限公司A1=second/10;//沒到則分離出十位和個位A2=second%10;for(a=50;a>0;a--)//顯示部分。至于時間大概是多少{//請用戶用軟件仿真看時間約等于1秒display(A1,A2);};//便可,如果需要精確定時請用定時器}}3.5矩陣鍵盤檢測[實驗要求]依次按下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ù)碼管顯示原理(視頻中有詳細(xì)介紹):這里就共陰極數(shù)碼管顯示原理進(jìn)行講解,一位數(shù)碼管內(nèi)一共有8個發(fā)光二極管,對共陰極來說其8個發(fā)“共陰”說法的來源,陽極是獨立的,設(shè)計電路時一般把陰極接地,當(dāng)我們從外部給任一個陽極加一個高電平時這個發(fā)就亮了,如果想要出8字,并且把右下角的小數(shù)點也點亮的話,那可以給8個陽極全總送高電平,想出幾就給相對應(yīng)的發(fā)光二極管送高電平,因此我們在顯示數(shù)字的時候首先做的就是給0-9十個數(shù)字編好碼,在要它亮什么數(shù)字的時候直接把這個光二極管的陰極在數(shù)碼管內(nèi)部全部接在一起,也就是光二極管一個編碼送到它的陽極就行了。另外說一下,一般的數(shù)碼管每一段亮至少需要10個毫安的電流,而單片機(jī)的IO口送不出如此大的電流,所以我們需要加數(shù)碼管的驅(qū)動電路,可以用上拉電阻的方法,也可以使用專門的驅(qū)動芯片,本實驗板使用的74HC573,其輸出電流較大,足夠點亮數(shù)碼管。本實驗板上的六位數(shù)碼管中每個的相同段號(段指a,b,c,d,e,f,g,h)全部是接在一起的,其中每一個位(陰極)是獨立的,所以在做靜態(tài)顯示的時候所有的數(shù)碼管只能顯示相同的數(shù)字,當(dāng)然可以控制顯示幾位,如果讓它們顯示不同的數(shù)字那就得給每一個數(shù)碼管加一套驅(qū)動了。但這樣做是沒有必要的,后面我們會講到關(guān)于數(shù)碼管動態(tài)顯示原理。云龍單片機(jī)技術(shù)發(fā)限有限公司下面給出本實驗板共陰極數(shù)碼管數(shù)字編碼矩陣鍵盤的四行分別與P3.0-P3.3連接,四列分別與P3.4-P3.7連接。[實驗?zāi)康腯學(xué)會矩陣鍵盤的檢測,掌握數(shù)碼管靜態(tài)顯示原理。[硬件電路]鍵盤電路見3.3云龍單片機(jī)技術(shù)發(fā)限有限公司[源代碼]//4*4鍵盤檢測程序,按下鍵后相應(yīng)的代碼顯示在數(shù)碼管上#include<reg51.h>sbitbeep=P2^3;//蜂鳴器接口sbitdula=P2^6;//控制數(shù)碼管段選的鎖存器鎖存端sbitwela=P2^7;//控制數(shù)碼管位選的鎖存器鎖存端unsignedchari=100;unsignedcharj,k,temp,key;voiddelay(unsignedchari)//可自定義延時長短的延時函數(shù){//當(dāng)i=10時大約為10毫秒for(j=i;j>0;j--)for(k=125;k>0;k--);}unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F編碼display(unsignedcharnum)//顯示子函數(shù){P0=table[num];//dula=1;將第num個顯示編碼送P0口//一個下降沿將數(shù)據(jù)鎖存dula=0;P0=0xc0;//位選通全部的數(shù)碼管//一個下降沿將數(shù)據(jù)鎖存wela=1;wela=0;}voidmain(){dula=0;wela=0;while(1){//先關(guān)閉兩個鎖存器//進(jìn)入檢測總循環(huán)P3=0xfe;//給P3.0送低電平,其余為高電平//把P3口數(shù)據(jù)讀回來把P3口與11110000相與temp=P3;temp=temp&0xf0;//云龍單片機(jī)技術(shù)發(fā)限有限公司if(temp!=0xf0)//如果有鍵按下剛一定不相等,于是進(jìn)入//下一步檢測{delay(10);if(temp!=0xf0)//{//延時去抖動再次判斷是否有鍵按下temp=P3;//判斷為有,再次讀P3口數(shù)據(jù)因為我們剛才是將第一行置的低//在這里再判斷是第幾列switch(temp)//{case0xee://如果temp=0xee則為第一行和第一列key=0;//的交叉點,由此我們知道是矩陣鍵盤break;//上的第一個鍵被按下,我們給key=0。case0xde://以后依此類推key=1;break;case0xbe:key=2;break;case0x7e:key=3;break;}while(temp!=0xf0)//這段程序是檢測按鍵是否被釋放{temp=P3;//如果沒有釋放就一直等待并且temp=temp&0xf0;beep=0;//蜂鳴器一直響}beep=1;//釋放后關(guān)閉蜂鳴器display(key);P1=0xfe;//顯示按下相應(yīng)鍵值的數(shù)據(jù)//將第一個發(fā)//程序的時試用的)光二極管點亮(我寫}候測}P3=0xfd;temp=P3;temp=temp&0xf0;云龍單片機(jī)技術(shù)發(fā)限有限公司if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xed:key=4;break;0xdd:casecasekey=5;break;0xbd:key=6;break;case0x7d:key=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){云龍單片機(jī)技術(shù)發(fā)限有限公司delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xeb:key=8;break;0xdb:casecasekey=9;break;0xbb:key=10;break;case0x7b:key=11;break;}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)云龍單片機(jī)技術(shù)發(fā)限有限公司{temp=P3;switch(temp){case0xe7:key=12;break;case0xd7:key=13;break;case0xb7:key=14;break;case0x77:key=15;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;display(key);P1=0xf0;}}}}3.6利用定時器和蜂鳴器唱歌[實驗要求]用單片機(jī)的P2.3口輸出不同占空比的方波來控制與它相連的蜂鳴器,當(dāng)方波的云龍單片機(jī)技術(shù)發(fā)限有限公司占空比不同時蜂鳴器發(fā)出的音調(diào)就不同,由此根據(jù)歌曲的音調(diào)編程實現(xiàn)讓蜂鳴器唱歌。占空比:一個周期中,高電平的長度比上總周期的長度的值再乘上100%。標(biāo)準(zhǔn)方波的占空比為50%.[實驗?zāi)康腯學(xué)會利用單片機(jī)的定時器,掌握蜂鳴器的發(fā)聲操作。[硬件電路][源代碼]#include"reg51.h"unsignedcharCount;sbit_Speak=P2^3;//蜂鳴器控制腳unsignedcharcodeSONG[]={//祝你平安,以下為編碼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,0x26,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,云龍單片機(jī)技術(shù)發(fā)限有限公司0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,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,0x20,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,0x40,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,0x20,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,0x40,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,0x40,0x13,0x40,0x18,0x80,0x00,};voidTime0_Init()//定時器0初始化函數(shù){TMOD=0x01;//工作模式選擇IE=0x82;//中斷設(shè)置TH0=0xD8;//裝初值TL0=0xEF;//12MZ晶振,10ms}voidTime0_Int()interrupt1//定時器0中斷子函數(shù)云龍單片機(jī)技術(shù)發(fā)限有限公司{TH0=0xD8;TL0=0xEF;Count++;//長度加1}/*-------------------------------------------------1MS延時子程序-------------------------------------------------*/voidDelay_xMs(unsignedintx){unsignedinti,j;for(i=0;i<x;i++){for(j=0;j<3;j++);}}/*-------------------------------------------------功能:歌曲播放子程序i為播放哪一段曲目-------------------------------------------------*/voidPlay_Song(unsignedchari){unsignedcharTemp1,Temp2;unsignedintAddr;Count=0;//中斷計數(shù)器清0Addr=i*217;while(1){Temp1=SONG[Addr++];if(Temp1==0xFF)//休止符{TR0=0;Delay_xMs(100);}elseif(Temp1==0x00)//歌曲結(jié)束符{云龍單片機(jī)技術(shù)發(fā)限有限公司return;}else{Temp2=SONG[Addr++];TR0=1;while(1){_Speak=~_Speak;Delay_xMs(Temp1);if(Temp2==Count){Count=0;break;}}}}}/*-------------------------------------------------功能:主程序-------------------------------------------------*/voidmain(){Time0_Init();//定時器0中斷初始化while(1){Play_Song(0);//播放}}3.7模數(shù)轉(zhuǎn)換ADC0804的應(yīng)用[實驗要求]云龍單片機(jī)技術(shù)發(fā)限有限公司從ADC0804的模擬量通道輸入0-5V之間的模擬電壓,通過ADC0804轉(zhuǎn)換成數(shù)字量送給單片機(jī),經(jīng)單片機(jī)處理后在數(shù)碼管上以十進(jìn)制形成顯示出來。[實驗?zāi)康腯學(xué)習(xí)如果用單片機(jī)控制ADC0804芯片進(jìn)行數(shù)模轉(zhuǎn)換,掌握數(shù)碼管動態(tài)掃描顯示的原理。動態(tài)掃描:就六位數(shù)碼管顯示123456舉例說明如下:先讓第一個數(shù)碼管顯示1,其余的全部不亮,1大約亮幾毫秒,然后熄滅,緊接著立即讓第二個數(shù)碼管顯示2,其余的全部不亮,2同樣亮幾毫秒,依次這樣亮到第六個數(shù)碼管,然后再回來顯示1,如此這樣以很快的速度不斷循環(huán)下去,由于人眼的視覺暫留時間大約為20毫秒左右,所以是感覺不出有不亮的數(shù)碼管存在的,看見的是六個數(shù)碼管同時在顯示,數(shù)值是123456,如果我們把這個過程一點點放慢,看見的是從第一個數(shù)碼管顯1,然后移到第二個再顯2,。。。也就是說在任一時刻只有一位數(shù)碼管是亮的。這就是數(shù)碼管動態(tài)掃描顯示的原理。ADC0804:ADC0804是8位全MOS中速A/D轉(zhuǎn)換器、它是逐次逼近式A/D轉(zhuǎn)換器,片內(nèi)有三態(tài)數(shù)據(jù)輸出鎖存器,可以和單片機(jī)直接接口。單通道輸入,轉(zhuǎn)換時間大約為100us。ADC0804轉(zhuǎn)換時序是:當(dāng)CS=0許可進(jìn)行A/D轉(zhuǎn)換。WR由低到高時,A/D開始轉(zhuǎn)換。CS與WR同時有效時啟動A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)束產(chǎn)生INTR信號(低電平有效),可供查詢或者中斷信號。在CS和RD的控制下可以讀取數(shù)據(jù)結(jié)果。本實驗沒有使用INTR信號。[硬件電路][源代碼]云龍單片機(jī)技術(shù)發(fā)限有限公司//擰動AD旁邊的電位器,會在數(shù)碼管的前三位顯示0-255之間的數(shù)值轉(zhuǎn)換。說明:由于不同AD的自身特性不同,所以話,很有變化數(shù)值,但按下實驗。這就是把模擬信號轉(zhuǎn)換成數(shù)字信號,即模數(shù)時序如果掌握不好的可能在數(shù)碼管上不會動態(tài)顯示板上復(fù)位鍵后可更新內(nèi)容。#include<reg51.h>#include<intrins.h>#defineuintunsignedint//宏定義,詳情請看C語言書。#defineucharunsignedcharsbitadrd=P3^7;sbitadwr=P3^6;sbitdiola=P2^5;sbitdula=P2^6;//AD讀引角//AD寫引角//數(shù)碼管段選鎖存//數(shù)碼管位選鎖存sbitwela=P2^7;unsignedcharj,k,adval;voiddelay(unsignedchari)//延時程序{for(j=i;j>0;j--)for(k=125;k>0;k--);}ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管編碼voiddisplay(ucharbai_c,ucharsh_c,ucharg_c)//顯示程序{dula=0;P0=table[bai_c];//顯示百位dula=1;dula=0;wela=0;P0=0x7e;wela=1;wela=0;delay(5);dula=0;P0=table[sh_c];//顯示十位云龍單片機(jī)技術(shù)發(fā)限有限公司dula=1;dula=0;wela=0;P0=0x7d;wela=1;wela=0;delay(5);P0=table[g_c];//顯示個位dula=1;dula=0;P0=0x7b;wela=1;wela=0;delay(5);}voidmain()主程序{uchara,A1,A2,A2t,A3;diola=0;while(1){//主循環(huán)程序不斷的采樣、顯示adwr=0;//AD寫入(隨便寫個什么都行,主要是為了啟動//AD轉(zhuǎn)換)_nop_();//adwr=1;一個延時字函數(shù)adrd=0;adval=P1;//AD數(shù)據(jù)讀取adrd=1;delay(10);A1=adval/100;//分出百,十,和個位A2t=adval%100;A2=A2t/10;A3=A2t%10;for(a=10;a>0;a--)//顯示十次,然后去采集一次電壓信號{display(A1,A2,A3);}//送去顯示各位。云龍單片機(jī)技術(shù)發(fā)限有限公司};}3.8數(shù)模轉(zhuǎn)換DAC0832的應(yīng)用[實驗要求]通過用單片機(jī)控制DAC0832輸出鋸齒波,讓實驗板上發(fā)光二極管D12由暗到亮變化,循環(huán)下去。[實驗?zāi)康腯學(xué)會用單片機(jī)控制數(shù)模轉(zhuǎn)換芯片DAC0832。DAC0832:DAC0832是8位全MOS中速D/A轉(zhuǎn)換器,采用R—2RT形電阻解碼網(wǎng)絡(luò),轉(zhuǎn)換結(jié)果為一對差動電流輸出,轉(zhuǎn)換時間大約為1us。使用單電源+5V―+15V供電。參考電壓為-10V-+10V。在此我們直接選擇+5V作為參考電壓。DAC0832有三種工作方式:直通方式,單緩沖方式,雙緩沖方式;在此我們選擇直通的工作方式,將XFER、WR2、CS管腳全部接數(shù)字地。管腳8接參考電壓,在此我們接的參考電壓是+5V。我們在控制P0口輸出數(shù)據(jù)有規(guī)律的變化將可以產(chǎn)生三角波,鋸齒波,梯型波等波形了。[路]云龍單片機(jī)技術(shù)發(fā)限有限公司[源代碼]//TX-1BDA測試程序,下載后可觀察到D12發(fā)光二極管由暗變亮再熄//滅過程,#include<reg51.h>sbitwela=P2^7;//數(shù)碼管位選sbitdula=P2^6;//段選sbitdawr=P3^6;//DA寫數(shù)據(jù)sbitcsda=P3^2;//DA片選unsignedchara,j,k;voiddelay(unsignedchari)//延時{for(j=i;j>0;j--)for(k=125;k>0;k--);}voidmain(){wela=0;dula=0;csda=0;a=0;dawr=0;while(1)云龍單片機(jī)技術(shù)發(fā)限有限公司{P0=a;//給a不斷的加一,然后送給DAdelay(50);//延時50ms左右,再加一,再送DA。a++;}}注意:隨著給DA送的數(shù)字量的不斷增加,其轉(zhuǎn)換成模擬量的電流也不斷的增大,所以我們觀察發(fā)光二極管D12就會從暗變亮,熄滅。。。3.9DS18B20溫度測量顯示實驗[實驗要求]用單片機(jī)控制實驗板上的DS18B20數(shù)字溫度傳感器,讀取當(dāng)前環(huán)境溫度,精度達(dá)0.1度,溫度范圍0-99度,并用數(shù)碼管的前三位顯示出來。同時實驗板上的單片機(jī)還能把溫度值通過串口發(fā)送到計算機(jī),在計算機(jī)上安裝該目錄下的.exe文件后,打開應(yīng)用程序可看到溫度值。注意:DS18B20數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計。DS18B20產(chǎn)品的特點(1)、只要求一個I/O口即可實現(xiàn)通信。(2)、在DS18B20中的每個器件上都有獨一無二的序列號。(3)、實際應(yīng)用中不需要外部任何元器件即可實現(xiàn)測溫。(4)、測量溫度范圍在-55到+125攝氏度之間。(5)、數(shù)字溫度計的分辨率用戶可以從9位到12位選擇。(6)、內(nèi)部有溫度上、下限告警設(shè)置。DS18B20詳細(xì)引腳功能描述1、GND地信號;2、DQ數(shù)據(jù)輸入出引腳。開漏單總線接口引腳。當(dāng)被用在寄生電源下,也可以向器件提供電源;3、VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時,此引腳必須接地。DS18B20的使用方法。由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機(jī)來說,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動云龍單片機(jī)技術(shù)發(fā)限有限公司讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。[實驗?zāi)康腯學(xué)習(xí)單總線器件的讀寫方法,數(shù)值合成,數(shù)字類型變化等。[硬件電路][源代碼]//安裝目錄下的EXE文件,通過串口線連接計算機(jī)與實驗板,打開//軟件后可在軟件界面上顯示當(dāng)前溫度值。#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitDS=P2^2;//defineinterface定義DS18B20接口//variableoftemperatureuinttemp;ucharflag1;//sbitdula=P2^6;sbitwela=P2^7;signoftheresultpositiveornegativeunsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//不帶小數(shù)點編碼。unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,云龍單片機(jī)技術(shù)發(fā)限有限公司0x87,0xff,0xef};//帶小數(shù)點編碼。voiddelay(uintcount)//延時子函數(shù){uinti;while(count){i=200;while(i>0)i--;count--;}}///////功能:串口初始化,波特率9600,方式1///////voidInit_Com(void){TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xFd;TL1=0xFd;TR1=1;}voiddsreset(void)//發(fā)送初始化及復(fù)位信號{uinti;DS=0;i=103;while(i>0)i--;DS=1;i=4;//DS18B20初始化while(i>0)i--;}bittmpreadbit(void)//readabit讀一位云龍單片機(jī)技術(shù)發(fā)限有限公司{uinti;bitdat;DS=0;i++;//i++fordelay小延時一下DS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return(dat);}uchartmpread(void)//readabytedate讀一個字節(jié){uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);//讀出的數(shù)據(jù)最低位在最前面,這樣剛好//一個字節(jié)在DAT里}return(dat);//}將一個字節(jié)數(shù)據(jù)返回voidtmpwritebyte(uchardat)//writeabytetods18b20{//寫一個字節(jié)到DS18B20里uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)//write1寫1部分{DS=0;云龍單片機(jī)技術(shù)發(fā)限有限公司i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;//write0寫0部分i=8;while(i>0)i--;DS=1;i++;i++;}}}voidtmpchange(void)//DS18B20beginchange發(fā)送溫度轉(zhuǎn)換命令{dsreset();//delay(1);初始化DS18B20//延時tmpwritebyte(0xcc);//跳過序列號命令tmpwritebyte(0x44);//發(fā)送溫度轉(zhuǎn)換命令}uinttmp()//getthetemperature獲得溫度{floattt;uchara,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);//發(fā)送讀取數(shù)據(jù)命令a=tmpread();//b=tmpread();temp=b;連續(xù)讀兩個字節(jié)數(shù)據(jù)temp<<=8;//twobytecomposeaintvariabletemp=temp|a;//兩字節(jié)合成一個整型變量。云龍單片機(jī)技術(shù)發(fā)限有限公司tt=temp*0.0625;//得到真實十進(jìn)制溫度值,因為DS18B20//可以精確到0.0625度,所以讀回數(shù)據(jù)的最低位代表的是//0.0625度。temp=tt*10+0.5;//放大十倍,這樣做的目的將小數(shù)點后第一位//也轉(zhuǎn)換為可顯示數(shù)字,同時進(jìn)行一個四舍五入操作。returntemp;//返回溫度值}voidreadrom()//readtheserial讀取溫度傳感器的序列號{//本程序中沒有用到此函數(shù)ucharsn1,sn2;dsreset();delay(1);tmpwritebyte(0x33);sn1=tmpread();sn2=tmpread();}voiddelay10ms(){//delayuchara,b;for(a=10;a>0;a--)for(b=60;b>0;b--);}voiddisplay(uinttemp)//顯示程序{ucharA1,A2,A2t,A3,ser;ser=temp/10;//分離出三位要顯示的數(shù)字SBUF=ser;A1=temp/100;A2t=temp%100;A2=A2t/10;A3=A2t%10;dula=0;P0=table[A1];//顯示百位dula=1;云龍單片機(jī)技術(shù)發(fā)限有限公司dula=0;wela=0;P0=0x7e;wela=1;wela=0;delay(1);dula=0;P0=table1[A2];//顯示十位帶小數(shù)點的dula=1;dula=0;wela=0;P0=0x7d;wela=1;wela=0;delay(1);P0=table[A3];//顯示個位dula=1;dula=0;P0=0x7b;wela=1;wela=0;delay(1);}voidmain()//主函數(shù){uchara;Init_Com();//初始化串口do{tmpchange();//for(a=10;a>0;a--){溫度轉(zhuǎn)換display(tmp());//顯示十次}}云龍單片機(jī)技術(shù)發(fā)限有限公司while(1);}3.101602字符液晶顯示[實驗要求]在1602液晶屏上指定的位置顯示出自己想要的數(shù)字或字符,學(xué)會使用1602液晶做滾動字符顯示。[實驗學(xué)習(xí)1602液晶的操作。板附帶的1602安裝方法請看光盤里的液晶使用方法,插好液晶后如果顯不清楚,請調(diào)節(jié)1602液晶器,順時針擰動直到液晶上面一行目的]注意:實驗示字符對比度調(diào)節(jié)電位能顯示出黑色的方格為止。關(guān)于1602液晶的資料請查看光盤里元件資料下的資料。[硬件電路][源代碼]#include<reg52.h>#defineucharunsignedchar//宏定義#defineuintunsignedint//宏定義sbitrs=P3^5;//液晶數(shù)據(jù)命令選擇端云龍單片機(jī)技術(shù)發(fā)限有限公司sbitlcden=P3^4;//液晶寫數(shù)據(jù)控制端sbitdula=P2^6;sbitwela=P2^7;uchartable1[]="TX-1BMCU";//要顯示的字表uchartable2[]="WWW.TXMCU.COM";//要顯示的字表voiddelay(uintx)//延時子函數(shù){uinta,b;for(a=x;a>0;a--)for(b=10;b>0;b--);}voiddelay1(uintx)//延時子函數(shù){uinta,b;for(a=x;a>0;a--)for(b=100;b>0;b--);}voidwrite_com(ucharcom)//寫命令函數(shù){P0=com;rs=0;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}voidwrite_date(uchardate)寫數(shù)據(jù)函數(shù){P0=date;rs=1;云龍單片機(jī)技術(shù)發(fā)限有限公司lcden=0;delay(10);lcden=1;delay(10);lcden=0;}voidinit()//初始化函數(shù){dula=0;//關(guān)閉數(shù)碼管顯示wela=0;write_com(0x38);//液晶顯示方式設(shè)置delay(20);write_com(0x0f);//光標(biāo)設(shè)置delay(20);write_com(0x06);//數(shù)據(jù)指針順序設(shè)計delay(20);write_com(0x01);//液晶屏幕清屏命令delay(20);}voidmain()//主函數(shù){uchara;init();write_com(0x80+17);//先寫在液晶數(shù)據(jù)緩沖區(qū)第一行不能顯示的地方delay(20);for(a=0;a<9;a++)//依次把第一個表格中的字符全寫入{write_date(table1[a]);delay(20);}write_com(0xc0+17);//先寫在液晶數(shù)據(jù)緩沖區(qū)第二行不能顯示的地方云龍單片機(jī)技術(shù)發(fā)限有限公司delay(50);for(a=0;a<13;a++)//依次把第二個表格中的字符全寫入{write_date(table2[a]);delay(40);}for(a=0;a<16;a++)//寫16個0x18把字符從右邊移入進(jìn)來顯示在液晶上{//0x18命令是移動字符的指令write_com(0x18);delay1(200);}while(1);}3.11EEPROMAT24C02實驗[實驗要求]利用24C08斷電以后存儲的數(shù)據(jù)不消失的特點,可以做一個斷電保護(hù)裝置。首先利用單片機(jī)做一個0-99秒的自動計時器。然后隨機(jī)關(guān)斷電源,在通電以后計時器接著斷電前的狀態(tài)繼續(xù)計時。[實驗?zāi)康腯掌握IIC總線工作原理及其操作方法,視頻中有一講專門講IIC。說明:首先簡單的說明以下I2C總線,I2C總線是一種串行數(shù)據(jù)總線,只有二根信I2C總線上傳送的一個數(shù)節(jié)由八位組成??偩€對每次傳送的字節(jié)數(shù)沒有限制,但每個字節(jié)后必須跟一位。數(shù)據(jù)傳送首先傳送最高位(MSB)。首先由主機(jī)發(fā)出啟動信號“S”(SDA在SCL高電平期間由高電平跳變?yōu)榈碗娖?,然后機(jī)發(fā)送一個字節(jié)的數(shù)據(jù)。啟動信號后的第一個字節(jié)數(shù)據(jù)具有特殊含義:高七位是從機(jī)的地址,第八位是傳送方向位,0表示主機(jī)發(fā)送數(shù)據(jù)(寫),1表示主機(jī)接收數(shù)據(jù)(讀)。被尋址到的從機(jī)設(shè)備按傳送方向位設(shè)置為對應(yīng)工作方式。標(biāo)準(zhǔn)I2C總線的設(shè)備都有一個七位地址,所有連接在號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。在據(jù)字應(yīng)答位由主I2C總線上的設(shè)備都接收啟動信號后的第一個字節(jié),并將接收到的地址與自己的地址進(jìn)行比較,如果地云龍單片機(jī)技術(shù)發(fā)限有限公司址相符則為主機(jī)要尋訪的從機(jī),應(yīng)答在第九位時鐘脈沖時向SDA線送出低電平作為應(yīng)答。除了第一字節(jié)是通用呼叫地址之外第二字節(jié)開始即數(shù)據(jù)字節(jié)。數(shù)據(jù)傳送完畢,由主機(jī)發(fā)出停止信號“P”(SDA在E2PROM具有I2C總線接口功能,功耗小,寬電源電壓(根3mA,靜態(tài)電流隨電源電壓不同為SCL高電平期間由低電平跳變?yōu)楦唠娖?。AT24C系列串行據(jù)不同型號2.5V~6.0V),工作電流約為30μA~110μA。由于I2C總線可掛接多個串行接口器件,在I2C總線中每個器件應(yīng)有唯一的器件地址,按I2C總線規(guī)則,器件地址為7位數(shù)據(jù)(即一個I2C總線系統(tǒng)中理論上可掛接128個不同地址的器件),它和1位數(shù)據(jù)方向位構(gòu)成一個器件尋址字節(jié),最低位D0為方向位(讀/寫)。器件尋址字節(jié)中的最高4位(D7~D4)為器件型號地址,不器件的型號地址是廠家給定的,如AT24C系列皆為1010,3位為引腳地址A2A1A0,對應(yīng)器件尋址字節(jié)D2、D1位,在硬件設(shè)計時由連接的引腳電平給定。對AT24C系列E2PROM的讀寫操作完全遵守I2C總線的主收從發(fā)和主發(fā)從收的規(guī)則。同的I2C總線接口E2PROM的型號地址器件地址中的低中的D3、[硬件電路][源代碼]#include<reg51.h>#include<intrins.h>云龍單片機(jī)技術(shù)發(fā)限有限公司#defineuintunsignedint#defineucharunsignedcharunsignedcharsec;//unsignedinttcnt;//bitwrite=0;定義計數(shù)值,每過1秒,sec加1定時中斷次數(shù)//寫24C08的標(biāo)志;sbitsda=P2^0;//IIC接口SDA定義sbitscl=P2^1;//IIC接口SCL定義sbitdula=P2^6;sbitwela=P2^7;unsignedcharj,k;voiddelay(unsignedchari)//延時程序{for(j=i;j>0;j--)for(k=125;k>0;k--);}ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,//數(shù)碼管編碼0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddisplay(ucharbai_c,ucharsh_c)//顯示程序{dula=0;P0=table[bai_c];//顯示百位dula=1;dula=0;wela=0;P0=0x7e;wela=1;wela=0;delay(5);dula=0;P0=table[sh_c];//顯示十位dula=1;dula=0;wela=0;P0=0x7d;云龍單片機(jī)技術(shù)發(fā)限有限公司wela=1;wela=0;delay(5);}/////////24C02讀寫驅(qū)動程序////////////////////voiddelay1(unsignedcharx)//延時子函數(shù){unsignedinti;for(i=0;i<x;i++);}voidflash(){;;}//延時子函數(shù)voidx24c08_init()//24c02初始化子程序{scl=1;flash();sda=1;flash();}voidstart()//啟動I2C總線{sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();}voidstop()//停止I2C總線{sda=0;flash();scl=1;flash();sda=1;flash();}voidwritex(unsignedcharj)//寫一個字節(jié){unsignedchari,temp;temp=j;for(i=0;i<8;i++){temp=temp<<1;scl=0;flash();sda=CY;flash();scl=1;flash();}scl=0;flash();sda=1;flash();}unsignedcharreadx(){//讀一個字節(jié)unsignedchari,j,k=0;scl=0;flash();sda=1;for(i=0;i<8;i++){flash();scl=1;flash();if(sda==1)j=1;elsej=0;k=(k<<1)|j;scl=0;}flash();return(k);云龍單片機(jī)技術(shù)發(fā)限有限公司}voidclock()//I2C{總線應(yīng)答子函數(shù)unsignedchari=0;scl=1;flash();while((sda==1)&&(i<255))i++;scl=0;flash();}////////從24c02的地址address中讀取一個字節(jié)數(shù)據(jù)/////unsignedcharx24c08_read(unsignedcharaddress){unsignedchari;start();writex(0xa0);cloc
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度預(yù)制構(gòu)件鋼筋加工與安裝合同
- 二零二五年度養(yǎng)老機(jī)構(gòu)租賃服務(wù)合同
- 2025年度餐飲管理合伙企業(yè)合作協(xié)議書
- 二零二五年度兒童娛樂中心店面租賃協(xié)議模板
- 二零二五年度酒店客房設(shè)施設(shè)備保養(yǎng)與維修合同
- 2025年度網(wǎng)絡(luò)安全技術(shù)顧問聘請合同范本
- 二零二五年度牧草種植基地牧草購買與種植保險協(xié)議
- 2025年度汽修廠汽車維修行業(yè)技術(shù)標(biāo)準(zhǔn)制定與實施勞務(wù)合同
- 2025年貨車掛靠業(yè)務(wù)委托管理合同
- 二零二五年度酒店客房承包經(jīng)營及收益分成協(xié)議
- 《陶瓷工藝技術(shù)》課件
- 變更強(qiáng)制措施的申請書
- 《苗圃生產(chǎn)與管理》教案-第二章 園林苗木的種實生產(chǎn)
- 供電所安全演講
- 供應(yīng)鏈韌性提升與風(fēng)險防范-深度研究
- 2025年陜西延長石油有限責(zé)任公司招聘筆試參考題庫含答案解析
- Excel辦公技巧培訓(xùn)
- 《智能制造技術(shù)基礎(chǔ)》課件-第4章 加工過程的智能監(jiān)測與控制
- 2024年度英語課件容貌焦慮
- 初一家長會課件96108
- 罪犯正常死亡報告范文
評論
0/150
提交評論