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

Đo khoảng cách dùng cảm biến siêu âm hiển thị lên LCD (có code )

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 (1.55 MB, 21 trang )

ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

1 | P a g e

MỤC LỤC


Mục lục……………………………………………………………………………….1
Lời nói đầu……………………………………………………………………….… 2
I.Nhiệm vụ thiết kế…………………………………………………………….…….3
II. Hướng giải quyết các yêu cầu chức năng……………………………….… 3
III. Yêu cầu phần cứng, phần mềm…………………………………………….….4
1. Phần cứng………………………………………………………………… 4
a. Vi điều khiển MSP430G2553……………………………………………4
Giới thiệu tổng quát…………………………………………………….4
Sơ đồ chân …………………………………………………………… 5
Giải thích sơ lược các chân………………………………………… 7
b. Mạch nạp cho MCU………………………………………………………7
c. Module cảm biến siêu âm SRF05……………………………………….9
d. Màn hình LCD HD44780-1602a……………………………………….12
e. Thiết kế mạch………………………………………………………… 14
Nguyên lý đo………………………………………………………… 14
2. Yêu cầu phần mềm…………………………………………………… ….15
IV.Thực hiện………………………………………………………………….…… 15
Mạch thiết kế………………………………………………….……… 15
Code hoàn chỉnh…………………………………………….…………15

V.Kết quả…………………………………………………………………………….21
Khoảng cách được hiển thị lên LCD…………………………………21


Khi khoảng cách quá gần thì báo DANGEROUS………………… 21
Giao tiếp với máy vi tính………………………….……………………21










ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

2 | P a g e


LỜI NÓI ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và
trong dân dụng. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà
chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng
những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn
vào việc phát triển thông tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều
khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ thuật điện-
điện tử phải hết sức quan tâm. Đó chính là một nhu cầu cần thiết và cấp bách đối với
mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng

được lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con
người, đó chính là chương trình hay phần mềm. Nếu không có sự tham gia của con
người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói đến vi điều
khiển cũng giống như máy tính bao gồm 2 phần là phần cứng và phần mềm.
Dưới đây em xin trình bày toàn bộ nội dung đồ án: “Thiết kế mạch đo khoảng cách
dùng cảm biến siêu âm - kết hợp KIT MSP430 Launchpad” do thầy Lê Quang
Thuần- giảng viên Trường Đại Học Bách Khoa TPHCM hướng dẫn.
Trong quá trình thực hiện đề tài vẫn còn nhiều sai sót, mong nhận được nhiều ý kiến
đóng góp từ thầy và các bạn.









ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

3 | P a g e

I.Nhiệm vụ thiết kế
-Thiết kế mạch đo khoảng cách dùng cảm biến siêu âm
-Hiển thị khoảng cách đo được lên LCD và máy tính
-Cho phép cài đặt khoảng cách cảnh báo vào âm báo khi khoảng cách quá gần
II. Hướng giải quyết các yêu cầu chức năng
-Điều khiển bằng MSP430 (1)

-Nguồn cấp 3.3 V
-Khoảng cách đến vật cần (2) đo được thu thập thông qua cảm biến siêu âm SFR05
(3)
-Dùng LCD 16x2 để hiện thị (4)
-Dùng buzzer (5) và LED để âm báo và quang báo khi khoảng cách quá gần
-Xây dựng chức năng hiện thị và cài đặt trên LCD
-Tạo nút nhấn để có thể hiệu chỉnh khoảng cách nguy hiểm (6)














2
4
6
5
3
1
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015


4 | P a g e

