Tải bản đầy đủ (.doc) (25 trang)

ĐỒ án môn học đo KHOẢNG CÁCH

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 (800.35 KB, 25 trang )

TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
LỜI MỞ ĐẦU
“Cảm biến “ trong tiếng anh gọi là sensor xuất phát từ chữ sense tức là cảm nhận. Từ ngàn
xưa người tiền sử đã nhờ vào các giác quan xúc giác để cảm nhận, tìm hiểu đặc điểm của
thế giới tự nhiên và học cách sử dụng những hiểu biết đó nhằm mục đích khai thác thế
giưới xung quanh phục vụ cho cuộc sống của họ.

Trong thời đại phát triển của khoa học và kĩ thuật ngày nay con người không chỉ dựa vào
các cơ quan xúc giác của cơ thể để kám phá thế giới. các chức năng xúc giác để nhận biết
các vật thể hiện tượng xảy ra trong thiên nhiên được tăng cường nhờ các phát triển dụng cụ
dung để đô lường và phân tích mà ta gọi là cảm biến.
Cảm biến được định nghĩa như các thiết bị dung để biến đổi các ddaij lượng vật lý và các
đại lượng không điện cần đo thành các đại lượng điện có thể đo được( như dòng điện,điện
thế,điẹn dung , trở kháng…). Nó là thành phần quan trọng nhất trong các thiết bị đo hay
trong các hệ thống điều khiển tự động . có thể nói: nguyên lý hoạt động của một cảm biến,
trong hiều trường hợp thục tế cũng chính là nguyên lý của phép đo hay của phương pháp
điều khiển tự dộng.
Đã từ lâu cảm biến đã được sử dụng như những bộ phận để cảm nhận và phát hiện, nhưng
chỉ từ vài chục năm trở lại đây chúng mới thể hiện rõ vai trò quan trọng trong các hoạt
động của con người. Nhờ những thành tựu mới của khoa học và công nghệ trong lĩnh vực
vật liệu, thiết bị điện tử và tin học, các cảm biến đã được giảm thiểu kích thước, cải thiện
tính năng và ngày càng mở rộng phạm vi ứng dụng. giườ đây không có một lĩnh vực nào
mà ở đó không sử dụng các cảm biiến. chúng có mặt trong các hệ thống tự động phức tạp,
người máy, kiểm tra chất lượng sản phẩm, tiế kiệm năng lượng, chống ô nhiễm môi
trường. Cảm biến cũng được sử dụng rộng rãi trong lĩnh vực giao thông vận tải, hang tiêu
dung, bảo quản thực phẩm,ô tô, trò chơi điện tử…
Một trong các ứng ụng rất dộng rãi và phổ biến đó là cảm biến vị trí và dịch chuyển. Vì
việc kiểm tra vị trí và dịch chuyển dống vai trò raats quan trọng đối với hoạt động của
nhiều máy móc,công cụ. Hơn nữa, một số đại lượng vật lý có thể đo được thông qua việc
xác định sự dịch chuyển của một vật chịu tác động của đại lượng vật lý đó.


Có nhiều phương pháp để xác định vị trí và dịch chuyển. trong phạm vi môn học, chúng
ta có thể thiết kế được một mạch điện tử đơn giản để đo khoang cách, sử dụng cảm biến
siêu âm. Để làm mạch này cần thiết kế được 3 phần chính : bộ phận cảm biến - bộ phận xử
lý - bộ phận hiển thị.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
1
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
PHỤ LỤC.
LỜI MỞ ĐẦU 1
PHỤ LỤC 2
BẢNG NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 3
BẢNG NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 4
PHẦN II : LÝ THUYẾT THIẾT KẾ 5
I.SƠ ĐỒ KHỐI 5
II. KHỐI CẢM BIẾN SIÊU ÂM SRF 05 : 5
1. Giới thiệu cảm biến siêu âm SRF05 : 5
2.Thông số kĩ thuật : 5
3.Chế độ hoat động : 6
3.1Chế độ 1 : 6
3.2Chế độ 2 : 7
4.Chức năng các chân : 8
5. Nguyên tắc hoạt động của SRF05: 8
6. Tính toán và xác định khoảng cách : 8
III.KHỐI ĐIỀU KHIỂN ATMEGA8 11
1.Sơ đồ chân ATMEGA8 : 11
2.Tổ chức của ATMega8 nói riêng, AVR nói chung 12
2.1 Bộ nhớ dữ liệu 12
2.2 Vùng Nhớ 13

