Top Banner
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA VẬT LÝ –VẬT LÝ KỸ THUẬT BỘ MÔN VẬT LÝ ĐIỆN TỬ BÁO CÁO CUỐI HỌC KÌ THỰC TẬP CHUYÊN ĐỀ 3 ĐỀ TÀI THIẾT KẾ MẠCH GIẢI MÃ LED 7 ĐOẠN QUA SÓNG RF SINH VIÊN THỰC HIỆN: 1.Đỗ Lương Trần Quý. BÁO CÁO MÔN THỰC TẬP CHUYÊN ĐỀ 3Page 1
29
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: rf

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊNKHOA VẬT LÝ –VẬT LÝ KỸ THUẬTBỘ MÔN VẬT LÝ ĐIỆN TỬ

BÁO CÁO CUỐI HỌC KÌ THỰC TẬP CHUYÊN ĐỀ 3

ĐỀ TÀI THIẾT KẾ MẠCH GIẢI MÃ LED 7 ĐOẠN QUA SÓNG

RF

SINH VIÊN THỰC HIỆN:1.Đỗ Lương Trần Quý.2.Đinh Hoàng Việt Minh.3.Hồ Quốc Việt.

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 1

Page 2: rf

LỜI NÓI ĐẦU

Ngày nay với những ứng dụng của khoa học kĩ thuật trên tiên tiến,thế giới chúng ta đã và đang ngày một thay đổi,văn minh và hiện đại hơn.Sự phát triển của kĩ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao,tốc độ nhanh,gọn nhẹ là những yếu tố rất cần thiết cho hoạt động của con người đạt hiệu quả cao.

Điện tử đang trở thành một ngành công nghiệp đa nhiệm vụ.Điện tử đã đáp ứng những đòi hỏi không ngừng từ các lĩnh vực công nông lâm ngư nghiệp cho đến các nhu cầu thiết bị trong đời sống hàng ngày

Một trong những ứng dụng quan trọng trong công nghệ điện tử là kỹ thuật truyền nhận dữ liệu điều qua sóng RF.Nó đã góp phần rất lớn trong việc truyền tải dữ liệu từ xa trong các thiết bị điện tử.

Xuất phát từ ứng dụng quan trọng trên , nhóm chúng em đã thiết kế và thi công mạch truyền nhận dữ liệu qua sóng RF giữa hai mạch, giao tiếp chuẩn UART.Tiến hành kết nối vi điều khiển với bộ thu phát sóng RF để truyền nhận dữ liệu

Để tìm hiểu ứng dụng này về vi điều khiển, sóng RF và tìm hiểu tác dụng của nó,người thực hiện xin thực hiện đề tài gồm 3 phần sau:Phần A Giới thiệu các vấn đề liên quan về sóng RFPhần B Tiến hành thi công mạchPhần C Phụ lục và tài liệu tham khảo

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 2

Page 3: rf

PHẦN A:GIỚI THIỆU CÁC VẤN ĐỀ LIÊN QUAN ĐẾN SÓNG RF

