數位邏輯與實習:實驗一 基本邏輯閘實驗
A. NOT (反閘)
實驗目的:1. 請使用程式語言寫出「反閘」之功能。
2. 利用一個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3. 真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 模擬板上之 VDD 表示邏輯「1」與 VSS 表示邏輯「0」。
(注意:正、負端的排針不可相接)
2. 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
3. 將模擬板上 J3 的 PA0 接至 VSS 的排針上,觀察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,「暗」則填「1」。
4. 再將模擬板上 J3 的 PA0 換接至 VDD 的排針上,觀察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,「暗」則填「1」。
範例程式:
// Not Gate
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 _pa4=!_pa0; // 「!」代表相反,0 變 1,1 變 0。
} // 主程式底端
Truth Table (真值表): 波形
Input Ouput A Y
0 1
A:________V/DIV Y:________V/DIV
班級:
姓名:
學號:
V1.0
B. Buffer (緩衝器)
實驗目的:1. 請使用程式語言寫出緩衝器之功能。
2. 利用一個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3. 真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
2. 將模擬板上 J3 的 PA0 接至 VSS 的排針上,觀察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,「暗」則填「1」。
3. 再將模擬板上 J3 的 PA0 換接至 VDD 的排針上,觀察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,「暗」則填「1」。
範例程式:
// Buffer
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 _pa4=_pa0; // 將 pa0 的值讀入,並由 pa4 輸出
} // 主程式底端
Truth Table (真值表): 波形
Input Ouput
A Y
0 1
A:________V/DIV Y:________V/DIV
C. AND (及閘)
實驗目的:1. 請使用程式語言寫出「及閘」之功能。
2. 利用二個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3. 真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
2. 將模擬板上 J3 的 PA0、PA1 分別依照真值表上所示來測試輸出的狀態,即觀 察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,
「暗」則填「1」。
範例程式:
// And Gate
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned a; // 設定一個非負之參數 a
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
a=_pa0 & _pa1; //「&」在程式中即代表「and」之意 _pa4=a; // 將計算出來的結果由 pa4 輸出 }
} // 主程式底端
Truth Table (真值表): 波形
Input Output A B Y
0 0 0 1 1 0 1 1
A:________V/DIV Y:________V/DIV
D. OR (或閘)
實驗目的:1.請使用程式語言寫出或閘之功能。
2.利用二個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3.真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
2. 將模擬板上 J3 的 PA0、PA1 分別依照真值表上所示來測試輸出的狀態,即觀 察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,
「暗」則填「1」。
範例程式:
// Or Gate
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned a; // 設定一個參數 名稱為「a」
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
a=_pa0 | _pa1; //「|」在程式中即代表「or」之意 _pa4=a; // 將計算出來的結果由 pa4 輸出 }
} // 主程式底端
Truth Table (真值表): 波形
Input Output A B Y
0 0 0 1 1 0 1 1
A:________V/DIV Y:________V/DIV
E. NAND (反及閘)
實驗目的:1.請使用程式語言寫出反及閘之功能。
2.利用二個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3.真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
2. 將模擬板上 J3 的 PA0、PA1 分別依照真值表上所示來測試輸出的狀態,即觀 察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,
「暗」則填「1」。
範例程式:
// Nand Gate
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned a; // 設定一個非負之參數 a
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
a=!(_pa0 & _pa1); // 先利用「and」計算,再將結果「反向」
_pa4=a; // 將計算出來的結果由 pa4 輸出 }
} // 主程式底端
Truth Table (真值表): 波形
Input Output A B Y
0 0 0 1 1 0 1 1
A:________V/DIV Y:________V/DIV
F. NOR (反或閘)
實驗目的:1. 請使用程式語言寫出反或閘之功能。
2.利用二個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3.真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
2. 將模擬板上 J3 的 PA0、PA1 分別依照真值表上所示來測試輸出的狀態,即觀 察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,
「暗」則填「1」。
範例程式:
// Nor Gate
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned a; // 設定一個非負之參數 a
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
a=!(_pa0 | _pa1); // 先利用「or」計算,再將結果「反向」
_pa4=a; // 將計算出來的結果由 pa4 輸出 }
} // 主程式底端
Truth Table (真值表): 波形
Input Output A B Y
0 0 0 1 1 0
1 1 A:________V/DIV
Y:________V/DIV
G. XOR (互斥或閘)
實驗目的:1. 請使用程式語言寫出互斥或閘之功能。
2. 利用二個埠當輸入,一個埠當輸出,並將輸出結果以模擬板的 LED 顯示。
3. 真值表上的 1 代表高準位(請接 VDD),0 代表低準位(請接 VSS)。
實作方法:1. 將模擬板上 J4 的 PA4 接至模擬板上 J5 的 L0。
2. 將模擬板上 J3 的 PA0、PA1 分別依照真值表上所示來測試輸出的狀態,即觀 察 LED1 燈是否有亮,若 LED1 燈「亮」,請於真值表對應之輸出 Y 欄填上「0」,
「暗」則填「1」。
範例程式:
// Xor Gate
#include "ht48e50.h" // 載入 ht48e50.h 的設定值 void main () // 主程式
{
unsigned a; // 設定一個非負之參數 a
_pac=0x0f; // 設定 _pa 低 4bit(pa0~pa3)為輸入;
// 高 4bit(pa4~pa7)為輸出。
_pa=0xff; // 設定 _pa 起始值(LED 初始為暗)
while(1) // 無限迴圈,讓程式重複執行 while{…}中的程式碼 {
a=_pa0 ^ _pa1; //「^」在程式中即代表「xor」之意 _pa4=a; // 將計算出來的結果由 pa4 輸出 }
} // 主程式底端
Truth Table (真值表): 波形
Input Output A B Y
0 0 0 1 1 0 1 1
A:________V/DIV Y:________V/DIV