2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩117頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)原理及應(yīng)用 (C語言版)第9章 單片機(jī)系統(tǒng)配置及接口,主 編:周國運(yùn)本章制作:魯慶賓中國水利水電出版社,第9章 單片機(jī)系統(tǒng)配置及接口,目 錄9.1 鍵盤接口9.2 LED顯示接口9.3 A/D轉(zhuǎn)換接口9.4 D/A轉(zhuǎn)換接口9.5 開關(guān)器件接口,本章要點單片機(jī)主要應(yīng)用于測控系統(tǒng)中,應(yīng)用系統(tǒng)通常需要人的干預(yù)。本章主要講述鍵盤、顯示器、A/D轉(zhuǎn)換器、D

2、/A轉(zhuǎn)換器、開關(guān)器件等的工作原理及接口電路。,,第9章 單片機(jī)系統(tǒng)配置及接口,圖9-1 單片機(jī)應(yīng)用系統(tǒng)配置框圖,9.1 鍵盤接口,主要內(nèi)容9.1.1 鍵盤基本問題9.1.2 鍵盤結(jié)構(gòu)及處理程序9.1.3 中斷掃描方式,,1、鍵的識別 當(dāng)按鍵K未被按下時,P1.0輸入為高電平;當(dāng)K閉合時,P1.0輸入為低電平。,9.1.1 鍵盤基本問題,圖9-2 按鍵電路,,2、鍵的抖動 由于機(jī)械觸點的彈性作

3、用,按鍵在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。在閉合及斷開的瞬間均伴隨有一連串的抖動,如圖9-3所示 。抖動時間一般為5~10ms。抖動會引起一次按鍵被誤讀多次。為確保CPU對鍵的一次閉合僅做一次處理,必須去除鍵抖動。,9.1.1 鍵盤基本問題,9.1.1 鍵盤基本問題,圖9-3 按鍵時的抖動,9.1.1 鍵盤基本問題,一.獨立式鍵盤獨立式按鍵是指各按鍵相互獨立地接通一條輸入數(shù)據(jù)線。當(dāng)任何一個鍵按下時,

4、與之相連的輸入數(shù)據(jù)線即可讀入數(shù)據(jù)0,而沒有按下時讀入1。,9.1.2 鍵盤結(jié)構(gòu)及處理程序,,優(yōu)點:電路簡單;缺點:鍵數(shù)較多時,要占用較多的I/O線。,圖9-4 獨立式鍵盤,例9-1 設(shè)計一個獨立式按鍵的鍵盤接口,并編寫鍵掃描程序,電路原理圖如圖9-4所示,鍵號從上到下分別為0~7。C語言程序清單:#includevoid key(){unsigned char k;P1=0xff;//輸入時P1口置全1k

5、=P1;//讀取按鍵狀態(tài)if(k==0xff) //無鍵按下,返回return;delay20ms();//有鍵按下,延時去抖,9.1.2 鍵盤結(jié)構(gòu)及處理程序,k=P1;if(k==0xff) //確認(rèn)鍵按下return; //抖動引起,返回while(P1!=0xff); //等待鍵釋放switch(k){

6、case:0xfe… //0號鍵按下時執(zhí)行程序段break;case:0xfd… //1號鍵按下時執(zhí)行程序段break;,9.1.2 鍵盤結(jié)構(gòu)及處理程序,… //2~6號鍵程序省略case:0x7f… //7號鍵按下時執(zhí)行程序段break;}}匯編語言程序清單:KEY:MOVP1,#0FFH

7、 ;P1口為輸入口MOVA,P1 ;讀取按鍵狀態(tài)CPLA ;取正邏輯JZEKEY ;無鍵按下,返回,9.1.2 鍵盤結(jié)構(gòu)及處理程序,LCALL DELAY20MS ;有鍵按下,去抖 MOV A,P1 CPL A JZ EKEY ;抖動引起,返回 MOV B,A

8、 ;存鍵值KEY1:MOV A,P1 ;以下等待鍵釋放 CPL A JNZ KEY1 ;未釋放,等待 MOV A,B ;取鍵值送A JB ACC.0,PKEY0 ;K0按下轉(zhuǎn)PKEY0 JB ACC.1,PKEY1 ;K1按下轉(zhuǎn)PKEY1 …,9