1.TỔNG QUAN VỀ SÓNG RF1.1Tín hiệu RF là gì? Chúng ta đã nghe nói đến rất nhiều về sóng RF nhưng có thể khó hiểu rõ về bản chất của loại sóng này sau đây là định nghĩa ngắn gọn về sóng RF: Sóng RF (radio frequence) là tín hiệu dòng xoay chiều (AC= alternating Current) có tần số cao được truền dọc theo dây dẫn bằng đồng sau đó được phát ra vào không khí thông qua một anten.Anten sẽ chuyển đổi tín hiệu có dây sang tín hiệu không dây và ngược lại. Khi một tín hiệu AC tần số cao được phát ra vào không khí ,chúng có dạng sóng radio.Các sóng radio này lan truyền từ anten trên đường thẳng theo mọi hương cùng lúc Ta đã biết bản chất của dữ liệu là bao gồm các bit 0 và 1, bên phát dữ liệu cần có một cách thức để gửi các bit 0 và 1 để gửi cho bên nhận. Một tín hiệu xoay chiều hay một chiều tự nó sẽ không thực hiện tác vụ này. Tuy nhiên, nếu một tín hiệu có thay đổi và dao động, dù chỉ một ít, sự thay đổi này sẽ giúp phân biệt bit 0 và bit 1. Lúc đó, dữ liệu cần truyền sẽ có thể gửi và nhận thành công dựa vào chính sự thay đổi của tín hiệu. Dạng tín hiệu đã điều chế này còn được gọi là sóng mang (carrier signal). Có ba thành phần của dạng sóng có thể thay đổi để tạo ra sóng mang, đó là biên độ, tần số và pha. Tất cả các dạng truyền thông dùng sóng vô tuyến đều dùng vài dạng điều chế để truyền dữ liệu. Để mã hóa dữ liệu vào trong một tín hiệu gửi qua sóng AM/FM, điện thoại di động, truyền hình vệ tinh, ta phải thực hiện một vài kiểu điều chế trong sóng vô tuyến đang truyền.

1.1.1 Biên độ và bước sóng: Truyền thông vô tuyến bắt đầu khi các sóng vô tuyến được tạo ra từ một máy phát và gửi đến máy nhận ở một vị trí khác. Sóng vô tuyến tương tự như các cơn sóng mà bạn hay gặp ở biển, hồ, sông, suối. Sóng có hai thành phần chính: biên độ và bước sóng. Biên độ là chiều cao, độ mạnh hoặc công suất của sóng Bước sóng là khoảng cách giữa hai điểm tương tự trên hai đỉnh sóng liên tiếp. Biên độ và tần số cả hai đều là các thuộc tính của sóng.

1.1.2 Bức xạ điện từ : Đầu tiên ta xét đến sóng điện từ. Bức xạ điện từ bao gồm sóng radio, vi ba, hồng ngoại, ánh sáng khả kiến, tia cực tím, tia X, và tia gamma. Tất cả chúng đều truyền đi với vận tốc ánh sáng là c = 3x108 m/s và tạo ra phổ điện từ. Sự khác nhau giữa các loại sóng điện từ này phụ thuộc vào bước sóng của mỗi thứ và chính cái gọi là bước sóng này liên quan trực tiếp đến năng lượng của sóng (bước sóng càng nhỏ thì năng lượng càng cao).

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 3

Page 4: rf

1.1.3 Pha : Pha là một thuật ngữ mang tính tương đối. Nó chỉ ra mối quan hệ giữa hai sóng có cùng tần số. Để xác định pha, bước sóng được chia thành 360 phần, được gọi là độ.

1.2 Các phương pháp điều chế: Để dữ liệu có thể được truyền, tín hiệu phải được xử lý sao cho bên máy nhận có cách để phân biệt bit 0 và 1. Phương pháp xử lý tín hiệu sao cho nó tượng trưng cho nhiều mẫu dữ liệu được gọi là điều chế. Phương thức này sẽ biến tín hiệu vào trong sóng mang. Phương thức này mã hóa dữ liệu sao cho nó có thể truyền. Có ba kiểu điều chế: điều biên, điều tần và điều pha.1.3Mã hóa bit: Mã hóa bit là quá trình chuyển đổi dãy bit (1- 0) sang một tín hiệu thích hợp để có thể truyền dẫn trong môi trường vật lý. Việc chuyển đổi này chính là sử dụng một tham số thông tin thích hợp để mã hóa dãy bit cần truyền tải. Các tham số thông tin có thể được chứa đựng trong biên độ, tần số, pha hoặc sườn xung, v.v... Sự thích hợp ở đây phải được đánh giá dựa theo các yêu cầu kỹ thuật như khả năng chống nhiểu cũng như gây nhiểu, khả năng đồng bộ hóa và triệt tiêu dòng một chiều. Việc tạo mã để có tín hiệu trên các hệ thống số có thể thực hiện một cách đơn giản là gán một giá trị điện thế cho một trạng thái logic và một giá trị khác cho mức logic còn lại. Tuy nhiên để sử dụng mã một cách có hiệu quả, việc tạo mã phải dựa vào một số tính chất sau.(Phổ tần của tín hiệu, sự đồng bộ, khả năng dò sai, tính miễn nhiễu và giao thoa, mức độ phức tạp và giá thành của hệ thống).