2.3RAM tĩnh, nội (internal SRAM) 13
2.4RAM ngoại (external SRAM) 14
2.5EEPROM (Electrically Ereasable Programmable ROM) 14
3.Cấu trúc bên trong của ATMEGA8 14
IV. KHỐI HIỂN THỊ 15
1.Chức Năng chân LCD 15
2.Sơ đồ khối LCD 16
2.1Các thanh ghi 16
2.2Cờ báo bận BF 16
2.3Bộ đếm địa chỉ AC : (Address Counter) 17
2.4Vùng RAM hiển thị DDRAM : (Display Data RAM) 17
2.5Vùng ROM chứa kí tự CGROM: Character Generator ROM 18
2.6 Vùng RAM chứa kí tự đồ họa CGRAM: (Character Generator
RAM) 19
PHẦN III: NỘI DUNG THI CÔNG 20
I.SƠ ĐỒ NGUYÊN LÝ 20
II. CODE LẬP TRÌNH CHOVDK: 21
PHẦN IV : ƯU NHƯỢC ĐIỂM VÀ TLTK 25
I.ƯU ĐIỂM : 25
II.NHƯỢC ĐIỂM : 25
III.TÀI LIỆU THAM KHẢO: 25
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
2
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
BẢNG NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Giáo viên hướng dẫn : NGUYỄN THỊ NGỌC ANH
Họ và tên sinh viên : Bùi Công Tuân
Lớp : 09HDT1

Mssv : 09B1010058
Tên đề tài: THIẾT KẾ VÀ THI CÔNG MẠCH DO KHOẢNG CÁCH














Điểm đánh giá : Xếp loại :
TP Hồ Chí Minh, ngày 28 tháng 11 năm 2010
Giáo viên hướng dẫn
( Ký tên và ghi rõ họ tên)
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
3
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
BẢNG NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Giáo viên phản biện :
Họ và tên sinh viên : BÙI CÔNG TUÂN
Lớp : 09HDT1
Mssv : 09B100058

Tên đề tài: THIẾT KẾ VÀ THI CÔNG MẠCH ĐO KHOẢNG CÁCH














Điểm đánh giá : Xếp loại :
TP Hồ Chí Minh, ngày tháng năm 2010
Giáo viên phản biện
( Ký tên và ghi rõ họ tên)

LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
4
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
PHẦN II : LÝ THUYẾT THIẾT KẾ
I. SƠ ĐỒ KHỐI
II. KHỐI CẢM BIẾN SIÊU ÂM SRF 05 :

1. Giới thiệu cảm biến siêu âm SRF05 :

SRF05 là một bước phát triển từ SRF04 , đựoc thiết kế làm tăng tính linh hoạt, tăng
phạm vi hoạt dộng và giảm chi phí. Do đó,SRF05 hoàn toàn tương thích với SRF04.
Khoảng cách được tăng lên từ 3 mét đến 4 mét. Một chế độ hoạt động mới (chân chọn
chế độ nôi đất ) cho phép SRF05 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 chân cho bộ điều khiển của bạn. Khi chân chế độ được ngắt kết nối,
SRF05 hoạt động với các chân kích hoạt và chân phản hồi riêng biệt. chân hồi tiếp, giống
như là SRF04. SRF05 thiét lập sẵn một thời gian trễ nhỏ 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.

HÌNH: cảm biến siêu âm SRF05.
2. Thông số kĩ thuật :

LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
5
Điện áp 5V
Dòng thấp 4mA
Tần số 40KHz
Phạm vi hoạt động 1cm - 4cm
Loại 1 chân cho triger/echo
hoặc 2 chân tương thích SRF04
Đàu vào kích khởi 10uS min, mức xung TTL
Xung va đập Mức tín hiệu dương, bề rộng đối xứng
43x20x17 (mm)
Điều khiển tự động Không định kích cỡ hoạt động, tuự xử lí, hoạt động nhanh
Tgian hoạt động Thời gian hồi đáp, đưa tín hiệu điều khiển
Khối cảm biến siêu
âm SRF05
Khối điều khiển