III. Yêu cầu phần cứng, phần mềm
1. Phần cứng
a. Vi điều khiển MSP430G2553
Giới thiệu tổng quát :
Vi điều khiển msp430 này do hãng TI ( Texas Instruments) sản xuất.
Vi điều khiển( Micro controller unit – MCU ) là đơn vị xử lý nhỏ, nó được tích hợp
toàn bộ các bộ nhớ như ROM , RAM , các port truy xuất , giao tiếp ngoại vi trực tiếp
trên 1 con chip hết sức nhỏ gọn. Được thiết kế dựa trên cấu trúc VON-NEUMAN ,
đặc điểm của cấu trúc này là chỉ có duy nhất 1 bus giữa CPU và bộ nhớ (data và
chương trình) , do đó mà chúng phải có độ rộng bit tương tự nhau.
MSP430 có một số phiênbản như: MSP430x1xx, MSP430x2xx, MSP430x3xx,
MSP430x4xx, MSP430x5xx. Dưới đây là những đặc điểm tổng quát của họ vi điều
khiển MSP430:
+ Cấu trúc sử dụng nguồn thấp giúp kéo dài tuổi thọ của Pin
-Duy trì 0.1µA dòng nuôi RAM.
-Chỉ 0.8µA real-time clock.
-250 µA/ MIPS.
+ Bộ tương tự hiệu suất cao cho các phép đo chính xác
-12 bit hoặc 10 bit ADC-200 kskp, cảm biến nhiệt độ, Vref ,
-12 bit DAC.
-Bộ giám sát điện áp nguồn.
+ 16 bit RISC CPU cho phép được nhiều ứng dụng, thể hiện một phần ở kích thước
Code lập trình.
-Thanh ghi lớn nên loại trừ được trường hợp tắt nghẽn tập tin khi đang làm việc.
-Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện và giảm giá thành.
-Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++
-Có 7 chế độ định địa chỉ.

-Khả năng ngắt theo véc tơ lớn.
+ Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt,
phạm vi rộng, bộ nhớ Flash còn có thể lưu lại như nhật ký của dữ liệu.
Sơ đồ chân :
Chip MSP430 có kích thước nhỏ gọn , chỉ với 20 chân đối với kiểu chân DIP.
Bao gồm 2 port I/O (hay GPIO general purprose input/ output : cổng nhập xuất
chung).







ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

5 | P a g e

Sơ đồ chân

Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15.
Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19.
Ngoài chức năng I/O thì trên mỗi pin của các port đều là những chân đa chức năng,
ta thể thấy rõ trong bảng sau :

ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015


6 | P a g e





Trên bảng là chức năng của từng chân







ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

7 | P a g e

Giải thích sơ lược các chân :
- Chân số 1 là chân cấp nguồn Vcc( ký hiệu trên chip là DVcc ) , ở đây nguồn cho
chip chỉ được cấp ở mức 3,3V , nếu cấp nguốn cao quá mức này thì chip có thể hoạt
động sai hay cháy chip .
-Chân 20 là chân nối cực âm (0V) , chân này thì không có gì đặc biệt.
-Chân reset : Chính là chân số 16 RST , nếu các bạn đã từng học về PIC thì sẽ thấy
chân reset có ký hiệu là MCLR , các bạn để ý thấy dấu gạch ngang trên có nghĩa là
chân này tích cực ở mức thấp . Mục đích của việc reset là nhằm cho chương trình
chạy lại từ đầu .

-Mạch dao động : Cũng giống như những dòng vi điều khiển khác thì Msp430 cũng
hỗ trợ người dùng thạch anh ngoài ( external crystal ), nhưng thạch anh ngoại vi cho
phép chỉ có thể lên tới 32,768 kHz mà thôi, và tín hiệu này được mắc trên 2 chân 18
và 19. Nhưng msp430 lại hỗ trợ thạch anh nội có thể lên đến 16Mhz, tùy vào cách
khai báo trong lập trình. Và mặc định của chip là thạch anh nội. Như vậy thì chúng ta
không cần thiết phải sử dụng mạch dao động ngoại cho chip giống như những dòng
khác.
- Port I/O :
Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15.
Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19.
Trong chế độ nhập (input) thì cả 2 port đều có 1 mạch điều khiển điện trở kéo dương
– gọi là PULL UP nhưng giá trị của điện trở này rất lớn khoảng 47K nên gọi là WEAK
PULL UP RESISTAN. Việc điều khiển PULL UP sẽ được tiến hành thông qua lập
trình tác động lên thanh ghi PxREN .

