單片機實習報告_第1頁
單片機實習報告_第2頁
單片機實習報告_第3頁
單片機實習報告_第4頁
單片機實習報告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機實習報告課題名稱 : 數(shù)字直流電壓表的設計學 院 : 電氣信息工程學院_ 專 業(yè) : 通信工程_ 學 號 : 14級2班 (20#)姓 名 : 秦 帝_ 指導教師 : 付 偉 _ 日 期 : 2017.3.27-2017.3.31摘 要作為嵌入式系統(tǒng)控制核心的單片機(又稱為微控制器),以體積小、功能全、性價比高等諸多優(yōu)點而獨具特色。51單片機是國內(nèi)目前應用最廣泛的單片機之一,隨著嵌入式系統(tǒng)、片上系統(tǒng)等概念的提出和普遍接受及應用,51單片機的發(fā)展又進入了一個新的階段。許多專用功能芯片的內(nèi)核集成了51單片機,與51單片機兼容的微控制器以IP核的方式不斷地出現(xiàn)在FPGA的片上系統(tǒng)中。隨著基于5

2、1單片機的嵌入式實時操作系統(tǒng)的出現(xiàn)與推廣,在很長一段時間內(nèi),51單片機仍將占據(jù)嵌入式系統(tǒng)產(chǎn)品的中、低端市場。51單片機是對所有兼容Intel 8031指令系統(tǒng)的單片機的統(tǒng)稱。該系列單片機的始祖是Intel的8031單片機,后來隨著Flash rom技術的發(fā)展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業(yè)測控系統(tǒng)之中。很多公司都有51系列的兼容機型推出,今后很長的一段時間內(nèi)將占有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。由于單片機在工業(yè)控制領域的廣泛應用,單片機由僅有CPU的專用處理器芯片發(fā)展而

3、來。最早的設計理念是通過將大量外圍設備和CPU集成在一個芯片中,使計算機系統(tǒng)更小,更容易集成復雜的而對體積要求嚴格的控制設備當中。盡管2000年以后ARM已經(jīng)發(fā)展出了32位的、主頻超過300M 的高端單片機,但直到現(xiàn)在基于8051的單片機還在廣泛的使用。在很多方面單片機比專用處理器更適合應用于嵌入式系統(tǒng),因此它得到了廣泛的應用。事實上單片機是世界上數(shù)量最多的處理器,隨著單片機家族的發(fā)展壯大,單片機和專用處理器的發(fā)展便分道揚鑣。如今,單片機已經(jīng)深入到人們生活的各個方面,幾乎每件有電子器件的產(chǎn)品中都會集成有單片機。例如手機、平板電腦、計算器、智能家居、電子玩具以及鼠標等電子產(chǎn)品中都含有單片機。除此

4、之外,汽車上一般配備40多片單片機,復雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百片單片機在同時工作。單片機的數(shù)量遠超過PC 機和其他計算機的總和。本次實習就以52單片機為基礎進行設計數(shù)字模擬電壓表。關鍵詞:52單片機 TLC2543 74LS164 74LS138 目 錄1.實習目的與任務 12.實習內(nèi)容與要求13.實驗硬件13.1 74LS138資料13.1.1 74LS138簡介13.1.2 74LS138功能表13.2 TLC2543 AD轉換芯片23.2.1 TLC 2543 簡介23.2.2 TLC2543引腳功能23.2.3 TLC 時序圖33.2.4 TLC 指令功能33.3 74LS16

5、4 芯片73.3.1 74LS164簡介73.3.2 TLC5615使用時序84. 軟件設計95.1 程序流程圖95.2 C語言程序105. 實習心得236. 參考文獻231.實習目的與任務 1. 熟悉并掌握單片機外圍芯片的應用方法;2. 掌握單片機應用系統(tǒng)一般的設計過程; 3. 掌握52單片機擴展SPI接口芯片的方法。 2.實習內(nèi)容與要求 根據(jù)實驗箱上12864液晶及TLC2543 的應用電路,設計一個數(shù)字直流電壓表,要求能夠?qū)斎氲?05V的直流電壓進行測量,并通過液晶顯示,通過矩陣按鍵設置上下限。單片機與液晶、TLC2543 之間采用SPI 數(shù)據(jù)傳輸方式。當測量超出限定接線,單片機發(fā)送一