9、.1.2 鍵盤結(jié)構(gòu)及處理程序,JBACC.7,PKEY7 ;K7按下轉(zhuǎn)PKEY7EKEY: RETPKEY1:LCALLK0 ;K0命令處理程序 RETPKEY2:LCALLK1 ;K1命令處理程序 RET …PKEY4:LCALLK7 ;K7命令處理程序 RET,9.1.2 鍵盤結(jié)

10、構(gòu)及處理程序,,二.行列式鍵盤 為了減少鍵盤與單片機(jī)接口時所占用I/O線的數(shù)目,在鍵數(shù)較多時,通常都將鍵盤排列成行列矩陣形式。每一水平線(行線)與垂直線(列線)的交叉處通過一個按鍵來連通。,圖9-5 4×4矩陣鍵盤接口,利用這種結(jié)構(gòu)只需N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。,9.1.2 鍵盤結(jié)構(gòu)及處理程序,,圖9|54×4矩陣鍵盤接口,9.1.2

11、鍵盤結(jié)構(gòu)及處理程序,1.行掃描法工作原理 判別鍵盤中有無鍵按下。向行線輸出全0,讀入列線狀態(tài)。如果有鍵按下,總有一列線被拉至低電平,從而使列輸入不全為1。 查找按下鍵所在位置。依次給行線送低電平,查列線狀態(tài)。全為1,則所按下的鍵不在此行;否則所按下的鍵必在此行且是在與零電平列線相交的交點上的那個鍵。 對按鍵位置進(jìn)行編碼。找到所按下按鍵的行列位置后,對按鍵進(jìn)行編碼,即求得按鍵鍵值。,9.1.2 鍵盤結(jié)構(gòu)及處

12、理程序,2.鍵盤掃描識別子程序C語言程序清單:#includechar key() {char row,col, k =-1; //定義行、列、返回值P1=0xf0;if((P1&0xf0)==0xf0)return k; //無鍵按下,返回delay20ms(); //延時去抖if((P1&0xf0)==0xf0)return k; //抖

13、動引起,返回,9.1.2 鍵盤結(jié)構(gòu)及處理程序,for(row=0;row<4;row++)//行掃描{ P1=~(1<<row); //掃描值送P1 k=P1&0xf0; if(k!=0xf0) //列線不全為1, { while(k&(1<<(col+4)))//所按鍵在該列

14、 col++; //查找為0列號 k=row*4+col;//計算鍵值 P1=0xf0; while((P1&0xf0)!=0xf0); //等待鍵釋放 break;} }return k;//返回鍵值},9.1.2 鍵盤結(jié)構(gòu)及處理程序,匯編語言程序清單(返回鍵值:在累加器A中):KEY:LCAL

15、L KS ;判斷是否有鍵按下JZ EKEY ;無鍵按下,返回LCALL DELAY20MS ;延時去抖LCALL KSJZ EKEY ;抖動引起,返回SKEY:MOV R0,#0 ; 行掃描計數(shù)器R0 清0MOV R1,#0 ; 列計數(shù)器R1 清0MOV R3,#0FEH ;R3為行掃描字暫存

16、SKEY1:MOV P1,R3 ;輸出行掃描字,9.1.2 鍵盤結(jié)構(gòu)及處理程序,MOVA,P1 ;讀列值MOVR1,A ;暫存列值CPLAANLA,#0F0HJNZSKEY2 ;鍵在該列,轉(zhuǎn)SKEY2INCR0 ;行計數(shù)器加1SETBCMOVA,R3RLCAMOVR3,A ;進(jìn)行下

17、一行掃描CJNER0,#4,SKEY1 ;4未完成, 轉(zhuǎn)SKEY1 EKEY:MOVA,#0FFH;無鍵返回0FFH RET,9.1.2 鍵盤結(jié)構(gòu)及處理程序,SKEY2:MOVA,R1JNBACC.4,SKEY3JNBACC.5,SKEY4JNBACC.6,SKEY5JNBACC.7,SKEY6SKEY3:MOVR2,#0;存0列號S

18、JMPDKEYSKEY4:MOVR2,#1;存1列號SJMPDKEYSKEY5:MOVR2,#2;存2列號SJMPDKEY,9.1.2 鍵盤結(jié)構(gòu)及處理程序,SKEY6:MOVR2,#3 ;存3列號 SJMPDKEYDKEY: MOVA,R0 ; 行號送A MOVB,#4 MULAB ADDA,R2