Điều này cũng giống như việc thiết lập input ở port B của vi điều khiển PIC, ở port B
cũng có điện trở kéo lên , và người lập trình phải thao tác qua thanh ghi
OPTION_REG.
b. Mạch nạp cho MCU.
Kit Lanchpad :
Với bất kỳ 1 con MCU nào thì việc phải thiết kế 1 mạch nạp cho chip là điều không
thể bỏ qua ! Và với Msp430 cũng không là ngoại lệ .
Msp430 là dòng value line , power low, và low – cost . Chính vì vậy mà TI đã cung
cấp cho người dùng 1 mạch nạp code + debug chỉ trên 1 mạch nhỏ gọn. Trong kit
còn có hỗ trợ :
-1 mạch nạp code có cả debug
-1 dây cáp USB tốt để kết nối kit với máy tính.
-1 chip thạch anh 32,768kHz
-1 chip Msp430G2553
-1 chip Msp430G2453

-1 header female.




ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

8 | P a g e

Hình ảnh của Kit launchpad



Kit có thể nạp được code cho dòng Msp430G : như msp430g2231, 2553, 2452,…
Kit kết nối với máy tính thông qua cổng USB .
Một kit LaunchPad gồm hai thành phần, với GND được phủ chung:
- Nửa trên: Là phần mạch nạp theo chuẩn spy-bi-wire Jtag (2 dây), kết hợp với
chuyển đổi giao tiếp UART với máy tính. Trên cùng là đầu USBmini để nối với máy
tính, phía dưới là hàng Header để nối ra đối tượng cần giao tiếp, bao gồm các chân:
· TXD, RXD: phục vụ giao tiếp UART với máy tính.
· RST, TEST: phục vụ nạp và debug (sửa lỗi) theo chuẩn spy-bi-wire Jtag.
· VCC: cấp nguồn 3V3 cho đối tượng (thường là nửa dưới LaunchPad).


- Nửa dưới: là một mạch phát triển MSP430 đơn giản, bao gồm:
· Socket cắm MSP430 (thường gắn sẵn chip MSP430G2553), Pad hàn thạch anh,
Nút nhấn Reset chip.
· Nút nhấn gắn vào P1.3, hai Led hiển thị có jumper để gắn vào P1.0 và P1.6. Hai

hàng header để kết nối hai hàng chân của chip ra ngoài, một hàng header nguồn
GND-GND-VCC để lấy nguồn 3V3 trên LaunchPad.
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

9 | P a g e


c. Module cảm biến siêu âm SRF05


SRF05 là một bước phát triển từ SRF04, được thiết kế để làm tăng tính linh hoạt,
tăng pham vi, ngoài ra còn giảm bớt chi phí. SRF05 là hoàn toàn tương thích với
SRF04. Khoảng cách là tăng từ 3 mét đến 4 mét. Một chế độ hoạt động mới, SRF05
cho phép sử dụng một chân duy nhất cho cả kích hoạt và phản hồi, do đó tiết kiệm
có giá trị trên chân điều khiển của bạn. Khi chân chế độ không kết nối, SRF05 các
hoạt động riêng biệt chân kích hoạt và và chân hồi tiếp, như SRF04. SRF05 bao
gồm một thời gian trễ trước khi xung phản hồi để mang lại điều khiển chậm hơn
chẳng hạn như bộ điều khiển thời gian cơ bản Stamps và Picaxe để thực hiện các
xung lệnh.
Cảm biến gồm một bộ phát và một bộ thu sóng siêu âm.
Khoảng cách đo: 3cm - 4m.
SRF05 sử dụng nguyên lý phản xạ của sóng để đo khoảng cách. Khi muốn đo
khoảng cách SRF05 sẽ phát ra một 8 xung với tốc độ 40Khz. Sau đó nó sẽ chờ đợi
xung phản xạ về. Từ thời gian giữa xung đi và xung về ta có thể dễ dàng tính được
khoảng cách từ SRF05 tới vật cản.









ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

10 | P a g e