6、個警告信號,由LED燈顯示。 3.實驗硬件 3.1 74LS138資料 3.1.1 74LS138簡介 74LS138為3線-8線譯碼器,共有54/74S138和54/74LS138兩種線路結構型式,其工作原理如下:當一個選通端(G1)為高電平,另兩個選通端(/(G2A)和/(G2B)為低電平時,可將地址端(A、B、C)的二進制編碼在一個對應的輸出端以低電平譯出。利用 G1、/(G2A)和/(G2B)可級聯(lián)擴展成24線譯碼器;若外接一個反相器還可級聯(lián)擴展成32線譯碼器。若將選通5端中的一個作為數(shù)據(jù)輸入端時,74LS138還可作數(shù)據(jù)分配器。圖3.1.1 為74LS138 的引腳簡圖。圖3.1.1

7、 74LS138 引腳圖3.1.2 74LS138功能表74LS138功能表如表3.1.2所示。表3.1.2 74LS138 功能表3.2 TLC2543 AD轉換芯片 3.2.1 TLC 2543 簡介 TLC2543是TI公司的12位串行模數(shù)轉換器,使用開關電容逐次逼近技術完成A/D 轉換過程。由于是串行輸入結構,能夠節(jié)省51系列單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。TLC2543的特點:(1)12位分辯率A/D 轉換器;(2) 在工作溫度范圍內(nèi)10s 轉換時間; (3)11個模擬輸入通道; (4)3路內(nèi)置自測試方式;(5) 采樣率為66kbps;(6

8、) 線性誤差±1LSBmax; (7) 有轉換結束輸出EOC;(8) 具有單、雙極性輸出; (9)可編程的MSB或LSB前導。 3.2.2 TLC2543引腳功能 TCL2543 引腳功能如表3.2.2 所示。引腳號名稱I/O說明19、11、1、2AIN0AIN10I擬量輸入端。15CSI片選段。CS的下降沿使能DATA IN、DATA OUT和I/O CLOCK。17DATA INPUTI串行數(shù)據(jù)輸入端。數(shù)據(jù)在I/O CLOCK的上升沿串入。前4位數(shù)據(jù)為模擬電壓的通道號或片內(nèi)自測電壓通道號,高位在先。16DATA OUTO串行數(shù)據(jù)輸出端。數(shù)據(jù)在I/O CLOCK的下降沿寫入。在CS

9、無效或進行A/D轉換時,該腳保持高阻狀態(tài)。在數(shù)據(jù)輸出時,由軟件編程決定是高位在先還是低位在先。19EOCO轉換結束標志。在輸入串行數(shù)據(jù)的最后一個時鐘周期的下降沿,即開始A/D轉換時,EOC腳變低,直到轉換結束后變高。此時數(shù)據(jù)準備完畢,可以輸出。10GND地,REF-接該腳。18I/O CLOCKII/O時鐘14REF+I正參考電壓端,一般情況接VCC。13REF-I負參考電壓端,一般情況接地。20VCC正電源電壓輸入端。電壓為5V0.5V。表3.2.2TLC2543 引腳功能表3.2.3 TLC 時序圖 TLC時序圖如圖3.2.3所示。 圖3.2.3 用CS進行12個時鐘傳送的工作時序圖(注:

10、在編程時一定要嚴格遵守時序。) 3.2.4 TLC 指令功能TLC指令功能如圖3.2.4所示 圖3.2.4 TLC 指令功能(說明:發(fā)送指令和接受數(shù)據(jù)可同時進行也可先發(fā)指令再接收數(shù)據(jù), 但是接收到的數(shù)據(jù)是上一次選通的通道轉換的數(shù)據(jù)。) 3.3 74LS1643.3.1 74LS164簡介 8 位串行輸入,并出移位寄存器74ls164、74lsT164 是高速硅門 COMS器件,與低功耗肖特基型 TTL (LSTTL) 器件的引腳兼容。74HC164、74HCT164 是 8 位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸出。數(shù)據(jù)通過兩個輸入端(DSA 或 DSB)之一串行輸入;任一

11、輸入端可以用作高電平使能端,控制另一輸入端的數(shù)據(jù)輸入。兩個輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空。時鐘 (CP) 每次由低變高時,數(shù)據(jù)右移一位,輸入到 Q0, Q0 是兩個數(shù)據(jù)輸入端(DSA和 DSB)的邏輯與,它將上升時鐘沿之前保持一個建立時間的長度。主復位 (MR) 輸入端上的一個低電平將使其它所有輸入端都無效,非同步地清除寄存器,強制所有的輸出為低電平。 74LS164引腳圖 74LS164邏輯圖3.3.2 74LS164使用時序H = HIGH(高)電平h = 先于低-至-高時鐘躍變一個建立時間 (set-up time) 的 HIGH(高)電平L = LOW(

12、低)電平l = 先于低-至-高時鐘躍變一個建立時間 (set-up time) 的 LOW(低)電平q = 小寫字母代表先于低-至-高時鐘躍變一個建立時間的參考輸入 (referenced input) 的狀態(tài) = 低-至-高時鐘躍變 4 軟件設計4.1 程序流程圖 數(shù)字電壓表的程序流程圖如圖5.1所示。 圖5.1 數(shù)字直流電壓表程序流程圖4.2 程序代碼#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit doult=P05;sbit A

13、A=P00;sbit BB=P01;sbit CC=P02; sbit SDA = P03;/數(shù)據(jù)總線sbit SCK = P04;/時鐘sbit key0=P10;sbit key1=P11;sbit key2=P12;sbit key3=P13;sbit LED=P26;uint dis10;uint dis310;uint dis410;uchar yy=2,fz,di,yun,dt,n,shift;uint sum1=0;uchar key=0,flag=0;void K_deal(uchar key);uchar code strint2="當前電壓:"uchar

14、 code strint4="電壓上限:"uchar code strint5="電壓下限:"uchar code strint3="ABCD963E852F7410" /*AD轉化函數(shù)*/uint TLC2543(uchar port) uint ad=0; uchar i; SCK=0; AA=0; BB=0; port<<=4; for(i=0;i<12;i+) if(doult=1) ad|=0x01; SDA=port&0x80 ; SCK=1; _nop_();_nop_();_nop_(); S

15、CK=0;_nop_();_nop_();_nop_();port=port<<1;ad=ad<<1; AA=1; BB=1; ad=ad>>1; return ad; /*延時*/void delayms(uchar x) uchar i,j; for(i=x;i>0;i-) for(j=200;j>0;j-); void Send_Byte(uchar dat)uchar i;SCK=0; for(i=0;i<8;i+) SDA = dat&0x80; SCK = 1; dat<<= 1; SCK = 0; /讀一個

16、字節(jié) uchar Read_Byte(void) uchar i; uint byte = 0; SCK = 0; for(i=0;i<16;i+) byte<<= 1; SCK = 1; if(SDA) byte |= 0x0001; SCK = 0; byte = (byte>>4)|(byte>>8)&0x00ff; return (uchar)(byte); /讀忙標志void Read_Busy(void) uchar temp; / CS = 1; do Send_Byte(0xfc);/ temp = Read_Byte();/

17、while(temp&0x80); / CS = 0; /寫字節(jié)命令 void Write_Cmd(uchar cmd) uchar temph = 0; uchar templ = 0; / temph = cmd& 0xf0; templ = (cmd& 0x0f) << 4; Read_Busy(); /CS = 1; Send_Byte(0XF8);/ Send_Byte(temph); Send_Byte(templ); /CS = 0; /寫數(shù)據(jù) void Write_Dat(uchar dat) uchar temph = 0; uchar t

18、empl = 0; / temph = dat& 0xf0; templ = (dat& 0x0f) << 4; Read_Busy(); / CS = 1; Send_Byte(0XFA);/ Send_Byte(temph);/ Send_Byte(templ); / CS = 0; void pos(uchar x, uchar y) uchar addr; switch(y) case 0: addr = 0x80 + x;break; case 1: addr = 0x90 + x;break; case 2: addr = 0x88 + x;break;

19、 case 3: addr = 0x98 + x;break; default:break; Write_Cmd(addr); /*液晶初始化*/ void LCD_Init(void) AA=1;BB=1;CC=0;Write_Cmd(0X30); Write_Cmd(0X01);Write_Cmd(0X02);Write_Cmd(0X0C); void Lcd_display(uchar key) uchar i;AA=1;BB=1;CC=0; pos(0,0);i=0;while(strint2i!='0') Write_Dat(strint2i); i+; pos(0,

20、1);i=0;while(strint4i!='0') Write_Dat(strint4i); i+; pos(0,2);i=0;while(strint5i!='0') Write_Dat(strint5i); i+; pos(5,3); Write_Dat(strint3key); void AD_change()uint high1=0,high2=0,high3=0,high4=0; uint ad=0; ad=TLC2543(0x01);ad=(float)ad/4096*5000;high1=ad/1000;/if(high1<sum2&am

21、p;&high1>sum3)/high2=ad%1000/100;high3=ad%100/10;high4=ad%10;pos(5,0); Write_Dat(high1+0X30); Write_Dat('.'); Write_Dat(high2+0X30); Write_Dat(high3+0X30); Write_Dat(high4+0X30); /*矩陣按鍵*/ void keyscan()uchar temp; if(flag=0)Send_Byte(0x0e);/1111 1110 flag=1; temp=P1;temp=temp&0x0f

22、;if(temp!=0x0f)delayms(5); temp=temp&0x0f; if(temp!=0x0f)switch(temp)case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;while(temp!=0x0f)temp=P1;temp=temp&0x0f; K_deal(key); if(flag=1)Send_Byte(0x0d);/1111 1101 flag=2; temp=P1;temp=temp&0x0f;if(temp!=

23、0x0f)delayms(5); temp=temp&0x0f; if(temp!=0x0f)switch(temp)case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;while(temp!=0x0f)temp=P1;temp=temp&0x0f;K_deal(key); if(flag=2)Send_Byte(0x0b);/1111 1011 flag=3; temp=P1;temp=temp&0x0f;if(temp!=0x0f)delaym

24、s(5); temp=temp&0x0f; if(temp!=0x0f)switch(temp)case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;while(temp!=0x0f)temp=P1;temp=temp&0x0f;K_deal(key); if(flag=3)Send_Byte(0x07);/1111 0111 flag=4; temp=P1;temp=temp&0x0f;if(temp!=0x0f)delayms(5); tem

25、p=temp&0x0f; if(temp!=0x0f)switch(temp)case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;while(temp!=0x0f)temp=P1;temp=temp&0x0f;K_deal(key); flag=0; /*按鍵處理*/ void K_deal(uchar key)uchar j,p=0,m,x;uint l,i,k;if(key=15) fz+;l=0x30;k=0;disfz=0;if(key=1

26、4)fz+;l=0x30;k=1;disfz=1;if(key=13)fz+;l=0x30;k=4;disfz=4;if(key=12)fz+;l=0x30;k=7;disfz=k; if(key=10) fz+;l=0x30;k=2;disfz=k;if(key=9)fz+;k=5;l=0x30;disfz=k;if(key=8)fz+; k=8;l=0x30;disfz=k;if(key=6)fz+;k=3;l=0x30;disfz=k; if(key=5)fz+;k=6;l=0x30;disfz=k;if(key=4)fz+;k=9;l=0x30;disfz=k; if(key=3) uchar i; di=1;if(di=1) yun=1; m=1;l=1;j=fz;for(;fz>0;fz-)for(i=fz;i>1;i-)m=m*10;m=m*disl;l+;sum1=sum1+m;m=1; fz=0;di=9;/i=sum1;if(key=1) pos(7,1);i=sum1;/sum2=sum1;for(x=0;x<sum1;)sum1=sum1/10;p+; for(j=p;j>0;j-)dis3j=i%10;i=i/10; for(j=1;j<=p;j+) Write_Dat(0x30+dis3j); i=0;if(key=2)

溫馨提示

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

評論

0/150

提交評論