19、 ;行號×4+列號=鍵值 PUSHACCLK: LCALLKS ;等待鍵釋放 JNZLK POPACC RET,9.1.2 鍵盤結(jié)構(gòu)及處理程序,;是否有鍵按下子程序,有返回非0,無返回0KS:MOVP1,#0F0HMOVA,P1CPLAANLA,#0F0HRET,9.1.2

20、 鍵盤結(jié)構(gòu)及處理程序,3.行列反轉(zhuǎn)法工作原理 判別鍵盤中有無鍵按下。(方法同行掃描法) 輸入變輸出,再讀。將上一步讀取到的列線輸入值從列線輸出,讀取行線值。 定位求鍵值。根據(jù)上一步輸出的列線值和讀取到的行線值就可以確定所按下鍵所在的位置,從而查表確定鍵值。,9.1.2 鍵盤結(jié)構(gòu)及處理程序,4.行列反轉(zhuǎn)法識別子程序C語言程序代碼:#includechar key(){char code keycode

21、[]= {0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77} //鍵盤表,定義16個按鍵的行列組合值,9.1.2 鍵盤結(jié)構(gòu)及處理程序,char row,col,k=-1,i;//定義行、列、返回值、循環(huán)控制變量P1=0xf0;if((P1&0xf0)==0xf

22、0)return k; //無鍵按下,返回-1delay20ms(); //延時去抖if((P1&0xf0)==0xf0)return k; //抖動引起,返回-1P1=0xf0;col=P1&0xf0; //行輸出全0,讀取列值P1=col|0x0f;row=P1&0x0f; //列值輸出,讀取行值,9.1.2 鍵盤結(jié)構(gòu)及處理程序

23、,//查找行列組合值在鍵盤表中位置for(i=0;i<16;i++)if((row|col)==keycode[i]) //找到,i即為鍵值, { //否則,返回-1 key=i; //對重復(fù)鍵,該方法break; //處理為無鍵按下}P1=0xf0;while((P1&0xf0)!=0xf0); //等待鍵釋

24、放return k; //返回鍵值},9.1.2 鍵盤結(jié)構(gòu)及處理程序,9.1.3 中斷掃描方式,為了提高CPU的效率,可以采用中斷掃描工作方式,即只有在鍵盤有鍵按下時才產(chǎn)生中斷申請,CPU響應(yīng)中斷,進(jìn)入中斷服務(wù)程序進(jìn)行鍵盤掃描,并做相應(yīng)處理。也可以采用定時掃描方式,即系統(tǒng)每隔一定時間進(jìn)行鍵盤掃描,并做相應(yīng)處理。,,9.1.3 中斷掃描方式,,圖9-6 中斷方式鍵盤接口,9.2 LED顯示接口,主要內(nèi)容

25、9.2.1 LED顯示器結(jié)構(gòu)原理9.2.2 LED顯示器接口及顯示方式9.2.3 LED顯示器與89C52接口及顯示子程序,,9.2.1 LED顯示器結(jié)構(gòu)原理,單片機(jī)中通常使用7段LED構(gòu)成字型為“8”且加一個小數(shù)點的數(shù)碼管,以顯示數(shù)字、符號及小數(shù),常見數(shù)碼管如下圖。,顯示器有共陰極和共陽極兩種。發(fā)光二極管的陽極連在一起的稱為共陽極顯示器,陰極連在一起的稱為共陰極顯示器。一位顯示器由8個發(fā)光二極管組成,其中,7個發(fā)

26、光二極管構(gòu)成字型“8”的各個筆劃,另一個為小數(shù)點。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。,9.2.1 LED顯示器結(jié)構(gòu)原理,,,,以共陰極顯示器為例,當(dāng)a、b、c三段送1時,數(shù)碼管顯示數(shù)字7。,(c)引腳配置外形圖,(b)共陽極,(a)共陰極,9.2.1 LED顯示器結(jié)構(gòu)原理,表9-1 共陰極和共陽極7段LED顯示字型編碼表,以上為8段,8段最高位為小數(shù)點段。表中為小數(shù)點不點亮段碼。,9.2.

27、1 LED顯示器結(jié)構(gòu)原理,9.2.2 LED顯示器接口及顯示方式,LED有靜態(tài)顯示和動態(tài)顯示兩種方式。1.LED靜態(tài)顯示方式靜態(tài)顯示就是當(dāng)顯示器顯示某個字符時,相應(yīng)的段(發(fā)光二極管)恒定地導(dǎo)通或截止,直到顯示另一個字符為止。共陰極(公共端K0)接地;共陽極(公共端K0)接+5V電源。每位的段選線(a~dp)分別與一個8位鎖存器的輸出口相連,顯示器中的各位相互獨立。,優(yōu)點:亮度較高、編程容易、管理簡單;

28、缺點:但占用I/O口線資源較多。2.LED動態(tài)顯示方式在多位LED顯示時,為了簡化電路,降低成本,將所有位的段選線并聯(lián)在一起,由一個8位I/O口控制。而共陰(或共陽)極公共端K分別由相應(yīng)的I/O線控制,實現(xiàn)各位的分時選通。圖9-8為6位共陰極LED動態(tài)顯示接口電路。,9.2.2 LED顯示器接口及顯示方式,圖9-8 6位LED動態(tài)顯示接口電路,9.2.2 LED顯示器接口及顯示方式,各位掃描顯示:由于6位LED所有段

29、選線皆由P1口控制,要想每位顯示不同的字符,就必須采用掃描方法輪流點亮各位LED,在每一瞬間只使某一位顯示字符。段選碼、位選碼控制:P1口輸出相應(yīng)字符段選碼,P2口在該顯示位送入選通電平,保證該位顯示相應(yīng)字符,如此輪流。掃描延時:段選碼、位選碼每送入一次后延時1ms,保證每位有一定亮度,因人眼的視覺暫留效果,看上去每個數(shù)碼管總在亮。,9.2.2 LED顯示器接口及顯示方式,9.2.3 顯示器與89C52接口及顯示子程序,

30、下頁圖為89C52 P1口和P2口控制的6位共陰極LED動態(tài)顯示接口電路。P1口輸出段選碼,P2口輸出位選碼,位選碼占用輸出口的線數(shù)決定于顯示器位數(shù)。74LS245是雙向8位緩沖器,在此分別作為段選和位選驅(qū)動器。逐位輪流點亮各個LED,每一位保持1ms,在10~20ms之內(nèi)再一次點亮,重復(fù)不止。這樣,利用人的視覺暫留,好像6位LED同時點亮一樣。,圖9|9 數(shù)碼管動態(tài)顯示接口,,9.2.3 顯示器與89C52接口及顯

31、示子程序,C語言程序清單:#includeunsigned char code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char buf[6];//定義字型碼和顯示緩沖區(qū)void disp(){unsigned char i;for(i=0;i>i);//位碼送P2口delay1ms();//延時1

32、ms}},9.2.3 顯示器與89C52接口及顯示子程序,匯編語言程序清單:DISP: MOV R0,#DISPBUF ; R0指向顯示緩沖區(qū) MOV R2,#0DFH ;位碼送R2 MOV R3,#6 ;6位顯示 MOV DPTR,#TAB ;DPTR指向段碼表LOOP:MOV P2,R2 ;位碼送P2口 M

33、OV A,@R0 ;取顯示數(shù)據(jù) MOVC A,@A+DPTR ;取出字型碼 MOV P1,A ;送出顯示 LCALL DELAY1MS ;延時1ms INC R0 ;數(shù)據(jù)緩沖區(qū)地址加1 MOV A,R2 RR A ;位碼右移一位 MOV R2,A,9.2.3 顯示器

34、與89C52接口及顯示子程序,DJNZ R3,LOOP ;掃描到最左邊顯示位?RETTAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH,9.2.3 顯示器與89C52接口及顯示子程序,9.3 A/D轉(zhuǎn)換接口,主要內(nèi)容9.3.1 多通道串行輸出A/D芯片TLC2543及接口9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口9.3.3 單片機(jī)

35、內(nèi)部集成的A/D轉(zhuǎn)換器,模/數(shù)(A/D)轉(zhuǎn)換的方式:有很多種,例如,計數(shù)比較型、逐次逼近型、雙積分型等。選擇A/D轉(zhuǎn)換器件主要是從速度、精度和價格上考慮。A/D轉(zhuǎn)換器的輸出方式:有串行、并行方式,并且有些增強(qiáng)型的單片機(jī)在片內(nèi)也集成有A/D轉(zhuǎn)換器。,9.3 A/D轉(zhuǎn)換接口,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,,,TLC2543是TI公司生產(chǎn)的串行A/D轉(zhuǎn)換器,它具有輸入通道多、精度高、速度高、使用靈活和體積