ATMEGA8
Khối hiển thị
LCD
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
3. Chế độ hoat động :
3.1 Chế độ 1 :
Chế độ này sử dụng chân kích hoạt và chân phản hồi riêng biệt, và là chế độ đơn giản
nhất để sử dụng. Tất cả các chương trinh mẫu cho SRF04 sẽ làm việc với SRF05 ở chế độ
này. Để sử dụng chế độ này, chỉ việc ngắt kết nối chân mode - SRF05 có một điện trở nội
pull up ở chân này.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
6
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
3.2 Chế độ 2 :

Chế độ này sử dụng một chân duy nhất cho cả tín hiệu kích hoạt và hồi tiếp, và được
thiết kế để lưu các giá trị trên chân lên bộ điều khiển nhúng.
Để sử dụng chế độ này, chân mode nối với mass. Tín hiệu hồi tiếp sẽ xuất hiện trên cùng
một chân với tín hiệu kích hoạt. SRF05 sẽ không tăng dòng phản hồi cho đến 700uS sau
khi kết thúc các tín hiệu kích hoạt. Bạn đã có thời gian để kích hoạt pin xoay quanh và làm
cho nó trở thành một đầu vào và để có pulse đo mã của bạn đã sẵn sàng. Lệnh PULSIN
được tìm ra và được dùng phổ biến hiện nay để điều khiển tự động.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
7
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH

4. Chức năng các chân :
- Echo Output : chân đầu ra tín hiệu phản hồi về từ cảm biên.
- Triger Output : chân đầu vào kích hoạt
- Mode : chân chế độ ( không được kết nối ở chế độ một)
- bộ năm chân bên kia : 5 được đóng nhãn là "programming pins" chỉ được sử dụng một
lần duy nhất trong quá trình sản xuất để lập trình cho bộ nhớ Flash trên chip PIC16F630.
Các chân chương trình của PIC16F630 cũng được sử dụng cho các chức năng khác trên
SRF05, nên chắc chắn rằng bạn không kết nối bất cứ cái gì với các chân, hoặc bạn sẽ làm
gián đoạn hoạt động mô-đun
5. Nguyên tắc hoạt động của SRF05:
Từ giản đồ điều khiển ta thấy :
- để SRF05 hoạt động ta cần cấp một xung ở mức cao có độ rộng ít nhất là 10uS trên
chân TRI
- sau đó SRF05 sẽ phát ra một chu kì 8 khối tín hiệu siêu âm ở tần số 40KHz và tăng
dòng tín hiệu phản hồi của nó lên ở mức cao (hoặc đường tín hiệu kích hoạt ở chế
độ 2 ) . sau đó nó chờ phản hồi, và ngay sau khi phát hiện một vật thể nó sẽ giảm
dòng phản hồi xuống. do đó dòng phản hồi sẽ là một xung có độ rộng tỉ lệ với
khoảng cách tới vật thể. Bằng cách đo xung , ta hoàn toàn có thể tính toán khoảng
cách theo đơn vị inch / cm hay bất cứ gì khác. Nếu không phát hiện vật thể thì
SRF05 sẽ kéo dòng phản hồi xuốc mức thấp sau 30mS .
- SRF04 cung cấp một xung phản hồi tỉ lện với khoảng cách. Nếu đo độ rộng của
xung bởi uS, sau đó chia cho 58 sẽ cho ta khoảng cách tính bằng cm, hoặc chia cho
148 sẽ cho khoảng cách atinhs bằng inches: uS/58=cm hoặc uS/148=inches.
- SRF05 có thể được kích hoạt nhanh chóng với mỗi 50mS, hay 20 lần / s.
Bạn nên đợi 50ms trước xung kích hoạt kế tiếp, ngay cả khi SRF05 phát hiện vật thể ở gần
và xung phản hồi ngắn hơn. Điều này để đảm bảo rằng siêu âm ‘” beep” đã tắt hẳn và
không làm sai lệch tín hiệu phản hồi trong lần đo tiếp theo

Đặc biệt SRF05 chỉ có thể nhận xung trên chân TRI tối đa 20 Hz,cho nên việc kích xung
trên chân TRI phải phù hợp thì SRF05 mới hoạt động chính xác.