4/Mạch phát RF - Thường dùng là loại module phát OOK(On/Off keyring) và ASK(Điều biên) để chuyển các tín hiệu dạng số1-0 thành trạng thái có hoặc không có tín hiệu ở phần mạch thu

5/Mạch thu RF -Sử dụng để thu lại các tín hiệu từ mạch phát, biến các trạng thái phát hay không phát thành dạng số 1 hoặc 0. - Nguyên tắc khi mạch thu rảnh không nhận dữ liệu từ mạch phát thì mạch vẫn có thể thu các tín hiệu nhiễu môi trường làm cho output của nó có những tín hiệu 1, 0 không xácđịnh. Hoặc trong quá trình phát có 1 chuỗi dài bit 1 hoặc 0 liên tục.

III/BỘ THU PHÁT RF HMTR:1. Giới thiệu

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 4

Page 5: rf

- Đây là sản phẩm của công ty Microelectric, được thiết kế cho những ứng dụng cần truyền nhận dữ liệu không dây. Tốc độ cao, cự ly truyền nhận xa hơn, có khả năng thay đổi tần số, hình thức truyền theo chuẩn USART có khả năng thay đổi các thông số phù hợp với ứng dụng và thời nghỉ thấp là các tính năng tuyệt vời của bộ thu phát FM. Giao thức giao tiếp theo chuẩn USART khung dữ liệu thì hoàn toàn phụ thuộc vào việc điều khiển, hoàn toàn phụ thuộc vào người dùng. Đây là mođun có thể được nhúng vào trong những thiết kế đã có sẵn với giá thành rẻ và khả năng giao tiếp không dây mạnh mẽ. Các đặc tính : -Có khả năng thay đổi tần số, chống giao thoa tốt.

-Truyền nhận 2 chiều theo phương thức haft-duplex.( Một định ước truyền thông không đồng bộ, trong đó kênh truyền thông ở mỗi thời điểm chỉ có thể truyền một tín hiệu. Hai trạm công tác sẽ luân phiên nhau phát tín hiệu.)

-Thay đổi được tần số, cho phép sử dụng trong các ứng dụng FDMA. -Chuyển đổi từ RF (tín hiệu sóng FM) thành giao thức theo chuẩn USART một cách tự động, tin cậy và dễ dàng sử dụng. -Cho phép cấu hình định dạng UART, với tốc độ từ 300 bit/giây đến 19200 bit/giây. -Sử dụng chân ENABLE để điều khiển chu trình thực thi làm thỏa mãn các yêu cầu ứng dụng khác nhau. -Khả năng hoạt động cao, cự ly truyền nhận xa đến hơn 300m khi không có vật che chắn. -Không cần điều chỉnh RF trong ứng dụng. -Ứng dụng trong các lĩnh vực: Điều khiển từ xa, hệ thống đo lường từ xa, thu thập dữ liệu, ứng dụng gia đình,…

2. Sơ đồ chân của bộ thu phát HM-TR

-Có hai phiên bản của sản phẩm là HM-TR/232 và HM-TR/TTL. Trong đó phiên

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 5

Page 6: rf

bản HM-TR/232 là phiên bản HM-TR/TTL nhưng có thêm Max232 được tích hợp sẵn nên tương thích với điện thế của RS232, còn HM-TR/TTL thì tương thích với chuẩn TTL. Ở đây, chúng tôi sử dụng là phiên bản HM-TR/TTL.-Hai phiên bản có khác nhau nhưng các chân chức năng thì vẫn như vậy, không có gì thay đổi. Bảng 4.1 Tên gọi và chức năng của các chân trong modul HM-TR:

