Tải bản đầy đủ (.pdf) (22 trang)

báo cáo thực hành giao tiếp điều khiển thiết bị ngoại vi

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 (6.21 MB, 22 trang )

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

<b>BÁO CÁO THỰC HÀNH</b>

<b>GIAO TIẾP ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI</b>

Giáo viên hướng dẫn : Nguyễn Duy Khanh

<i>Tên bài thực hành: Giao tiếp và điều khiển thiết bị ngoại vi thông qua cổng USB giữa máy </i>

<b>tính và vi điều khiển PIC18F4550.</b>

<i>Tên thành viên nhóm:</i>

 NGUYỄN MINH NHỰT - 21026801 LỮ HOÀNG NAM - 21030371

Ngày thực hiện: 26 / 02 / 2024

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

<b>PHẦN I: Chuẩn đầu ra mơn học -1: Trình bày được cấu tạo, nguyên lý hoạt động và biết sử dụng các thành phần trong hệ thống, thiết bị điện tử</b>

<i><b>1.1.Mô tả tóm tắt nội dung bài thực hành</b></i>

- Mơ tả tóm tắt nội dung, u cầu và mục đích của bài thực hành.

Mơ phỏng việc sử dụng một máy tính có tích hợp cổng COM (chuẩn RS232) để điều khiển thiết bị ngoại vi (LED và nút nhấn) dùng bộ điều khiển là vi điều khiển PIC18F4550 thông qua truyền thông UART.

+ Xác định, liệt kê các linh kiện, thiết bị cần sử dụng.

+ Mơ phịng việc sử dụng một máy tính có tích hợp cơng COM (chuẩn RS232) đề điều khiến thiết bị ngoại vi (LED và nhít nhấn) dùng bộ điều khiến là vi điều khiên PIC18F4550 thông qua truyền thông UART.

+ Ở mức 1 bao gồm: 1 LED, 1 SW+ Ở mức 2 bao gồm: 2 LED, 2 SW

- Xác định, liệt kê các linh kiện, thiết bị cần sử dụng.+ Vi xử lý loại PIC18F4550

+Cổng USB+Sử dụng 3 nút nhấn

+ Sử dụng 3 điện trở 330 ohm, 4 điện trở 10k và 4 LED

<i><b>1.2.Sơ đồ khối của bài thực hành.</b></i>

- Vẽ sơ đồ khối.

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

- Giải thích chức năng, nhiệm vụ từng khối.Giải thích các chức năng nhiệm vụ của từng khối:

+ Khối giao tiếp : Dùng để gửi data vào khối vi xử lý PIC18F4550+ Khối thạch anh: là tần số dao động trong proteus

+ Khối nhập : Dùng để nhập data vào khối giao tiếp+ PIC18F4550:Dùng để chuyển tín hiệu qua khối xuất+ Khối xuất: Dùng để hiển thị ra tín hiệu để nhìn thấy

Khối nhập button

Khốithạch

anh

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

<b>PHẦN II: Chuẩn đầu ra mơn học 2: Có khả sử dụng các phần mềm lập trình, mơ phỏng</b>

<i><b>2.1. Khả năng sử dụng phần mềm mô phỏng, vẽ mạch - Proteus</b></i>

Vẽ sơ đồ nguyên lý của mạch trong Proteus.

<i><b>2.2. Khả năng sử dụng phần mềm lập trình Arduino</b></i>

Một hình ảnh chụp màn hình Full – có code trong phần mềm Arduino.

<i><b>2.3. Khả năng sử dụng phần mềm lập trình cho PIC - MikroC</b></i>

Một hình ảnh chụp màn hình Full – có code trong phần mềm MikroC.

#define led_on 1#define led_off 0#define in_size 64

<b>Too long to read onyour phone? Save to</b>

read later on yourcomputer

Save to a Studylist

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

#define out_size 64 char count = 0;bit oldstate;

unsigned char readbuff[in_size] absolute 0x500; unsigned char writebuff[out_size] absolute 0x540; void interrupt()

if (PIR2.USBIF == 1){

PIR2.USBIF = 0;USB_Interrupt_Proc();}

