NAMA : MUHAMMAD AULIA RAHMAN NIM : 3100210020
TUGAS 7 PRAKTIKUM MIKROPROSESSOR DAN MIKROKONTROLLER
1. Rangkaian antarmuka sebuah penampil 7 segmen dengan arduino uno dan menggunakan dekoder BCD ke 7 ruas. Buatlah program untuk mengendalikan penampil 7 segmen pada rangkaian tersebut sedemikian sehingga:
a. menampilkan angka 0,1,...9, dan kembali ke 0, begitu seterusnya.
void inis_pin(int awal, int akhir, boolean logika) { for (int i = awal; i <= akhir; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, logika);
} }
void kendali_LED(int awal, int akhir, int nilai) { for (int i = awal; i <= akhir; i++) {
boolean logika = nilai & (1 << (akhir - i));
digitalWrite(i, logika);
} }
void setup() {
inis_pin(2, 5, 0);
}
void loop() {
kendali_LED(2, 5, 0b0000); // 0 delay(1000);
kendali_LED(2, 5, 0b1000); // 1 delay(1000);
kendali_LED(2, 5, 0b0100); // 2 delay(1000);
kendali_LED(2, 5, 0b1100); // 3 delay(1000);
kendali_LED(2, 5, 0b0010); // 4 delay(1000);
kendali_LED(2, 5, 0b1010); // 5 delay(1000);
kendali_LED(2, 5, 0b0110); // 6 delay(1000);
kendali_LED(2, 5, 0b1110); // 7 delay(1000);
kendali_LED(2, 5, 0b0001); // 8 delay(1000);
kendali_LED(2, 5, 0b1001); // 9 delay(1000);
}
b. menampilkan angka 9,8,...0, dan kembali ke 9, begitu seterusnya.
void inis_pin(int awal, int akhir, boolean logika) { for (int i = awal; i <= akhir; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, logika);
} }
void kendali_LED(int awal, int akhir, int nilai) {
for (int i = awal; i <= akhir; i++) {
boolean logika = nilai & (1 << (akhir - i));
digitalWrite(i, logika);
} }
void setup() {
inis_pin(2, 5, 0);
}
void loop() {
kendali_LED(2, 5, 0b1001); // 9 delay(1000);
kendali_LED(2, 5, 0b0001); // 8 delay(1000);
kendali_LED(2, 5, 0b1110); // 7 delay(1000);
kendali_LED(2, 5, 0b0110); // 6 delay(1000);
kendali_LED(2, 5, 0b1010); // 5 delay(1000);
kendali_LED(2, 5, 0b0010); // 4 delay(1000);
kendali_LED(2, 5, 0b1100); // 3 delay(1000);
kendali_LED(2, 5, 0b0100); // 2 delay(1000);
kendali_LED(2, 5, 0b1000); // 1 delay(1000);
kendali_LED(2, 5, 0b0000); // 0 delay(1000);
}
2.
Rangkaian antarmuka 3 buah penampil 7 segmen dengan arduino uno menggunakan
teknik scanning. Buatlah program untuk mengendalikan penampil 7 segmen pada
rangkaian tersebut sedemikian sehingga menampilkan 3 angka terakhir NIM anda
masing-masing.
void inis_pin(int awal,int akhir,boolean logika) {for (int i=awal;i<=akhir;i++){
pinMode(i,OUTPUT);
digitalWrite(i,logika);
} }
void kendali_LED(int awal,int akhir, int nilai) {for (int i=awal;i<=akhir;i++){
boolean logika= nilai&(1<<(akhir-i));
digitalWrite(i,logika);}
}
void setup() {
inis_pin(2,9,0);
inis_pin(A0,A2,0);
}
void loop() {
kendali_LED(2,9,0b01111110);
kendali_LED(A0,A2,0b100);
delay(30);
kendali_LED(2,9,0b00011000);
kendali_LED(A0,A2,0b010);
delay(30);
kendali_LED(2,9,0b11111100);
kendali_LED(A0,A2,0b001);
delay(30);
}
3. Buatlah rangkaian seperti no 2, namun ditambahkan dekoder BCD ke 7 segmen.
Buatlah program untuk mengendalikan penampil 7 segmen pada rangkaian tersebut sedemikian sehingga menampilkan 3 angka terakhir NIM anda masing- masing.
const int segmenPins[7] = {2, 3, 4, 5, 6, 7, 8}; // Pin untuk segmen A-G const int digitPins[3] = {9, 10, 11}; // Pin untuk mengendalikan digit 1-3
const int dekoderBCD[10] = { 0b01111110, // 0
0b00011000, // 1 0b10110110, // 2 0b10011110, // 3 0b11011000, // 4 0b11001110, // 5 0b11101110, // 6 0b00011100, // 7 0b11111110, // 8 0b11011110 // 9 };
void setup() {
for (int i = 0; i < 7; i++) { pinMode(segmenPins[i], OUTPUT);
}
for (int i = 0; i < 3; i++) { pinMode(digitPins[i], OUTPUT);
} }
void tampilkanAngka(int angka) { for (int i = 0; i < 7; i++) {
digitalWrite(segmenPins[i], bitRead(dekoderBCD[angka], i));
} }
void loop() {
for (int digit = 0; digit < 3; digit++) { tampilkanAngka(digit);
for (int i = 0; i < 3; i++) {
digitalWrite(digitPins[i], i == digit);
}
delay(5); // Delay untuk stabilisasi tampilan }
}