36、小的優(yōu)點。TLC2543為CMOS 型12位開關(guān)電容逐次逼近A/D轉(zhuǎn)換器。片內(nèi)含有一個14通道多路器,可從11個模擬輸入或3個內(nèi)部自測電壓中選擇一個。,TLC2543與微處理器的接線用SPI接口只有4根連線,其外圍電路也大大減少。TLC2543的特性如下:12位A/D轉(zhuǎn)換器(可8位、12位和16位輸出)。在工作溫度范圍內(nèi)轉(zhuǎn)換時間為l0μs。11通道輸入。3種內(nèi)建的自檢模式。片內(nèi)采樣/保持電路。最大±1/4 09

37、6的線性誤差。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,內(nèi)置系統(tǒng)時鐘。轉(zhuǎn)換結(jié)束標(biāo)志位。單/雙極性輸出。輸入/輸出的順序可編程(高位或低位在前)??芍С周浖P(guān)機(jī)。輸出數(shù)據(jù)長度可編程。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,1.TLC2543的片內(nèi)結(jié)構(gòu)及引腳功能TLC2543片內(nèi)由通道選擇器、數(shù)據(jù)(地址和命令字)輸入寄存器、采樣/保持電路、12位的模/數(shù)轉(zhuǎn)換器、輸出寄存器、并行到串行

38、轉(zhuǎn)換器以及控制邏輯電路7個部分組成。TLC2543片內(nèi)結(jié)構(gòu)如圖9-11所示。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,圖9-11 TLC2543片內(nèi)結(jié)構(gòu)框圖,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,TLC2543的引腳意義如下:AIN0~AIN10 模擬輸入通道。CS片選端。DIN 串行數(shù)據(jù)輸入。DOUT轉(zhuǎn)換結(jié)束數(shù)據(jù)輸出。EOC轉(zhuǎn)換結(jié)束信號。GND地。SCLK(I/O CLO

39、CK)輸入/輸出同步時鐘。REF+、 REF- 轉(zhuǎn)換參考電壓。VCC 設(shè)備的電源。,,,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,2.TLC2543的命令字TLC2543的每次轉(zhuǎn)換都必須給其寫入命令字,以便確定下一次轉(zhuǎn)換用哪個通道,下次轉(zhuǎn)換結(jié)果用多少位輸出,轉(zhuǎn)換結(jié)果輸出是低位在前還是高位在前。命令字的輸入采用高位在前。命令字如下:,輸入到輸入寄存器中的8位編程數(shù)據(jù)選擇器件輸入通道和輸出數(shù)據(jù)的長度及格式。其選擇

40、格式如下表。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,表9-2 輸入寄存器命令字格式,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,注:X表示無關(guān)項。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,3.TLC2543與89C52的SPI接口及程序,圖9-12 TLC2543和89C52的接口電路,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,TLC2543提供SPI接口。

41、對于89C52,須用軟件合成SPI操作來和TLC2543接口。TLC2543的I/O CLOCK、DIN和兩端由單片機(jī)的P1.0、P1.1和P1.3提供。TLC2543轉(zhuǎn)換結(jié)果的輸出(DOUT)數(shù)據(jù)由P1.2接收。89C52將用戶的命令字通過P1.1輸入到TLC2543的輸入寄存器中,等待20μs開始讀數(shù)據(jù),同時寫入下一次的命令字。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,TLC2543與89C52的8位數(shù)據(jù)傳

42、送程序TLC2543與89C52進(jìn)行1次8位數(shù)據(jù)傳送,選用AIN0(即采集1次),高位在前。C語言程序清單:#include#includesbit CS=P1^3;sbit CLK=P1^0;sbit DIN=P1^1;sbit DOUT=P1^2;//定義函數(shù),輸入?yún)?shù)為命令字,輸出轉(zhuǎn)換結(jié)果,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,unsigned char TLC2543(unsig

43、ned char command){unsigned char i,result=0;CS=0;//片選有效for(i=0;i>i);//命令字按位送出result<<=1;result|=DOUT;//按位接收轉(zhuǎn)換結(jié)果CLK=1;//產(chǎn)生一個時鐘_nop_();//高電平有一定寬度CLK=0;}return result;//返回轉(zhuǎn)換

44、結(jié)果},9.3.1 多通道串行輸出A/D芯片TLC2543及接口,匯編語言程序清單:TLC2543:MOVR4,#04H;控制字,AIN0,8位MOVA,R4CLRP1.3;片選有效,選中2543MSB:MOVR5,#08H;傳送8位LOOP:MOVP1,#04H;P1.2為輸入MOVC,P1.2;讀結(jié)果到C中RLCA;帶進(jìn)位循環(huán)左移MOVP1.1

