單晶片微處理機基礎實習 主講:唐慧玲 老師
學習目標 介紹電子元件實物,及其代表符號 及運作原理。 介紹基本電路原理,結合電子元件 實作應用電路。 了結單晶片電腦結構、運作原理、 操作指令及程式寫作原則。 利用單晶片控制元件實作電子控制 應用。
實務講習項目 電路與電子元件 認識電阻 R-C 電路介紹 電晶體介紹 電子閃爍燈實驗 單晶片微控制器 - 8051 單晶片微控制器 I/O 實驗 延時副程式及其應用 程式查表應用
電路與電子元件 常用電子元件 電路上的元件符號 電路的繪製 電阻(Resistor) 電容(Capacitor) 二極體(Diode) 電晶體(Transistor) 發光二極體(LED) 開關(Switch) 其它元件 電路上的元件符號 電路的繪製
常用電子元件 其它元件 電容(Capacitor) 電阻(Resistor) 二極體(Diode) 發光二極體(LED) 開關(Switch) 電晶體(Transistor)(Q)
電路圖的繪製
認識電阻-電阻色碼介紹
認識電阻-練習
歐姆定律 並聯 I 應用 + V - 串聯
電壓/電流實驗
R-C 電路介紹 1. 電鍵 Sw 接到 a 點, R,C,電池 e0串聯 iR + q/C = R(dq/dt) + q/C = e0 q(t) = Ce0[1 – exp(-t/RC)] 電容器 C 充電, 時間常數 = RC 2. 充電到qmax, 電鍵Sw 接到b 點, R,C串聯 R(dq/dt) + q/C = 0 q(t) = qmexp(-t/RC) 電容器放電, t = = RC (鬆弛時間) q(t) = qm/e = qm/2.718 q(T1/2) = qm/2
電晶體介紹 NPN 小電流 大電流 大電流 小電流 PNP Vcc Gnd Vcc Gnd
電子閃爍燈實驗
單晶片微控制器 – MCS-51 AT89C51/AT89S51 腳位介紹 正電源 輸出入埠P1 輸出入埠P0 &擴充記憶 系統Reset 擴充記憶/IO 特殊用途 輸出/入埠P3 &特殊用途 輸出入埠P2 &擴充記憶 震盪輸入 系統接地
AT89C51 特性
AT59C51 內部結構圖
記憶體與特殊記憶體
MCS-51 基本線路接法 可做一般 I/O 用 +5V 輸出/入埠 P0 10uF 10K 22p 接地 輸出/入埠 P2 12M 22p
MCS-51 組合語言介紹 指令集 與 定址法 算數運算指令 直接訂址法 邏輯運算指令 立即定址法 布林運算指令 暫存器定址法 資料轉移指令 程式分支指令 直接訂址法 立即定址法 暫存器定址法 暫存器間接定址法 基底暫存器加索引暫存器間接定址法
算數運算指令
邏輯運算指令
布林運算指令
資料轉移指令
程式分支指令
組合語言程式設計介紹-I 說明 -- ; 宣告 指定位址 組合語言程式碼 程式結束 ; Project : LED Show Program ; I/O Delaration LED Reg P1.0 ;Declare P1 as LED Port Data0 Equ 55H Data1 Equ 0AAH IND Reg LED.0 ; ORG 000H ;Reset Vector JMP START ; System Beginning from Here ORG 020H START: Mov A,#Data0 Mov LED,A Call Delay200ms Mov A,#Data1 Jmp START: END 說明 -- ; 宣告 指定位址 組合語言程式碼 程式結束
組合語言程式設計介紹-II 標記區 指令碼 運算元 程式註解 ORG 020H START: Mov A,#Data0 ; 載入資料0 到 Acc Mov LED,A Call Delay200ms Mov A,#Data1 Jmp START: ; END
阻譯程序及晶片燒錄 實際應用 編譯流程 程式燒錄 編寫程式 Edition 原始碼檔 Source Code 燒錄 組譯 Assembling 目的碼檔 Object Code 鏈結 Linking 2/16進位檔 Hex File 實際應用
單晶片微控制器 I/O 實驗 基本輸出實驗 - LED 亮不亮 基本輸入實驗 - 開關控制 LEDs 作為輸出 按壓開關作為輸入 +5V LED x 4 220 x 4 LEDs 作為輸出 10uF 10K 22p x 2 按壓開關作為輸入 12Mhz SW x 4 基本輸入實驗 - 開關控制
延時副程式及其應用 開始 延時 LED 亮 延時 LED 滅
延時副程式及其應用-I 共延時多少時間???? 延時 設定R6, R7值 R7減 1 Delay: Mov R6,#100 ;設定R6值 返回 設定R6, R7值 R7=0? R6減 1 R6=0? Y N Delay: Mov R6,#100 ;設定R6值 Mov R7,#200 ;設定R7值 Dly1: Djnz R7,$ Djnz R6,Dly1 Ret
延時副程式及其應用-II 共延時多少時間???? 延時 設定R6值 設定R7值 Delay: Mov R6,#100 ;設定R6值 Dly1: Mov R7,#200 ;設定R7值 Dly2: Djnz R7,Dly2 Djnz R6,Dly1 Ret R7減 1 N R7=0? Y R6減 1 N R6=0? Y 返回
單晶片版LED閃爍燈 +5V 開始 LED x 4 220 x 4 10uF LED 亮 10K 22p x 2 LED 滅 12Mhz 延時(時間) 10uF LED 亮 10K 延時(時間) 22p x 2 LED 滅 12Mhz
單晶片版LED閃爍燈 Delay: Mov R6,#100 ;設定R6值 Dly1: Mov R7,#200 ;設定R7值 ; Project : LED Show Program ; I/O Delaration LED Reg P0 Data0 Equ 01H Data1 Equ 02H IND Reg LED.0 ; ORG 000H JMP START ORG 020H START: Mov A,#Data0 Mov LED,A Call Delay Mov A,#Data1 Jmp START Delay: Mov R6,#100 ;設定R6值 Dly1: Mov R7,#200 ;設定R7值 Dly2: Djnz R7,Dly2 Djnz R6,Dly1 Ret
各式劈靂燈實驗
各式劈靂燈實驗
實習測驗 數字式計時
實習測驗 -- 數字式計時 七段顯示器接腳圖
實習測驗 -- 數字式計時 0~9 數字顯示
實習測驗 -- 數字式計時 題目說明 讓 LED七段顯示器依序顯示 0 到 9 數字 每次顯示的切換時間為一秒鐘 實習測驗 -- 數字式計時 題目說明 讓 LED七段顯示器依序顯示 0 到 9 數字 每次顯示的切換時間為一秒鐘 顯示到數字9後 下一次顯示又從一開始 顯示六次輪循 應該發費一分鐘整
實習測驗 -- 數字式計時 提示 找出 0 到 9 數字顯示接腳供電組合(0/1) 設計一Delay副程式時間為一秒鐘 實習測驗 -- 數字式計時 提示 找出 0 到 9 數字顯示接腳供電組合(0/1) 設計一Delay副程式時間為一秒鐘 切換組合之間呼叫Delay副程式一次
實習測驗 -- 數字式計時 提示 2 + 3+(3+(3+ZZ*2)*YY )*XX 1+(1+(1+ZZ*2+2)*YY +2)*XX+2 實習測驗 -- 數字式計時 提示 MC .... Mov P0,#00110010B Call Delay 2 總呼叫時間 2 + 3+(3+(3+ZZ*2)*YY )*XX Delay: Mov R5,#XX ;設定R5值 Dly0: Mov R6,#YY ;設定R6值 Dly1: Mov R7,#ZZ ;設定R7值 Dly2: Djnz R7,Dly2 Djnz R6,Dly1 Djnz R5,Dly0 Ret 1 2 1+(1+(1+ZZ*2+2)*YY +2)*XX+2
實習測驗 -- 數字式計時 Result:1000001 XX:167 YY:19 ZZ:156 Result:1000001 XX:167 YY:21 ZZ:141 Result:1000001 XX:167 YY:35 ZZ:84 Result:1000001 XX:167 YY:45 ZZ:65 Result:1000001 XX:167 YY:57 ZZ:51 Result:1000001 XX:167 YY:63 ZZ:46 Result:1000001 XX:167 YY:95 ZZ:30 Result:1000001 XX:167 YY:105 ZZ:27 Result:1000001 XX:167 YY:133 ZZ:21 Result:1000001 XX:167 YY:171 ZZ:16 Result:1000003 XX:254 YY:14 ZZ:139 提示 Result:999999 XX:23 YY:185 ZZ:116 Result:999999 XX:23 YY:235 ZZ:91 Result:999999 XX:46 YY:88 ZZ:122 Result:999999 XX:46 YY:104 ZZ:103 Result:999999 XX:46 YY:152 ZZ:70 Result:1000003 XX:127 YY:17 ZZ:230 Result:1000001 XX:167 YY:15 ZZ:198