Bảng 4.2: Các thông số của bộ HM-TR

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 6

Page 7: rf

3/ Kết nối HM-TR/TTL: Chúng ta có thể kết nối trực tiếp HM-TR/TTL với vi điều khiển (MCU: Micro Controller Unit) thông qua UART, như hình bên dưới:

Hình 4.2: Sơ đồ kết nối HM-TR/TTL với vi điều khiển

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 7

Page 8: rf

PHẦN B: TIẾN HÀNH THI CÔNG MẠCH ĐỀ TÀI:I/YÊU CẦU ĐỀ TÀI:Thiết kế mạch điều khiển giải mã led 7 đoạn qua sóng RFMô tả công việc:- Sử dụng cặp thu phát RF, yêu cầu của mạch này chính là học cách sử dụng truyền nhận tín hiệu. Mạch chỉ bao gồm 2 phần:

-1 mạch chính là mạch bao gồm VDK với 2 led 7 đoạn và 2 button tuợng trưng cho 2 bit, mạch này có chức năng nhận tín hiệu từ mạch phụ và giải mã hiển thị lên 2 LED 7 đoạn, và 1 chức năng gữi tín hiệu đi thông wa 3 button.

-1 mạch phụ gồm 4 button để gữi tín hiệu wa RF, 1 led 7 đoạn để nhận tín hiệu từ VDK,1 VDK để xử lý.

** Mạch này chứng tỏ dữ liệu hoàn toàn có thể truyền đi và nhận lại thông qua RF. Do đó chúng ta sẽ gồm 2 VDK, truyền nhận giao tiếp dữ liệu qua lại.

IV/MẠCH GIẢI MÃ LED 7 ĐOẠN DÙNG SÓNG RF:

-KHỐI MẠCH PHÁT:

12

J1

CONN-SIL2

PB0/T0/XCK1

PB1/T12

PB2/AIN0/INT23

PB3/AIN1/OC04

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

RESET9

XTAL212XTAL113

PD0/RXD 14

PD1/TXD 15

PD2/INT0 16

PD3/INT1 17

PD4/OC1B 18

PD5/OC1A 19

PD6/ICP1 20

PD7/OC2 21

PC0/SCL 22

PC1/SDA 23

PC2/TCK 24

PC3/TMS 25

PC4/TDO 26

PC5/TDI 27

PC6/TOSC1 28

PC7/TOSC2 29

PA7/ADC733PA6/ADC634PA5/ADC535PA4/ADC436PA3/ADC337PA2/ADC238PA1/ADC139PA0/ADC040

AREF 32

AVCC 30

U1

ATMEGA16

ABCDEFG

P

LED

R2330R

R3330R

R4330R

1 2

N1

R1330R

OFF ON 1234

8765

DSW1

DIPSW_4

VDD1

DTX2

GND3

DRX4

CONFIG5

ENABLE6

KHỐI MẠCH THU RF

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 8

Page 9: rf

R5330R

R6330R

R8330R

ABCDEFG

P

LED11

ABCDEFG

P

LED22

1 2

NUT2

PB0/T0/XCK1

PB1/T12

PB2/AIN0/INT23

PB3/AIN1/OC04

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

RESET9

XTAL212

XTAL113

PD0/RXD14

PD1/TXD15

PD2/INT016

PD3/INT117

PD4/OC1B18

PD5/OC1A19

PD6/ICP120

PD7/OC221

PC0/SCL22

PC1/SDA23

PC2/TCK24

PC3/TMS25

PC4/TDO26

PC5/TDI27

PC6/TOSC128

PC7/TOSC229

PA7/ADC733

PA6/ADC634

PA5/ADC535

PA4/ADC436

PA3/ADC337

PA2/ADC238

PA1/ADC139

PA0/ADC040

AREF32