6. Tính toán và xác định khoảng cách :
Sóng siêu âm được truyền đi trong không khí với vận tốc 343 m/s. Nếu một cảm biến
phát ra sóng siêu âm và thu về các sóng phản xạ đồng thời, đo được khoảng thời gian từ
lúc phát ra tới lúc thu về, thì máy tính có thể xác định được quãng đường mà sóng đã di
chuyển trong không gian. Quãng đường di chuyển của sóng = 2 lần khoảng cách từ cảm
biến tới chướng ngại vật theo hướng phát của sóng siêu âm.
 khoảng cách từ cảm biến tới chướng ngại vật sẽ được tính theo nguyên lý TOF
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
8
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
d = ( Time Of Flight )
Trong đó : d- khoảng cách cần đo
v- vận tốc sóng siêu âm trong môi trường truyền sóng
t: thời gian từ lúc sóng được phát đi đến lúc sóng được ghi nhận lại
5- sai số và hiệu chỉnh cảm biến :
a- sai số :
hiện tượng đọc chéo(crosstalk) của cảm biến.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
9
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
Hiện tượng forecasting :
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
10
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH

III. KHỐI ĐIỀU KHIỂN ATMEGA8.
1. Sơ đồ chân ATMEGA8 :
Bạn có thể thấy chip này gồm 28 chân, trông đó có các chân được ghi là PB0(chân 14),
PB1(chân 15),…,PB7(chân 10), đó là các chân của PORTB. PORT là khái niệm chỉ các
ngõ xuất nhập. Trong AVR, PORT có thể giao tiếp theo 2 hướng (bi – directional), có thể
dùng để xuất hoặc nhận thông tin, mỗi PORT có 8 chân. Chip Atmega8 có 3 PORT có tên
tương ứng là PORTB, PORTC và PORTD (một số chip AVR khác có 4 hoặc 6 PORT).
PORT được coi là “cửa ngõ” then chốt của vi điều khiển.
Trong AVR, mỗi PORT liên quan đến 3 thanh ghi (8 bits) có tên tương ứng là DDRx,
PINx, và PORTx với “x” là tên của PORT, mỗi bit trong thanh ghi tương ứng với mỗi chân
của PORT. Trong trường hợp của Atmega8 “x” là B, C hoặc D. Ví dụ chúng ta quan tâm
đến PORTB thì 3 thanh ghi tương ứng có tên là DDRB, PINB và PORTB, trong đó 2 thanh
ghi PORTB và PINB được nối trực tiếp với các chân của PORTB, DDRB là thanh ghi điều
khiển hướng ( Input hoặc Output). Viết giá trị 1 vào một bit trong thanh ghi DDRB thì
chân tương ứng của PORTB sẽ là chân xuất (Output), ngược lại giá trị 0 xác lập chân
tương ứng là ngõ nhập. Sau khi viết giá trị điều khiển vào DDRB, việc truy xuất PORTB
được thực hiện thông qua 2 thanh ghi PINB và PORTB.
Quay lại với 2 dòng code của chúng ta, dòng đầu: “LDI R16, 0xFF”, với LDI – LoaD
Immediately, dòng lệnh có ý nghĩa là load giá trị 0xFF vào thanh ghi R16, R16 là tên 1
thanh ghi trong bộ nhớ của AVR, 0xFF là 1 hằng số có dạng thập lục phân, ký hiệu “0x”
nói lên điều đó, bạn cũng có thể dùng ký hiệu khác là “$” để chỉ 1 số thập lục phân, ví dụ
&FF, và 0xFF=255(thập phân)=0B11111111 (nhị phân). Như thế sau dòng đầu thanh ghi
R16 có giá trị là 11111111 (nhị phân). Dòng thứ 2: “OUT DDRB, R16” nghĩa là xuất giá
trị từ thanh ghi R16 ra thanh ghi DDRB, tóm lại sau 2 dòng trên giá trị DDRB như sau:
1 1 1 1 1 1 1 1
Có thể bạn sẽ hỏi tải sao chúng không sử dụng 1 dòng duy nhất là “LDI DDRB, 0xFF”
hay “OUT DDRB, 0xFF”, chúng ta không thể vì lệnh LDI chỉ cho phép thực hiện trên các
thanh ghi R16,…R31 và lệnh OUT không thực hiện được với các hằng số.
Và vì DDRB=11111111 nên trong trường hợp này tất cả các chân của PORTB đã sẵn
sàng cho việc xuất dữ liệu. Lúc này thanh ghi PINB không có tác dụng, thanh ghi PORTB

