8051單片機.doc_第1頁
8051單片機.doc_第2頁
8051單片機.doc_第3頁
8051單片機.doc_第4頁
8051單片機.doc_第5頁
免費預覽已結束,剩余28頁可下載查看

下載本文檔

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

文檔簡介

對于內部有ROM的8051等單片機,正常運行時,則需接高電平,使CPU先從內部的程序存儲中讀取程序,當PC值超過內部ROM的容量時,才會轉向外部的程序存儲器讀取程序。 8051片內有4kB的程序存儲單元,其地址為0000H0FFFH,單片機啟動復位后,程序計數器的內容為0000H,所以系統將從0000H單元開始執(zhí)行程序。但在程序存儲中有些特殊的單元,這在使用中應加以注意: 其中一組特殊是0000H0002H單元,系統復位后,PC為0000H,單片機從0000H單元開始執(zhí)行程序,如果程序不是從0000H單元開始,則應在這三個單元中存放一條無條件轉移指令,讓CPU直接去執(zhí)行用戶指定的程序。 另一組特殊單元是0003H002AH,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下: 0003H000AH 外部中斷0中斷地址區(qū)。 000BH0012H 定時/計數器0中斷地址區(qū)。 0013H001AH 外部中斷1中斷地址區(qū)。 001BH0022H 定時/計數器1中斷地址區(qū)。 0023H002AH 串行中斷地址區(qū)。 可見以上的40個單元是專門用于存放中斷處理程序的地址單元,中斷響應后,按中斷的類型,自動轉到各自的中斷區(qū)去執(zhí)行程序。因此以上地址單元不能用于存放程序的其他內容,只能存放中斷服務程序。但是通常情況下,每段只有8個地址單元是不能存下完整的中斷服務程序的,因而一般也在中斷響應的地址區(qū)安放一條無條件轉移指令,指向程序存儲器的其它真正存放中斷服務程序的空間去執(zhí)行,這樣中斷響應后,CPU讀到這條轉移指令,便轉向其他地方去繼續(xù)執(zhí)行中斷服務程序。 數據存儲器 數據存儲器也稱為隨機存取數據存儲器。MCS-51單片機的數據存儲器在物理上和邏輯上都分為兩個地址空間,一個是內部數據存儲區(qū)和一個外部數據存儲區(qū)。MCS-51內部RAM有128或256個字節(jié)的用戶數據存儲(不同的型號有分別),它們是用于存放執(zhí)行的中間結果和過程數據的。MCS-51的數據存儲器均可讀寫,部分單元還可以位尋址。 8051內部RAM共有256個單元,這256個單元共分為兩部分。其一是地址從00H7FH單元(共128個字節(jié))為用戶數據RAM。從80HFFH地址單元(也是128個字節(jié))為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結構分布。 在00H1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0R7,那么在程序中怎么區(qū)分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器程序狀態(tài)字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的第3和第4位(RS0和RS1),即可選中這四組通用寄存器。對應的編碼關系如圖2所示。 內部RAM的20H2FH單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對它們的位進行尋址。位尋址區(qū)共有16個字節(jié),128個位,位地址為00H7FH。位地址分配如表1所示,CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲空間指的就是這些為尋址區(qū)。 表1 RAM位尋址區(qū)地址表 單元地址 MSB 位地址 LSB 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 70H 2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H 2CH 67H 66H 65H 64H 63H 62H 61H 60H 2BH 5FH 5EH 5DH 5CH 5BH 5AH 59H 58H 2AH 57H 56H 55H 54H 53H 52H 51H 50H 29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H 28H 47H 46H 45H 44H 43H 42H 41H 40H 27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H 26H 37H 36H 35H 34H 33H 32H 31H 30H 25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 24H 27H 26H 25H 24H 23H 22H 21H 20H 23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 22H 17H 16H 15H 14H 13H 12H 11H 10H 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H - 特殊功能寄存器 特殊功能寄存器(SFR)也稱為專用寄存器,特殊功能寄存器反映了MCS-51單片機的運行狀態(tài)。很多功能也通過特殊功能寄存器來定義和控制程序的執(zhí)行。 MCS-51有21個特殊功能寄存器,它們被離散地分布在內部RAM的80HFFH地址中,這些寄存的功能已作了專門的規(guī)定,用戶不能修改其結構。表2是特殊功能寄存器分布一覽表,我們對其主要的寄存器作一些簡單的介紹。 程序計數器PC(program Counter) 程序計數器在物理上是獨立的,它不屬于特殊內部數據存儲器塊中。PC是一個16位的計數器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64kB,PC有自動加1功能,即完成了一條指令的執(zhí)行后,其內容自動加1。PC本身并沒有地址,因而不可尋址,用戶無法對它進行讀寫,但是可以通過轉移、調用、返回等指令改變其內容,以控制程序按我們的要求去執(zhí)行。 累加器ACC(Accumulator) 累加器A是一個最常用的專用寄存器,大部分單操作指令的一個操作數取自累加器,很多雙操作數指令中的一個操作數也取自累加器。加、減、乘、除法運算的指令,運算結果都存放于累加器A或AB累加器對中。大部分的數據操作都會通過累加器A進行,它形象于一個交通要道,在程序比較復雜的運算中,累加器成了制約軟件效率的“瓶頸”,它的功能較多,地位也十分重要。以至于后來發(fā)展的單片機,有的集成了多累加器結構,或者使用寄存器陣列來代替累加器,即賦予更多寄存器以累加器的功能,目的是解決累加器的“交通堵塞”問題。提高單片機的軟件效率。 表2 特殊功能寄存器 標識符號 地址 寄存器名稱 ACC 0E0H 累加器 B 0F0H B寄存器 PSW 0D0H 程序狀態(tài)字 SP 81H 堆棧指針 DPTR 82H、83H 數據指針(16位)含DPL和DPH IE 0A8H 中斷允許控制寄存器 IP 0B8H 中斷優(yōu)先控制寄存器 P0 80H I/O口0寄存器 P1 90H I/O口1寄存器 P2 0A0H I/O口2寄存器 P3 0B0H I/O口3寄存器 PCON 87H 電源控制及波特率選擇寄存器 SCON 98H 串行口控制寄存器 SBUF 99H 串行數據緩沖寄存器 TCON 88H 定時控制寄存器 TMOD 89H 定時器方式選擇寄存器 TL0 8AH 定時器0低8位 TH0 8CH 定時器0高8位 TL1 8BH 定時器1低8位 TH1 8DH 定時器1高8位經過12位AD轉換器后,接8051單片機,單片機輸出端用3個引腳去控制兩個執(zhí)行件,其中一個件用一個腳,另一個件用兩個腳單片機有P0.0P0.7,P1.0P1.7,P2.0P2.7,P3.0P3.7,這些引腳,怎么去分配???如果你的地址空間有余富的話 可以使用p2.7,p2.6,p2.5作為地址線,分別將兩個執(zhí)行件映射到單片機的地址空間,這樣可以按照訪問存儲器的方法使用movx指令進行控制。如果地址空間沒有余富或者說地址線不夠用,可以使用p1口的某三條線作為執(zhí)行件的選通信號,具體使用那一位可以根據你的系統,只要沒有用到的p1口的管腳都可以使用。由于p3口多是復用管腳,因此在搞不清具體用法的時候,要慎用p3口。另外,如果涉及到時序問題,p1口是很好的選擇。8051有5個中斷源,它們是兩個外中斷INT0(P3.2)和INT1(P3.3)、兩個片內定時/計數器溢出中斷TF0和TF1,一個是片內串行口中斷TI或RI,這幾個中斷源由TCON和SCON兩個特殊功能寄存器進行控制。用8051單片機設計一數字式溫度計 的電路圖 有程序的最好這個電路很簡單,我說一下就可以了。數字式溫度傳感器用最常用的DS18B20,它只有3個管腳,一個接電源,一個接地,另一個接8051單片機就可以了。溫度值用數碼管顯示。這樣整個電路就接好了。如果樓主覺得我回答的可以別忘了給我加分哦,為了你的問題我花費了半天的時間啊。程序如下:#include#include #define uchar unsigned char #define uint unsigned int#define Self_Define_ISP_Download_Command 0x3Dsfr IAP_CONTR=0xE7;sbit DQ = P35; /DS18B20接入口uchar code table= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ;char bai,shi,ge; /定義變量void Init_Com(void) TMOD = 0x20; SM0=0; SM1=1; REN=1; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; EA=1; ES=1;/*延時子函數*/void delay(uint num) while(num-) ;/*DS18b20溫度傳感器函數*/Init_DS18B20(void) /傳感器初始化 uchar x=0; DQ = 1; /DQ復位 delay(10); /稍做延時 DQ = 0; /單片機將DQ拉低 delay(80); /精確延時 大于 480us /450 DQ= 1; /拉高總線 delay(20); x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(30);/讀一個字節(jié)ReadOneChar(void) uchar i=0; uchar dat = 0; for (i=8;i0;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; delay(8); return(dat);/寫一個字節(jié)WriteOneChar(unsigned char dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(10); DQ = 1; dat=1; delay(8);/讀取溫度int ReadTemperature(void) uchar a,b; uint t; float tt; Init_DS18B20(); WriteOneChar(0xCC); / 跳過讀序號列號的操作 WriteOneChar(0x44); / 啟動溫度轉換 Init_DS18B20(); WriteOneChar(0xCC); /跳過讀序號列號的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 a=ReadOneChar();/低位 b=ReadOneChar();/高位 tt=(b*256+a)*0.0625*100;/2個8位合成16位 t=(int)tt; /*t=b; t0;a-) for(b=100;b0;b-); /延時約1S IAP_CONTR = 0x60; else TI=0; 8051單片機的PO口用作通用I/O口輸入時,若通過TTL“OC”門輸入數據,應該注意什么?為什么?需要上拉電阻。OC門電路無法輸出高低電平,只有靠上拉電阻才能實現。這是我剛寫的一個74HC595 驅動8段數碼管的,程序是讓數碼管0到9循環(huán)顯示求一個8051接74HC595 8段數碼管的C代碼#include sbit sclk=P20;sbit sda=P21;sbit slck=P22;int tab10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void delay() int i,j;for(i=0;i255;i+)for(j=0;j80;j+);void bit_dat(bit i) sclk=0; sda=i; sclk=1;void dat(char i) slck=0;bit_dat(bit)(tabi&0x80);bit_dat(bit)(tabi&0x40);bit_dat(bit)(tabi&0x20);bit_dat(bit)(tabi&0x10);bit_dat(bit)(tabi&0x08);bit_dat(bit)(tabi&0x04);bit_dat(bit)(tabi&0x02);bit_dat(bit)(tabi&0x01);slck=1;main() int i;while(1) for(i=0;i10;i+)dat(i); delay();i=0;8051的時鐘周期,機器周期,指令周期是如何分配的?當振蕩頻率為10MHZ時,一個機器周期為多少微秒?8051的時鐘周期即CPU的晶振的振蕩頻率的振蕩周期(頻率的倒數)當振蕩頻率為10MHZ時,振蕩周期=1/10MHZ=0.1us機器周期是完成一個基本操作的時間單元,一個機器周期=12個時鐘周期當振蕩頻率為10MHZ時,機器周期=12x0.1=1.2us8051的指令周期,指取出并執(zhí)行一條指令的時間。一般為1-4個機器周期指令集8051 INSTRUCTION SET1.Arithmetic operations:Mnemonic Byte CycADD A,Ri 1 1ADD A,Rn 1 1ADD A,direct 2 1ADD A,#data 2 1ADDC A,Ri 1 1ADDC A,Rn 1 1ADDC A,direct 2 1ADDC A,#data 2 1SUBB A,Ri 1 1SUBB A,Rn 1 1SUBB A,direct 2 1SUBB A,#data 2 1INC A 1 1INC Ri 1 1INC Rn 1 1INC DPTR 1 1INC direct 2 1INC direct 2 1DEC A 1 1DEC Ri 1 1DEC Rn 1 1DEC direct 2 1MUL AB 1 4DIV AB 1 4DA A 1 12.Logical opreations:ANL A,Ri 1 1XRL A,Ri 1 1ANL A,Rn 1 1XRL A,Rn 1 1ANL A,direct 2 1XRL A,direct 2 1ANL A,#data 2 1XRL A,#data 2 1ANL direct,A 2 1XRL direct,A 2 1ANL direct,#data 3 2XRL direct,#data 3 2ORL A,Ri 1 1CLR A 1 1ORL A,Rn 1 1CPL A 1 1ORL A,direct 2 1RL A 1 1ORL A,#data 2 1RLC A 1 1ORL direct,A 2 1RR A 1 1ORL direct,#data 3 2RRC A 1 1SWAP A 1 13.Data transfer:Mnemonic Byte CycMOV A,Ri 1 1MOV DPTR,#data16 3 2MOV A,Rn 1 1MOVC A,A+DPTR 1 2MOV A,direct 2 1MOVC A,A+PC 1 2MOV A,#data 2 1MOVX A,Ri 1 2MOV Ri,A 1 1MOVX A,DPTR 1 2MOV Ri,direct 2 2MOVX Ri,A 1 2MOV Ri,#data 2 1MOVX DPTR,A 1 2MOV Rn,A 1 1PUSH direct 2 2MOV Rn,direct 2 2POP direct 2 2MOV Rn,#data 2 1XCH A,Ri 1 1MOV direct,A 2 1XCH A,Rn 1 1MOV direct,Ri 2 2XCH A,direct 2 1MOV direct,Rn 2 2XCHD A,Ri 1 1MOV direct,direct 3 2MOV direct,#data 3 24.Boolean variable manipulation:Mnemonic Byte CycCLR C 1 1ANL C,bit 2 2SETB C 1 1ANL C,/bit 2 2CPL C 1 1ORL C,bit 2 2CLR bit 2 1ORL C,/bit 2 2SETB bit 2 1MOV C,bit 2 1CPL bit 2 1MOV bit,C 2 25.Program and machine control:Mnemonic Byte CycNOP 1 1JZ rel 2 2RET 1 2JNZ rel 2 2RETI 1 2JC rel 2 2ACALL addr11 2 2JNC rel 2 2AJMP addr11 2 2JB bit,rel 3 2LCALL addr16 3 2JNB bit,rel 3 2LJMP addr16 3 2JBC bit,rel 3 2SJMP rel 2 2CJNE A,direct,rel 3 2JMP A+DPTR 1 2CJNE A,#data,rel 3 2DJNZ Rn,rel 2 2CJNE Ri,#data,rel 3 2DJNZ direct,rel 3 2CJNE Rn,#data,rel3 28051引腳功能8051 基本資料如下:8051 主要特性8051 引腳說明8051 中斷服務常式的進入點8051 特殊目的寄存器8051 內部控制寄存器at89c51 為 ATMEL 所生產的可電氣燒錄清洗的 8051 相容單芯片,其內部程序代碼容量為4KB8051主要功能列舉如下: 為一般控制應用的 8 位單芯片 晶片內部具時鐘振蕩器(傳統最高工作頻率可至 12MHz) 內部程式存儲器(ROM)為 4KB 內部數據存儲器(RAM)為 128B 外部程序存儲器可擴充至 64KB 外部數據存儲器可擴充至 64KB 32 條雙向輸入輸出線,且每條均可以單獨做 I/O 的控制 5 個中斷向量源 2 組獨立的 16 位定時器 1 個全多工串行通信端口 8751 及 8752 單芯片具有數據保密的功能 單芯片提供位邏輯運算指令VCC8051 電源正端輸入,接+5V。VSS電源地端。XTAL1單芯片系統時鐘的反相放大器輸入端。XTAL2系統時鐘的反相放大器輸出端,一般在設計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統就可以動作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統更穩(wěn)定,避免噪聲干擾而死機。RESET8051的重置引腳,高電平動作,當要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,8051便能完成系統重置的各項動作,使得內部特殊功能寄存器之內容均被設成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。EA/VppEA為英文External Access的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當此引腳接低電平后,系統會取用外部的程序代碼(存于外部EPROM中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因為其內部無程序存儲器空間。如果是使用 8751 內部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至8751內部EPROM時,可以利用此引腳來輸入21V的燒錄高壓(Vpp)。ALE/PROGALE是英文Address Latch Enable的縮寫,表示地址鎖存器啟用信號。8051可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總線(A0A7)鎖進鎖存器中,因為8051是以多工的方式送出地址及數據。平時在程序執(zhí)行時ALE引腳的輸出頻率約是系統工作頻率的1/6,因此可以用來驅動其他周邊晶片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當成程序規(guī)劃的特殊功能來使用。PSEN此為Program Store Enable的縮寫,其意為程序儲存啟用,當8051被設成為讀取外部程序代碼工作模式時(EA=0),會送出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。8051可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數據存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。PORT0(P0.0P0.7)端口0是一個8位寬的開路汲極(Open Drain)雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內部有一提升電路,P0在當做I/O用時可以推動8個LS的TTL負載。如果當EA引腳為低電平時(即取用外部程序代碼或數據存儲器),P0就以多工方式提供地址總線(A0A7)及數據總線(D0D7)。設計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0A7,再配合端口2所送出的A8A15合成一完整的16位地址總線,而定址到64K的外部存儲器空間。PORT2(P2.0P2.7)端口2是具有內部提升電路的雙向I/O端口,每一個引腳可以推動4個LS的TTL負載,若將端口2的輸出設為高電平時,此端口便能當成輸入端口來使用。P2除了當做一般I/O端口使用外,若是在8051擴充外接程序存儲器或數據存儲器時,也提供地址總線的高字節(jié)A8A15,這個時候P2便不能當做I/O來使用了。PORT1(P1.0P1.7)端口1也是具有內部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個LS TTL負載,同樣地若將端口1的輸出設為高電平,便是由此端口來輸入數據。如果是使用8052或是8032的話,P1.0又當做定時器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。PORT3(P3.0P3.7)端口3也具有內部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數控制及外部數據存儲器內容的讀取或寫入控制等功能。其引腳分配如下:P3.0:RXD,串行通信輸入。P3.1:TXD,串行通信輸出。P3.2:INT0,外部中斷0輸入。P3.3:INT1,外部中斷1輸入。P3.4:T0,計時計數器0輸入。P3.5:T1,計時計數器1輸入。P3.6:WR:外部數據存儲器的寫入信號。P3.7:RD,外部數據存儲器的讀取信號。(1)累加器A(Accumulator)寫程序時大部分的指令運算都通過此寄存器,包括數據轉移、儲存運算結果和條件轉移判斷。(2)B寄存器此寄存器主要用于乘法及除法指令中,在乘法運算中存放乘積結果的高字節(jié)數據;在除法運算中則存放余數。當然也可以做一般寄存器來使用。(3)程序狀態(tài)字PSW(Program Status Word)此寄存器用來存放CPU的狀態(tài),類似一般CPU的標志寄存器,使用者可以改變其值來控制CPU的執(zhí)行。(4)堆疊指針SP為8位的寄存器,用以指示目前堆疊區(qū)的存放位置,堆疊區(qū)最多只有256,而且一定在內部RAM中,當8051系統重置后SP指向07H,因此程序一執(zhí)行時通常會將堆疊往后移,避免程序執(zhí)行時把堆疊破壞掉。(5)數據指針DPTR(Data Pointer)DPTR是一個16位寄存器,由DPH及DPL兩寄存器組成,系統DPTR可以看成是16位寄存器尋址到完整的64K存儲器空間或是看成兩個8位寄存器來加以利用。一旦當成16位寄存器便可利用指令MOVX A, DPTR來存取外部數據存儲器,或利用指令MOVC A, DPTR來存取外部程序存儲器。(6)P0、P1、P2、P3(端口0端口3)為8051 4個I/O端口的輸出鎖存寄存器。(7)TH0、TL0、TH1、TL1定時計數寄存器分別為定時器0及定時器1的工作寄存器,這二對寄存器可以做16位的計時計數用。(8)串行端口緩沖器SBUF(Serial Buffer)用來存放串行傳輸時數據進出的工作寄存器,經由串行端口傳送數據出去是將數據寫入SBUF,而接收時則由SBUF內讀出對方傳送來的數據。(9)控制寄存器IP、IE寄存器是做8051的中斷控制用;TMOD、TCON寄存器用來做計時計數器控制;SCON則控制串行傳輸的工作模式設定。PCON則做8051省電模式操作控制。8051內部控制寄存器只有6個,想要充分發(fā)揮8051單芯片的功能必須對這些暫存器有所了解。IE、IP寄存器 :中斷控制用TMOD、TCON寄存器 :計時計數器用SCON寄存器 :串行傳輸控制PCON寄存器 :省電模式操作以下分別列表介紹??晌粚ぶ罚刂罚篈8HEA(IE.7) :EA=0時,所有中斷禁用(中斷不產生)。EA=1時,各中斷之產生由個別的啟用位決定。(IE.6) :保留。ET2(IE.5):啟用定時器 2 溢位之中斷(8052使用)。ES(IE.4) :啟用串行端口之中斷(ES=1啟用,ES=0禁用)。ET1(IE.3):啟用定時器1中斷。EX1(IE.2):啟用外部中斷INT1之中斷。ET0(IE.1):啟用定時器0中斷。EX0(IE.0):啟用外部中斷INT0之中斷??晌粚ぶ罚刂稡8H。(IP.7) :保留。(IP.6) :保留。PT2(IP.5):設定定時器 2 之優(yōu)先次序(8052使用)。PS(IP.4) :設定串行端口之中斷優(yōu)先順序。PT1(IP.3):設定定時器 1 之優(yōu)先順序。PX1(IP.2):設定外部中斷 INT1 之優(yōu)先順序。PT0(IP.1):設定定時器 0 之優(yōu)先順序。PX0(IP.0):設定外部中斷 INT0 之優(yōu)先順序。不可位尋址,地址89H。定時器1 定時器0 GATE :定時器動作開關控制位,當GATE=1 時,INT0或INT1 引腳為高電平,同時TCON中的 TR0 或 TR1 控制位為1時,計時/計數器 0 或 1 才會動作。若GATE=0,則只要將TR0或TR1控制位設為1,計時/計數器0或1即可動作。C/T :做定時器或計數器功能之選擇位。C/T=1為計數器,由外部引腳 T0 或 T1 輸入計數脈沖。C/T=0時為定時器,由內部系統時鐘提供計時工作脈沖。M1: 模式選擇位1。M0: 模式選擇位0。可位尋址,地址88H。TF1(TCON.7):定時器1溢位標志,當計時溢位時,由硬件設定為1,在執(zhí)行過相對的中斷服務常式后則自動清除為0。TR1(TCON.6):定時器1啟動控制位,可以由軟件來設定或清除。TR1=1時啟動定時器動作,TR1=0時關閉。TF0(TCON.5):定時器0溢位標志,當計時溢位時,由硬件設定為1,在執(zhí)行過相對的中斷服務常式后則自動清除為0。TR0(TCON.4):定時器0啟動控制位,可以由軟件來設定或清除。TR0=1時,啟動定時器動作,TR0=0時關閉。IE1(TCON.3):外部中斷1動作標志,當外部中斷被偵測出來時,硬件自動設定此位,在執(zhí)行過中斷服務常式后,則消除為0。IT1(TCON.2):外部中斷1動作型式選擇,IT1=1時,由下降緣產生外部中斷,IT1=0時,則為低電平產生中斷。IE0(TCON.1):外部中斷0動作標志,當外部中斷被偵測出來時,硬件自動設定此位,在執(zhí)行過中斷服務常式后,則清除為0。IT0(TCON.0):外部中斷0動作型式選擇,IT0=1時為下降緣產生外部中斷,IT0=0 時則為低電平產生中斷??晌粚ぶ罚刂?8H。SM0(SCON.7):串行端口模式設定位0。SM1(SCON.6):串行端口模式設定位1。SM2(SCON.5):8051連接多重處理器通信的控制位。REN(SCON.4):串行通信接收啟用信號,該位可以由軟件來設定。TB8(SCON.3):在串行通信模式2和模式3操作時第9個傳送數據位。RB8(SCON.2):在串行通信模式2和模式3操作時第9個接收數據位。TI(SCON.1) :串行通信傳送的中斷處理標志。RI(SCON.0) :負責串行通信接收的中斷處理標志。模式選擇:不可位尋址,地址87H。SMOD:雙倍波特率產生控制位。 :保留3位。GF1 :一般用途標志。GF0 :一般用途標志。PD :降低8051功率消耗控制位,PD=1時設定,PD=0為清除。IDL :8051晶片閑置狀態(tài)操作控制位。8051的基本電路中接入時鐘脈沖有什么用時鐘脈沖?是晶振嗎?若是問晶振,因為單片機內部電路說到底就是個時序邏輯電路(含有鎖存器、觸發(fā)器等),而時序邏輯電路與組合邏輯電路最大的不同就是它需要時鐘,這樣它才能被啟動工作、確定內部各器件狀態(tài)改變的先后順序,以正常工作。而晶振是由石英晶體做成,能發(fā)出頻率很穩(wěn)定的脈沖,可以作為單片機的時鐘標準。單片機電子實時時鐘/萬年日歷系統懸賞分:0 - 提問時間2006-5-30 17:58 【一】題目:電子實時時鐘/萬年日歷系統【二】本方案實現功能: 1顯示準確的北京時間(時、分、秒)及公歷日期顯示功能(年、月、日)2可通過按鍵切換年、月、日及時、分、秒的顯示狀態(tài)3可隨時可以調校年、月、日或時、分、秒4可每次增減一進行時間調節(jié),也可快速增減進行時間調節(jié)5有鬧鐘功能,模擬真實鬧鐘聲音,鬧鐘聲音由緩慢逐漸變?yōu)榧贝?附帶秒表功能7可動態(tài)完整顯示年份,實現真正的萬年歷【三】方案考慮:1硬件方案:(1)led數碼管:采用8只數碼管實現顯示功能。(2)按鍵:采用4個按鍵實現調節(jié)時間,跳轉執(zhí)行功能等。? 按鍵分布 ? 按鍵功能:1) 按鍵1:短按轉換年月日/時分秒;長按進入鬧鐘設置。2) 按鍵2:短按移位修改;在正常計時狀態(tài)下長按進入秒表;在鬧鐘設置狀態(tài)下長按開鬧鐘。3) 按鍵3:在修改狀態(tài)下短按被修改位逐步加一,長按被修改位快速增加;在正常計時并顯示年月日狀態(tài)下短按顯示完整年月。4) 按鍵4:在修改狀態(tài)下短按被修改位逐步減一,長按被修改位快速減少;在正常計時并顯示年月日狀態(tài)下短按顯示月日星期。按鍵數目考慮:采用4個按鍵的目的在于簡化操作。片機驅動LED數碼管有很多方法,按顯示方式分,有靜態(tài)顯示和 動態(tài)(掃描)顯示,按譯碼方式可分硬件譯碼和軟件譯碼之分。 靜態(tài)顯示就是顯示驅動電路具有輸出鎖存功能,單片機將所要顯示的數據,顯示數據穩(wěn)定,占用很少的CPU時間。動態(tài)顯示需要CPU時刻對顯示器件進行數據刷新,顯示數據有閃爍感,占用的CPU時間多。 這兩種顯示方式各有利弊;靜態(tài)顯示雖然數據穩(wěn)定,占用很少的CPU時間,但每個顯示單元都需要單獨的顯示驅動電路,使用的硬件較多; 動態(tài)顯示雖然有閃爍感,占用的CPU時間多,但使用的硬件少,能節(jié)省線路板空間。 硬件譯碼就是顯示的段碼完全由硬件完成,CPU只要送出標準的BCD碼即可,硬件接線有一定標準。軟件譯碼是用軟件來完成硬件的功能,硬件簡單,接線靈活,顯示段碼完全由軟件來處理,是目前常用的顯示驅動方式。 比較常用的顯示驅動芯片有: 74LS164 , CD4094+ULN2003(2803) ,74HC595+ULN2003(2803) , TPIC6B595,AMT9095B, AMT9595等許多。 另外,市場上還有一些專用的LED掃描驅動顯示模塊如MAX7219等,功能很強,價格稍高一些。下面是一個用74LS164驅動顯示的例子和一個用4094掃描驅動顯示的例子: 上例圖中加了一個PNP型的三極管來控制數碼管的電源,是因為164沒有數據鎖存端,數據在傳送過程中,對輸出端來說是透明的,這樣,數據在傳送過程中,數碼管上有閃動現象,驅動的位數越多,閃動現象越明顯。為了消除這種現象,在數據傳送過程中,關閉三極管使數碼管沒電不顯示,數據傳送完后立刻使三極管導通,這樣就實現鎖存功能。這種辦法可驅動十幾個164顯示而沒有閃動現象。 這個例子是用4094做位選,用89C2051的P1口線做段驅動來掃描驅動9位數碼管的顯示。 由于4094只有8個輸出口線,其中第九位是用CPU口線直接進行位選的。9個LED的所有相同位置的段口線都接到一起,然后接到單片機的一個口線上,供八段,使用8條CPU口線。其軟件的工作過程是這樣的:要在LED上顯示1-9位數,首先將1的段碼送到P1口線上,然后向4094送位選數據01,使4094的Q1口線輸出高電平,選中第一位數碼管,使陽極得電,在第一位上就顯示出1,重復上述過程,一直到第九位,然后不斷重復這一過程,就實現了掃描顯示?;趩纹瑱C總線方式的數碼管接口電路(1)在開發(fā)單片機的過程中,常常會因為資源不足而不得不大量擴展接口芯片以滿足應用系統的需要,其中原因之一就是人機界面中的鍵盤、顯示占用了系統太多資源,造成系統龐大,并降低了系統的可靠性。在單片機應用系統中。通常鍵盤、顯示可以采用一些通用或專用芯片進行擴展,以節(jié)省單片機資源,但和系統開銷之間有不可調和的矛盾。為解決這一問題,我們將數碼管顯示也做成映射為存儲空間的方法來選通數碼管,極大地節(jié)約了單片機資源。系統造價也減少了,較之我們現在流行的數碼管接口電路有極大的優(yōu)勢。它不需要像傳統的靜態(tài)顯示那樣需要大量硬件作支持,也不像一般的動態(tài)顯示那么難于編程,更為突出的一點就是非常容易擴展更多數碼管顯示。 這個問題是筆者在備戰(zhàn)大學生電子設計大賽時遇見的。當時我們要盡量壓縮最小系統的硬件開銷,又不至于減少其功能,碰到最棘手的問題就是顯示部分。我們首先想用串口通信加74LS164的方案解決,但是手工制作確實難度很大。后來我們用專用顯示芯片MAX7912完成,同樣有上述問題。我們還用過8255作控制接口,雖然較前兩種解決方案有所改進,但是系統造價并沒有降下來,最終我們選擇了基于單片機總線方式的數碼管接口電路,把它用在統一制作的單片機最小系統板上,效果非常明顯。只需額外加一個74LS 3 7 3鎖存器和74LS245作驅動,就非常

溫馨提示

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

評論

0/150

提交評論