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

THIẾT kế MẠCH GIẢI mã LED 7 đoạn QUA SÓNG RF

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 (493.39 KB, 22 trang )

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ý.
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
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 RF
Phần B Tiến hành thi công mạch
Phầ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

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 RF
1.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
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
- Đâ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
BÁO CÁO MÔN THỰC TẬP CHUYÊN ĐỀ 3 Page 5
-Có hai phiên bản của sản phẩm là HM-TR/232 và HM-TR/TTL. Trong đó phiên
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
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
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 RF
Mô 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:
1
2
J1
CONN-SIL2
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13

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/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
A
B
C
D
E
F

G
P
LED
R2
330R
R3
330R
R4
330R
1 2
N1
R1
330R
OFF ON
1
2
3
4
8
7
6
5
DSW1
DIPSW_4
VDD
1
DTX
2
GND
3

DRX
4
CONFIG
5
ENABLE
6
KHỐI MẠCH THU RF
BÁO CÁO MÔN THỰC TẬP CHUYÊN ĐỀ 3 Page 8
R5
330R
R6
330R
R8
330R
A
B
C
D
E
F
G
P
LED1
1
A
B
C
D
E
F

G
P
LED2
2
1 2
NUT2
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
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/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U2
ATMEGA16
OFFON
1
2
3
8
7
6
DSW2

DIPSW_3
1
2
J2
CONN-SIL2
VDD
1
DTX
2
GND
3
DRX
4
CONFIG
5
ENABLE
6
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
#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 8
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE <= 256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [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
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 != 256
if (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 8
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE <= 256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
// USART Transmitter interrupt service routine
interrupt [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
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
if (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
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
// 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: 19200

UCSRA=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
#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 8

char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE <= 256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [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
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 != 256
if (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 8
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE <= 256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
BÁO CÁO MÔN THỰC TẬP CHUYÊN ĐỀ 3 Page 16
#endif

// USART Transmitter interrupt service routine
interrupt [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
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
// 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: 19200
UCSRA=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
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ạch
2_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ở 12
5_ 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 <>
BÁO CÁO MÔN THỰC TẬP CHUYÊN ĐỀ 3 Page 20
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 đ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ệu
Phần B Nội dung
Phầ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
BÁO CÁO MÔN THỰC TẬP CHUYÊN ĐỀ 3 Page 22

×