AVCC30

U2

ATMEGA16

OFFON123

876

DSW2

DIPSW_3

12

J2

CONN-SIL2

VDD1

DTX2

GND3

DRX4

CONFIG5

ENABLE6

CODE UART CHO KHỐI PHÁT:/*****************************************************

#include <mega16.h>

#ifndef RXB8#define RXB8 1#endif

#ifndef TXB8#define TXB8 0#endif

#ifndef UPE#define UPE 2

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 9

Page 10: rf

#endif

#ifndef DOR#define DOR 3#endif

#ifndef FE#define FE 4#endif

#ifndef UDRE#define UDRE 5#endif

#ifndef RXC#define RXC 7#endif

#define FRAMING_ERROR (1<<FE)#define PARITY_ERROR (1<<UPE)#define DATA_OVERRUN (1<<DOR)#define DATA_REGISTER_EMPTY (1<<UDRE)#define RX_COMPLETE (1<<RXC)int dulieu;// USART Receiver buffer#define RX_BUFFER_SIZE 8char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256unsigned char rx_wr_index,rx_rd_index,rx_counter;#elseunsigned int rx_wr_index,rx_rd_index,rx_counter;#endif

// This flag is set on USART Receiver buffer overflowbit rx_buffer_overflow;

// USART Receiver interrupt service routineinterrupt [USART_RXC] void usart_rx_isr(void){char status,data;status=UCSRA;data=UDR;if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index++]=data;#if RX_BUFFER_SIZE == 256 // special case for receiver buffer size=256

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 10

Page 11: rf

if (++rx_counter == 0) {#else if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0;#endif rx_buffer_overflow=1; } }}

#ifndef _DEBUG_TERMINAL_IO_// Get a character from the USART Receiver buffer#define _ALTERNATE_GETCHAR_#pragma used+char getchar(void){char data;while (rx_counter==0);data=rx_buffer[rx_rd_index++];#if RX_BUFFER_SIZE != 256if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;#endif#asm("cli")--rx_counter;#asm("sei")return data;}#pragma used-#endif

// USART Transmitter buffer#define TX_BUFFER_SIZE 8char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE <= 256unsigned char tx_wr_index,tx_rd_index,tx_counter;#elseunsigned int tx_wr_index,tx_rd_index,tx_counter;#endif

// USART Transmitter interrupt service routineinterrupt [USART_TXC] void usart_tx_isr(void){if (tx_counter) {

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 11

Page 12: rf

--tx_counter; UDR=tx_buffer[tx_rd_index++];#if TX_BUFFER_SIZE != 256 if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;#endif }}

#ifndef _DEBUG_TERMINAL_IO_// Write a character to the USART Transmitter buffer#define _ALTERNATE_PUTCHAR_#pragma used+void putchar(char c){while (tx_counter == TX_BUFFER_SIZE);#asm("cli")if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) { tx_buffer[tx_wr_index++]=c;#if TX_BUFFER_SIZE != 256 if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;#endif ++tx_counter; }else UDR=c;#asm("sei")}#pragma used-#endif

// Standard Input/Output functions#include <stdio.h>

// Declare your global variables here

void main(void){// Declare your local variables here

// Reset Source checkingif (MCUCSR & 1) { // Power-on Reset MCUCSR&=0xE0; // Place your code here

}

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 12

Page 13: rf

else if (MCUCSR & 2) { // External Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 4) { // Brown-Out Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 8) { // Watchdog Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 0x10) { // JTAG Reset MCUCSR&=0xE0; // Place your code here

}

// Input/Output Ports initialization// Port A initialization// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTA=0x00;DDRA=0xFF;

// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;DDRB=0x00;

// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;DDRC=0x00;

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 13

Page 14: rf

// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;DDRD=0x00;

// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: On// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 19200UCSRA=0x00;UCSRB=0xD8;UCSRC=0x86;UBRRH=0x00;UBRRL=0x19;

// Global enable interrupts#asm("sei")

while (1) { // Place your code here putchar(PINB); dulieu=getchar(); switch(dulieu) { case 0:{PORTA=0xC0;break;} case 1:{PORTA=0xF9;break;} case 2:{PORTA=0xA4;break;} case 3:{PORTA=0xB0;break;} case 4:{PORTA=0x99;break;} case 5:{PORTA=0x92;break;} case 6:{PORTA=0x82;break;} case 7:{PORTA=0xF8;break;} case 8:{PORTA=0x80;break;} case 9:{PORTA=0x90;break;} } }}CODE UART CHO KHỐI THU:*****************************************************/#include <mega16.h>

