數位邏輯與實習:實驗二 基本函數運算與笛摩根定理
A. 基本函數運算:試完成下述的實驗,並將結果填入真值表中。
A-a. A+AB= A
實驗目的:1. 請使用程式語言寫出 A AB+ = 之計算結果。 A
2. 利用二個埠當輸入,二個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3. 真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 將模擬板上 J4 的 PA4、PA5 接至模擬板上 J5 的 L0、L1。
3. 將模擬板上 J3 的 PA0、PA1 分別依照真值表上所示來測試輸出的狀態,請於 真值表對應之輸出 Output 欄填上「0」,「暗」則填「1」。
Truth Table (真值表):
Input Output
A B A+AB A
0 0 0 1 1 0 1 1
A-b. A+AB= + A B
實驗目的:1. 請使用程式語言寫出 A AB+ = + 之計算結果。 A B
2. 利用二個埠當輸入,二個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
實作方法:接法同實驗 A-a
Truth Table (真值表):
Input Output
A B A+AB A+B
0 0 0 1 1 0 1 1
班級:
姓名:
學號:
A-c. (A+B A C)( + )= +A BC
實驗目的:1. VDD 與 VSS 的接法同實驗 A-a。
2. 利用三個埠當輸入,二個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
實作方法:1. 請先照 A-a 之方法接線。
2.. 將模擬板上 J3 的 PA0、PA1、PA2 分別依照真值表上所示來測試輸出的狀態,
即觀察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Output 欄填上「0」,「暗」則填「1」。
範例程式:
// (A+B)(A+C)=A+BC
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned A,B,C,O1,O2; // 設定非負之參數 a,b,c,d,e
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
A=_pa0; // 設定 pa0 輸入的值存至 A B=_pa1; // 設定 pa1 輸入的值存至 B C=_pa2; // 設定 pa2 輸入的值存至 C O1=(A|B)&(A|B); // 將計算的結果存至 O1 O2=A|(B&C); // 將計算的結果存至 O2 _pa4=O1; // 將 O1 的值由 pa4 輸出 _pa5=O2 // 將 O2 的值由 pa5 輸出 }
} // 主程式底端
Truth Table (真值表):
Input Output
A B C (A+B)(A+C) A+BC
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
B. 笛摩根定理
B-a. A+ =B AB
實驗目的:1. 請使用程式語言寫出 A B+ = AB 之計算結果。
2. 利用二個埠當輸入,二個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
實作方法:接法同實驗 A-a
Truth Table (真值表):
Input Output
A B A+B AB
0 0 0 1 1 0 1 1
b. AB= + A B
實驗目的:1. 請使用程式語言寫出 AB= + 之計算結果。 A B
2. 利用二個埠當輸入,二個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
實作方法:接法同實驗 A-a
Truth Table (真值表):
Input Output
A B AB A+B
0 0 0 1 1 0 1 1
c. (AB+AB)=AB+AB
實驗目的:1. 請使用程式語言寫出 (AB+AB)= AB+AB之計算結果。
2. 利用二個埠當輸入,二個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3. 真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:接法同實驗 A-a
範例程式:
// !((!A&B)|(A&!B))=(A&B)|(!A&!B)
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned A,B,O1,O2; // 設定非負之參數 A,B,O1,O2
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
A=_pa0; // 設定 pa0 輸入的值存至 A B=_pa1; // 設定 pa1 輸入的值存至 B O1=!((!A&B)|(A&!B)); // 將計算的結果存至 O1 O2=(A&B)|(!A&!B); // 將計算的結果存至 O2 _pa4=O1; // 將 O1 的值由 pa4 輸出 _pa5=O2; // 將 O2 的值由 pa5 輸出 }
}
Truth Table (真值表):
Input Output
A B (AB+AB) AB+AB
0 0 0 1 1 0 1 1 心得與討論: