Tải bản đầy đủ (.docx) (13 trang)

báo cáo lập trình hướng đối tượng kc263 đề tài mạch kiểm tra chẳn lẻ 4 bit

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (942.72 KB, 13 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC CẦN THƠTRƯỜNG BÁCH KHOA</b>

<b>KHOA ĐIỆN TỬ-VIỄN THÔNG*******</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

1. Tạo project mới...6

2. Tạo file cho chương trình...7

3. Viết code cho file...7

4. Kiểm tra lỗi...9

5. Chạy chương trình...9

6. Kết quả...11

<b>VI. KẾT LUẬN...11HẾT</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I. THIẾT KẾ </b>

<b>1. </b>

<b>Mô tả chức năng </b>

Mạch kiểm tra chẵn lẻ 4 bit là một mạch điện tử được sử dụng để xác định tính chẵn hoặc lẻ của một số nhị phân 4 bit. Mạch này thường sử dụng cáccổng logic để phân tích số lượng bit 1 trong một từ nhị phân và xác định xem tổng số bit 1 là chẵn hay lẻ.

Mạch hoạt động như sau:

 Khi một từ nhị phân 4 bit được đưa vào mạch, mạch sẽ phân tích vàđưa ra kết quả là 1 nếu tổng số bit 1 là chẵn (đối với mạch chẵn) hoặc 0 nếu tổng số bit 1 là lẻ (đối với mạch chẵn)

 Đối với mạch lẻ, kết quả sẽ ngược lại: 1 nếu tổng số bit 1 là lẻ và 0 nếu tổng số bit 1 là chẵn.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>IV. VIẾT CHƯƠNG TRÌNH </b>

<i>Gồm 2 file: file main.cpp và file Gate.h</i>

#include "Gate.h"int main() { char stopme; //Setting labels

ExOrGate exor1 (" EXOR1 "); ExOrGate exor2 (" EXOR2 "); ExOrGate exor3 (" EXOR3 "); Connector c1 (&exor1, &exor3); Connector c2 (&exor2, &exor3); /*exor1.setNextPin(1);

exor1.setNextPin(0); exor2.setNextPin(1); exor2.setNextPin(1); */

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

// The output shows order of operators

cout << " Ngo vao 1: "<< exor1.getPinA()<< endl; cout << " Ngo vao 2: "<< exor1.getPinB()<< endl; cout << " Ngo vao 3: "<< exor2.getPinA()<< endl; cout << " Ngo vao 4: "<< exor2.getPinB()<< endl; cout << " Ngo ra EXOR : "<< exor3.getOutput()<< endl; cin >> stopme; //holds open window under some conditions. return 0;

#ifndef GATE_H_#define GATE_H_#include <string.h>#include <iostream>using namespace std;class LogicGate {public:

LogicGate(string n){ label = n;

}

string getLabel(){ return label; }

bool getOutput(){

output = performGateLogic(); return output;

}

virtual bool performGateLogic(){

cout << "ERROR! performGateLogic BASE" << endl; return false;

}

virtual void setNextPin(bool source) {

cout << "ERROR! setNextPin BASE" << endl; }

string label; bool output;};

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

class BinaryGate : public LogicGate {public:

BinaryGate(string n) : LogicGate(n) { pinATaken = false;

pinBTaken = false; }

return pinA; }

return pinB; }

virtual void setNextPin(bool source) { if (pinATaken == false) {

pinA = source;

this->pinATaken = true; }

else if (pinBTaken == false) { pinB = source;

this->pinBTaken = true; }

}private:

bool pinA, pinATaken, pinB, pinBTaken;};

class ExOrGate : public BinaryGate {public:

ExOrGate(string n) : BinaryGate(n) {}; virtual bool performGateLogic() { bool a = getPinA();

bool b = getPinB();

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

if ((a == 1 && b == 0) || (a==0 && b==1) ) { return true;

} else {

return false; }

}};

class Connector{public:

Connector(LogicGate *fgate, LogicGate *tgate) { fromgate = fgate;

togate = tgate;

tgate->setNextPin(fromgate->getOutput()); }

LogicGate *getFrom() { return fromgate; }

LogicGate *getTo() { return togate; }

LogicGate *fromgate, *togate;};

#endif /* GATE_H_ */

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>V. CÁC BƯỚC THỰC HIỆN </b>

<b>1. Tạo project mới</b>

<i><b>Mở CODE COMPOSER STUDIO lên chọn File → New → Project như</b></i>

hình bên dưới

<i> Trong hộp thoại New Project chọn C/C++ → C++Project →Next</i>

<i>Đặt tên cho Project, tại mục Executable → Empty Project và mục </i>

<i>Toolchains → MinGW GCC nhấn Finish để hoàn tất</i>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>2. Tạo file cho chương trình </b>

<i><b>Tiến hành tạo File Gate.h. Bấm chuột phải vào chọn New → Header </b></i>

<i>File, đặt tên Gate.h và nhấn Finish.</i>

<i><b>Tiếp tục tạo File main.cpp. Bấm chuột phải vào chọn New → Source </b></i>

<i>File, đặt tên main.cpp và nhấn Finish.</i>

<b>3. </b>

<b>Viết code cho file</b>

 <i>Nhập code cho file main.cpp</i>

<i>Nhập code cho file Gate.cpp</i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>4. Kiểm tra lỗi</b>

<i>Nhấp chuột phải vào lthdt và chọn Build Project kiểm tra chương trình</i>

có lỗi hay không. Nếu lỗi hãy chỉnh sửa và tiếp tục kiểm tra đến khi hết lỗi.

<b>5. Chạy chương trình </b>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>Tại mục C/C++ Application chọn lthdt Debug sau đó tại mục main chọn</b>

<i>Browser ở phần C/C++ Application để lấy địa chỉ chứa file chạy của lthdt.</i>

<i>Chọn file lthdt.exe theo đường dẫn. Chọn Open → Run</i>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>6. Kết quả</b>

Nhập ngõ vào nhị phân để kiểm tra ngõ ra chẳn lẻ.

 <b>NHẬN XÉT: Mạch chạy đúng theo yêu cầu, kiểm tra được tính chẳn lẻ </b>

của đầu vào (input).

</div>

×