if (INTCON.INT0IF == 1){

INTCON.INT0IF = 0;count++;

writebuff[0] = count;oldstate = 1;}}void main(){

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

ADCON1 = 0x0F; => tất cà các chân analog thành chân digital CMCON = 0x07;

PORTB = 0x00; LATB = 0x00; TRISB.TRISB0 = 1;INTCON2.RBPU = 0;

PORTE = 0x00; LATE = 0x00; TRISE.TRISE1 = 0;

HID_Enable(&readbuff,&writebuff); => cho phép USD ở chế độ HDI INTCON.INT0IF = 0;

INTCON.INT0IE = 1;INTCON2.INTEDG0 = 1;PIR2.USBIF = 0;PIE2.USBIE = 1;INTCON.GIE = 1;INTCON.PEIE = 1;while(1){

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

if (HID_Read() !=0) => đọc dữ liệu từ host thông qua USB{

if (readbuff[0] == 1){

RE1_bit = led_on; => điều khiển đèn sáng writebuff[8] = 'O'; => gửi lại phản hồi}

else if (readbuff[0] == 0){

RE1_bit = led_off; => điều khiển đèn sáng writebuff[8] = 'F'; => gửi lại phản hồi}

HID_Write(&writebuff,out_size); => gửi dữ liệu đến host thông qua USB}

<i><b>2.4. Khả năng sử dụng phần mềm viết giao diện Visual Studio C#.</b></i>

Hai hình ảnh chụp màn hình Full – code và giao diện VS C#.( Không sử dụng )

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

<b>PHẦN III. Chuẩn đầu ra mơn học 3: Có khả năng phân tích, thiết kế giải thuật và lập trìnhứng dụng</b>

<i><b>3.1. Lưu đồ giải thuật cho Arduino hoặc PIC</b></i>

Vẽ lưu đồ giải thuật cho Arduino hoặc PIC.

<i><b>3.2. Lập trình code cho Arduino hoặc PIC</b></i>

Code đầy đủ, có giải thích từng câu lệnh của code.

char TransmitData, ReceiveData; //khai bao 2 bien chua du lieu gui di va nhan ve void main() {

//cau hinh thong so phan cung ADCON1 = 0X0F;CMCON = 7;

// chuyen doi cac chan tong tu thanh chan so

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

PORTB=0x00; LATB = 0x00;TRISB0_bit = 1;

TRISB1_bit = 1;TRISE2_bit = 1;

//khai bao ngo vao BO va B1 PORTE= 0X00; LATE = 0x00;TRISE1_bit = 0;

TRISE0_bit = 0;TRISE2_bit = 0;//khai bao ngo ra E0 va E1 LATE1_bit=0;

LATE0_bit=0; LATE2_bit=0;//led 1 va led 0 tat

UART1_Init (9600); //khoi dong module UART (toc do) delay_ms (100);

while (1){

if (Button (&PORTB, 0, 10, 0)) //B0{

while(Button(&PORTB,0,10,0)); //waitTransmitData = 'S';//gan bien

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

if(Button (&PORTB, 1, 10,0)) //B1{

while (Button (&PORTB, 1, 10,0)); //wait TransmitData = 'X';

UART1_Write (TransmitData);}

if (UART1_Data_Ready ()== 1) //module cua con pic da nhan 1 du lieu{

ReceiveData=UART1_Read(); if (ReceiveData == '@'){

LATE1_bit=1; TransmitData = 'F';

UART1_Write (TransmitData);}

else if (ReceiveData == '#'){

LATE1_bit=0; TransmitData = 'P';UART1_Write(TransmitData);

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

else if (ReceiveData == '!'){

LATE0_bit=1; TransmitData = 'E';

UART1_Write (TransmitData);}

else if (ReceiveData == '%'){

LATE0_bit=0; TransmitData = 'T';

UART1_Write (TransmitData);}

else if (ReceiveData == '&'){

LATE2_bit=1; TransmitData = 'B';UART1_Write (TransmitData);}

else if (ReceiveData == '*'){

LATE2_bit=0;

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

TransmitData = 'M'; UART1_Write (TransmitData);}

<i><b>3.3. Lập trình giao diện VS C#</b></i>

<i><b>3.4. Biên dịch code và sửa lỗi.</b></i>

- Hai hình ảnh chụp màn hình khi biên dịch code thành cơng cho Arduino (hoặc PIC) và VS C#.

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

- Một vài hình ảnh bị lỗi (nếu có) và trình bày cách khắc phục lỗi đó.

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

<b>PHẦN IV: Chuẩn đầu ra mơn học 4: Có khả năng lắp ráp, cân chỉnh các board mạch điện tử theo qui trình</b>

<i><b>4.1. Quy trình Lắp ráp và Test thực nghiệm</b></i>

Viết quy trình Test theo từng bước: bước 1, bước 2, bước 3 …

<i><b>4.2. Lắp ráp mạch thực tế</b></i>

Một hình ảnh chụp bo mạch sau khi đã lắp ráp xong hoàn thiệnMột hoặc hai hình ảnh có các thành viên đang thao tác trên Testboard Một hình ảnh chụp kết quả khi bo giao tiếp được với VS C#.

<i><b>4.3. Khả năng cân chỉnh bo mạch</b></i>

Trình bày + hình ảnh lỗi khi thao tác lắp ráp và Test. Trình bày cách khắc phục, xử lý lỗi đó.

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

<b>PHẦN V: Kết luận bài thực hành</b>

- Trình bày kết quả của bài thực hành mà nhóm đã thực hiện;

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

-15-Bài tập mơ phỏng USB giữa Proteus & Visual C#.Hình ảnh kết quả bài làm

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

Video chi tiết bài làm :

×