#ifndef RXB8#define RXB8 1#endif

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 14

Page 15: rf

#ifndef TXB8#define TXB8 0#endif

#ifndef UPE#define UPE 2#endif

#ifndef DOR#define DOR 3#endif

#ifndef FE#define FE 4#endif

#ifndef UDRE#define UDRE 5#endif

#ifndef RXC#define RXC 7#endif

#define FRAMING_ERROR (1<<FE)#define PARITY_ERROR (1<<UPE)#define DATA_OVERRUN (1<<DOR)#define DATA_REGISTER_EMPTY (1<<UDRE)#define RX_COMPLETE (1<<RXC)int dulieu;// USART Receiver buffer#define RX_BUFFER_SIZE 8char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256unsigned char rx_wr_index,rx_rd_index,rx_counter;#elseunsigned int rx_wr_index,rx_rd_index,rx_counter;#endif

// This flag is set on USART Receiver buffer overflowbit rx_buffer_overflow;

// USART Receiver interrupt service routineinterrupt [USART_RXC] void usart_rx_isr(void){char status,data;

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 15

Page 16: rf

status=UCSRA;data=UDR;if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index++]=data;#if RX_BUFFER_SIZE == 256 // special case for receiver buffer size=256 if (++rx_counter == 0) {#else if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0;#endif rx_buffer_overflow=1; } }}

#ifndef _DEBUG_TERMINAL_IO_// Get a character from the USART Receiver buffer#define _ALTERNATE_GETCHAR_#pragma used+char getchar(void){char data;while (rx_counter==0);data=rx_buffer[rx_rd_index++];#if RX_BUFFER_SIZE != 256if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;#endif#asm("cli")--rx_counter;#asm("sei")return data;}#pragma used-#endif

// USART Transmitter buffer#define TX_BUFFER_SIZE 8char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE <= 256unsigned char tx_wr_index,tx_rd_index,tx_counter;#elseunsigned int tx_wr_index,tx_rd_index,tx_counter;

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 16

Page 17: rf

#endif

// USART Transmitter interrupt service routineinterrupt [USART_TXC] void usart_tx_isr(void){if (tx_counter) { --tx_counter; UDR=tx_buffer[tx_rd_index++];#if TX_BUFFER_SIZE != 256 if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;#endif }}

#ifndef _DEBUG_TERMINAL_IO_// Write a character to the USART Transmitter buffer#define _ALTERNATE_PUTCHAR_#pragma used+void putchar(char c){while (tx_counter == TX_BUFFER_SIZE);#asm("cli")if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) { tx_buffer[tx_wr_index++]=c;#if TX_BUFFER_SIZE != 256 if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;#endif ++tx_counter; }else UDR=c;#asm("sei")}#pragma used-#endif

// Standard Input/Output functions#include <stdio.h>

// Declare your global variables here