1) Chế độ 1: Tương ứng SRF04 – tách biệt kích hoạt và phản hồi

Khi phát ra xung, và chờ xung phản xạ về, chân ECHO của SRF05 sẽ được kéo lên
cao. Khi có xung phản xạ về chân ECHO sẽ được kéo xuống thấp, hoặc sau 30ms
nếu không có xung phản xạ về.


2) Chế độ 2: Dùng một chân cho cả kích hoạt và phản hồi

ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

11 | P a g e



3) Một số đặc điểm khác của cảm biến siêu âm SRF05
Mức độ của sóng âm hồi tiếp phụ thuộc vào cấu tạo của đối tượng và góc phản xạ

của nó.


Một đối tượng mềm có thể cho ra tín hiệu phản hồi yếu hoặc không có phản hồi. Một
đối tượng ở một góc cân đối thì mới có thể chuyển thành tín hiệu phản chiếu một
chiều cho cảm biến nhận.
4) Vùng phát hiện của SRF05

Nếu ngưỡng để phát hiện đối tượng được đặt quá gần với cảm biến, các đối tượng
trên một đường có thể bị va chạm tại một điểm mù. Nếu ngưỡng này được đặt ở
một khoảng cách quá lớn từ các cảm biến thì đối tượng sẽ được phát hiện mà
không phải là trên một đường va chạm.

ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

12 | P a g e

Một kỹ thuật phổ biến để làm giảm các điểm mù và đạt được phát hiện chiều rộng
lớn hơn cự ly gần là thêm một cải tiến bằng cách thêm một đơn vị SRF05 bổ sung
và gắn kết của hai đơn vị hướng về phía trước. Thiết lập như vậy thì có một khu vực
mà hai khu vực phát hiện chồng chéo lên nhau.

5) Thông số một số loại cảm biến siêu âm SRF

*: Ước tính góc của hình nón cảm biến ở ½ cảm biến
**: Số vọng ghi lại bởi cảm biến. Đây là những tiếng vọng ghi từ đọc gần đây nhất,
và được ghi đè mới bằng mỗi lần khác nhau.
A: Những cảm biến nhỏ hơn điển hình ( SRF05/04) kích thước.

B: Phạm vi thời gian có thể được điều chỉnh xuống bằng cách điều chỉnh được.
C: Cảm biến này cũng bao gồm một photocell ở mặt trước để phát hiện ánh sáng.
D: Hoạt động ở một tần số 235kHz cao hơn.

d. Màn hình LCD HD44780-1602a
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong
lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh số thứ tự và
đặt tên như hình

ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

13 | P a g e


Sơ đồ chân của LCD
Chức năng các chân:


Chân