45、,C;將控制字(ACC中)的一位經(jīng)DIN送入,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,SETB P1.0;產(chǎn)生一個時鐘NOPCLR P1.0DJNZ R5,LOOPMOV R2,A;將轉(zhuǎn)換的數(shù)據(jù)存入R2RET執(zhí)行上述子程序,經(jīng)8次循環(huán),執(zhí)行“RLC A”指令8次,最后命令字00000100經(jīng)P1.1、DIN進(jìn)入TLC2543的輸入寄存器,8

46、位A/D轉(zhuǎn)換數(shù)據(jù)××××.××××讀入累加器。,9.3.1 多通道串行輸出A/D芯片TLC2543及接口,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,1.ADC0809的片內(nèi)結(jié)構(gòu)及引腳功能ADC0809是CMOS工藝,采用逐次逼近法的8位A/D轉(zhuǎn)換芯片。多路開關(guān)有8路模擬量輸入端,最多允許8路模擬量分時輸入,共用一個A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換

47、。圖9-13為ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖。它由8路模擬開關(guān)、8位A/D轉(zhuǎn)換器、三態(tài)輸出鎖存器以及地址鎖存譯碼器等組成。,圖9-13 ADC0809內(nèi)部邏輯結(jié)構(gòu)結(jié)構(gòu),9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,引腳功能說明如下:IN0~I(xiàn)N7:8個通道的模擬輸入端。D0~D7:8位數(shù)字量輸出端。START:啟動信號。ALE:地址鎖存信號。EOC:轉(zhuǎn)換結(jié)束信號。OE:輸出允許控制端。CLOCK:時鐘信號。VRE

48、F+和VREF-:A/D轉(zhuǎn)換器的參考電壓。VCC 電源電壓。,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,8位模擬開關(guān)地址輸入通道的關(guān)系見表9-3。模擬開關(guān)的作用和8選1的CD4051作用相同。,表9-3 8位模擬開關(guān)功能表,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,2.ADC0809與89C52接口ADC0809芯片的轉(zhuǎn)換速度在最高時鐘頻率下為100μs左右。ADC0809與89C52連接可采用查詢方式,也

49、可采用中斷方式。圖9-14為中斷方式連接電路圖。由于ADC0809片內(nèi)有三態(tài)輸出鎖存器,因此可直接與89C52接口。,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,圖9-14 ADC0809與89C52的連接,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,這里將ADC0809作為外部擴(kuò)展并行I/O口,采用線選法尋址。ADC0809的ADDA、ADDB和ADDC端由P0.0、P0.1、P0.2送出,ADC0809的地址由P2

50、.7控制,其他地址位與此無關(guān),設(shè)為1,于是ADC0809地址為為7FFFH。在圖9-14所示的接口電路中,ADC0809與片外RAM統(tǒng)一編址。,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,啟動ADC0809的工作過程是:先送數(shù)據(jù)(通道地址)到ADC0809,由ALE信號鎖存,同時START有效,啟動A/D轉(zhuǎn)換。A/D轉(zhuǎn)換完畢,EOC端發(fā)出一正脈沖,申請中斷。在中斷服務(wù)程序中,使OE端有效,8位數(shù)據(jù)便讀入到CPU中。,9.3

51、.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,3.8路巡回檢測系統(tǒng)例9-2 某糧庫或某冷凍廠需對8點(8個冷凍室或8個糧倉)進(jìn)行溫度巡回檢測。要求設(shè)計一個單片機(jī)巡回檢測系統(tǒng),使其能對各冷凍室或各糧倉的溫度巡回檢測并加以處理。設(shè)被測溫度范圍為-30~+50℃,溫度檢測精度要求不大于±l℃。溫度傳感器可選用熱電阻、熱敏電阻、PN結(jié)或集成溫度傳感器AD590和SL134等芯片。,9.3.2 逐次逼近型并行輸出A

52、/D轉(zhuǎn)換器及接口,C語言程序清單:#include#include//絕對地址定位#define DAC0809 XBYTE[0x7fff]//定義C0809地址unsigned char xdata buffer[8];//數(shù)據(jù)存放定義unsigned char i=0;void main(){IT1=1;//邊沿觸發(fā)EA=1;EX1=1;DAC0809=i;//啟動0通道轉(zhuǎn)換