void main(void){// Declare your local variables here

// Reset Source checking

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 17

Page 18: rf

if (MCUCSR & 1) { // Power-on Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 2) { // External Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 4) { // Brown-Out Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 8) { // Watchdog Reset MCUCSR&=0xE0; // Place your code here

}else if (MCUCSR & 0x10) { // JTAG Reset MCUCSR&=0xE0; // Place your code here

}

// Input/Output Ports initialization// Port A initialization// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTA=0x00;DDRA=0xFF;

// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;DDRB=0x00;

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 18

Page 19: rf

// Port C initialization// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTC=0x00;DDRC=0xFF;

// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;DDRD=0x00;

// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: On// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 19200UCSRA=0x00;UCSRB=0xD8;UCSRC=0x86;UBRRH=0x00;UBRRL=0x19;

// Global enable interrupts#asm("sei")

while (1) { // Place your code here putchar(PINB); dulieu=getchar();

if(dulieu>=0 && dulieu <=9) { PORTA=0xC0; switch(dulieu) { case 0:{PORTC=0xC0; break;} case 1:{PORTC=0xF9; break;} case 2:{PORTC=0xA4; break;} case 3:{PORTC=0xB0; break;} case 4:{PORTC=0x99; break;} case 5:{PORTC=0x92; break;} case 6:{PORTC=0x82; break;} case 7:{PORTC=0xF8; break;} case 8:{PORTC=0x80; break;}

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 19

Page 20: rf

case 9:{PORTC=0x90; break;} } } if(dulieu>=10 && dulieu<=15) { PORTA=0xF9; switch(dulieu) { case 10:{PORTC=0xC0;break;} case 11:{PORTC=0xF9;break;} case 12:{PORTC=0xA4;break;} case 13:{PORTC=0xB0;break;} case 14:{PORTC=0x99;break;} case 15:{PORTC=0x92;break;} } } }}hầy đã nhận được file,

Em cần bổ sung và chỉnh sữa những điểm sau.

1_ Khi trình bày cần có những câu dẫn và giới thiệu mạch lạc, nhất là viết thêm giải thích chi tiết hơn về mạch. Nhất là phần giới thiệu vể mạch và chức năng của mạch2_Cần có hình mạch thực tế và làm rõ sơ đồ nguyên lý3_ Cần chỉnh lại chút thẩm mỹ khi add hình vào. còn nhiều khoảng trống và làm cho file không liên tục.4_ Thống nhất kích cở 125_ Làm phần mục lục cố số trang thứ tự.6_ Bổ sung các lý thuyết về bộ RF và các nguyên lý truyền, cách coding trong codevision.

Bổ sung hoàn chỉnh và gửi Thầy hạn chót ngày 24-06-2012

2012/6/10 Dinhhoangvietminh Dinh <[email protected]>

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 20

Page 21: rf

LỜI NÓI ĐẦUNgày nay với những ứng dụng của khoa học kĩ thuật trên tiên tiến,thế giới chúng ta đã và đang

ngày một thay đổi,văn minh và hiên đại hơn.Sự phát triển của kĩ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao,tốc độ nhanh,gọn nhẹ là những yếu tố rất cần thiết cho hoạt động của con người đạt hiệu quả cao.

Điện tử đang trở thành một ngành công nghiệp đa nhiệm vụ.Điện tử đã đáp ứng những đòi hỏi không ngừng từ các lĩnh vực công nông lâm ngư nghiệp cho đến các nhu cầu thiết bị trong đời sống hàng ngày

Một trong những ứng dụng quan trọng trong công nghệ điện tử là kỹ thuật điều khiển từ xa.Nó đã góp phần rất lớn trong việc điều khiển các thiết bị từ xa hay những thiết bị mà con người không thể trực tiếp chạm vào để vận hành điều khiển.

Xuất phát từ ứng dụng quan trọng trên,em đã thiết kế và thi công mạch điều khiển thiết bị điện trong nhà sử dụng module thu phát sóng vô tuyến.

Để tìm hiểu ứng dụng này về vi điều khiển, sóng RF và tìm hiểu tác dụng của nó,người thực hiện xin thực hiện đề tài gồm 3 phần sau:Phần A Giới thiệuPhần B Nội dungPhần C Phụ lục và tài liệu tham khảo

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 21

Page 22: rf

BÁO CÁO MÔN TH C T P CHUYÊN Đ 3Ự Ậ Ề Page 22