8051應用-電子密碼鎖
78
0
0
全文
(2) 8051應用電子密碼鎖. 資 訊 工 程 學 系. 逢 甲 大 學. 專 題 報 告 電 8 子 0 密 5 碼 1 鎖 應 用. 顏 吉 村. 93. 逢甲大學 e-Paper (92學年度).
(3) 8051應用電子密碼鎖. 圖表目錄 .......................................... III 第一章 導 論 ………………………………………………….1 第二章. 8051 概述 …………………………………………… 1 2.1 MCS-51 簡介 …………………………………… 2 2.2 MCS-51 的接腳 ………………………………… 4 2.3 8051 的記憶體結構 …………………………… 8 2.3.1 程式記憶體 ……………………………9 2.3.2 外部資料記憶體 ………………………11 2.3.3 內部資料記憶體 ………………………13 2.4 MCS-51 的中斷結構 ……………………………32 2.4.1 中斷致能與優先權結構 ………………33 2.4.2 中斷如何動作 …………………………34. 第三章. LCD 的介紹 ……………………………38 3.1 LCD 簡介 …………………………… 38 3.2 LCD 硬體說明 …………………………… 38 3.3 LCD 暫存器及指令碼說明………………………41 3.4 軟體規劃 …………………………………… 47 3.5 LCD 重置及初始化…………………………47 - I -. 逢甲大學 e-Paper (92學年度).
(4) 8051應用電子密碼鎖. 第四章. 實作 ………………………………………………… 48. 第五章. 總結…………………………………………………52 5.1 實驗心得………………………………………52 5.2 問題討論………………………………………53 5.3 參考資料………………………………………54 附錄. ………………………………………55. - II –. 逢甲大學 e-Paper (92學年度).
(5) 8051應用電子密碼鎖. 圖 表 目 錄 圖 2-1:MCS-51 的成員……………………………………… 2 圖 2-2:MCS-51 的 40Pin DIP 包裝的接腳圖……………… 4 圖 2-3:8051 記憶體映像圖…………………………………9 圖 2-4:中斷服務程式的進入點……………………………11 圖 2-5:將 PSEN 與 RD 合併成 MRD………………………… 12 圖 2-6:內部 RAM 的較低 128 位元組………………………14 圖 2-7:8051 的前面 128 個位元位址………………………16 圖 2-8:RAM 裡的位元位址………………………………… 17 圖 2-9:SFR 各個暫存器重置後的初始值………………… 20 圖 2-10:PWS 暫存器…………………………………………24 圖 2-11:PCON 電源控制暫存器…………………………… 25 圖 2-12:IE 中斷致能暫存器……………………………… 26 圖 2-13:IP 中斷優先權暫存器…………………………… 27 圖 2-14:TCON 計時器/計數器控制暫存器…………………28 圖 2-15:TMOD 計時器/計數器模式控制暫存器……………29 圖 2-16:T2CON:TIMER2 控制暫存器………………………30 圖 2-17:SCON 串列埠控制暫存器…………………………31 - III 逢甲大學 e-Paper (92學年度).
(6) 8051應用電子密碼鎖. 圖 2-18:優先權輪詢順序………………………………… 34 圖 2-19:中斷源之向量位址……………………………… 36. - IV –. 逢甲大學 e-Paper (92學年度).
(7) 8051應用電子密碼鎖. 第一章. 導論. 在修習數位電路時,有許多作業,當時並不太了解其原理,當時發 現許多 IC 經由電路連接後,可以產生許多功能,覺得相當有意思。之 後有一門課為「微處理機介面」時,發現一顆小小的 8051IC 可以做許 多的事情,於是想說如果可以將其應用在的常生活中,也是一件不錯 的事情,譬如現在社會上經濟不景氣,許多人便挺而走險做些不正當 的行為造成他人的損失,如偷竊,若能運用 8051 做一個密碼鎖,也是 一個不錯的方法,當然這個專題只是一個小小的密碼鎖功能不一定很 強大,但若持續研究那也可能成為一個不錯密碼鎖。. 第二章. 8051 概述. 2.1 MCS-51 簡介 2.2 MCS-51 的接腳 2.3 8051 的記憶體結構 2.3.1. 程式記憶體. 2.3.2. 外部資料記憶體. 2.3.3. 內部資料記憶體 -1逢甲大學 e-Paper (92學年度).
(8) 8051應用電子密碼鎖. 2.4 MCS-51 的中斷結構 2.4.1 中斷致能與優先權結構 2.4.2. 2.1. 中斷如何動作. MCS-51 簡介 MCS-51 是 Intel 公司所設計的 8051 系列單晶片的總稱,較具知名. 度的編號有 8051、8751 和 8031,這些不同的單晶片都使用相同的核心 CPU 與指令集,只是能在靠製造 IC 時給予不同的周邊設計,分別賦予 這些 IC 一個特別編號。 圖 2-1 MCS-51 的成員 名稱. ROMLESS. EPROM. ROM(位元組) RAM(位元組) 16 位元計時器 電路型式. 8051. 8031. (8751). 2K. 128. 2. HMOS. 8051AH. 8031AH. 8751H. 2K. 128. 2. HMOS. 8052AH. 8032AH. 8752H. 2K. 256. 3. HMOS. 80C51BH 80C31BH. 87C51. 2K. 128. 2. CHMOS. 以下將 MCS-51 系列單晶片的主要功能列舉如下: 1. 專為控制應用所設計的 8 位元 CPU 2. 有完整的單位元邏輯運算指令 - 2 逢甲大學 e-Paper (92學年度).
(9) 8051應用電子密碼鎖. 3. 有 32 條(4 個 Port)雙向且每條都可以被單獨定址的 I/O 4. 內部有 128byte 可供讀/寫的 RAM 5. 內部有兩個 16 位元 Timer/Counter 6. 有一個通信用的全雙工 UART(串列 I/O) 7. 可接受 5 個中斷源,且有 2 層優先權的中斷結構 8. 內部有時脈振盪器(最高頻率可到 12MHz) 9. 內部有 4K 的程式記憶體 10. 可在外部擴充到 64K 程式記憶體(EPROM) 11. 可在外部擴充 64K 資料記憶體(RAM). - 3 -. 逢甲大學 e-Paper (92學年度).
(10) 8051應用電子密碼鎖. 2.2 MCS-51 的接腳 圖 2-2 MCS-51 的 40Pin DIP 包裝的接腳圖. P1.0 (T2) P1.1(T2EX) P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET P3.0(RXD) P3.1(TXD) P3.2(INT0)’ P3.3(INT1)’ P3.4(T0) P3.5(T1) P3.6(WR)’ P3.7(RD)’ XTAL2 XTAL1 Vss. 1~8 腳. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20. 8051 8751 8052 8752 (8031) (8032). 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21. Vcc P0.0(ADD) P0.1(AD1) P0.2(AD2) P0.3(AD#) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA’/Vpp ALE/PROG PSEN’ P2.7(A15) P2.6(A14) P2.5(A13) P2.4(A12) P2.3(A11) P2.2(A10) P2.1(A9) P2.0(A8). (P1.0~P1.7):. 這 8 支角是 8051 的 I/O port,稱為 PI。第一腳(P1.0)是 LSB,第 8 支腳(P1.7)是 MSB。如果是 8052(8032 或 8752)時,P1.0 又可當作 Timer2 的外部脈波輸入腳,P1.1 又當作 T2EX,可當作另外一個外 - 4 逢甲大學 e-Paper (92學年度).
(11) 8051應用電子密碼鎖. 部中斷觸發輸入腳。P1 上的每支腳都可推動 4 個 LS TTL。 9 腳(RESET): 8051 的重置(RESET)輸入腳,當這支腳由外部輸入 High(+5V)的信 號時,8051 就被重置,8051 被重置後就從位址 0000H 開始執行程式。 且特殊功能暫存器(SFR)裡的所有暫存器都會被設成已知狀態。 10~17 腳 (P3.0~P3.7): 這 8 支腳是 8051 的 I/O port,稱為 P3。第 10 支腳(P3.0)為 LSB, 第 17 支腳(P3.7)為 MSB。P3 裡的每支 I/O 腳除了可以當作單純的輸入 /輸出使用外,也當作 8051 內部的某些週邊與外界溝通個 I/O 腳。例 如 P3.0 和 P3.1 接腳的另外一個名稱為 RxD 和 TxD,當 8051 內部的 UART 被軟體啟動後,UART 會將串列資料從 TxD 腳輸出,而 UART 也接收由外 部送進來的串列信號。INT0 和 INT1 是 8051 的兩個外部中斷輸入部。 T0 是 Timer0 的外部脈波輸入腳。T1 是 Timer1 的外部脈波輸入腳。WR, RD,當您再 8051 的外部擴充資料記憶體(RAM)時,這兩條線是控制寫 與讀的信號。P3 上的每一隻 I/O 腳都可以做兩種用途。那 8051 怎麼知 道 P3 上的某支腳是當 I/O 或當另一種用途,例如您要使用 UART 時您 將第 10 腳看成 RxD,第 11 腳看成 TxD 加以使用就可以了。但是有一點 必須特別注意,那就是當作其他功能(不當 - 5 -. 逢甲大學 e-Paper (92學年度).
(12) 8051應用電子密碼鎖. I/O 使用)使用的那支腳的內部栓鎖器的內容必須設為 1,其他的 功能(如 TxD,RxD,RD,ER,…等)才會有作用。P3 上的每支 I/O 腳都 可推動 4 個 LS TTL。 18~19 腳(XTAL2,XTAL1): 這兩支腳是 8051 內部時脈振盪器的輸入端,您可以在這兩支腳上 跨街一個 12MHz 的工作頻率,供內部使用。8051 會根據這個速度工作。 若未特別註明,這個振盪器的工作頻率是在 1MHz~12MHz 之間的任何一 個。如果線路板上已有振盪器,那這個振盪器所產生的脈波(Clock)也 可以直接輸入給 8051 使用。這個外部送給 8051 使用的脈波是從第 18 腳(XTAL2)輸入,而 19 腳(XTAL1)必須接地,以上的接法是 CMOS 的 8051(如 8051AH)。如果您是使用 CMOS 的 8051(80C51,80C31 等),外 部的脈波必須從 19 腳(XTAL1)輸入而 18 腳空接,這個差別必須特別注 意。 40,20 腳(Vcc,Vss): 這是 8051 的電源輸入端,40 腳接電源的正端的 20 腳接地。 電源規格是 5V +/- 10﹪。 21~28 腳(P2.0~P2.7): 這 8 支腳是 8052 的 I/O port,稱為 P2,P2.0 為 LSB,P2.7 為 - 6 -. 逢甲大學 e-Paper (92學年度).
(13) 8051應用電子密碼鎖. MSB。P2 除了當作 I/O 使用之外。如果您在 8051 的外面擴充程式 記憶體或資料記憶體時,P2 就變成 8051 的位址匯流排的高位元組(即 A8~A15),此時 P2 就不能當作 I/O 使用。P2 上的每支 I/O 腳可推動 4 個 LS TTL。 39~32 腳(P0.0~P0.7): 這 8 支腳也是 8051 的 I/O port,稱為 P0 其中 P0.0 為 LSB,P0.7 為 MSB。如果將 P0 當作 I/O 使用時必須特別注意 P0 的輸出型態是 Open Drain,其他三個 I/O port(P1,P2,P3)內部有 pull high 電路。 P0 除了當作 I/O 使用外,如果您在 8051 的外面擴充程式記憶體或資料 記憶體時,P0 就當作位址匯流排(A0~A7)和資料匯流排(D0~D7)多工使 用。您必須再外部加一個 8 位元栓鎖器將位址匯流排從 PC 上分離出 來,這個 A0~A7 與 P2 所提供的 A8~A15 合成一個 16 位元的位址匯流排, 因此 8051 可以在外部定址到 64K 的記憶體。 29 腳(PSEN): 這支腳是 8051 用來讀取放在外部程式記憶體的指令時所用的讀去 信號,通常這支腳是接到 EPROM 的 OE 腳。8051 分別致能放在外部的 EPROM(程式記憶體)與 RAM 資料記憶體是兩塊獨立的記憶體,且這兩塊 記憶體都可以接到 64K,因此我們說 8051 的定址能力可達 128K。 - 7 -. 逢甲大學 e-Paper (92學年度).
(14) 8051應用電子密碼鎖. 30 腳(ALE): 這支腳的名稱為 ”位址拴住致能” (Address Latch Enable,簡 稱 ALE),8051 可以使用這支腳觸發外部的 8 位元栓鎖器,將 P0 上的 位址匯流排信號(A0~A7)鎖入栓鎖器中。 31 腳(EA): 這是一支輸入腳,當 EA=0 時,8051 一律執行外部程式記憶體裡的 程式,因此 8051 內部的 4K 程式記憶體就沒有用了。因此如果您要使 用內部的程式記憶體時,一定要將 EA 接+5V。因為 8031(或 8032)內部 沒有程式記憶體,它的 EA 必須接地。. 2.3. 8051 的記憶體結構 8051 的記憶體可以分成 3 塊獨立的記憶體,如圖所示: 1. 內部加上外部的程式記憶體(ROM)共 64K byte 2. 可在外部擴充 64K byte 資料記憶體(RAM) 3. 內部資料記憶體空間 256 byte. - 8 -. 逢甲大學 e-Paper (92學年度).
(15) 8051應用電子密碼鎖. 圖 2-3 8051 記憶體映像圖. FFFF. FFFF 60K byte 外部擴充 EPROM FF 64K byte 外部擴充 RAM. 間接 定址區 (8052). SFR 特殊功能 暫存器. 1000. 0FFF. 7F 4K byte 內部 或 外部. 直接 或 間接 定址區. 0000. 0000. (A)程式記憶體. 2.3.1. 00. (B)外部資料記憶體. (C)內部資料記憶體. 程式記憶體. 程式記憶體是存放 8051 所執行的程式碼的地方,CPU 會主動到這 塊記憶體讀取要執行的指令碼,因此這塊記憶體的資料只能被 CPU 讀 取,而無法寫入資料。 - 9 逢甲大學 e-Paper (92學年度).
(16) 8051應用電子密碼鎖. 程式記憶體的空間最多可達 64K byte,在 8051,8751 裡已有最低 的 4K byte(0000H ~ 0FFFH),因此在外部可再擴充 60K byte EPROM; 而 8031H,8032H 內部沒有 ROM,因此外部可擴充 64K byte EPROM; 8052AH,8752AH 內部已有 8K byte 的程式記憶體,因此可以在外部擴 充 56K byte EPROM。8051 讀取程式記憶體的激發信號是 PSEN。 8051 是如何決定程式記憶體的前面 4K byte(8052 是 8K)要到內部 或到外接程式記憶體去讀取指令呢?這就是 8051 的 EA 腳(第 31 腳)的 功能,如果我們將 EA 腳接地(邏輯 0),則 8051 會將前面 4K 移到外部, 也就是說原來在 8051 內部的 4K byte 的程式記憶體無效,就算將程式 燒到內部的 4K byte 程式記憶體裡,8051 也看不到。 如果將 EA 接到+5V(邏輯 1),則 8051 就會到內部去讀去前面 4K 的 程式記憶體,超過 4K 的部分(1000H~FFFFH),8051 會自動切換到外部 來讀取。因此 EA 接腳是決定內部程式記憶體是否有效的控制腳,當 EA=0,內部程式記憶體無效;當 EA=1 內部程式記憶體有效。例如 8031AH,8032AH 內部沒有 ROM,因此使用 8031AH 或 8032AH 時,必須 將它的 EA 腳接地。 在寫 8051 的程式時,必須知道幾個程式記憶體的特殊位址,這些 位址是各種中斷服務程式的進入點,表 2 列出了各種中斷的進入點 - 10 -. 逢甲大學 e-Paper (92學年度).
(17) 8051應用電子密碼鎖. 位址,其中位址 0000H 是重置(RESET)的進入點,這意思是說,8051 被重置時,從位址 0000H 開始執行程式。 圖 2-4 中斷服務程式的進入點 中. 2.3.2. 斷 源. 向 量 位 址. RESET. 0000h. TNT0. 0003h. Timer0. 000Bh. INT1. 000Bh. Timer1. 001Bh. UART. 0023h. Timer2. 002Bh. 外部資料記憶體. 8051 允許您在外部擴充 64K byte 資料記憶體(RAM)。這 64K 位址 空間裡,除了可以放 RAM 以外,也可以採用 Memory Map I/O 的方式將 一些標準 I/O(例如 8255,8253 等)的位址解在這一塊記憶體裡。 定址 64K 資料記憶體空間需要 16 條位址線和 8 條資料線,這 16 條 位址匯流排和 8 條資料匯流排與程式記憶體使用相同的匯流排,然後 8051 是以控制匯流排來區分這兩塊不同的記憶體。8051 讀取外部 - 11 逢甲大學 e-Paper (92學年度).
(18) 8051應用電子密碼鎖. 程式記憶體時使用 PSEN,而讀/寫外部資料記憶體使用 RD 和 WR 信號。 如此一來程式記憶體和資料記憶體就是兩個完全獨立的 64K 空間。 8051 是執行到 MOVX. A,@DPTR 和 MOVX. A,@Ri. 到外部資料記憶體讀入一個 byte 資料,當執行 MOVX MOVX. 指令時,就會 @DPTR,A 或. @Ri,A 就會將資料寫到外部資料記憶體。. 有時候在外部擴充程式記憶體和資料記憶體,其總和不超過 64K 時,我們可以採用兩塊記憶體合併成一個 64K 的設計方式,合併的好 處是可以讓程式設計更具彈性。 合併的方法很容易,因為 8051 將程式記憶體和資料記憶體分開的 方法是將這兩塊記憶體的讀取激發信號分別使用不同的信號,即 PSEN 讀取程式記憶體,RD 讀取資料記憶體,因此要將這兩塊記憶體合併, 只要將 PSEN 及 RD 信號合併成一個信號即可,方法是將 PSEN 與 RD 使 用 AND 閘做邏輯 AND 即可,如圖所示,可將 AND 閘的輸出看成一個記 憶體讀取激發信號(MRD)激發(MRD=0),然後我們就將 MRD 接到程式記 憶體(EPROM)的輸出致能,或資料記憶體(RAM)的輸出致能就可以讀到 這兩塊記憶體的內容。. - 12 逢甲大學 e-Paper (92學年度).
(19) 8051應用電子密碼鎖. 圖 2-5. 將 PSEN 與 RD 合併成 MRD. 程式記憶體與資料記憶體合併之後,8051 的整個記憶體空間就縮 減成 64K,也可以使用合併外接 32K EPROM (27256)和 32K SRAM (62256) 的方法。在這種合併的記憶體結構裡就沒有所謂程式記憶體或資料記 憶體之分別,不管是 MOVC 或 MOVX 指令都可以定址到這 64K 的內容。 換句話說,也可以將程式放入 RAM(62256)裡執行。. 2.3.3 內部資料記憶體 8051 內部有一塊 256 個 byte 的位址空間,這塊空間是存放資料 記憶體(RAM)和特殊功能暫存器(SFR)的地方。 這塊記憶體空間雖然只有 256byte,但是 8051 將其中位指教高的 128byte(80H~FFH)採用不同的定址方式而容納了兩組 128byte 的記憶 空間,因此總共的空間為 128+128+128=384 byte。以下三個部分開加 以解說: 1. 位址 00H~7FH 的 RAM 2. 位址 80H~FFH 的 RAM 3. 位址 80H~FFH 的 SFR. 不論 8051 或 8052 都有這塊記憶體,並且可以使用直接定址或間 - 13 -. 逢甲大學 e-Paper (92學年度).
(20) 8051應用電子密碼鎖. 接定址法讀/寫其內部資料。8051 將這塊記憶體分成數種不同的用 途。下圖是 8051 對這 128byte 定義的用途說明。 圖 2-6 內部 RAM 的較低 128 位元組 7FH. (C)一般用途. 2FH. (B)可位元定址之空間 (位元位址 0-7F). 30H 在 PSW 裡的 庫選擇位元 RS1 1 1. 0. RS0 1 =RB3 0 =RB2. 1 =RB1. 20H 1FH 18H 10H. 08H. (RB3) 17H. (A)4 個暫存器庫 R0~R7. 0FH. ← 堆疊指標重置後之值. (RB2). (RB1) 07H. 0. 1 =RB0. 0. (RB0). (A) 暫存器庫 由上圖我們看到,位址 00~1FH 這 32 個 byte 被分成 4 組工 作暫存器(Register Bank),分別稱為 RB0,RB1,RB2 和 RB3, 每一組暫存器庫有 8 個 byte。程式指令將每組裡的 8 個 byte 稱為 R0~R7。但是 8051 共有四組 R0~R7,到底目前所指的 R0~R7 是屬於哪一組的 R0~R7 呢?它是由 PSW 暫存器裡的 RS1 和 RS0 - 14 -. 逢甲大學 e-Paper (92學年度).
(21) 8051應用電子密碼鎖. 這兩個 bit 加以選擇,如上圖所示,當 RS1=0 和 RS0=0 時,就 指到 RB0,當 RS1=0 和 RS0=1,就指到 RB1。 (B) 可位元定址區 位址 20H~2FH 這 16 個 byte 是 8051 內部 256 個位元位址中 的 128 個位元的所在位址。每個位元組佔了 8 個位元位址,下 圖是這 16 個位元組裡每一個 bit 的位元位址,例如 20H 這個 byte 的第 0 位元,其位元位址為 00H,然後依序編到 2FH 這個 位元組的第 7 位元為 7FH,8051 有一組單位元運算指令可以直 接對這些位元作運算。 位元位址區的另外 128 個 bit(80H~FFH),是在 SFR 暫存器 裡,如下圖所示。 (C) 一般用途 內部 RAM 的 30H~7FH 這些位元組,8051 並未定義這些位元 作任何用途,8051 稱這塊區域為使用者的 RAM(User RAM)。因 此可以規劃這塊區域當作其他用途,例如計時器的緩衝區或印 表機資料的緩衝區等。但是有一點必須注意的是,8051 的堆疊 區也是使用內部 RAM,因此必須保留一塊足夠大的 RAM 給堆疊區 使用,堆疊區的大小是依所寫的程式所需而定。 - 15 -. 逢甲大學 e-Paper (92學年度).
(22) 8051應用電子密碼鎖. 圖 2-7 8051 的前面 128 個位元位址 7FH. 一般資料存放區或堆疊區. 2FH. 7F. 7E. 7D. 7C. 7B. 7A. 79. 78. 2EH. 77. 76. 75. 74. 73. 72. 71. 70. 2DH. 6F. 6E. 6D. 6C. 6B. 6A. 69. 68. 2CH. 67. 66. 65. 64. 63. 62. 61. 60. 2BH. 5F. 5E. 5D. 5C. 5B. 5A. 59. 58. 2AH. 57. 56. 55. 54. 53. 52. 51. 50. 29H. 4F. 4E. 4D. 4C. 4B. 4A. 49. 48. 28H. 47. 46. 45. 44. 43. 42. 41. 40. 27H. 3F. 3E. 3D. 3C. 3B. 3A. 39. 38. 26H. 37. 36. 35. 34. 33. 32. 31. 30. 25H. 2F. 2E. 2D. 2C. 2B. 2A. 29. 28. 24H. 27. 26. 25. 24. 23. 22. 21. 20. 23H. 1F. 1E. 1D. 1C. 1B. 1A. 19. 18. 22H. 17. 16. 15. 14. 13. 12. 11. 10. 21H. 0F. 0E. 0D. 0C. 0B. 0A. 09. 08. 20H. 07. 06. 05. 04. 03. 02. 01. 00. 1FH. RB3 ( 8 bytes ) RB2 ( 8 bytes ) RB1 ( 8 bytes ) RB0 ( 8 bytes ). 00H. - 16 -. 逢甲大學 e-Paper (92學年度).
(23) 8051應用電子密碼鎖. (a) 圖 2-8 RAM 裡的位元位址 FFH F0H. F7. E0H. F6. F5. E7 CY. D0H. E6 AC. D7. F4. F3. E5 F0. D6. E4 RS1. D5. -. D4. A0H. 90H. 80H. D0. PSW. PT0. PX0. D2. BC. BB. BA. B9. B8. P3.5. P3.4. P3.3. P3.2. P3.1. P3.0. B7. B6. B5. B4. B3. B2. B1. B0. ET1. EX1. ET0. EA. ET2. AF P2. 7 A7. P2.6 A6 SM1. 9F. 9E. P1.7. P1.6. 97. 96. TF1 88H. D1. P. P3.6. SM0 98H. -. ACC. E1. OV. PX1. B. F0. E0. E2. D3 PT1. F1. P3. 7 B0H. A8H. -. E3 RS0. PS B8H. F2. TR1. 8F. 8E. P0.7. P0.6. 87. 86. ES. AD. AC. AB. AA. P2.5. P2.4. P2.3. P2.2. A5. A4. SM2. REN. 9D. 9C. P1.5 95 TF0 8D P0.5 85. A3 TB8 9B. P1.4 94. 93. TR0. IE1. 8C. 8B. P0.4 84. P1.3. P0.3 83. A2 RB8 9A P1.2 92 IT1 8A P0.2 82. EX0. A9. A8. P2.1. P2.0. A1. A0. T1 99 P1.1. 98. IE. P2. SCON. P1.0 90. IE0. IT0. 89. 88. 81. P3. R1. 91. P0.1. IP. P1. TCON. P0.0 80. P0. - 17 逢甲大學 e-Paper (92學年度).
(24) 8051應用電子密碼鎖. (b) SFR RAM 裡的位元位址 1.位址 80H~FFH 的 RAM 只有 8052,8752 和 8032 的內部 RAM 有這 128byte,8031,8051 和 8751 則沒有。這塊 RAM 的內容必須使用間接定址法。 2.位址 80H~FFH 的 SFR 特殊功能暫存器是一塊 128byte 的記憶空間,它是存放 8051 內部 的週邊所使用的暫存器的地方,例如 I/O port 的輸出栓鎖器(P0,P1, P2,P3),計時器的 counter,致能中斷系統的 IE 暫存器等。因為 8051 的週邊設備並不多,因此 SFR 裡 128 個位址空間並未用完,這些目前 沒有用到的位址,裡面是空的。 SFR 所使用個位址是 80H~FFH,這塊區域與 8051 的較高 128 位元組 的 RAM 使用了同一塊記憶空間,8051 採用了不同的指令的定址法來區 分這兩塊記憶體,如前面所述,RAM 是使用間接定址法,SFR 是使用直 接定址法。 在 SFR 裡的各種位元組都有其個別的名稱,在寫程式時,要用到這 些位元組,可直接呼叫其名稱,而不需要使用位址。 在 8051 被重置後(RESET=1),在 SFR 裡面的各個暫存器都會被設定 一個固定值,這些僅在每次 RESET 後都是一樣,表 3,列出了 SFR - 18 -. 逢甲大學 e-Paper (92學年度).
(25) 8051應用電子密碼鎖. 重置後的初始值。 SFR 裡面的各個暫存器: 1. PSW(程式狀態字語)暫存器 2. SP 暫存器(堆疊指標) 3. DPTR(資料指標) 4. P0,P1,P2,P3 暫存器 5. SBUF(串列阜緩衝區) 6. 計時器暫存器 7. 捕捉式暫存器(Capture Register) 8. 控制暫存器(Control Register). 暫存器名稱. 以二進制表示之值. 圖 2-9 SFR 各個暫存器重置後的初始值. - 19 -. 逢甲大學 e-Paper (92學年度).
(26) 8051應用電子密碼鎖. *ACC *B *PSW SP DPTR: DPH DPL *P0 *P1 *P2 *P3 *IP. 00000000 00000000 00000000 00000111. *IE. 8051 0XX00000 8052 0X000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000. TMOD *TCON *+T2CON TH0 TL0 TH1 TL1 +TH2 +TL2 +RCAP2H +RCAP2L *SCON SBUF PCON. 00000000 00000000 11111111 11111111 11111111 11111111 8051 XXX00000 8052 XXX00000. 00000000 00000000 未定 HMOS 0XXXXXXX CHMOS 0XXX0000. X = 未定 * = 可位元定址 +. =. 只 8052 有. - 20 -. 逢甲大學 e-Paper (92學年度).
(27) 8051應用電子密碼鎖. 1.累加器. (ACC). ACC 就是累加器暫存器,累加器指令所使用的助憶符號是 A。 2.B 暫存器 (B) B 暫存器是使用在乘法(MUL AB)和除法(DIV AB)指令時。在其 它的指令,它可以被當成一般暫存器處理。 3.PSW(程式狀態字語)暫存器 PSW 實際上就是一般 CPU 理所稱的旗號(Flags)暫存器,內部包 含有 CPU 的系統狀態資料。 4.SP 暫存器(堆疊指標) SP 暫存器只有 8 位元寬,因此 MCS-51 的堆疊區最多只有 256byte,並且一定在內部 RAM 裡。當執行 PUSH 或 CALL 指令存入 資料到堆疊區之前,SP 的內容會先被加 1。因為 SP 的內容可由指 令任意改變,因此堆疊區可以由使用者設定在內部 RAM 裡的任一個 位址。但是,在 RESET 之後,SP 的內容會被設成 07H,因此 RESET 後堆疊區是從位址 08H 開始。 5.DPTR(資料指標) DPTR 是一個 16 位元暫存器,它是由兩個 8 位元暫存器所組成, 高位元組為 DPH,低位元組為 DPL。因 DPTR 可看成一個 16 - 21 -. 逢甲大學 e-Paper (92學年度).
(28) 8051應用電子密碼鎖. 位元暫存器或看成兩個 8 位元暫存器加以處理。DPRT 的用途是 用來定址外部資料記憶體 (MOVX A,@DPTR),或程式記憶體使用(MOVC. A,@A+DPTR),因此. MCS-51 可以定址程式記憶體或資料記憶體各 64K。 6.P0,P1,P2,P3 暫存器 P0,P1,P2,P3,是 MCD-51 四個 I/O port 的輸出栓鎖器(Latch)。 7.SBUF(串列阜緩衝區) SBUF 暫存器,實際上是由兩個暫存器構成,一個是當作 UAR 傳 送資料的緩衝區,另一個是當作 UART 接收資料的緩衝區。若將資 料寫到 SBUF 時,就會將資料放入傳送緩衝區,UART 就會將這個資 料轉成串列資料透過 TXD 這條線傳出去。若去讀 SBUF,就會讀到 接收緩衝區的資料。 8.計時器暫存器 (TH0,TL0),(TH1,TL1)和(TH2,TL2)這三對暫存器,是三個 16 位元計時器的名稱分別為 Timer0,Timer1 和 Timer2。 9.捕捉式暫存器(Capture Register) (RCAP2H,RCAP2L)這一對暫存器稱為捕捉式暫存器,當 8052 的 Timer2 工作在 ”捕捉模式” (“Capture mode”)時,當 - 22 -. 逢甲大學 e-Paper (92學年度).
(29) 8051應用電子密碼鎖. T2EX(P1.1)這支接腳上的輸入信號 1←0 轉態時,TH2,TL2 的 內容會被移入 RCAP2H,RCAP2L 就是保存 TH2,TL2 的重新載入值的 地方。 10.控制暫存器(Control Registers) IP,IE 暫存器控制 MCS-51 的中斷系統;TMOD,TCON 暫存器是 控制 Timer0 和 Timer1 的工作模式;T2CON 控制 Timer2 的工作模 式;SCON 控制 UART 的工作模式等。. - 23 -. 逢甲大學 e-Paper (92學年度).
(30) 8051應用電子密碼鎖. 以下就將這些暫存器裡的各個位元的名稱及功能以圖形表示: PSW:程式狀態字語(PROGRAM STATUS WORD,可位元定址) 位址:(D0H). CY. AC. F0. RS1. CY PSW.7. 進位旗標. AC PSW.6. 輔助進位旗號. F0. 一般用途. PSW.5. RS0. RS1 PSW.4. 暫存器庫選擇位元 1. RS0 PSW.3. 暫存器庫選擇位元 0. 0V PSW.2. 溢位旗號. 0V. -. P. -. PSW.1. 保留將來使用. P. PSW.. 同位元旗號,在每個指令週期,由硬體設定或清除,以指出累 加器內 ”1” 的個數為奇數或偶數. RS1. RS0. 暫存器庫. 0. 0. 0. 00H-07H. 0. 1. 1. 08H-0FH. 1. 0. 2. 10H-17H. 1. 1. 3. 18H-1FH. 圖 2-10. 位. 址. PWS 暫存器 - 24 逢甲大學 e-Paper (92學年度).
(31) 8051應用電子密碼鎖. PCON:電源控制暫存器(POWER CONTROL REGISTER) 位址:(87H) SMOD SMOD. -. -. -. GF1. GF0. PD. IDL. 雙倍率位元,當串列工作於模式 1,2 或 3 時,如使用 Timer1 做鮑率 產生器,且 SMOD=1 則鮑率為雙倍. -. 保留將來使用. -. 保留將來使用. -. 保留將來使用. GF1. 一般用途. GF0. 一般用途. PD. 電源下降位元,80C51BH 時,設定此位元就進入電源下降模式 (僅 CHMOS 可以) IDLE 模式位元,80C51BH 時,設定此位元就進入 IDLE 模式. IDL. **若同時寫 1 至 PD 和 IDL 時,PD 優先**. 圖 2-11. PCON 電源控制暫存器. - 25 逢甲大學 e-Paper (92學年度).
(32) 8051應用電子密碼鎖. IE:中斷致能暫存器(INTERRUPT ENABLE REGISTER,可位址定址) 位址:(A8H) EA. -. ET2. ES. ET1. EX1. ET0. EX0. EA. IE.7. 如果 EA=0 時,禁止所有中斷,如果 EA=1,則各中斷 是否被接受,由各自之中斷致能位元加以設定。. -. IE.6. 位使用;保留給將來使用. ET2. IE.5. 致能 Timer2 溢位或補入之中斷(8052). ES. IE.4. 致能串列阜之中斷. ET1. IE.3. 致能 Timer1 之中斷. EX. IE.2. 致能外部中斷 1 之中斷. ET0. IE.1. 致能 Timer0 之中斷. EX0. IE.0. 致能外部中斷 0 之中斷. 圖 2-12. IE 中斷致能暫存器. - 26 -. 逢甲大學 e-Paper (92學年度).
(33) 8051應用電子密碼鎖. IP:中斷優先權暫存器(INTERRUPT PRIORITY REGISTER,可位元定址) 位址:(B8H) -. -. PT2. PS. PT1. RX1. PT0. -. IP.7. 未使用;保留給將來使用. -. IP.6. 未使用;保留給將來使用. PT2. IP.5. 定義 Timer2 之優先權層次(8052). PS. IP.4. 定義串列阜之優先權層次. PT1. IP.3. 定義 Timer1 之優先權層次. PX1. IP.2. 定義外部中斷 1 之優先權層次. PT0. IP.1. 定義 Timer0 之優先權層次. PX0. IP.0. 定義外部中斷 0 之優先權層次. 圖 2-13. PX0. IP 中斷優先權暫存器. - 27 -. 逢甲大學 e-Paper (92學年度).
(34) 8051應用電子密碼鎖. TCON:計時器/計數器控制暫存器 (TIMER/COUNTER CONTROL REGISTER) 位址:(88H) TF1. TR1. TF0. TR0. IE1. IT1. IE0. IT0. TF1:. TCON.7. 計時器 1 之溢位旗號,當計時器/計數器 1 溢位時, 會被硬體設定為 1。當處理器執行中斷服務時,硬體會 自動清除此位元。. TR1:. TCON.6. 計時器 1 之啟動位元。由軟體設定/清除以啟動/停止 計數。. TF0:. TCON.5. 計時器 0 之溢位旗號,當計時器 0 溢位時,會被硬體 設定為 1。當處理器執行中斷服務時,硬體會自動清除 此位元。. TR0:. TCON.4. 計時器 1 之啟動位元。軟體設為 1 時啟動,0 時停止。. IE1:. TCON.3. 外部中斷 1 之中斷旗號。當外部中斷被檢知時,硬體 會設定此位元。當中斷被處理時,硬體會自動清除此 位元。. IT1:. TCON.2. 外部中斷型態控制。當設定為 1 時中斷型態為負緣觸 發。當此位元若為 0 時,則為低準位觸發。. IE0:. TCON.1. 外部中斷 0 之邊緣旗號。當檢知外部中斷時,此位元 會被硬體設為 1,執行中斷服務程式時,硬體會將之清 除。. 圖 2-14 TCON 計時器/計數器控制暫存器 - 28 -. 逢甲大學 e-Paper (92學年度).
(35) 8051應用電子密碼鎖. TMOD:計時器/計數器模式控制暫存器 (TIMER/COUNTER MODE CONTROL REGISTER) 位址:(89H) GATE C/T. M1. M0. GATE. | - - - - - - - - Timer 1 - - - - - - - -. C/T. M1. M0. | - - - - - - - - Timer 2 - - - - - - - -. |. GATE. 當 TRx(在 TCON) =1 且 GATE=1,則計時器只有在 INTx 接腳 為高電位時才會計時。當 GATE=0,則計時器只在 TRx=1 時會計 時。. C/T. 計時器或計數器之選擇位元。C/T=0 時,為計時器;C/T=1 時, 位計數器。. M1. 模式選擇位元。. M0. 模式選擇位元。. M1 0 0 1 1. 1. M0 0 1 0 1. 1. 0 1 2 3. 3. 工作模式 13-bit 計時器 16-bit 計時器/計數器 8-bit 自動載入 (Timer 0)TL0 為 8 位元計時器/計 數器,由標準之計時器 0 之控制 位元控制,TH0 為 8 位元計時器 ,且由計時器 1 控制位元控制。 (Timer 1)計時器/計數器 1 停止。. 圖 2-15 TMOD 計時器/計數器模式控制暫存器 - 29 -. 逢甲大學 e-Paper (92學年度).
(36) 8051應用電子密碼鎖. T2CON:TIMER2 控制暫存器 (TIMER/COUNTER 2 CONTROL REGISTER,可位元定址) 只有 8052 有 位址:( C8H ) TF2 EXF2. RCLK TCLK. TF2. T2CON.7. EXF2. T2CON.6. RCLK. T2CON.5. TCLK EXEN2. T2CON.4 T2CON.3. TR2. T2CON.2. C/T2. T2CON.1. CP/RL2. T2CON.0. EXEN2 TR2. C/T2. CP/RL2. 計時器 2 之溢位旗號,由硬體設定,軟體清除, 當 RCLK=TCLK=1 時 TF2 不會被設定 計時器 2 的外部旗號,在 T2EX 受負緣觸發或 XEN2=1 而發生補入或重新載入時此位元會被設 定,當計時器 2 之中斷致能時,EXF2=1 會使 CPU 執行計時器 2 之中斷服務程式,若 RCLK=0 時串 列阜能使用計時器 1。 接收脈波旗號,此位元被軟體設為 1 時,串列阜 就使用計時器 26 溢位脈波當作其接收脈波(串列 阜在模式 1,3 時)。若 RCLK=0 時串列阜能使用計 時器 1。 傳送脈波旗號 計時器 2 之外部致能旗號。此位元為 1 時,允許 T2EX 接腳上有逆緣觸發信號(1→0)時,有插入或 重新載入功能,但必須計時器 2 沒有作串列埠的 鮑率產生器時。當 EXEN2=0 時,會使計時器 2 忽 略 T2EX 之信號。 計時器 2 之啟動/停止開關,TR2=1 時啟動計時 器。 計時器或計數器之選擇開關,0=內部計時器, 1=外部事件計數器(負緣觸發)。 補入/重新載入旗號。若此位址為 1 且 EXEN2=1 時,當 T2EX 有負緣信號時會有補入動作。若此位 元為 0,當計時器 2 溢位或 EXEN2=1 且 T2EX 上 有負緣觸發信號時會有重新載入之動作。當 RCLK=1 或 TCLK=1 時,此位元會被忽略,且計時 器會被強迫成自動重新載入。. 圖 2-16. T2CON:TIMER2 控制暫存器 - 30 -. 逢甲大學 e-Paper (92學年度).
(37) 8051應用電子密碼鎖. SCON:串列埠控制暫存器 (SERIAL PORT CONTROL REGISTER,可位元定址) 位址:(98H) SM0 SM0 SM1 SM2. REN TB8 RB8. TI. RI. SM1. SM2. REN. TB8. RB8. TI. RI. SCON.7 串列埠模式選擇 SCON.6 串列埠模式選擇 SCON.5 在串列埠為模式 2 和 3 時,致能多處理器通信之功能。 在模式 2 或 3;如果 SM2=1 則當接收到的第 9 個資料位元 為 0 時 RI 不動作。在模式 1 時,若 SM2=1,當接到的停止 位元不正確時 RI 也不動作。在模式 0 時 SM2 必須為 0。 SCON.4 由軟體去設定或清除,決定是否接收。(REN=1 接收) SCON.3 在模式 2 或 3 時,傳送的第 9 個資料位元。由軟體控制。 SCON.2 在模式 2 或 3 時,接收到的第 9 個資料位元放在這個位元 裡。在模式 1 時;如果 SM2=0,則 RB8 為接收到的停止位 元;模式 0 時,RB8 沒有用。 SCON.1 傳送中的旗號,在模式 0 時,在第 8 位元結束時由硬體設 為 1,或再其它模式時,是在停止位元的開始時設定為 1。 此位元必須由軟體清除。 SCON.0 接收中的旗標,在模式 0 時,在第 8 位元結束時,硬體會 將其設為 1,在其它模式時,在停止位元的一半的時候由硬 體設定(看 SM2)。此位元必須由軟體清除。. SM0. SM1. 模式. 0 0 1. 0 1 0. 0 1 2. 移位暫存器 Fosc./12 8-bit UATR 可變 9-bit UATR Fosc./64 或 Fosc./32. 1. 1. 3. 9-bit UATR. 圖 2-17. 說明. 鮑率. 可變. SCON 串列埠控制暫存器 - 31 -. 逢甲大學 e-Paper (92學年度).
(38) 8051應用電子密碼鎖. 2.4. MCS-51 的中斷結構 8051 提供了 5 個中斷源,8052 則提供了 6 個中斷源,外部中斷 INT0. 和 INT1 可以規劃成半位元觸發或邊緣觸發的方式動作,它是由 TCON 暫存器裡的 IT0 和 IT1 位元所選擇;而 TE0 和 TE1 是真正產生中斷的 旗號(當 IT0 和 IT1 等於 1 時);如果中斷是設成邊緣觸發的話,當中 斷產生時,在執行中斷服務程式的同時,硬體會將這個旗號(IE0 或 IE1) 清除;而準位觸發方式則不會清除。 Timer0 和 Timer1 的中斷是由 TF0 和 TF1 旗號所產生,這些旗號是 在它們各自的計時/計數暫存器溢位時所設定(Timer0 在模式 3 時例 外)。當計時器產生中斷時,硬體會在執行到其服務程式時自動將這些 旗號(TF0 或 TF1)清除成 0。 串列埠的中斷是由 RI 和 TI 的邏輯 OR 之後所產生,在執行 RI 和 TI 的中斷服務程式時,硬體不會自動將 RI 或 TI 清除,因為串列埠的 中斷服務程式必須判斷中斷是由 RI 或 TI 產生,因此產生中斷的旗號 必須由軟體加以清除。 在 8052 時 Timer2 的中斷是由 TF2 和 EXF2 的邏輯 OR 的結果所產 生,當執行到其中斷服務程式時,這些旗號不會被硬體清除,因為, 中斷服務程式必須判斷中斷是由 TF2 或 EXF2 所產生,然後以軟體將 - 32 -. 逢甲大學 e-Paper (92學年度).
(39) 8051應用電子密碼鎖. 其清除。 以上所討論的每個產生中斷的旗號(IE0,IE1,TF0,TF1,TI,RI, TF2,EXF2),都可以透過軟體加以設定或清除,其結果與硬體所產生 設定或清除的效果完全一樣。如此一來就可以透過軟體產生中斷,或 將正在等待的中斷清除。 2.4.1. 中斷致能與優先權結購. 透過設定或清除 SFR 裡的 TE 暫存器的位元,這些中斷裡的每個中 斷源可以個別的加以致能(Enable)或禁能(Disable)產生中斷。IE 暫存 器裡也包含了一個禁止所有中斷產生的位元 EA,它可以立即禁止所有 中斷產生。 MCS-51 的優先權層次共有兩層,即高優先權和低優先權,每一個 中斷源都可以透過軟體規劃 SFR 裡的 IP 暫存器裡的位元,以設定各中 斷優先權順序,當設為 ”1” 時列在高優先權層次, ”0” 時列在 較低優先權層次。較高優先層的中斷源可以中斷較低優先層的中斷服 務程式,同優先權層次的中斷副程式不能相互中斷。 如果兩個不相同優先權層次的中斷同時發生,則優先權層較高的中 斷會先被接受;如果相同優先權層次的中斷同時到達,就由內部硬體 的輪詢(polling)順序決定要先接受哪一個。因此在每個優先權層 - 33 -. 逢甲大學 e-Paper (92學年度).
(40) 8051應用電子密碼鎖. 次裡又有一個由輪詢順序所決定的第二個優先權結構,這個輪詢順序 如下表 4 所示: 圖 2-18 中. 斷 源. 1.. IE0. 2.. TF0. 3.. IE1. 4.. TF1. 5.. RI+TI. 6.. TF2+EXF2. 2.4.2. 優先權輪詢順序 優. 先 權. 層 次. 最高. ↓. 最低. 中斷如何動作. 在 IE 暫存器裡的中斷旗號會在每個機械週期的 S5P2 時間備取樣, 取樣進來的旗號會在下一個機械週期加以檢查(polling)。如果這些旗 號中有一個為”1”,會在這個週期裡發現,然後中斷系統會產生 LCALL 到其相對應的中斷服務程式,但是如果有下面所列的狀況時就不產生 中斷動作: 甲、. 有相同或更高優先權的中斷正在處理時。. 乙、. 目前的週期(檢查,polling)不是正在執行的這個指令的 - 34 逢甲大學 e-Paper (92學年度).
(41) 8051應用電子密碼鎖. 丙、. 最後一個週期。. 丁、. 正在執行的指令是 RETI,或任何寫入 IE 或 IP 的指令。. 以上所別的三個狀況都會禁止產生 LCALL 至中斷服務程式。條件 2 是保證目前正在執行的指令會在跳至服務程式前被完整的執行完。條 件 3 是保證在執行完 RETI 或寫至 IE,IP 的指令後會再執行一個指令 後才會被中斷。 檢查中斷旗號的週期,會在每個機械週期重複動作,且這個被檢查 的旗號是在前一個機械週期的 S5P2 時取樣進來的狀態。因此,如果有 一個中斷要求動作了,但是卻因上面所說三個狀況的關係而未被 8051 反應,當以上所列的狀況解除了,如果中斷的動作旗號沒有繼續維持, 則上面所要求的中斷不會被接受。換句話說,事實上中斷旗號一旦動 作,但沒有被接受,它也不會被記住,每一個檢查週期的值都是新的。 CPU 回應中斷要求的方法是,由硬體產生 LCALL 指令至中斷要求 的服務程式;在某些狀況下,硬體也會清除引起中斷的旗號,有些則 不會;UART 和 Timer2 的中斷旗號不會被清除,而必須要由使用者的軟 體加以清除。外部中斷旗號(IE0 和 IE1)只有在其為邊緣觸發模式時會 自動被硬體清除。在硬體產生 LCALL 時,會將程式計數器. - 35 -. 逢甲大學 e-Paper (92學年度).
(42) 8051應用電子密碼鎖. (Program Counter)的值堆入堆疊(但沒有存 PSW),然後載入中斷源 之中斷向量位址,最後跳入中斷副程式,各中斷源之向量位址如下表 5: 圖 2-19 中. 中斷源之向量位址. 斷 源. 中. 斷 向 量. IE0. 0003H. TF0. 000BH. IE1. 0013H. TF1. 001BH. RI & TI. 0023H. TF2 &EXF2. 002BH. 中斷副程式的執行是由以上所列之位址開始,直到執行到 RETI 為 止。RETI 指令是告知 CPU 這個中斷已經結束,然後從堆疊區的頂端取 回兩個位元組的返回位址到程式計數器,以返回原來被中斷的程式。 請特別注意,RET 指令也會使中斷副程式返回被中斷的程式,但如 此會使得中斷系統認為中斷仍在動作中,而無法接受其它的中斷。. - 36 逢甲大學 e-Paper (92學年度).
(43) 8051應用電子密碼鎖. 外部中斷源可規劃成準位動作(Level-activated)或邊緣動作 (Transition-activated),這個動作可透過規劃 TCON 的 IT1 或 IT0 位 元加以設定。如果 Itx=0,則外部中斷 x 就會在檢知 INTx 接腳的信號 為低電位(Low)時觸發。如果 Itx=1,則外部中斷 x 是使用邊緣觸發。 在這個模式下,如果在 INTx 接腳在上一個週期裡被檢知為高電位,下 一個週期檢知為低電位時,則中斷要求旗號 Iex 就被設定成 ”1” , 此 Iex 就對 CPU 提出中斷要求。 因為外部中斷輸入腳是在每個機械週期被取樣一次,因此輸入的高 電位或低電位信號必須至少維持 12 個振盪週期,以保證中斷被檢知。 如果外部中斷型式是邊緣觸發式時,外部中斷源必須維持高電位一 個週期,然後維持低電位也必須至少一個週期,以保證位準的轉移被 檢知到,外部中斷要求旗號 IEx 才會被設定為”1”。當中斷服務程式 被呼叫時,CPU 會自動將 IEx 清除。 如果外部中斷是用準位觸發型態時,外部中斷源必須維持中斷要求 信號確實被 CPU 接受而產生中斷為止。並且在中斷服務程式結束前, 中斷要求信號必須拿開,否則就會一直產生下去。. - 37 -. 逢甲大學 e-Paper (92學年度).
(44) 8051應用電子密碼鎖. 第三章. LCD 的介紹. 3.1 LCD 的簡介 LCD 為 Liquid Crystal Display 縮寫,也分為繪圖模式 LCD 及文 字模式 LCD,市面上很容易買到不同廠牌之顯示文字的 LCD,但似乎 LCD 的控制器皆為同樣一顆,編號為 HD44780A。所以不論 16 字*1 列,20 字*2 列之文字模式:LCD,其控制方法皆同。HD44780A 之特性為: ● 顯示資料 RAM ( Display Data RAM ) 共 80 個 Bytes。 ● 字元產生器 ROM ( Character Generator ROM,簡稱 CG ROM ) 有 160 個 5*7 點矩陣字型 ( pattern ) 。 ● 字元產生器 RAM ( Character Generator RAM,簡稱 CG RAM ) 可寫入 8 個字型,使用者可自行設計 8 個 5*7 點矩陣字型。 ● ● 多種控制指令如清除顯示器,游標歸位 ( Cursor Home ) ,顯 示器關閉/開啟,游標關閉/開啟、字元閃爍,游標移位、顯示移 位等等。 3.2 LCD 硬體說明 下表為文字型 LCD 接腳說明. - 38 -. 逢甲大學 e-Paper (92學年度).
(45) 8051應用電子密碼鎖. 欄位 1 2 3. 接腳符號 方向 名稱及功能 VSS 電源地 ( Ground ) VDD 電源正極:接+5 伏特 V0 亮度調整電壓輸入 ( Contrast adjustment voltoge ) 。通常輸入零伏特時字元最清晰, 或以半可變電阻來調整。 4 RS I 暫存器選擇 ( Register Select ) 線:一般 接 CPU 之位址線 A0 ,此腳輸入”0”,並做 寫入動作,即可寫入指令暫存器 ( Instruction Register ) ;若輸入”0”, 做讀取動作則可讀取忙碌旗標 ( Busy flag ) 及位址計數器。此腳輸入”1”,為讀寫資料 暫存器 ( Data Register ) 。 5 R/W I 讀寫線:”0”表示寫入 LCD 控制器,”1” 表示讀取 LCD 控制器。 6 E I 致能線 ( Enable ) :此腳為”1”時,讀寫 才有效。注意,其下緣時,有效資料需在匯流 排上。 7-14 DB0~DB7 I/O 資料匯流排:以 8 位元資料讀寫方式則 DB0~DB7 皆有效。若以 4 位元做資料讀寫則僅 DB4~DB7 有用到,DB0~DB3 不必連接。 (1) 暫存器 ( Registers ) ,: LCD 共有兩個八位元暫存器,即指令 暫存器 ( Instruction Register , IR ) 和資料暫存器 ( Data Register , DR ) 。功能為: a. 指令暫存器可存放指令碼 ( Instruction code ) 或 DD RAM 位 址或 CG RAM 位址,此暫存器僅可寫入。 b. 當寫資料到 LCD 時,前一個位址指令已決定了是要寫入 DD RAM 或 CG RAM ,資料首先存放在資料暫存器,再自動地移入 DD RAM 或 CG RAM 。 c. 當讀取 LCD 資料時 DD RAM 或 CG RAM 的資料會暫時存放在資 料暫存器,再由 CPU 讀去。其實,在前一個位址值寫入指令暫存 器時,資料已先從 DD RAM 或 CG RAM 移入資料暫存器,每讀取 一次,下一個 RAM 位址的資料自動地又移入資料暫存器。 (2) 忙碌旗標 ( Busy Flag , BF ) ,當 BF=”1”,表示 LCD 正在 執行內部運作,並且不接受新的指令。 BF 可由 RS=”0”時讀取位 元 7 得到旗標狀態;直到 BF=”0”,才可輸入下一個指令。 - 39 逢甲大學 e-Paper (92學年度).
(46) 8051應用電子密碼鎖. (3) 位址計數器 ( Address Counter , AC ) ,位址計數器可產生 DD RAM 及 CG RAM 之位址。位址值及選擇哪一個 RAM 可一次寫入指令 暫存器決定之;讀寫 RAM 資料後,位址計數器將自動遞增 ( Increment ) 或遞減 ( Decrement ) 。位址計數器亦可由 RS=”0”時讀取低的 7 個位元得之。 (4) 顯示資料 RAM ( Display Data RAM , DD RAM ) ,共 80 bytes , 存放顯示資料的字元碼 ( character code ) ,一個 DD RAM 位址 ( address ) 對應一個顯示位置 ( position ) ,寫入不同的字元 碼就顯示不同的字型。沒有對應到顯示的 RAM 可由使用者儲存資料 或自行運用。 RAM 位址與顯示位置對應關係有三種形式,而本組所 採用的形式是雙列顯示器 ( Dual-line display ) ,茲介紹如下: 1 2 3 4 5 39 40 00H 01H 02H 03H 04H ………… 26H 27H 40H 41H 42H 43H 44H ………… 66H 67H. 顯示位置 第一列位址 第二列位址. 01H 02H 03H 04H 05H ………… 27H 00H 41H 42H 43H 44H 45H ………… 67H 40H. 設顯示左移 ( Left shift ). 27H 00H 01H 02H 03H ………… 25H 26H 67H 40H 41H 42H 43H ………… 65H 66H. 設顯示右移 ( Right shift ). 雙列顯示器位置與位址對應須注意,第二列之位址與第一列位址不 連續,但總數仍為 80 個位址,第一列由 00H~27H,第二列由 40H~67H, 下位址指令時要注意。若顯示器一列僅有 16 或 20 字,則由第 1 位 置到地 16 或 20 個位置對應之。 (5) 字元產生器 ROM ( Character Generator ROM , CG ROM ) , CG ROM 中存放著 160 個 5*7 點矩陣字型 ( dot-martrix character pattern ) 及 32 個 5*10 點矩陣字型。每個字型對應著不同的 8 位 元字元碼 ( character code ) ,部份與 ASCII 相同,其餘為日文 字型。字元碼由 00~07H 可由使用者自行設計 5*7 字型共 8 個字型, 20H~7FH 與 ASCII 相同,A0H~DFH 為日文字型,E0H~FFH 為 32 個 5*10 字型。所以,可看出字元碼並不連續,有些碼沒用到。 - 40 逢甲大學 e-Paper (92學年度).
(47) 8051應用電子密碼鎖. (6) 字元產生器 RAM ( Character Generator RAM , CG RAM ) ,使 用者可自行設計任意的 5*7 點矩陣字型,字型輸入資料先寫入 CG RAM ,再將對應的字元碼寫入 DD RAM ,就可以顯示字型了。 CG RAM 共有 64 個 bytes ,每個字型佔用 8 個 bytes ,對應 00H~07H 八個 字元碼,即 CG RAM 的 0~7 bytes 對應字元碼 00H,8~15 bytes 對 應字元碼 01H ,依此類推。若未設計字型,則 CG RAM 可由使用者 自由運用。 (7) 時序產生器 ( Timing Generator ) ,供應 DD RAM , CG RAM , 及 CG ROM 內部運作之時序信號。 (8) 游標/閃爍控制器 ( Cursor / Blink Controller ) ,用來產生一 個游標和一個閃爍的字元,顯示在 DD RAM 目前位址所指的顯示位 置,游標為字元下的一條橫線。 (9) 並列對串列轉換器 ( Parallel-to-Serial Converter ) ,將 CG ROM 或 CG RAM 中讀出的並列資料轉成串列資料送到顯示驅動器 ( display driver ) 。 (10) 偏壓產生器 ( Blias Voltage Generator ) ,用來產生液晶顯示 器 ( LCD ) 顯示時所需的偏壓準位。 (11) LCD 驅動器 ( LCD Driver ) ,此電路接收顯示資料,時序信號 和偏壓來產生共用背景顯示及各段顯示信號。 (12) LCD 面板 ( LCD Panel ) ,點矩陣液晶顯示面板,有一列 16 字, 兩列 16 字,兩列 20 字及兩列 40 字等種類。字元與字元間有一個點 距離的間隙。 3.3 暫存器及指令碼說明 下表為 LCD 指令控制碼一覽表. - 41 -. 逢甲大學 e-Paper (92學年度).
(48) 8051應用電子密碼鎖. 項目 1. 2. 3. 4. 5. R/W RS 操作 位元值 功能說明 執行時 名稱 D7 D6 D5 D4 D3 D2 D1 D0 間 寫 0 清除 0 0 0 0 0 0 0 1 清除顯示 1.64ms 器,並將游 入 顯示 標移回左 器 上角位置 寫 0 游標 0 0 0 0 0 0 1 X 游標移回 1.64ms 入 歸位 左上角位 置,但顯示 RAM 中資料 未變 寫 0 設定 0 0 0 0 0 1 I/D S I/D=1:位 40us 入 進入 置遞增, 模式 I/D=0:位 置遞減; S=1:移位 功能致能 寫 0 顯示 0 0 0 0 1 D C B 1 表 ON,0 40us 表 OFF,D 入 器開 為顯示 /閉 器,C 為游 標,B 為游 標所在位 置的字元 閃爍 寫 0 顯示 0 0 0 1 S/C R/L X X S/C=1:顯 40us 入 器/ 示移位, 游標 S/C=0:移 移位 動游標; R/L=1:向 右移, R/L=0:向 左移. - 42 逢甲大學 e-Paper (92學年度).
(49) 8051應用電子密碼鎖. 6. 寫 0 功能 0 0 1 DL N 入 設定. 7. 寫 0 設 CG 0 1 CG RAM 位址 入 RAM 位址. 8. 寫 0 設 DD 1 DD RAM 位址 入 RAM 位址. 9. 讀 0 讀忙 BF 位址計數器 出 碌/ 位址 寫 1 寫入 寫入之資料 入 資料 暫存 器 讀 1 讀取 讀取之資料 出 資料 暫存 器. 10. 11. F. X. X DL=1:資料 40us 長 8 位元, DL=0:資料 長度 4 位 元;N=1: 雙列字, N=0:單列 字;F=0: 5*7 點 將 CG RAM 40us 位址寫入 位址計數 器,接著讀 寫 CG RAM 資料 將 DD RAM 40us 位址寫入 位址計數 器,接著讀 寫 DD RAM 資料 讀 BF 及位 40us 址計數器 內容 將資料寫 40us 入 CG RAM 或 DD RAM 從 CG RAM 40us 或 DD RAM 讀出資料. 其中 1~8 項為 RS=0,寫入指令暫存器,寫入不同的控制碼即產生 不同的控制功能。第 9 項為令 RS=0 時,讀取 LCD ,此時讀入資料的 位元 7 為忙碌旗標,其他位元為位址計數器內容。第 10、11 項為令 RS=1,即可讀寫 CG RAM 或 DD RAM 中的資料,至於是前者或後者, - 43 逢甲大學 e-Paper (92學年度).
(50) 8051應用電子密碼鎖. 要由使用者所設定位址是 CG RAM 位址或 DD RAM 位址決定 ( 第 7 或第 8 項 ) 。 右邊一行為每個指令的執行時間 ( Execution time ) ,此為使 用者每一次讀寫 LCD 暫存器後要等待的時間,因為 LCD 控制器本身 接收一個指令後,在內部做處理及運算,需要花費時間,此時間過後 CPU 才可再下另一 LCD 控制指令,否則會被忽略。各指令說明如下: (1)清除顯示器 ( Display clear ) ,將 DD RAM 內資料皆填入空白 碼 ( space code ) 20H 。位址計數器清為零。若顯示移位過,也 會恢復原始位置。執行此指令,使所有顯示消失,游標及字元閃爍 位置移到左上角。指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 1. (2)顯示/游標歸位 ( Display/Cursor Home ) ,位址計數器清為零, 顯示恢復原始位置,游標移到左上角。 DD RAM 中資料無影響。指 令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 X. (3)進入模式設定 ( Entry Mode Set ) ,指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 I/D S. I/D:位址計數器遞增 ( I/D=1 ) 或遞減 ( I/D=0 ) ,每讀寫 DD RAM 中字元碼一次則位址計數器加一或減一。游標顯示之位置亦同時向右 ( I/D=1 ) 或向左 ( I/D=0 ) 移一個位置。讀寫 CG RAM 時亦相同 效果。 S:當 S=1 ,寫入一個字元碼到 DD RAM 時,整個顯示幕向左 ( I/D=1 ) 或向右 ( I/D=0 ) 移一格位置,而游標仍停留在相對的顯示位置。 當 S=0 ,顯示幕不移動。寫入 CG RAM 時,顯示幕不移動。 (4)顯示啟/閉 (Display ON/OFF ) ,指令碼為: - 44 逢甲大學 e-Paper (92學年度).
(51) 8051應用電子密碼鎖. RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 D C B. D ( Display ) :當 D=1,顯示幕開啟 ( turn on ) 。當 D=0,顯 示幕關閉 ( turn off ) ,顯示資料仍保存在 DD RAM 中。 C ( Cursor ) :當 C=1,游標被顯示在位址計數器所指的位置上。 當 C=0,游標不會出現。游標是在 5*8 矩陣的第 8 列五個點構成,餘 5*7 點為字型。對 5*10 之字型則在第 11 列的五個點構成。 B ( Blink ) :當 B=1,在游標位置的字元會閃爍,閃爍方式為所有 5*8 的點 ( 含游標 ) 變黑 409.6ms ,然後字元出現 409.6ms ,如 此交替顯示所有點及字元而成閃爍現象。 (5)顯示/游標歸位 ( Display/Cursor Shift ) ,顯示幕和/或游標被 向右或向左移動。對於雙列顯示器游標會從第一列的第 40 個位置移 到第二列的第一個位置,但移到第二列第 40 個位置後不會歸回原 點,而是移到第二列第一個位置。指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 S/C R/L X X. S/C 0 0 1 1. R/L 0 1 0 1. 游標向左移 ( AC ← AC-1 ) 游標向右移 ( AC ← AC+1 ) 整個顯示幕和游標向左移 整個顯示幕和游標向右移. (6)功能設定 ( Function Set ) ,此指令一定要在所有其他指令碼之 前。指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 DL N F X X. DL ( Data Length ) :選擇介面資料長度, DL=1 為 2-bit 資料轉 移 ( Transfer ) , DL=0 為 4-bit 資料轉移。使用 4-bit 資料轉 移時,一個完整字元資料要讀或寫兩次。 F ( Font ) : F=1,5*10 點矩陣。 F=0,5*7 點矩陣。 - 45 逢甲大學 e-Paper (92學年度).
(52) 8051應用電子密碼鎖. N ( Number of display line ) :選擇顯示之列數為雙列或單列, N=0 表單列 ( Single line ) 。 N=1 表示雙列 ( dual line ) ,若單 列顯示器以雙列定址方式仍要選 N=1。 (7)字元產生器 RAM 位址設定 ( CG RAM Address Set ) ,可將 CG RAM 位址載入位址計數器中,位址由 6 個位元所組成。指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 A A A A A A A:Address bit. (8)顯示資料 RAM 位址設定 ( DD RAM Address Set ) ,可將 DD RAM 位址載入位址計數器中,位址由 7 個位元所組成。指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 A A A A A A A A:Address bit (9)忙碌旗標/位址計數器讀取 ( Busy flag/Address Counter Read ) ,指令碼為: RS 0. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 BF A A A A A A A A:Address bit. BF=1,表示 LCD 正在執行內部運作,並且不接受新的指令。 BF 可 由 RS=0 時讀取位元 7 得到旗標狀態,BF=0 才可輸入下一指令。 AC ( Address Counter ) 可產生 DD RAM 及 CG RAM 之位址。位址 值及選擇哪一個 RAM 可一次寫入指令暫存器決定之。 (10)字元產生器 RAM /顯示資料 RAM 的資料寫入 ( CG RAM / DD RAM Data Write ) ,資料是寫入 CG RAM 還是 DD RAM 中的哪一個位址, 皆由先前所下的位址設定指令決定。指令碼為: RS 1. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 D D D D D D D D D:Data bit - 46 逢甲大學 e-Paper (92學年度).
(53) 8051應用電子密碼鎖. (11)字元產生器 RAM /顯示資料 RAM 的資料讀取 ( CG RAM / DD RAM Data Read ) ,資料是由 CG RAM 還是 DD RAM 中的哪一個位址讀 出,皆由先前所下的位址設定指令決定,與寫入類似。讀或寫資料 都會使位址自動加一或減一。指令碼為: RS 1. R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D D D D D D D D D:Data bit. 3.4 軟體規畫 要令 LCD 顯示文字,首先要寫入指令暫存器 ( IR ) 規劃 LCD 各 項功能、模式,接著將字元碼 ( ASCII )寫入資料暫存器 ( DR ) 移 入 DD RAM 中,即可顯示字元。適當地在每個指令後加些延遲,大於 LCD 指令控制表內所列之執行時間,這樣可省卻測試忙碌旗標 ( BF ) 之 動作。下圖為軟體流程: POWER ON RESET 或 Instruction RESET. ↓ 顯示 DD RAM 字元 3.5 LCD 重置及初始化 LCD 有一個內部重置電路 ( Internal Reset Circuit ) ,只要 電源電壓 ( VDD 腳 ) 在 10ms 內上升到 4.5V 以上,即可產生 Power - 47 逢甲大學 e-Paper (92學年度).
(54) 8051應用電子密碼鎖. ON Reset ,並做 LCD 初始化工作如下: ( 初始化時 BF=1, VDD 達 3.5V 後約延續 10msec , BF 才降為 0 ) 。 ● 清除顯示 ( Clear Display ) ● 功能設定, DL=1, N=0, F=0•8 位元介面,單列顯示,5*7 點矩陣字形。 ● 顯示關閉, D=0, C=0, B=0。顯示幕、游標,閃爍功能關閉。 ● 進入模式, I/D=1, S=0。遞增模式,顯示幕不移動。. 第四章. 實作. □ 單晶片可以使用 89C51 系列晶片及 LO51 晶片(ISP 型 8051 晶片) □使用 LO51 晶片可以擴充簡易 ICE 模擬器功能 □使用 LO51 晶片免燒錄,免 ICE 可由串列介面下載程式碼來執行 □一組 4X4 鍵盤輸入 □ 壓電喇叭或一般喇叭輸出 □ 含文字型 LCD 介面(16X2) □ 含斷電資料保存介面 93C46 □ 1 組 5V 繼電器界面 連接座: J0 2P MOLAX 腳座 +9V/GND 電源輸入 - 48 逢甲大學 e-Paper (92學年度).
(55) 8051應用電子密碼鎖. J1 2P MOLAX 腳座 +5V/GND 電源輸入 J2 7X2. LCD 母座. J3 8P 母座 連接 4X4 鍵盤 J4 20X2 多功能 I/O 擴充接腳,有 3 種功能: 功能 : 20X2 排針座,經由 40 PIN 排線可以擴充簡易 ICE 模擬器功 能。當做簡易 ICE 模擬器功能時,原先在 IO51 板上的硬體 零件會造成負載效應,查看電路圖,取下必要的 IC, 才能 經由 40 PIN 排線送出標準的 8051 控制信號。 J0 9V DC 接頭 中間為 +9V 零件表 積體電路 IC:. IC 座. 編號 規格 LCD 16X2 文字型 LCD U1. ISP LO64. 40P IC 座. U2. 7660. 8P IC 座. U3. DA08. 16P IC 座. U4. 7805. 加散熱片. 電容 : 電解電容有極性(長腳為正),陶瓷電容無極性 - 49 -. 逢甲大學 e-Paper (92學年度).
(56) 8051應用電子密碼鎖. C1 10. uF. 陶瓷電容. C3 100 uF 電解電容 C5 100 uF. C2 10 uF 陶瓷電容 C4 100 uF 電解電容. 電解電容. 電晶體 : Q1、Q2 2SC945 X4 有極性 (底視圖 由左至右 ECB) 二極體 : D1、D2. LED. X2 有極性(長腳為正). 其他 : X1. 石英振盪晶體. RY1. 5V 繼電器. SW1. 4 P 按鍵開關. BZ. 壓電喇叭. 11.0592 MHz. 4X4 鍵盤 基本知識如下: LCD 是插在 J2. 7X2 LCD 母座上。. J3 8P 母座用來連接 4X4 鍵盤 8051 控制板 DIY 不動作時,常見的問題有以下幾種: □ 8051 不動作 □ 零件接腳極性方向插錯 □焊接不良 - 50 -. 逢甲大學 e-Paper (92學年度).
(57) 8051應用電子密碼鎖. 8051 要動作,基本電路(以下 6 接腳)要接對 <1>8051 接腳 40 電源是否接 5V <2>8051 接腳 20 接地是否接地 <3>8051 接腳 18. 19 是否接石英震盪晶體. <4>8051 接腳 31 EA 是否接 5V <5>8051 接腳 9 重置是否接對 □準備必要電源及串列介面傳輸線 接著要自備 +5v 電源或是 +9V 電源. 或是 9V 直流電源(350 mA). 接頭中間為正。 □ 如何觀察原始程式 : 以文書處理器查看 PA.ASM。 □ 如何執行程式 : 1.準備一 +5V 電源。 2.經由 2 PIN 電線接至 J1 接點(紅色+5V,黑色接地) 3 .打開電源,工作 LED. 閃爍,表示開機正常。. 4.原定密碼為 "1234"。 5.按 B 鍵 : 檢查密碼輸入,輸入 4 位密碼,若正確則繼電器開啟約 2 秒後關閉,表示打開門鎖,若密碼比對錯惡則警報響起。 - 51 -. 逢甲大學 e-Paper (92學年度).
(58) 8051應用電子密碼鎖. 7.按 A 鍵 : 輸入新的 4 位密碼,關機後資料可以永久保存。 □ 組譯有錯時怎辦 : 組譯有錯時會自動跳出批次檔,而結束程式執行,可以文書處理器 查看檔案,看看到底錯在那邊。. 第五章 總結 5.1 實驗心得 在這個專題裡遇到許多困難,首先在於如何推動這 8051 晶片,書 上提到需要 5V 的電源可是在各個電子專賣店裡總是找不到 5V 的電源 供應器,更別說是 1.5V 的電池了怎麼樣也串不到 5V,在參考了許多書 與詢問同學後,發現有一種藉由 9V 的電源供應器、7805 跟 5V 穩壓 IC, 才完成了自制 5V 電源,對於燒 IC 為了不必要的損失,決定使用 89C51 可重覆燒錄,也對 8051 這個 IC 更了解了,也深深感到這個 IC 其強大 的功能。雖然這只是一個小小的專題,不過我相信若是在這個小小的 基礎上,繼續研究的話,以後或許會有更深的發現。. - 52 逢甲大學 e-Paper (92學年度).
(59) 8051應用電子密碼鎖. 5.2 問題討論 Q1:程式如何燒錄進IC? Ans:這是我準備將程式燒進8051時所遇到的問題,向器材室 詢問得知,器材室有一台8051之IC燒錄器可供借用,而由 於89C51較易於重覆燒錄,因此我決定用89C51來燒錄 程式,軟體的取得是從網站上下載。一開始以為燒錄失敗,後來 才知道是燒錄時間極短,且線路接觸不良(麵包板) ,與程式有小 bug 導致失敗,經過重覆測試,終於燒錄成功,並且完成測試。. Q2 為何使用89C51要用石英振盪器? Ans:石英振盪器主要的目的是要產生脈波,產生所需工作頻率讓 89C51產生動作. Q3:CD為何無法做動態顯示? Ans:測試數個動態顯示的程式仍舊無法做動態顯示,因此推斷因 為非繪圖型LCD,因此無法做動態顯示。. Q4:為何無法連續兩次接收資料? Ans:電路不穩,是因為電壓不夠,因此只要換過新的電池,問題 即解決。 Q5:為何LCD顯示跳動的很厲害? Ans:程式出錯,經 debug 過後再做顯示,問題就消失了。. - 53 逢甲大學 e-Paper (92學年度).
(60) 8051應用電子密碼鎖. 5.3 參考資料: 鄧錦城,8051 單晶片實作寶典,P.1~P.206、P.397~P.427,松崗電腦 圖書資料股份有限公司,八十一年九月出版。 偉林資訊,單晶片微電腦-8051/52 原理與應用,P.10~P.95,松崗電 腦圖書資料股份有限公司,八十年十月出版。 王信福,MCS-51 單晶片微電腦專題製作,P.1-3~P.1-17、 P.C-2~P.C-11,松崗電腦圖書資料股份有限公司,八十六年一月 出版。 陳粵初、沈德金,單晶片微處理機界面電路與應用程式實例, P.4~P.16、P.191~P.234,格致圖書公司,八十一年四月出版。 劉銘中、林琮烈、陶德福,MCS-51 單晶片原理與 I/O 應用, P.1-3~P.3-19、P.4-2~P.6-33、P.10-2~P.10-17,八十六年九月出 版。 李齊雄、游國幹,8051 單晶片微電腦原理與實作,P539~P555 ,格致圖書公司,八十一年七月出版。. - 54-. 逢甲大學 e-Paper (92學年度).
(61) 8051應用電子密碼鎖. 附錄: ;---------------------------------------------------; PA.ASM. 8051 LCD PASSWORD 4. WITH 93C46. ; 8051 ASM USE: 2500 A.D. ;---------------------------------------------; 8051 I/O DEFINE ;---------------------------------------------; P0: P0.0 LCD RS ;. P0.4--P0.7. C46: CLK-P0.5. DI-P0.6. LCD D4--D7. DO-P0.7. ; P1: P1.0 WORKING LED ; ; P2: P2.0~P2.3 : SCAN CODE ;. P2.4~P2.7 : K1 K2 K3 K4. ; P3.0 : RXD. RS232 RX. ; P3.1 : TXD. RS232 TX. ; P3.2 : INT0\ ALARM ; P3.3 : INT1\ ; P3.4 : T0. C46 CS HIGH. ; P3.5 : T1. RELAY TO OPEN DOOR. ; P3.6 :. LCD EN. ; P3.7 : ;--------------------------------------------------------ALSEC. EQU 1. KA. EQU 0AH. KB. EQU 0BH. KC. EQU 0CH. KD. EQU 0DH. KE. EQU 0EH. KF. EQU 0FH. ; ALARM SEC 1=1 SEC. 10=10 SEC. ; KEY NO DEFINE. ; VAR DEFINE................... PASS EQU 30H. ; 30 31 32 33 34 35. I/P TO CHECK. PASSNEW EQU 36H. ; 36 37 38 39 3A 3B. BUF_KEY EQU 4AH. ; KEY DATA BUFFER. KEY_NO CO. EQU 4BH. EQU 4CH. LCDE EQU 4DH. ; KEY NO. ; COUNTER ; LCD EN DELAY. 逢甲大學 e-Paper (92學年度).
(62) 8051應用電子密碼鎖. ADD EQU 50H CHI EQU 51H CLO EQU 52H X. EQU 53H. ; LCD X POS.. ; USER RAM .....5FH 60H-->SP ;---------------------------------------------FKEY REG. 20H.0. ; KEY PRESSED. ALF REG. 20H.1. ; ALARM FLAG. ; I/O DEFINE ...................... ; 93C46 CLK REG P0.5. ; C46 CLK. DI. REG P0.6. ; C46 DI. DO. REG P0.7. ; C46 DO. CS. REG P3.4. ; ACTIVE HI 93C46. ; LCD EN. REG P3.6. ; ACTIVE HI LCD. RS. REG P0.0. ; LCD REG. SEL.. REL REG P3.5 AL. REG P3.2. WLED REG P1.0 ;-------------------ORG 0H JMP BEGIN ;--------------------BEGIN:. MOV SP,#60H. CALL INIT_PORT CALL INIT_C46. CALL LED_BL CALL SET_LCD CALL READ_PASS ; READ PASS FROM C46 CALL LOOK_PASS. CALL MLOOP JMP $. 逢甲大學 e-Paper (92學年度).
(63) 8051應用電子密碼鎖. ;-------------------------------------------MESS:. DB "PA.ASM 8051 PASSWORD WITH 93C46". PASS0: DB 1,2,3,4 ;-------------------------------------------; DELAY Xms. R5*10 ms. DELAY: MOV R6,#50 $1: MOV R7,#100 DJNZ R7,$ DJNZ R6,$1 DJNZ R5,DELAY RET ;--------------------LED_BL: MOV R4,#6 $0: CPL WLED MOV R5,#3 CALL DELAY DJNZ R4, $0 RET ;------------------------------------------------; FIND DIG CODE 0--F ; KEY PAD:STANDARD ; 1 2 3 C ; 4 5 6 D ; 7 8 9 E ; A 0 B F ;TABLE_DIG: ;. DB. 01H, 04H, 07H, 0AH. ;. DB. 02H, 05H, 08H, 00H. ;. DB. 03H, 06H, 09H, 0BH. ;. DB. 0CH, 0DH, 0EH, 0FH. ; KEY PAD: TYPE A ; F E D C ; B 3 6 9 ; A 2 5 8 ; 0 1 4 7 TABLE_DIG:. 逢甲大學 e-Paper (92學年度).
(64) 8051應用電子密碼鎖. DB. 0FH, 0BH, 0AH, 00H. DB. 0EH, 03H, 02H, 01H. DB. 0DH, 06H, 05H, 04H. DB. 0CH, 09H, 08H, 07H. ;--------------------------------------------------------; USE P2 ; R0 : BUF PT NO USE ; R1 : COUNT 1 ; R2 : COUNT 2 ; R3 : SCAN SIGNAL ; R4 : COUNT KEY_NO ;-----------------SCAN: MOV R3, #FEH. ; LOAD INITIAL SCAN SIGNAL. MOV R4, #0. ; KEY NO COUNT. MOV R1, #4. ; COUNT TIMES. CLR. ; NO KEY ON. PSW.5. ;...................................... L1: ; SEND OUT SCAN SIGNAL VIA P2.0~P2.3 MOV A, R3 MOV P2,A ;.................................. ; DELAY A WHILE ....... MOV R5, #1 CALL DELAY. ; READ I/P DATA FROM P2.4~P2.7 MOV A,P2 ANL A,#F0H. ; GET HIGH 4 BIT. EX:1110XXXX. ; CHECK KEY PRESSED ? MOV R2,#4 ; COUNT 2 ;................................. L2: JB ACC.4, N1. ; NO KEYED. MOV KEY_NO, R4 SETB PSW.5. ; KEY PRESS....... N1:. 逢甲大學 e-Paper (92學年度).
(65) 8051應用電子密碼鎖. INC R4 RR A. ; KEY NO ++ ; CHECK KEY NO. DJNZ R2, L2. ; CHANGE SCAN CODE. EX:XXXX1101. MOV A, R3 RL A MOV R3, A DJNZ R1, L1. ;.................................... ; SET FKEY BACK: JNB PSW.5, NO_KEY SETB FKEY RET NO_KEY: CLR FKEY ; NO KEY PRESSED......... RET ;--------------------------------------------------------; SCAN KEY ON AND OFF THEN PASS KEY_NO SCAN_KEY: CLR FKEY $1: CALL SCAN ; IF(KEY_ON) WAIT. KEY_OFF. JB FKEY, WAIT_OFF ; NO KEY ON RETURN.... RET WAIT_OFF: CALL SCAN JB FKEY, WAIT_OFF RET ;---------------------------------------; WAIT KEY IN............. ; RETURN A: DIGIT NO GET_KEY: CLR FKEY CALL SCAN. ;. 逢甲大學 e-Paper (92學年度).
(66) 8051應用電子密碼鎖. ; IF(KEY_ON) WAIT. KEY_OFF. JB FKEY, $1 ; NO KEY ON WAIT KEY IN.............. JMP GET_KEY $1: CALL SCAN JB FKEY, $1 ; KEY INDEX TO DIGIT NO. MOV A,KEY_NO MOV DPTR, #TABLE_DIG MOVC A,@A+DPTR RET ;----------------------------------------------LOOK: MOV CO,#4 MOV R0,#PASSNEW $1: MOV A,@R0 INC R0 DJNZ CO,$1 RET ;---------------------CHECK_PASS: CALL IP_PASS CALL LOOK. ;COMP PASS[] TO PASS0[]........... MOV CO,#4 MOV R0,#PASS MOV DPTR, #PASS0 $1: MOV A, #0 MOVC A,@A+DPTR MOV B, @R0 CJNE A,B, $2 INC DPTR INC R0 ;............................. DJNZ CO,$1. 逢甲大學 e-Paper (92學年度).
(67) 8051應用電子密碼鎖. CALL OK MOV R4,#1 CALL LED_BL CALL LED_BL RET $2: ;........................... JMP COMP ERROR: CALL ERR CALL LED_BL RET ;------------------------COMP: ;COMP PASS[] TO PASSNEW[]........... MOV CO,#4 MOV R0,#PASS MOV R1,#PASSNEW $11: MOV A, @R0 MOV B, @R1 CJNE A,B, ERROR INC R0 INC R1 ;............................. DJNZ CO,$11 CALL OK RET ;--------------------------------------------; KEY IN 4 PASS SHOW ON LCD LINE 2 IP_PASS: MOV DPTR,#M_IP MOV A,#2 ; LINE2 CALL LCD_PRINT. MOV B,#9. ; X POS.. MOV CO,#4. ; GET 4 KEYS............. MOV R0, #PASS $1:. 逢甲大學 e-Paper (92學年度).
(68) 8051應用電子密碼鎖. CALL GET_KEY MOV @R0,A. ; LOAD TO PASS[]. ADD A,#30H ; CONVERT 0--9 TO ASC. CALL LCDP2 INC B INC R0 DJNZ CO, $1 RET ;---------------------------OK: MOV DPTR,#M_OK MOV A,#2 ; LINE2 CALL LCD_PRINT CALL DOOR_OPEN RET ;----------------------------ERR: MOV DPTR,#M_ERR MOV A,#2 ; LINE2 CALL LCD_PRINT CALL ALARM RET ;----------------------------SLINE2: MOV DPTR,#LMESS2 MOV A,#2 ; LINE2 CALL LCD_PRINT RET ;---------------------------; SET NEW PASS........... SET_PASS: ; GET 4 KEYS............ MOV DPTR,#M_IP_NEW MOV A,#2 ; LINE2 CALL LCD_PRINT. MOV B,#12 MOV CO,#4. ; X POS. ; GET 4 KEYS............. MOV R0, #PASSNEW $1:. 逢甲大學 e-Paper (92學年度).
(69) 8051應用電子密碼鎖. CALL GET_KEY MOV @R0,A. ; LOAD TO PASS[]. ADD A,#30H ; CONVERT 0--9 TO ASC. CALL LCDP2 INC B INC R0 DJNZ CO, $1 RET ;----------------------------------------------------------------------M_IP:. DB "I/P PASS:..... ",0. M_OK:. DB "PASSWORD OK !!! ",0. M_ERR:. DB "PASSWORD ERROR !",0. M_IP_NEW: DB "I/P NEWPASS:....",0 ;---------------------------------------------------------; SHOW ON LCD LOOK_PASS: MOV B,#0 MOV CO,#4 MOV R0,#PASSNEW $1: MOV A,@R0 ADD A,#30H CALL LCDP2 INC R0 INC B DJNZ CO,$1. MOV R5,#100 CALL DELAY CALL SLINE2 RET ;---------------------------------------AL_ON:. SETB AL. RET ;------------------AL_OFF: CLR AL RET ;-------------------. 逢甲大學 e-Paper (92學年度).
(70) 8051應用電子密碼鎖. REL_ON:. SETB REL. RET ;------------------REL_OFF: CLR REL RET ;------------------INIT_PORT: CALL AL_OFF CALL REL_OFF RET ;--------------------DOOR_OPEN: CALL REL_ON MOV R5, #200; 2000 mS CALL DELAY CALL REL_OFF RET ;--------------------------------------ALARM: CALL LED_BL CALL AL_ON ;.......................... MOV R4,#ALSEC ; $1: MOV R5,#100 ; 100x10 mS=1000 mS CALL DELAY. DJNZ R4,$1 CALL AL_OFF RET ;----------------------------------------------------------MLOOP: CALL GET_KEY ; JUDGE WHICH KEY............. ; 'A'--> SET NEW PASS. ; 'B'--> CHECK PASS.. CJNE A,#KA, $3 ; 'A'--> SET NEW PASS. ........... CALL SET_PASS. 逢甲大學 e-Paper (92學年度).
(71) 8051應用電子密碼鎖. CALL SLINE2 ; WR. PASS TO C46 CALL WR_PASS JMP MLOOP. $3: CJNE A,#KB, $4 ; 'B'--> CHECK PASS.. ............... CALL CHECK_PASS CALL SLINE2 JMP MLOOP $4: JMP MLOOP RET ;------------------------------------;. LCD I/O. ;------------------------------------SET_LCD: CLR. EN ;. en=0. CALL INIT_LCD MOV R5,#10 CALL DELAY. MOV DPTR,#LMESS1 MOV A,#1 ; LINE1 CALL LCD_PRINT. ;. MOV DPTR,#LMESS2. ;. MOV A,#2 ; LINE2. ;. CALL LCD_PRINT RET. ;--------------------------------LMESS1: DB "PASSWORD & 93C46",0 LMESS2: DB "A OR B KEY .....",0. INIT_LCD1: MOV A,#28H CALL WCOM MOV A,#0CH CALL WCOM. 逢甲大學 e-Paper (92學年度).
(72) 8051應用電子密碼鎖. MOV A,#0EH CALL WCOM MOV A,#01H CALL WCOM RET ;----------------------------------------; A=LINE 1 OR 2 ; DPTR = MESSAGE POINTER LCD_PRINT: CJNE A,#1,LINE2 LINE1:. MOV A,#80H. CALL WCOM CALL CLR_LINE MOV A,#80H CALL WCOM JMP FILL. LINE2:. MOV A,#C0H. CALL WCOM CALL CLR_LINE MOV A,#C0H CALL WCOM FILL: CLR A MOVC A,@A+DPTR CJNE A,#0,$1 RET $1: CALL WDATA INC DPTR JMP FILL RET ;--------------------------CLR_LINE: MOV R0,#24 $1: MOV A,#' ' CALL WDATA DJNZ R0,$1 RET. 逢甲大學 e-Paper (92學年度).
(73) 8051應用電子密碼鎖. ;------------------------------DE: MOV. LCDE, #100. DJNZ LCDE,$ RET ;-------------------EN1: SETB EN CALL DE CLR. EN. CALL DE RET ;------------------INIT_LCD: ; software reset 3 TIMES MOV P0, #30H CALL EN1 MOV P0, #30H CALL EN1 MOV P0, #30H CALL EN1. MOV P0, #20H CALL EN1 CALL INIT_LCD1 RET ;---------------------WCOM: ; WRITE HI 4. BIT. MOV P0, A CLR RS ; SET COMMAND CALL EN1 RLC A RLC A RLC A RLC A ; WRITE LO 4. BIT. MOV P0, A CLR RS ; SET COMMAND CALL EN1. 逢甲大學 e-Paper (92學年度).
(74) 8051應用電子密碼鎖. RET ;-------------------------------------WDATA: ; WRITE HI 4. BIT. MOV P0, A SETB RS ; SET DATA CALL EN1 RLC A RLC A RLC A RLC A ; WRITE LO 4 BIT MOV P0, A SETB RS ; SET DATA CALL EN1 RET ;-------------------------------------; PRINT A CHAR ON LCD LINE 1 ; A=ASC DATA ; B=LINE X POS. LCDP1: ; LINE 1 PUSH A MOV A,B ADD A,#80H CALL WCOM POP A CALL WDATA RET ;------------------------------; PRINT A CHAR ON LCD LINE 2 ; A=ASC DATA ; B=LINE X POS. LCDP2: ; LINE 1 PUSH A MOV A,B ADD A,#C0H CALL WCOM. 逢甲大學 e-Paper (92學年度).
數據
+2
相關文件
55 統計數據在數據庫作出修訂後,並沒同步修訂文字版的數據內容,對使 用者造成混淆錯引數字(例如數據庫中顯示 2015 年會議及展覽數目有 1263 項,惟文字版仍寫著 909
美國資訊交換標準碼 (American Standard Cord for Information Interchange, ASCII),唸作 “askee”-是大
當接收到一密文(ciphertext)為「YBIR」 ,而且知道它是將明文(plaintext)的英文字母所對應 之次序數字(如 A 的字母次序數字為 1,B 次序數字為
所以 10 個數字 個數字 個數字 個數字 pattern 就產生 就產生 就產生 就產生 10 列資料 列資料 列資料 列資料 ( 每一橫 每一橫 每一橫
中期 Ratdolt 的大寫字母在 S,E,I 等字母則略窄;而晚期 Griffo 的各個大寫字母之寬度則明顯 縮小,除了少數字母如
• 請打開 Word, 利用字型功能區任意設定 10 種不同 字型文字... 德霖休閒事業管理系
電腦鍵盤已經代替了筆,能夠快速打出一長串文字 ,大 多數人不會再選擇去「握筆寫字」,甚至有人都要 漸漸忘記文字
駭客集團「Gameover Zeus」被指自 2006 年起就散播病毒,入侵企業及個人 電腦,並利用儲存於電腦內的使用者密 碼與私人資料 登入銀行戶頭盜取資 金 ;此外,Gameover