53、while(1);},9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,void int1_srv() interrupt 2{buffer[i]=DAC0809; //讀數(shù)存放if(++i!=8) //最后一個通道沒結(jié)束DAC0809=i; //啟動下一個通道轉(zhuǎn)換},9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,匯編語言主程序:MAIN:

54、MOV R0,#0A0H ;數(shù)據(jù)暫存區(qū)首地址 MOVR2,#8 ;8路計數(shù)初值 MOVR3,#0 ;R3存放通道號 SETBIT1 ;邊沿觸發(fā) SETBEA ;開中斷 SETBEX1 MOV DPTR,#7FFFH;指向0809

55、 MOV A,R3 MOVX @DPTR,A ;送通道號,啟動轉(zhuǎn)換 SJMP $,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,中斷服務(wù)程序:MOVX A,@DPTR ;讀數(shù)MOVX @R0,A ;存數(shù)INC R0 ;更新存放單元INC R3

56、 ;更新通道DJNZ R2,DONERETIDONE:MOV A,R3MOVX @DPTR,ARETI,9.3.2 逐次逼近型并行輸出A/D轉(zhuǎn)換器及接口,9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,目前,很多單片機(jī)片內(nèi)集成有A/D轉(zhuǎn)換器,下面以STC89LE516AD/X2為例,說明A/D轉(zhuǎn)換的使用方法。1.STC89LE516AD/X2片內(nèi)A/D轉(zhuǎn)換器特點STC89LE516AD/X

57、2的模擬量輸入在P1口,有8位精度的高速A/D轉(zhuǎn)換器,P1.0-P1.7共8路,為電壓輸入型,可做按鍵掃描、電池電壓檢測、頻譜檢測等。,2.特殊功能寄存器(1)P1_ADC_EN特殊功能寄存器。P1.x作為A/D轉(zhuǎn)換輸入通道允許特殊功能寄存器,地址為97H,復(fù)位值為00000000B。格式如圖9-15所示。,圖9-15 P1_ADC_EN 特殊功能寄存器,9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,(2)ADC_DATA 特殊功能

58、寄存器。A/D轉(zhuǎn)換結(jié)果特殊功能寄存器,地址為0C6H,復(fù)位值為00000000B,模擬/數(shù)字轉(zhuǎn)換結(jié)果計算公式如下:結(jié)果=256 * Vin /VCC。(3)ADC_CONTR 特殊功能寄存器。A/D轉(zhuǎn)換控制特殊功能寄存器,地址為0C5H,復(fù)位值為xxx00000B。格式如圖9-16所示。,圖9-16 ADC_CONTR 特殊功能寄存器,9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,相關(guān)位說明如下:1)ADC_FLAG:模擬/數(shù)

59、字轉(zhuǎn)換結(jié)束標(biāo)志位,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1。2)ADC_START:模擬/數(shù)字轉(zhuǎn)換(ADC)啟動控制位,設(shè)置為“1”時,開始轉(zhuǎn)換。3)CHS2/CHS1/CHS0:模擬輸入通道選擇,如表9-4所示。,9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,表9-4 模擬輸入通道選擇,9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,3.A/D轉(zhuǎn)換程序用P1.0為模擬量輸入端進(jìn)行A/D轉(zhuǎn)換,程序如下:#include

60、sfr P1_ADC_EN=0x97;//A/D轉(zhuǎn)換功能允許寄存器sfr ADC_CONTR=0xC5;//A/D轉(zhuǎn)換控制寄存器sfr ADC_DATA=0xC6;//A/D轉(zhuǎn)換結(jié)果寄存器,9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,//延時函數(shù)voiddelay(unsigned chardelay_time){unsigned inti;while(d

61、elay_time--)for(i=0;i<10000;i++);},9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,unsignedcharADC() //AD轉(zhuǎn)換函數(shù){delay(1); //使輸入電壓達(dá)到穩(wěn)定ADC_CONTR=0x08; //P1.0為模擬量輸入端,啟動A/D轉(zhuǎn)換while((ADC_CONTR&0

62、x10)==0); //等待轉(zhuǎn)換結(jié)束return ADC_DATA; //返回轉(zhuǎn)換結(jié)果},9.3.3 單片機(jī)內(nèi)部集成的A/D轉(zhuǎn)換器,9.4 D/A轉(zhuǎn)換接口,主要內(nèi)容9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù)9.4.2 串行輸入D/A轉(zhuǎn)換器TLC5615接口技術(shù),9.4.1 并行D/A轉(zhuǎn)