sẽ là thanh ghi xuất, ghi giá trị vào thanh ghi này sẽ tác động đến các chân của PORTB.1.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
11
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
2. Tổ chức của ATMega8 nói riêng, AVR nói chung.
Có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và
đường truyền cho bộ nhớ chương trình (program memory bus) được tách riêng. Data
memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, với register file.
Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục vụ cho instruction
registers. Hình 1 mô tả cấu trúc bộ nhớ của AVR.
Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình được, trong các
chip AVR cũ (như AT90S1200 hay AT90S2313…) bộ nhớ chương trình chỉ gồm 1 phần là
Application Flash Section nhưng trong các chip AVR mới chúng ta có thêm phần Boot
Flash setion. Boot section sẽ được khảo sát trong các phần sau, trong bài này khi nói về bộ
nhớ chương trình, chúng ta tự hiểu là Application section. Thực chất, application section
bao gồm 2 phần: phần chứa các instruction (mã lệnh cho hoạt động của chip) và phần chứa
các vector ngắt (interrupt vectors). Các vector ngắt nằm ở phần đầu của application section
(từ địa chỉ 0x0000) và dài đến bao nhiêu tùy thuộc vào loại chip. Phần chứa instruction
nằm liền sau đó, chương trình viết cho chip phải được load vào phần này.
Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan trọng nhất của
chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này. Bộ nhớ dữ liệu trên các chip
AVR có độ lớn khác nhau tùy theo mỗi chip, tuy nhiên về cơ bản phần bộ nhớ này được
chia thành 5 phần.
2.1 Bộ nhớ dữ liệu.
Bao gồm 32 thanh ghi có tên gọi là register file (RF), hay General Purpose Rgegister –
GPR, hoặc đơn giản là các Thanh ghi. Tất cả các thanh ghi này đều là các thanh ghi 8 bits
như trong hình 2.
Hình 2. Thanh ghi 8 bits.

Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt
đối từ 0x0000 đến 0x001F. Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các
giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này
được đặt tên theo thứ tự là R0 đến R31. Chúng được chia thành 2 phần, phần 1 bao gồm
các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31. Các thanh ghi này có
các đặc điểm sau:
Được truy cập trực tiếp trong các instruction.
Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳ xung clock.
Register File được kết nối trực tiếp với bộ xử lí trung tâm – CPU của chip.
Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứa kết quả trả lại
của phép toán.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
12
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
2.2 Vùng Nhớ
Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Tất cả các thanh
ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây. Xem lại ví dụ trong bài
1, trong đó tôi có đề cập về việc điều khiển các PORT của AVR, mỗi PORT liên quan
đến 3 thanh ghi DDRx, PORTx và PINx, tất cả 3 thanh ghi này đều nằm trong vùng
nhớ I/O. Xa hơn, nếu muốn truy xuất các thiết bị ngoại vi khác như Timer, chuyển đổi
Analog/Digital, giao tiếp USART…đều thực hiện thông qua việc điều khiển các thanh
ghi trong vùng nhớ này.
Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O. Nếu sử
dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được
tính từ 0x0020 đến 0x005F. Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của
chúng đựơc tính từ 0x0000 đến 0x003F.
2.3 RAM tĩnh, nội (internal SRAM).
Là vùng không gian cho chứa các biến (tạm thời hoặc toàn cục) trong lúc thực thi

