CHẾ TẠO HỆ THỐNG XÁC ĐỊNH KHOẢNG CÁCH GIỮA Ô TÔ VỚI CHƯỚNG NGẠI VẬT
NỘI DUNG ĐỒ ÁN
XÁC ĐỊNH KHOẢNG CÁCH GIỮA Ô TÔ, 200 MB Bao gồm tất cả file CAD, thiết kế 2D....THIẾT KẾ GIỮA Ô TÔ VỚI CHƯỚNG NGẠI VẬT, nguyên lý GIỮA Ô TÔ VỚI CHƯỚNG NGẠI VẬT, bản vẽ thiết kế GIỮA Ô TÔ VỚI CHƯỚNG NGẠI VẬT
200 MB Bao gồm tất cả file CAD, thiết kế 2D....CHẾ TẠO HỆ THỐNG XÁC ĐỊNH KHOẢNG CÁCH GIỮA Ô TÔ VỚI CHƯỚNG NGẠI VẬT, bản vẽ thiết kế XÁC ĐỊNH KHOẢNG CÁCH GIỮA Ô TÔ
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH
LUẬN VĂN THẠC SĨ
CHẾ TẠO HỆ THỐNG XÁC ĐỊNH KHOẢNG CÁCH GIỮA Ô TÔ VỚI CHƯỚNG NGẠI VẬT
HỌ VÀ TÊN HỌC VIÊN :
GV HƯỚNG DẪN : PGS TS. ĐỖ VĂN DŨNG
CHUYÊN NGÀNH : KỸ THUẬT Ô TÔ – MÁY KÉO
MÃ SỐ NGÀNH : 60 52 35
TỔNG QUAN :
Hệ thống xác định chướng ngại vật là một hệ thống nhằm cải thiện thêm tính an toàn trên xe hơi, bên cạnh hệ thống túi khí( air bag), hệ thống thắng ABS v..v… thì hệ thống xác định khoảng cách từ ô tô đến chướng ngại vật được lắp trên một số loại ô tô đắt tiền. Vì chi phí chế tạo hệ thống khá đắt nên ở Việt Nam hiện nay, hệ thống xác định chướng ngại vật (Pre- Crash Safety System) chỉ được trang bị cho xe Lesus LS460, một dòng xe siêu sang của TOYOTA. Hệ thống này có ưu điểm khá lớn khi điều khiển xe ở tốc độ cao, khi qua đường hoặc khi lùi xe. Với những ưu điểm vượt trội như vậy vấn đề đặt ra làm sao có thể thiết kế hệ thống này với một giá cả hợp lí và chất lượng không thua kém hệ thống trang bị trên các xe ô tô đắt tiền. Đây là vấn đề cần quan tâm để có thể trang bi hệ thống này cho nhiều dòng xe khác, không chỉ trên các xe đắt tiền.
Mục tiêu thứ nhất của đề tài là phải tìm loại cảm biến đo khoảng cách phù hợp. Loại cảm biến này có khả năng phát hiện ra chướng ngại vật trong một khoảng cách mà lái xe có thể xử lí an toàn
Mục tiêu thứ hai là bố trí hệ thống xác định chướng ngại vật trên xe sao cho phù hợp
Mục tiêu cuối cùng là lập trình sao cho hệ thống có thể hiển thị khoảng cách lên màn hình và điều khiển được cảm biến chính xác.
MỤC TIÊU VÀ NHIỆM VỤ CỦA LUẬN VĂN
Luận văn Nghiên cứu, thiết kế và chế tạo hệ thống xác định khoảng cách từ ô tô đến chướng ngại vật" có nội dung chủ yếu:
- Phân tích các va chạm thường gặp khi chạy xe trên đường.
- Xây dựng phương trình và giải thuật để tính toán khoảng cách cho cảm biến khi tín hiệu đưa về.
- Dùng Phần mềm để lập trình và điều khiển cho hệ thống hiển thị khoảng cách và điều khiển cám biến.
- Thiết kế và thi công mô hình.
PHẠM VI NGHIÊN CỨU
- Nghiên cứu về phương pháp thu và phát của cảm biến siêu âm
- Nghiên cứu phương pháp tính toán hệ thống khi xe di chuyển trên đường đến chướng ngại vật
- Nghiên cứu tính toán các thông số từ xe đến chướng ngại vật.
- Lập trình cho hệ thống cảnh báo
- Đưa ra mô hình toán học và mô phỏng khi xe gặp chướng ngại vật và cách yêu cầu khác
- Áp dụng tính toán thiết kế mô hình.
PHƯƠNG PHÁP NGHIÊN CỨU
- Thu thập tài liệu liên quan đến đề tài nghiên cứu.
- Nghiên cứu các hệ thống xác định chướng ngại vật của các hãng xe trên thế giới. Tác dụng cụ thể của hệ thống. Tính toán và lập trình chi tiết cho hệ thống khi xe đang chạy.
- Xây dựng chương trình và mô phỏng việc hòa, từ đó thiết kế và thi công mô hình thực tế.
- Phân tích các kết quả nhận được và các kiến nghị.
- Đánh giá tổng quát toàn bộ bản luận văn. Đề nghị hướng phát triển của đề tài.
ĐIỂM MỚI CỦA LUẬN VĂN
1. Tính toán các thông số trong cảm biến tránh va chạm.
2. Đưa ra cách tính toán và xây dựng mô hình về hệ thống cảnh báo va chạm.
3. Thiết kế và chế tạo hệ thống xác định khoảng cách từ ô tô đến chướng ngại vật.
4. Điều khiển được cảm biến có khả năng phát hiện chướng ngại vật xa hơn
5. Giá thành hợp lí, phù hợp với khả năng tiêu dùng của người Việt Nam
GIÁ TRỊ THỰC TIỄN CỦA ĐỀ TÀI
Từ nhu cầu và sự an toàn của người lái khi được trang bị hệ thống có thể phát ra tín hiệu khi có vật cản trên đường, giúp cho lái xe có thể an tâm khi di chuyển cũng như góp phần làm giảm tai nạn giao thông. Chính vì lí do đó, đề tài “ Nghiên cứu thiết kế chế tạo hệ thống xác định khoảng cách từ ô tô đến chướng ngại vật” được hình thành.
Từ công việc nghiên cứu của luận văn:
- Từ việc thiết kế chế tạo thành công hệ thống phát hiện chướng ngại vật
- Với kết quả nhận được có thể:
- Ứng dụng rộng rãi trong các dòng xe du lịch, xe di chuyển trong địa hình phức tạp vì giá thành không cao
- Giúp các doanh nghiệp đầu tư và nghiên cứu hướng phát triển của hệ thống này
- Sử dụng làm tài liệu giảng dạy.
- Giúp cho các nhà thiết kế các tài liệu quan trọng.
CHƯƠNG 1 : TỔNG QUAN VỀ CẢM BIẾN SIÊU ÂM
1.1 Giới thiệu về cảm biến siêu âm (Ultrasonic sensor) :
- Cơ sở vật lí siêu âm
- Sóng âm là những sóng cơ truyền trong các môi trường khí, lỏng, rắn. Sóng Âm thanh di chuyển với vận tốc thay đổi theo Nhiệt độ và Áp suất của môi trường. Tại Nhiệt độ và áp suất tiêu chuẩn v= 300 m /s.
- Phân loại: có 3 loại sóng : f<16Hz:hạ âm, f = 16 - 20.000 Hz: âm nghe được, f > 20.000 Hz: siêu âm
- Tần số, bước sóng và tốc độ truyền sóng l=c/f
- Tương tác của siêu âm bao gồm : phản xạ, tán xạ, khúc xạ, nhiễu xạ, giao thoa, sự hấp thụ, sự suy giảm.
- Trong phần này chúng ta chủ yếu nghiên cứu phần phản xạ :
Sự phản xạ bao gồm :
Trở kháng âm : Z= r.c
Nếu một trở kháng âm của một môi trường giống như trong môi trường khác, âm sẽ được truyền từ môi trường này sang môi trường kia. Sự khác nhau của trở kháng âm hai môi trường gây ra hiện tượng một phần âm thanh bị phảm xạ tại mặt phân cách.
Hệ số phản xạ :(ar)
Hệ số phản xạ và hệ số truyền qua :
Hình 1.1 : Phương pháp phản xạ
Sự cấu thành mặt phân cách :
Phần trăm khi sóng âm đi từ môi trường có kháng trở cao sang môi trường có kháng trở thấp và ngược lại là như nhau. Phần trăm phản xạ tỉ lệ với bình phương hiệu trở kháng âm hai môi trường Tín hiệu phản xạ : Sóng âm có bị phản xạ nhiều lần khi môi trường không đồng nhất hoặc đi qua nhiều lớp môi trường.
Hình 1.2 : Tín hiệu phản xạ
Phản xạ khếch tán
Hình 1.3 : Phản xạ khếch tá
- Tán xạ
Sự tán xạ hay còn gọi là sự phản xạ không chính xác, sự tán xạ xảy ra khi bề mặt phân cách nhỏ, nhỏ hơn vài bước sóng. Mỗi mặt phân cách hoạt động như một nguồn âm mới, và âm được phản xạ theo tất cả các hướng. Sự tán xạ do các phần tử nhỏ có kích thước thẳng nhỏ hơn bước sóng gọi là Raylegh, sự tán xạ phụ thuộc vào tần số theo hàm mũ 2 đến 6.
- Tính toán suy giảm
Sự hấp thụ phụ thuộc vào tính chất chùm tia và tính nhớt và thời gian phục hồi của môi trường.
Tốc độ phân tử cực đại
Sự chiếm chỗ phần tử cực đại
.....................................
Ngắt Timer xảy ra khi cờ TFx được xét (bộ đếm tràn). Cờ TFx được clear bằng bằng phần mềm hoặc khi vi điều khiển thực hiện chương trình con phục vụ ngắt Timer
>> Thanh ghi TMOD
Các Timer thường được khởi tạo 1 lần ở đầu chương trình để thiết lập mode hoạt động phục vụ các ứng dụng điều khiển liên quan đến định thời hay đếm xung ngoại.
Tùy thuộc vào yêu cầu cụ thể mà ta điều khiển cho Timer bắt đầu đếm, ngừng hay khởi động đếm lại từ đầu.
Thanh ghi TMOD là thanh ghi đầu tiên cần phải khởi tạo để thiết lập trạng thái hoạt động cho các Timer.
Cho Timer 1
Cho Timer 0
Chú thích
Bit
Chú thích
Gate
- Khi đặt Bit gate = 1 thì Timer0 chỉ làm việc khi các cổng vào
của lệnh ngắt –INT( bit P3.3 hay P3.2) sẽ không có tác dụng
- Khi đặt Bit gate = 1 thì Timer1 chỉ làm việc khi INT=1
C/
- Khi đặt ở mức áp cao thì các Timer dùng như bộ đếm xung (Counter)
vào từ bên ngoài:
Với Timer1 xung đếm cho vào Bit P3.5
Với Timer0 xung đếm cho vào Bit P3.4
- Khi đặt ở mức áp thấp thì các Timer dùng như đếm xung của
mạch dao động, lúc đó nó có thể xem như một đồng hồ tự chạy (Timer)
M1
Bit chọn mode
M0
Bit chọn mode
Hai bit M0 và M1 tạo ra 4 trạng thái tương ứng vớ 4 kiểu làm việc khác nhau của Timer 0 hay Timer1
M1
M0
Mode( Kiểu)
Chức năng
0
0
0
Chế độ định thời 13 bit (tương thích với họ 8048)
0
1
1
Chế độ Timer hay Counter 16 bit
1
0
2
Chế độ Timer hay Counter 8 bit, tư nạp lại
1
1
3
Timer 0 được tách thành 2 Timer 8 bit
-Timer 8 bit TL0 được điều khiển bởi các bit của mode Timer0
-Timer 8 bit TH0 được điều khiển bởi các bit của mode Timer1
Timer 1 không hoạt động ở mode 3
>> Thanh ghi THx và TLx
Các giá trị đếm được của Timer/Counter thì được lưuu trong thanh ghi THx và TLx.
Nếu ta không thiết lập giá trị bắt đầu đếm cho các thanh ghi TLx và THx là 0000h thì Timer sẽ bắt đầu đếm từ giá trị 0000H đến giá trị FFFFH.
>> Cờ báo tràn TFx
Nếu ta thiết lập giá trị bắt đầu đếm cho các thanh ghi TLx và THx là khác 0000h thì Timer sẽ bắt đầu đếm từ giá trị ta gán đến giá trị FFFFH. Nhưng khi chuyển từ giá trị FFFFh đến 0000h thì sẽ sinh ra tràn làm cho bit TFx = 1 rồi tiếp tục đếm từ giá trị 0000h.
Để cho Tiner luôn bắt đầu đếm từ giá trị ta gán thì ta có thể lập trình chờ sau mỗi lần tràn ta sẽ cho xóa cờ TFx và gán lại giá trị cho TLx/THx để Timer luôn bắt đầu đếm từ giá trị khởi gán lên.
>> Thanh ghi điều khiển TRx
Thanh ghi này có tác dụng cho Timer được hay không được phép đếm xung
Nếu TRx = 1 thì Timer được phép đếm xung
Nếu TRx = 0 thì timer không được phép đếm xung
5.4/ Vector ngắt:
Khi CPU đáp ứng một yêu cầu ngắt thì nó nhảy tới một địa chỉ tương ứng trong bảng vector ngắt để thực hiện lệnh
Interrupt
Flag
Vector Address
System Reset
RST
0000H
External 0
IE 0
0003H
Timer 0
TF 0
000BH
External 1
IE 1
0013H
Timer 1
TF 1
001BH
Serial Port
R1 or T1
0023H
Timer 2
TF2 or EXF2
002BH
5.5/ Ngắt Port nối tiếp:
Xảy ra khi cờ ngắt TI hoặc RI được xét. TI và RI phải được clear bằng phần mềm.
Trong đó :
- TI là cờ ngắt phát. Được set khi truyền xong 1 ký tự và được clear bởi phần mềm
- RI là cờ ngắt thu. Được set khi nhận xong 1 ký tự và được clear bởi phần mềm
- Bảng số liệu tốc độ Baud sử dụng tụ thạch anh 12MHz
Tốc độ baud
TH1 ( Số thập phân )
TH1 ( Số Hex )
9600
-7
F9H
2400
-13
F3H
1200
-23
E6H
- Thanh nhớ đệm SBUF(Serial Buffer): là thanh nhớ đệm 8 bit có địa chỉ là 99H, nó dùng cất giữ tạm các dữ liệu 8 bit. Khi muốn truyền một dữ liệu ta phải move dữ liệu đó vào bộ nhớ đệm.
5.6/ Ngắt ngoài:
Ngắt ngoài xảy ra khi có mức thấp hoặc cạnh âm trên chân (bit P3.2) hoặc (bit P3.3) của 8051
+ Khi chân nhân được tín hiệu điều khiển ( với mức áp thấp ), nó sẽ dừng ngay chương trình đang chạy và nhảy tới địa chỉ 0003H của bộ nhớ EEPROM và cho thi hành chương trình đã có ở địa chỉ này.
+ Khi chân nhân được tín hiệu điều khiển ( với mức áp thấp ), nó sẽ dừng ngay chương trình đang chạy và nhảy tới địa chỉ 0013H của bộ nhớ EEPROM và cho thi hành chương trình đã có ở địa chỉ này.
Kích bằng cạnh hay kích bằng mức được lựa chọn bằng hai bit IT0 hoặc IT1 trong thanh ghi SCON .
+ Nếu IT1=0 ngắt ngoài 1 được kích khởi mức bởi việc phát hiện mức áp thấp tại chân
+ Nếu IT1=1 ngắt ngoài 1 được kích khởi cạnh bởi việc phát hiện mức áp thấp tại chân
Có hai bit IE0 và IE1 trong TCON chỉ ra trạng thái có hay không có ngắt ngoài (phát hiện cạnh xuống tại chân hay ) .
5.7/ Ngắt dùng RESET
Có thể xem tác dụng Reset (cho bit tại chân số 9 lên 1) cũng là một ngắt đặt biệt. Khi tín hiệu Reset xuất hiện, nó sẽ dừng ngay chương trình chính và nhảy về địa chỉ gốc 0000h của bộ nhớ EEPROM và cho chạy chương trình bắt đầu bằng địa chỉ này.
LCD HD44780 (theo datasheet của Hitachi)
- LCD : màn hình LCd bao gồm : màn hình hiển thị, vùng chứa bộ nhớ, bộ phận hiển thị, mạch tích hợp
- Hình dạng và kích thước của LCD
hình : Hình dạng của LCD 16X2
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 bên dưới :
Hình : Sơ đồ chân kết nối của LCD
- Chức năng các chân :
Chân số |
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 |
Chân này dùng để đ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
|
Bảng 1 : Chức năng các chân của LC
* Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các chân DBx.
Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông qua các chân DBx.
3>Sơ đồ khối của HD44780
Để hiểu rõ hơn chức năng các chân và hoạt động của chúng, ta tìm hiểu sơ qua chíp HD44780 thông qua các khối cơ bản của nó.
a>Các thanh ghi
Hình 3 : Sơ đồ khối của HD44780*
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register)
- Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng 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 đó.
b> Cờ báo bận BF: (Busyflag)
Khi 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.
c> 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 tADD khoả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
Hình 4 : Giản đồ xung cập nhật AC
d> 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 :
Hình 4 : Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD
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
e> 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ự.Như vậy, để có thể ghi vào vị trí thứ x trên màn hình một kí tự y nào đó, người dùng phải ghi vào vùng DDRAM tại địa chỉ x (xem bảng mối liên hệ giữa DDRAM và vị trí hiển thị) một chuỗi mã kí tự 8 bit trên CGROM. Chú ý là trong bảng mã kí tự trong CGROM ở hình bên dưới có mã ROM A00.
Ví dụ : Ghi vào DDRAM tại địa chỉ “01” một chuỗi 8 bit “01100010” thì trên LCD tại ô thứ 2 từ trái sang (dòng trên) sẽ hiển thị kí tự “b”.
Bảng 3 : Bảng mã kí tự (ROM code A00)f> 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ệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
- Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU (ở chế độ đọc). 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ủa HD44780 sẽ được chuyển ra DR để truyền cho MPU.
Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2 thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối với hai chân RS và R/W theo mục đích giao tiếp.
RS |
R/W |
Khi cần |
0 |
0 |
Ghi vào thanh ghi IR để ra lệnh cho LCD (VD: cần display clear,…) |
0 |
1 |
Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6 |
1 |
0 |
Ghi vào thanh ghi DR |
1 |
1 |
Đọc dữ liệu từ DR |
Bảng 2 : Chức năng chân RS và R/W theo mục đích sử dụn
GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C CHO VI ĐIỀU KHIỂN
Có thể nói C là một ngôn ngữ lập trình bậc cao được sử dụng rất rộng rãi và đa năng, chương trình viết ra rất hiệu quả và chặc chẽ, đồng thời cho phép thể hiện rõ tính có cấu trúc của chương trình. Thực tế cho thấy đối với nhiều vấn đề ứng dụng có liên quan đến điều khiển và giám sát, việc lựa chọn sử dụng ngôn ngữ C tỏ ra hiệu quả hơn so với bất kỳ một ngôn ngữ nào khác. Ngôn ngữ C đã được phát triển để dùng cho máy tính lớn( mainframe), máy tính mini và cả cho máy tính cá nhân(PC). Cho đến ngày nay, ngôn ngữ lập trình C còn có thể sử dụng cho hầu hết các vi điều khiển và vi xử lí.
- Các kiểu dữ liệu :
Trình dịch C51 tạo ra các kiểu dữ liệu C tiêu chuẩn và bổ sung thêm một vài kiểu dữ liệu mở rộng được giới thiệu để hỗ trợ cho họ vi điều khiển 8051. Bảng dưới liệt kê danh sách các kiểu dữ liệu thường gặp.
Kiểu dữ liệu |
Lượng bit |
Vùng giá trị |
Bit |
1 |
0 hoặc 1 |
Signed char |
8 |
-128 đến +127 |
Unsigned char |
8 |
0 đến 255 |
Enum |
16 |
-32768 đến +32767 |
Signed short |
16 |
-32768 đến +32767 |
Unsigned int |
16 |
0 đến 65535 |
Signed int |
16 |
-32768 đến +32767 |
unsigned int |
16 |
0 đến 65535 |
Signed long |
32 |
-2147483648 đến 2147483647 |
unsigned long |
32 |
0 đến 4294967295 |
Float |
32 |
đến |
Sbit |
1 |
0 hoặc 1 |
sfr |
8 |
0 đến 255 |
Sfr 16 |
16 |
0 đến 65535 |
Hình : các kiểu dữ liệu C51
Các kiểu dữ liệu này được mô tả như sau :
- Bit : Kiểu dữ liệu này có thể được sử dụng để khai báo biến một bit
- Signed char/ unsigned char : Các kiểu dữ liệu này giống như trong ngôn ngữ C tiêu chuẩn và được sử dụng để khai báo biến kí tự có dấu và không có dấu. Mỗi biến kí tự(character) có độ dài 1 byte (8 bit).
- Signed short/ unsigned short : Các kiểu dữ liệu này giống như trong ngôn ngữ C tiêu chuẩn và được sử dụng để khai báo các biến short có dấu và không có dấu. Mỗi biến short có độ dài là 2 byte(16 bit).
- Signed int/ unsigned int : Các kiểu dữ liệu này giống như trong ngôn ngữ C tiêu chuẩn và được sử dụng để khai báo biến nguyên có dấu và không có dấu. Các biến nguyên có độ dài là 2 byte (16 bit).
- Signed long/ unsigned long : Các kiểu dữ liệu này giống như trong ngôn ngữ C tiêu chuẩn và được sử dụng để khai báo biến nguyên(long integer) có dấu và không có dấu.
- Float : kiểu này có thể sử dụng để khai báo một biến dấu phẩy động.
- Sbit : Kiểu dữ liệu này được đưa ra dùng cho họ 8051 và được sử dụng để khai báo một bit riêng lẻ bên trong SFR của họ 8051.
- Srf : Kiểu dữ liệu này tương tự với sbit nhưng được sử để khai bào các biến kiểu 8 bit.
- Srf16 : Kiểu dữ liệu này tương tự với srf nhung được sử dụng để khai báo biến 16 bit. Khi sử dụng kiểu dữ liệu này byte thấp sẽ đi trước byte cao.
CÁC KIỂU BỘ NHỚ :
Kiến trúc 8051 hỗ trợ cả chương trình (hoặc mã) và vùng bộ nhớ dữ liệu. Bộ nhớ chương trình là loại dùng để đọc và vì vậy không thể ghi vào. Tùy thuộc vào loại bộ xử lý được sử dụng mà dung lượng của bộ nhớ chương trình có sẵn bên trong cũng khác nhau.
Bộ nhớ dữ liệu nằm sẵn bên trong CPU của vi điều khiển 8051 có thể đọc ra hoặc ghi và. Bộ nhớ dữ liệu có thể có dữ liệu tới 256 byte, tùy thuộc vào loại vi điều khiển được sử dụng.
Kiểu bộ nhớ sẽ quy định kiểu bộ nhớ nào được sử dụng cho một ứng dụng cụ thể. Có 3 kiểu bộ nhớ, với tên gọi là Nhỏ (Small, xếp chặt (compact) và lớn ( large) và kiểu bộ nhớ được chỉ định bằng cách sử dụng chỉ hướng cho trình dịch( compiler directive). Kiểu bộ nhớ small được sử dụng nếu tất cả các biến đều nằm trong bộ nhớ dữ liệu bên trong của 8051. Kiểu bộ nhớ này tạo ra mã nhanh nhất và hiệu quả nhất, vì vậy có thể sử dụng bất cứ khi nào có thể. Trong kiểu bộ nhớ cpmpact, tất cả các biến đều nằm trong một trang của bộ nhớ dữ liệu bên ngoài. CÓ thể sử dụng nhiều nhất là 256 byte của các biến. Kiểu bộ nhớ này không hiệu quả bằng kiểu small. Rong kiểu bộ nhớ large, tất cả các biến đều nằm trong bộ nhớ dữ liệu (bên) ngoài có thể sử dụng nhiều nhất là 64 kbyte dữ liệu. Kiểu bộ nhớ large tạo ra nhiều mã hơn so với hai kiều còn lại và vì vậy kiểu bộ nhớ này tỏ ra không hiệu quả lắm.
Việc dịch chương trình trong kiểu bộ nhớ small luôn tạo ra nhanh nhất và dung lượng nhỏ nhất do việc truy cập bộ nhớ bên trong bao giờ cũng nhanh hơn bộ nhớ bên ngoài.
MÔ TẢ CHƯƠNG TRÌNH
Có nhiều phương pháp mà người lập trình có thể lựa chọn để mô tả giải thuật được sử dụng để viết chương trình. TRước đây lưu đồ
Sơ đồ bố trí cảm biến trên ô tô
Sơ đồ nối chân
Mạch in
Mạch điều khiển