63、換器DAC0832接口技術(shù),1.DAC0832的結(jié)構(gòu)原理(1)DAC0832的特性。具有兩級輸入數(shù)據(jù)寄存器的8位單片D/A轉(zhuǎn)換器,它能直接與單片機(jī)89C52相連接,采用二次緩沖方式,可以在輸出的同時,采集下一個數(shù)據(jù),從而提高轉(zhuǎn)換速度,能夠在多個轉(zhuǎn)換器同時工作時,實現(xiàn)多通道D/A的同步轉(zhuǎn)換輸出。,主要的特性參數(shù)如下:分辨率為8位。只需在滿量程下調(diào)整其線性度??膳c所有的單片機(jī)或微處理器直接接口。電流穩(wěn)定時間為1μs??呻p緩沖

64、、單緩沖或直通數(shù)據(jù)輸入。功耗低,約為200mW。邏輯電平輸入與TTL兼容。單電源供電(+5V~+15V)。,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),(2)DAC0832的引腳及邏輯結(jié)構(gòu)。DAC0832的邏輯結(jié)構(gòu)如下圖所示,由8位鎖存器、8位DAC 寄存器和8位D/A轉(zhuǎn)換器構(gòu)成。,圖9-17 DAC0832結(jié)構(gòu),9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),DAC0832各引腳的功能說明如下:D0

65、~D7:數(shù)字量數(shù)據(jù)輸入線。ILE:數(shù)據(jù)鎖存允許信號,高電平有效。CS:輸入寄存器選擇信號,低電平有效。WR1:輸入寄存器的“寫”選通信號,低電平有效。WR2:DAC寄存器的“寫”選通信號,低電平有效。XFER:數(shù)據(jù)傳送信號,低電平有效。VREF:基準(zhǔn)電壓輸入線。,,,,,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),RFB:反饋信號輸入線,片內(nèi)已有反饋電阻。IOUT1和IOUT2:電流輸出線。IOUT1與IOU

66、T2的和為常數(shù),DAC寄存器的內(nèi)容線性變化。一般在單極性輸出時,IOUT2接地。VCC:工作電源。DGND:數(shù)字地。AGND:模擬信號地。,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),2.DAC0832與單片機(jī)的接口(1)單緩沖器方式接口。,圖9-18 DAC0832單緩沖方式接口,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),將ILE接+5V,寄存器選擇信號及數(shù)據(jù)傳送信號都與地址選擇線相連(圖中

67、為P2.7),兩級寄存器的寫信號都由89C52的WR端控制。當(dāng)?shù)刂肪€選通DAC0832后,只要輸出控制信號,DAC0832就能一步完成數(shù)字量的輸入鎖存和D/A轉(zhuǎn)換輸出。,,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),C語言程序清單:/*------------頭文件聲明及端口地址定義------------*/#include #define DAC0832 XBYTE[0x7FFF]/*--在需要輸出時, da

68、ta1為輸出模擬量的數(shù)字值--*/DAC0832=data1;匯編語言程序清單:MOV DPTR,#7FFFHMOV A,#DATA1MOVX @DPTR,A,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),(2)雙緩沖器同步方式接口。圖9-19是一個二路同步輸出的D/A轉(zhuǎn)換接口電路。89C52的P2.5和P2.6分別選擇兩路D/A轉(zhuǎn)換器的輸入寄存器,控制輸入鎖存;P2.7連到兩路D/A轉(zhuǎn)換器

69、的XFER端控制同步轉(zhuǎn)換輸出;WR與所有的WR1、WR2端相連,在執(zhí)行MOVX指令時,89C52自動輸出WR信號。,,,,,,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),圖9-19 DAC0832雙緩沖方式接口,9.4.1 8位并行D/A轉(zhuǎn)換器DAC0832接口技術(shù),C語言程序清單:#include/* 定義兩片0832輸入寄存器端口地址和 // 同步輸出地址

70、 */#define DAC0832_1XBYTE[0xDFFF]#define DAC0832_2XBYTE[0xBFFF]#define DAC_ALLXBYTE[0x7FFF]/* 在需要模擬量同步輸出時 */DAC0832_1=data1; //第一片0832輸出數(shù)字值DAC08

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論