chương trình, vùng này tương tự các thanh RAM trong máy tính nhưng có dung lượng
khá nhỏ (khoảng vài KB, tùy thuộc vào loại chip).
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
13
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
2.4 RAM ngoại (external SRAM).
Các chip AVR cho phép người sử dụng gắn thêm các bộ nhớ ngoài để chứa biến, vùng
này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip
2.5 EEPROM (Electrically Ereasable Programmable ROM)
là một phần quan trọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị
xóa ngay cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng
lưu trữ dữ liệu. Như trong hình 1, phần bộ nhớ EEPROM được tách riêng và có địa chỉ
tính từ 0x0000.
3. Cấu trúc bên trong của ATMEGA8
Hình . Cấu trúc bên trong ATmega 8.
ATmega có 32 thanh ghi trong Register File được kết nối trực tiếp với Arithmetic
Logic Unit -ALU (ALU cũng được xem là CPU của AVR) bằng 2 line, vì thế ALU có
thể truy xuất trực tiếp cùng lúc 2 thanh ghi RF chỉ trong 1 chu kỳ xung clock. (vùng
được khoanh tròn màu đỏ trong hình 4).
Các instruction được chứa trong bộ nhớ chương trình Flash memory dưới dạng các
thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock và 1
instruction chứa trong program memory sẽ được load vào trong instruction register,
instruction register tác động và lựa chọn register file cũng như RAM cho ALU thực thi.
Trong lúc thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được quyết định
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
14
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM

ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
bởi một bộ đếm chương trình – PC (Program counter). Đó chính là cách thức hoạt động
của AVR.
AVR có ưu điểm là hầu hết các instruction đều được thực thi trong 1 chu kỳ xung
clock, vì vậy có thể nguồn clock lớn nhất cho AVR có thể nhỏ hơn 1 số vi điều khiển
khác như PIC nhưng thời gian thực thi vẫn nhanh hơn
IV. KHỐI HIỂN THỊ.
1. Chức Năng chân LCD.
Số Chân Tên Chức Năng
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 khiển độ tuơ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 BD0-BD7 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
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
15
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
Chi tiết sử dụng 2 giao thức này được đề cập ở phần sau
2. Sơ đồ khối LCD
Hinh: Sơ đồ khối của LCD
2.1 Các thanh ghi
Chíp HD44780 có 2 thanh ghi quan trọng.
- Thanh ghi IR: để điều khiển LCD. Nguời dùng phải ra lệnh thông qua đuờng bus
tín hiệu, mỗi lệnh đuợc nhà cung cấp qui định rõ rang. Người dung chỉ việc cung
cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa là, khi ta nạp vào thanh ghi

IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã
lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó
- Thanh ghi DR dung để chứa dữ liệu 8 bit để ghi vao RAM DDRAM hoặc CG
RAM. Hoặc dung để chứa dữ liệu từ hai vùng RAM gửi ra MPU. Nghĩa là, khi
MPU ghi thông tin vào DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này
vào DDRAM hoặc CGRAM. Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu
ở địa chỉ này trong vùng RAM nội củaHD44780 sẽ được chuyển ra DR để truyền
cho MPU.
2.2 Cờ báo bận BF
Hi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng
thời gian để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế,
LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF(thông qua chân DB7 khi
có thiết lập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên,
khi xong việc, nó sẽ đặt cờ BF lại mức 0.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
16
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
2.3 Bộ đếm địa chỉ AC : (Address Counter)
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM
(DDRAM và CGRAM) mà
thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2 vùng RAM theo kiểu
rẽ nhánh. Khi một địa chỉ
lệnh được nạp vào thanh ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM
nhưng việc chọn lựa vùng
RAM tương tác đã được bao hàm trong mã lệnh.
Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị
và nội dung của AC được
xuất ra cho MPU thông qua DB0-DB6 khi có thiết lập RS=0 và R/W=1 (xem

bảng tóm tắt RS - R/W).
Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh mà
được cập nhật sau khi cờ
BF lên mức cao (not busy), cho nên khi lập trình hiển thị, bạn phải delay một
khoảng tADDkhoảng 4uS-
5uS (ngay sau khi BF=1) trước khi nạp dữ liệu mới. Xem thêm hình bên dưới.
2.4 Vùng RAM hiển thị DDRAM : (Display Data RAM)
Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là
một ô kí tự trên màn hình và
khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ hiển thị tại vị trí tương
ứng trên màn hình một kí tự
có mã 8 bit mà bạn đã cung cấp. Hình sau đây sẽ trình bày rõ hơn mối liên hệ
này
Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những
vùng RAM còn lại
không dùng cho hiển thị có thể dùng như vùng RAM đa mục đích.
Lưu ý là để truy cập vào DDRAM, ta phải cung cấp địa chỉ cho AC theo mã
HEX
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
17
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
2.5 Vùng ROM chứa kí tự CGROM: Character Generator ROM
Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự,
và định địa chỉ bằng
8 bit. Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự kiểu 5x10 (tổng
cộng là 240 thay vì
28= 256 mẫu kí tự). Người dùng không thể thay đổi vùng ROM này.
Hình 5 : Mối liên hệ giữa địa chỉ của ROM và dữ liệu tạo mẫu kí tự.

LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
18
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
2.6 Vùng RAM chứa kí tự đồ họa CGRAM: (Character Generator
RAM)
Như trên bảng mã kí tự, nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để
người dùng có thể tạo các mẫu kí tự đồ họa riêng. Tuy nhiên dung lượng vùng
này rất hạn chế: Ta chỉ có thể tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại
5x10 điểm ảnh. Để ghi vào CGRAM, hãy xem hình 6 bên dưới
Hình 6 : Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự.
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
19
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
PHẦN III: NỘI DUNG THI CÔNG
I. SƠ ĐỒ NGUYÊN LÝ

V C C
C 4
1 0 4
J 4
S R F 0 5
1
2
3
4
5

V C C
M O S I
V C C
E S
R D
D B 6
J 1
L C D 1 6 x 2
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
U 1
A T M E G A 8
1
2
3
4

5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
R E S E T / P C 6
P D 0 / R X D
P D 1 / T X D
P D 2 / I N T 0
P D 3 / I N T 1
P D 4 / T 0 / X C K

V C C
G N D
P B 6 / T O S C 1 / X T A L 1
P B 7 / T O S C 2 / X T A L 2
P D 5 / T 1
P D 6 / A I N 0
P D 7 / A I N 1
P B 0 / I C P 1
P B 1 / O C 1 A
P B 2 / O C 1 B / S S
P B 3 / O C 2 / M O S I
P B 4 / M I S O
P B 5 / S C K
A V C C
A R E F
G N D
A D C 0 / P C 0
A D C 1 / P C 1
A D C 2 / P C 2
A D C 3 / P C 3
S D A / A D C 4 / P C 4
S C L / A D C 5 / P C 5
R W
J 3
C O N 2
1
2
R e s e t
R e s e t
S C K

V C C
U 2
L M 7 8 0 5 C / T O
1 3
I N O U T
C 3
1 0 u F
T r i g e r I n p u t
E c h o O u t p u t
D B 4
S C K
C 2
4 7 0 u F
G N D
C 5
1 0 4
D B 7
M I S O
T r i g e r I n p u t
D B 5
M I S O
V C C
E c h o O u t p u t
M O S I
J 2
C A P N A P
1
2
3
4

5
6
7
8
9
1 0
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
20
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
II. CODE LẬP TRÌNH CHOVDK:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

Project :
Version :
Date : 11/25/2010
Author : Bui Cong Tuan
Company :
Comments:
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 4.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256

*****************************************************/
#include <mega8.h>
#include <delay.h>
#define Signal_Output PORTC.0
#define Signal_status DDRC.0 // 0 = In & 1 = Out
#define Signal_Input PINC.0
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
//Child program
void lcd_putint(unsigned int so, unsigned char x, unsigned char y); //Display interger
number
void lcd_putnum(unsigned char So, unsigned char x, unsigned char y); //Display char
number
unsigned int read_from_sensor();
// Declare your global variables here
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
21
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
unsigned int Distance; //Store distance value =Wide_of_pulse/58 cm;
wide_of_pulse/148 Inch. 3-400 cm
unsigned int Wide_of_pulse;
volatile unsigned char TimerStatus;
unsigned int TempI;
unsigned char TempC;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{
// Reinitialize Timer 0 value
TCNT0=0x28;
// Place your code here
TimerStatus=1;
}
void main(void)
{
// Declare your local variables here
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xff;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x01;
TCNT0=0x28;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
// LCD module initialization
lcd_init(16);
//*** sensor initial ***
Signal_status = 1; // out
Signal_Output = 1;
delay_ms(35);

Signal_status = 0; // In
Signal_Output = 0;
delay_ms(10);
while (1)
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
22
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
{
// Place your code here
lcd_gotoxy(0,0);
lcd_putsf("Distant measure");
//Wide_of_pulse = 0; //Reset counter

Wide_of_pulse = read_from_sensor();
Distance = Wide_of_pulse/58; //cm

lcd_putint(Distance,5,1);
lcd_putsf("Cm");
delay_ms(1000);

if (TempC<250)
{
TempC++;
}
else
TempC=0;
lcd_putnum(TempC,0,1);
};

}
unsigned int read_from_sensor()
{
unsigned int wide_pulse;
wide_pulse = 0; //temp
TempI=0;
Signal_status = 1; // out
Signal_Output = 1;
delay_us(12);
Signal_Output = 0;
Signal_status = 0;
while (Signal_Input==0)
{
//waiting
TempI++;
if (TempI == 4000) break;
}

TCCR0=0x01; //Run timer0
TCNT0=0x28;
TempI=0;
#asm("sei") //Enable interupt

while (Signal_Input==1)
{
wide_pulse++;
//Runtimer
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
23

TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
if (TimerStatus==1)
{
TimerStatus=0;
wide_pulse++;
}
}
Signal_status = 0; // Set Input
Signal_Output = 0;

#asm("cli") //Disable interupt

return wide_pulse;
}

void lcd_putint(unsigned int so, unsigned char x, unsigned char y) //65535
{
unsigned char N1=0;
unsigned char N10=0;
unsigned char N100=0;
unsigned char N1K=0;
unsigned char N10K=0;
//#asm("wdr");
N10K = so/10000;
N1K = (so - N10K*10000)/1000;
N100 = (so - N10K*10000 - N1K*1000)/100;
N10 = (so - N10K*10000 - N1K*1000 - N100*100)/10;
N1 = (so - N10K*10000 - N1K*1000 - N100*100 - N10*10);
lcd_gotoxy(x,y);

lcd_putchar(N10K+48);
lcd_putchar(N1K+48);
lcd_putchar(N100+48);
lcd_putchar(N10+48);
lcd_putchar(N1+48);
}

void lcd_putnum(unsigned char So, unsigned char x, unsigned char y)
{
unsigned char Tram=0;
unsigned char Chuc=0;
unsigned char Donvi=0;
//#asm("wdr");
Tram = So/100;
Chuc = (So - Tram*100)/10;
Donvi = (So - Tram*100 - Chuc*10);
lcd_gotoxy(x,y);
lcd_putchar(Tram+48);
lcd_putchar(Chuc+48);
lcd_putchar(Donvi+48);
}
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
24
TRƯỜNG ĐH KỸ THUẬT CÔNG NGHỆ TP HCM
ĐỒ ÁN MÔN HỌC: DO KHOẢNG CÁCH
PHẦN IV : ƯU NHƯỢC ĐIỂM VÀ TLTK.
I. ƯU ĐIỂM :
- khoảng cách mà cảm biến có thể phát hiện lên tới 4m.
- sóng phản hồi không phụ thuộc vào màu sắc,bề mặt của vật thể hay tính chất phản xạ ánh

sang của đối tượng.
- tín hiệu đáp ứng của cảm biến analog là tỉ lệ tuyến tính với khoảng cách. Điều này đặc
biệt lí tưởng cho các ứng dụng như theo dõi các mức vạt chất, mức độ chuyển động của dối
tượng.
- mạch điện tử đơn giản, xử lý tín hiệu dễ ràng.
II. NHƯỢC ĐIỂM :
- Cảm biến siêu âm yêu cầu đối tượng có một diện tích bề mặt tối thiểu (phụ thuộc vào
từng loại cảm biến)
- sóng phản hồi mà cảm biến siêu âm nhận được có thể chịu ảnh hưởng của sóng âm thanh
tạp âm
- cảm biến siêu âm yêu cầu một khoảng thời gian sau mỗi lần sóng phát đi để sẵn sàng
nhận sóng phản hồi. Kết quả nhìn chung chậm hơn các cảm biến khác
- cảm biến siêu âm có giưới hạn khoảng cách phát hiện nhỏ nhất.
- sự thay đổi của môi trường như nhiệt độ (vận tốc âm thanh phụ thuộc vào nhiệt độ),áp
suất, sự chuyển động không đều của không khí, bụi bẩn bay trong không khí gây ảnh
hưởng đến kết quả đo.
Nhiệt độ của bề mặt đối tượng làm ảnh hưởng đến phạm vi hoạt động của cảm biến, làm
méo dạng sóng ,làm cho khoang cách phát hiện ngắn lại và kết quả không chính xác.
- bề mặt phẳng phản hồi năng lượng của sóng siêu âm tốt hơn mặt gồ ghề,tuy nhiên bề mặt
trơng phẳng lại có đòi hỏi khắt khe về vị trí góc tạo thành giữa cảm biến và mặt phẳng đối
tượng.
III. TÀI LIỆU THAM KHẢO:
www.datasheep.com
www.ant7.com
LỚP 09HDT1
SVTH: BÙI CÔNG TUÂN MSSV: 09B1010058
25

×