hiệu
Mô tả
1
VSS
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân
này với GND của mạch điều khiển
2
VDD

Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối
chân này với VCC=5V của mạch điều khiển
3
VEE
Điều chỉnh độ tương phản của LCD.
4
RS
Chân chọn thanh ghi (Register select). Nối chân RS
với logic “0” (GND) hoặc logic “1” (VCC) để chọn
thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh
IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ
đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ
liệu DR bên trong LCD.
5
R/W
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân
R/W với logic “0” để LCD hoạt động ở chế độ ghi,
hoặc nối với logic “1” để LCD ở chế độ đọc.
6
E
Chân cho phép (Enable). Sau khi các tín hiệu được
đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận
khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển
vào(chấp nhận) thanh ghi bên trong nó khi phát hiện
một xung (high-to-low transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-
DB7 khi phát hiện cạnh lên (low-to-high transition) ở

chân E và được LCD giữ ở bus đến khi nào chân E
xuống mức thấp.
7 -
14
DB0 -
DB7
Tám đường của bus dữ liệu dùng để trao đổi thông
tin với MPU. Có 2 chế độ sử dụng 8 đường bus này:
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8
đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ
DB4 tới DB7, bit MSB là DB7
15
-
Nguồn dương cho đèn nền
16
-
GND cho đèn nền
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

14 | P a g e

e. Thiết kế mạch
Giao tiếp giữa vi điều khiển và các phần cứng được thể hiện qua sơ đồ chân nối
sau:

Tóm tắt sơ đồ nối chân từ vi điều khiển :
P1.0  (+) Buzzer

P1.3  Button MODE
P1.4  chân EN của LCD
P1.5  chân RS của LCD
P1.6  Buttton GIẢM chỉ số
P1.7  Button TĂNG chỉ số
P2.0  Chân ECHO của SFR05
P2.1  Chân TRIGGER của SFR05
P2.2  Chân dữ liệu D4 của LCD
P2.3  Chân dữ liệu D5 của LCD
P2.4  Chân dữ liệu D6 của LCD
P2.5  Chân dữ liệu D7 của LCD
Nguyên lý đo : Sử dụng nguyên lý phản xạ của sóng để đo khoảng cách. Khi
muốn đo khoảng cách vi xử lí sẽ truyền một xung tối thiểu 10 micro giây vào
chân Trigger của SRF05 khi đó SRF05 sẽ phát ra một 8 xung với tốc độ 40Khz.
Sau đó nó sẽ chờ đợi xung phản xạ về. Từ thời gian giữa xung đi và xung về ta
có thể dễ dàng tính được khoảng cách từ SRF05 tới vật cản.



ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

15 | P a g e



2. Yêu cầu phần mềm :
- Lập trình cho MSP430 dùng phần mềm CCS của TI
- Datasheet:MSP430G2553,MSP43x2xx,SRF05,Buzzer,Led,LCD.

- Thư viện MSP430 :LCD,UART,Flash,Clock,Switch,Math
- C# lập trình giao diện hiển thị khoảng cách lên máy tính
IV.Thực hiện
Mạch thiết kế



Code hoàn chỉnh
/* Description: do khoang cach su dung module SRF05, hien thi len
man hinh lcd
* CONNECT: VCC > 3.3V
* TRIGGER > P2.1
* ECHO > P2.0
* GND > GND
* NC > no connect
*/
a.Thiết lập thông số ,chức năng các chân và các hàm xử lí cho bài toán
#include <msp430g2553.h>
#include "LCD.h"
#include "basic_config.h"
#include "math.h"
#include "UART.h"
#define trigger BIT1;
#define echo BIT0;
#define up (P1IN & BIT6)
#define down (P1IN & BIT7)
#define mode (P1IN & BIT3)
void timer_init(void); // khai bao chuong trinh con timer
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM


2014-2015

16 | P a g e

void do_khoang_cach(void); // khai bao chuong trinh con do khoang
cach
void hienthi(void);
void caidat(void);
void alarm(void);
unsigned char is_push(unsigned char but);
unsigned int t1=0, t2=0, delta=0, flag=0, a=20,b=0;// first_pulse=0;
b.Cài đặt chế độ hoạt động của các thanh ghi, chân,tần số hoạt động của vi xử lý
void main(void)
{

WDTCTL = WDTPW | WDTHOLD;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
P2DIR |= trigger; // trigger ouput,p2.1 la out put khi
triger len 1
P2SEL |= echo; //connect P2.0 (echo) to CCI0A
(capture/compare input )
P2SEL2 &= ~echo; // chi thay doi 1 bit 2.0
P2DIR &= ~echo;
P1DIR |= BIT0;
P1OUT &= ~BIT0;
P1SEL &=~ BIT3;
P1SEL2 &=~ BIT3;
P1DIR &=~BIT3;
P1REN |= BIT3;

P1OUT |= BIT3;
lcd_init(1);
timer_init();
lcd_clear();
_BIS_SR(GIE); //ngat toan cuc
UART_Init();
c.Sử dụng nút nhấn để chọn chế độ , mặc định sẽ hiển thị lên LCD khoảng cách
while (1)
{
if(is_push(mode)==1)
{
while(is_push(mode)==1);
if(b == 0)
b = 1;
else
b = 0;
}
switch (b)
{
case 1:
caidat();
break;
case 0:
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

17 | P a g e

hienthi();

alarm();
break;
}
}
}
d.Thiết lập chế độ hoạt động của timer
void timer_init(void)
{
TA1CTL = TASSEL_2 + MC_2 ; // continuos mode, 0 > FFFF
TA1CCTL0 = CM_3 + CAP + CCIS_0 + SCS+ CCIE; // falling edge &
raising edge, capture mode, capture/compare interrupt enable
TA1CCTL0 &= ~ CCIFG;
}
e.Kích chân trigger
void do_khoang_cach(void)
{
P2OUT |= trigger;
__delay_cycles(20);
P2OUT &= ~trigger;
}
f.Cài đặt khoảng cách cần báo động
void caidat(void)
{
lcd_gotoxy(0,0);
lcd_puts("Warning distance");
if (a >=100)
{
lcd_gotoxy(3,1);
lcd_puts(" ");
lcd_gotoxy(0,1);

lcd_put_num (a,0,0);

}
else
if (a >9)
{
lcd_gotoxy(2,1);
lcd_puts(" ");
lcd_gotoxy(0,1);
lcd_put_num (a,0,0);
}
else
{
if (a<=9)
{
lcd_gotoxy(1,1);
lcd_puts(" ");
lcd_gotoxy(0,1);
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

18 | P a g e

lcd_put_num (a,0,0);
}

}
lcd_gotoxy(4,1);
lcd_puts("cm");

if (is_push(up)==1) a++;
if (is_push(down)==1) a=a-1;

}
g.Hiển thị khoảng cách đo được lên LCD
void hienthi(void)
{
if (delta<=a)
{
lcd_gotoxy(0,0);
lcd_puts(" ");
__delay_cycles(50000);
lcd_gotoxy(0,0);
lcd_puts("Dangerous! ");
}
else
{
lcd_gotoxy(0,0);
lcd_puts("Distance : ");
}
do_khoang_cach();
if (delta >=100)
{
lcd_gotoxy(0,1);
lcd_put_num (delta,0,0);
}
else
if (delta >9)
{
lcd_gotoxy(2,1);

lcd_puts(" ");
lcd_gotoxy(0,1);
lcd_put_num (delta,0,0);

}
else
{
if (delta<=9)
{
lcd_gotoxy(1,1);
lcd_puts(" ");
lcd_gotoxy(0,1);
lcd_put_num (delta,0,0);
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

19 | P a g e

}

}
lcd_gotoxy(4,1);
lcd_puts("cm");
__delay_cycles(150000);

}

h.Báo động khi khoảng cách quá gần
void alarm(void)

{
if (delta<=a/4)
{
P1OUT=BIT0;
}
else
{
if (delta<=a/2)
{
P1OUT^=BIT0;
__delay_cycles(50000);
P1OUT^=BIT0;
}
else
{
if (delta<=a)
{
P1OUT^=BIT0;
}

else P1OUT &= ~BIT0;
}
}
}
i.Xử lý nhiễu nút nhấn
unsigned char is_push(unsigned char but)
{
if (but==0)
{
delay_ms(100);

if (but==0) return 1;
}
else
return 0;
}
j.Đọc và xử lý tín hiệu echo
#pragma vector = TIMER1_A0_VECTOR
__interrupt void timer0(void){
ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM

2014-2015

20 | P a g e


if (P2IN & BIT0 ==1 )// neu co xung canh len tai chan echo (P2.0)
t1 = TA1CCR0;

else { // neu co canh xuong tai chan echo (P2.0)
t2 = TA1CCR0;
if (t2 > t1)
{
delta = (t2-t1)/58;
delta=delta+1;
UART_Write_Char(10);
UART_Write_Int(delta);
}
}
TA1CCTL0 &= ~ CCIFG;
}






























ĐỒ ÁN MÔN HỌC 1 : ĐO KHOẢNG CÁCH BẰNG CẢM BIẾN SIÊU ÂM


2014-2015

21 | P a g e

V.Kết quả

Khoảng cách được hiển thị lên LCD

Khi khoảng cách quá gần thì báo DANGEROUS

Giao tiếp với máy vi tính

×