Bài giảng phần cứng của cpu
1.1 CÁC DATASHEET 1. AT89S52 2. LM324 3. L293D 4. LM7805 5. LCD 16x2 6. A1015
Bạn đang xem trước 20 trang tài liệu Bài giảng phần cứng của cpu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI GIẢNG
Phần Cứng Của CPU
MỤC LỤC
GIỚI THIỆU CHUNG
Vi xử lý (viết tắt là µP hay uP), đôi khi còn được gọi là bộ vi xử lý, là một linh kiện điện tử máy tính được chế tạo từ các tranzito thu nhỏ tích hợp lên trên một vi mạch tích hợp đơn. Khối xử lý trung tâm (CPU) là một bộ vi xử lý được nhiều người biết đến và được ví như bộ não của máy tính nhưng ngoài ra nhiều thành phần khác trong máy tính cũng có bộ vi xử lý riêng của nó, ví dụ trên cạc màn hình, ổ đĩa cứng… cũng có các bộ bộ vi xử lý.
Vi điều khiển có thể được coi là một máy tính được tích hợp trên một chíp, nó thường được sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các module vào ra, ADC, DAC, timer, ngắt...Ở máy tính thì các mô đun thường được xây dựng bởi các chíp và mạch ngoài.
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động, v.v.
Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard, kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần này là lõi CPU, bộ nhớ chương trình (thông thường là ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và các cổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môi trường bên ngoài - tất cả các khối này được thiết kế trong một vi mạch tích hợp. Vi điều khiển khác với các bộ vi xử lý đa năng ở chỗ là nó có thể hoạt động chỉ với vài vi mạch hỗ trợ bên ngoài.
Đề tài thiết kế xe chạy theo đường vẽ sẵn được chúng em thực hiện dựa trên nền kiến thức về mạch điện tử, vi xử lý nói chung và vi điều khiển họ 8051 nói riêng được thầy giáo hướng dẫn trên lớp. Thực hiện đề tài này là tiền đề để chúng em nắm được những kiến thức cơ bản về vi điều khiển 8051, từ đó tạo cơ sở để tiếp tục nghiên cứu những họ vi điều khiển khác như AVR, PIC, ARM… phục vụ trong quá trình học tập và làm việc sau này.
Chúng em chân thành cảm ơn thầy Nguyễn Hồng Quang đã hướng dẫn chúng em hoàn thành bài tập này.
Nhóm 2 – TĐH 4 – K50
MÔ TẢ KĨ THUẬT
THIẾT KẾ MẠCH
Hai mạch chính sử dụng trong bài tập này là mạch SENSORS để dò đường và mạch VI XỬ LÝ VÀ ĐỘNG CƠ để thu tín hiệu, xử lý và đưa ra tín hiệu điều khiển hai động cơ để dẫn hướng. Ngoài ra, để nạp chương trình cho vi điều khiển, chúng em sử dụng mạch nạp ISP loại đơn giản tự làm theo sơ đồ trên mạng Internet.
MẠCH SENSORS
Đường đi của xe được vẽ bằng vạch đen nằm trên nền trắng. Để xe nhận ra được đường đi, chúng em sử dụng các cặp led thu phát hồng ngoại đặt gần nhau. Các led phát phát ra ánh sáng đỏ, các led thu có điện trở phụ thuộc vào có nhận được ánh sáng phản xạ từ đường đi hay không.
Khi cặp thu phát ở vị trí nền trắng, ánh sáng từ led phát phát ra phản xạ trên nền trắng và tới led thu. Led thu thu được ánh sáng này thì điện trở giảm xuống, điện áp ở cực Anot của led thu gần về 0. Ngược lại, ở vị trí vạch đen, ánh sáng từ led phát phát ra không phản xạ lại được do bị vạch đen hấp thụ. Led thu không nhận được ánh sáng này nên điện áp ở cực Anot của nó gần bằng 5 V. Điện áp ra từ led thu được đem so sánh với điện áp chuẩn đã được tinh chỉnh hợp lý qua IC LM324 để cho ra mức logic 0-1, đưa vào vi điều khiển xử lý.
Hình ảnh minh họa như sau:
IC LM324 gồm 4 bộ so sánh.
Mỗi bộ so sánh được minh họa như hình bên. Trong đó, đầu vào đảo nối với cực Anot của led thu và đầu vào không đảo nối với điện áp so sánh từ chiết áp.
Khi led ở ngoài nền trắng, mức điện áp trên led thu đo được là 3.0V, ngược lại, mức điện áp thu đo được khi bắt vào vạch đen là 4.6 V. Điện áp so sánh (Vref) được đặt qua biến trở 10k là 3.8 V.
Khi ở ngoài nền trắng:
Vled thu <Vref nên Output=1
Khi bắt vạch đen:
Vled thu >Vref nên Output=0
Để bắt đường được tốt, chúng em sử dụng 6 cặp led thu phát được bố trí như sau (LT: Led thu; LP: Led phat):
LT3
LP3
LT1 LT2 LT5 LT6
LP1 LP2 LP5 LP6
LT4
LP4
Sơ đồ nguyên lý mạch SENSORS:
Sơ đồ mạch in:
b) MẠCH VI ĐIỀU KHIỂN VÀ ĐỘNG CƠ
Khối NGUỒN:
Trong khối nguồn chúng ta sử dụng 1 bình ắc quy khô 12V.Mặt khác hệ thốngiều khiển cần phải có nguồn 5V để cung cấp cho khối VI ĐIỀU KHIỂN và khối SENSORS. Để tạo nguồn 5V DC chúng ta sử dụng IC ổn áp 7805, với đầu vào gồm đất chung của toàn hệ thống và nguồn 12 VDC lấy trực tiếp từ nguồn ắc quy. IC ổn áp LM7805 được lắp một tản nhiệt loại nhỏ để tản bớt nhiệt khi hoạt động giúp khối nguồn cũng như toàn bộ mạch hoạt động ổn định.
Mạch nguồn như sau:
Trong mạch nguồn có sử dụng một cầu chì kí hiệu là SW2 phòng xảy ra sự cố chập mạch, nhằm bảo vệ cho mạch nguồn cũng như các khối liên quan khác.
Khối VI ĐIỀU KHIỂN
Khối này gồm có Vi điều khiển AT89S52, mạch RESET, mạch tạo dao động, các led báo vạch về từ mạch SENSORS, Jumpers đầu vào dùng để nạp ISP.
+ Vi điều khiển AT89S52 được chúng ta sử dụng vì nó có đầy đủ những chức năng của vi điều khiển AT89C51. Ngoài ra còn có thêm một timer (timer2) và có bộ nhớ Flash, công nghệ nạp ISP (In System Programming) tức là nạp mà không cần tháo chip ra khỏi mạch, giúp việc lập trình và test rất thuận tiện. Giá thành thậm chí còn rẻ hơn AT89C51.
+ Mach RESET có chức năng reset lại hoạt động của vi điều khiển, được nối vào chân số 9 của vi điều khiển là chân tích cực cao. Khi chân số 9 được set lên 1 thì vi điều khiển được reset lại. Để chống rung khi ấn nút, chúng ta dùng một tụ hóa nối song song với nút ấn.
+ Mạch DAO ĐỘNG sử dụng thạch anh 12Mhz, như vậy một chu kì máy là 1us, rất thuận tiện cho việc tính toán và lập trình. Tuy nhiên có hạn chế là không thể truyền thông với máy tính qua cổng COM (đòi hỏi thạch anh 11.0592Mhz). Thạch anh này được nối đất với tụ gốm 33p để lọc nhiễu.
+ Các Jumpers dùng để nạp ISP sử dụng mạch nạp ISP loại đơn giản, chỉ cần dùng 5 chân: GND, MOSI, MISO, SCK, RESET nối với cổng LPT của máy tính thông qua jack DB25. Sử dụng kiểu nạp ISP này rất thuận tiện khi lập trình và test xe vì không phải tháo chip (hạn chế hỏng, gẫy chân chip), tốc độ nạp chấp nhận được, ít khi bị lỗi, chi phí thấp.
+ Các led báo vạch về dùng để phản ánh tình trạng của các led thu phát ở mạch SENSORS. Khi một cặp thu-phát bắt vào vạch đen thì led báo tương ứng sẽ sáng lên và ngược lại. Nói cách khác, các led báo này phản ánh vị trí lệch của xe so với vạch đen, từ đó giúp debug chương trình thuận tiện hơn rất nhiều.
Khối LCD HIỂN THỊ
Trong bài tập này chúng ta sử dụng một LCD để giới thiệu cũng như hiển thị những thông tin cần thiết khác, đồng thời học cách giao tiếp giữa hai vi xử lý. Do LCD tiêu thụ dòng khá lớn đặc biệt là khi bật đèn nền, làm mau hết ắcquy nên chỉ sử dụng LCD với những trường hợp cụ thể. Để bật tắt đèn nền, chúng ta sử dụng một bóng thuận A1015, được điều khiển bởi chân P0.7 của vi điều khiển. Khi P0.7=0 thì bóng thông, cực A của LCD được nối với nguồn 5V, đèn nền sáng và ngược lại. Ngoài ra trong khối còn sử dụng một biến trở 10k tạo điện áp ra đưa vào chân VEE của LCD để điều chỉnh độ tương phản. Khi điện áp thì độ tương phản là lớn nhất, V thì độ tương phản là nhỏ nhất.
Khối ĐỘNG CƠ
Để điều khiển động cơ quay thuận ngược nhanh chậm, chúng ta không thể dùng trực tiếp các chân của vi điều khiển được vì dòng ra của chân vi điều khiển nhỏ. Do vậy chúng ta sử dụng IC L293D gồm hai mạch cầu H bên trong, mỗi mạch cầu H dùng điều khiển một động cơ có sơ đồ khối như hình vẽ:
Trong khối này còn sử dụng một công tắc nguồn, có tác dụng bật tắt động cơ khi điều chỉnh vị trí của xe trước khi chạy.
Bảng chân lý mô tả hoạt động của L293D trên một kênh như sau
Giả sử ta cần điều khiển động cơ bên trái. Ba chân cần điều khiển là IN1, IN2, EN1 và đầu ra OUT1 OUT2 của L293D được nối với hai dây của động cơ một chiều.
TRẠNG THÁI
IN1
IN2
EN1
DỪNG
X
X
0
QUAY THUẬN
1
0
1
QUAY NGƯỢC
0
1
1
Mạch in tổng hợp:
Mạch nạp ISP
Mạch nạp sử dụng là loại mạch ISP đơn giản, có sơ đồ như hình dưới:
Mạch nạp thực tế:
MÔ TẢ PHẦN CỨNG CPU
Cấu trúc chung của bộ vi điều khiển 8051:
Một số thành phần chính của bộ vi điều khiển 8051:
CPU: bộ não của vi điều khiển, thực hiện các phép toán số học, logic.
Các cổng vào ra để nhận, truyền dữ liệu ra các mạch ngoại vi khác ở bên ngoài hoặc cũng có thể dùng để định địa chỉ khi sử dụng bộ nhớ ngoài
Rom: nơi lưu trữ bộ nhớ chương trình để CPU thực hiện các lệnh, điều khiển hoạt động của vi điều khiển.
Ram: bộ nhớ trong
Các bộ timer, bộ đếm: được sử dụng rất nhiều để tạo trễ, dùng trong hoạt động ngắt
Cổng nối tiếp để truyền thông máy tinh
……
Các bus dữ liệu, bus điều khiển, bus địa chỉ để liên kết các khối trong vi điều khiển.
Vi điều khiển sử dụng trong bài tập này là AT89S52 của hãng Atmel. Một số đặc điểm chỉnh của vi điều khiển này như sau:
Tương thích với tập lệnh 8051
8K bộ nhớ FLASH hỗ trợ nạp ISP
Điện áp hoạt động là 4.0V-5.5V
Tần số dao động cấp là 0-33Mhz
256x8b Ram nội
32 đường xuất nhập
3 bộ định thời 16 bit
8 nguồn ngắt
Hỗ trợ truyền thông máy tính cổng nối tiếp
Với các đặc điểm trên, vi điều khiển AT89S52 hoàn toàn đủ mạnh để giải quyết yêu cầu đặt ra của đề bài.
Sơ đồ chân của vi điều khiển AT89S52 được minh họa như hình dưới:
Các chân được sử dụng trong bài tập này gồm: các chân nguồn, chân dao động, chân reset, các chân nạp ISP, cổng P3 để nhận tín hiệu led báo về, cổng P0 để điều khiển động cơ, cổng P2 điều khiển LCD.
Sơ đồ bộ nhớ Ram:
Đối với AT89S52 ngoài 128 byte Ram có địa chỉ từ 30h đến 7Fh thì còn có 128 byte Ram có địa chỉ trùng với các thanh ghi chức năng đặc biệt từ 80h đến FFh. Để truy xuất các thanh ghi chức năng đặc biệt ta sử dụng cách định địa chỉ trực tiếp, ngược lại dùng cách định địa chỉ gián tiếp để truy cập 128 byte Ram thêm.
MÔ TẢ THIẾT KẾ CÁC PHẦN KHÁC
Thân xe
Thân xe được làm từ một miếng nhựa tổng hợp, kích thước 15x20 cm, đằng trước có gắn bánh lái có thể quay 360o, do vậy chuyển động của xe phần lớn do hai bánh sau quyết định. Hai bánh đằng sau được lắp vào hai trục của động cơ một chiều để lái chiều chuyển động của xe.
Hai động cơ sử dụng là động cơ một chiều loại 15V được gắn chặt vào thân xe.
Mạch SENSORS kết nối với mạch vi điều khiển qua sợi cáp 8 sợi trong đó có hai sợi cấp nguồn 5V và 6 sợi truyền tín hiệu của mạch SENSORS về cho vi điều khiển.
Hình ảnh xe:
THIẾT KẾ PHẦN MỀM
Chương trình viết cho vi điều khiển sử dụng ngôn ngữ Assembler với trình dịch là phần mềm Keil C. Ưu điểm của ngôn ngữ Assembler là mã nguồn chạy nhanh và gọn, giúp sinh viên nắm chắc cấu trúc phần cứng của vi điều khiển cũng như các bước lập trình phần mềm. Tuy nhiên nhược điểm của ngôn ngữ này là khó hiểu và rắc rối.
Sơ đồ khối điều khiển được tóm tắt như sau:
MẠCH
SENSORS
MẠCH
VI ĐIỀU KHIỂN
ĐIỀU KHIỂN ĐỘNG CƠ
XE CHUYỂN ĐỘNG
Lưu đồ thuật toán điều khiển:
KHỞI TẠO
GIỚI THIỆU
DÒ ĐƯỜNG
LỆCH
YES
NO
Cua trái
Or Cua phải
Đi thẳng
YES
NO
Chương trình con khi bắt vạch đích
VẠCH
CÁC BƯỚC KIỂM TRA
Kiểm tra điện áp đưa ra từ khối nguồn: 4.99V
Kiểm tra điện áp trên cực Anot led thu khi qua và không qua vạch đen: tốt
Kiểm tra hoạt động của tín hiệu gửi về thông qua led báo: tốt
Kiểm tra hoạt động mạch nạp: tốt
Kiểm tra hoạt động của LCD: tốt
Kiểm tra hoạt động của IC L293: tốt
KẾT QUẢ ĐẠT ĐƯỢC VÀ PHÂN TÍCH LỖI
Trong quá trình thực hiện bài tập lớn, chúng em gặp một số khó khăn sau và đã từng bước khắc phục.
Tài liệu
Đây là lần đầu tiên thực hiện một sản phẩm thực dựa trên nền kiến thức học tập được nên nhiều vấn đề chưa được thông suốt. Trước hết, là cách làm xe về cơ khí, thiết kế mạch, dò đường ra sao, cua xe trái phải thuận ngược, lập trình LCD…
Khắc phục: học hỏi từ hướng dẫn của thầy giáo, các bạn trong lớp đặc biệt là các bạn đã từng tham dự cuộc thi Robocon, học hỏi từ các anh các khóa trước, tham khảo nguồn tài liệu trên mạng Internet….
Kết quả: Học hỏi được nhiều kinh nghiệm làm robot đơn giản từ các nguồn trên, các tutorial về thiết kế mạch, thiết kế cơ khí, băm xung, ngắt…
Vật tư
Vấn đề: Các linh kiện điện tử khá sẵn (chợ Trời, Hàn Thuyên…). Tuy nhiên một số chi tiết cơ khí khó tìm hơn: các bánh xe, thân xe… Nguồn ắcquy cũng rất quan trọng, cung cấp năng lượng cho toàn bộ xe.
Khắc phục: Tìm mua trong chợ Trời, các cửa hàng bán đồ cơ khí, cửa hàng bán đồ cũ, cửa hàng sửa chữa xe máy….
Kết quả: Tìm mua đủ các vật tư và tiến hành lắp ráp hoàn chỉnh toàn bộ xe gồm mạch điều khiển và kết cấu cơ khí.
Thiết kế mạch
Vấn đề: Chưa có kinh nghiệm về thiết kế mạch thực tế, cần giải quyết các vấn đề: vẽ mạch nguyên lý và mạch in sử dụng hai phần mềm Orcad Capture và Orcad Layout trong bộ sản phẩm Orcad v10.0 của hãng Cadense, các kĩ thuật sắp xếp linh kiện, đi dây, kĩ thuật làm mạch thủ công bằng phương pháp là.
Khắc phục: Học cách sử dụng các phần mềm nói trên với nhiều tutorial trên các diễn đàn như www.dientuvietnam.net, www.picvietnam.com , trong mạch cũng sử dụng thư viện chân linh kiện download trên hai diễn đàn trên đã được chúng em chỉnh sửa lại.
Về cách làm mạch bằng phương pháp là: học trên mạng và kinh nghiệm của các bạn đã từng làm mạch. Tuy nhiên để ra được hai mạch chạy ổn định thì cũng đã hỏng mất vài cái.
Mạch SENSORS
Mạch vi VI ĐIỀU KHIỂN VÀ ĐỘNG CƠ
Lập trình
Đây có thể coi là vấn đề phức tạp nhất vì là linh hồn của xe tự hành, điều khiển toàn bộ hoạt động của xe và cũng là vấn đề tiêu tốn nhiều thời gian nhất.
Vấn đề 1: Đọc và xử lý tín hiệu SENSORS
Tính toán, thu thập các trường hợp xe lệch ra khỏi đường, xe gặp khúc cua, xe không bắt được vạch đen, xe bắt vạch đích, xe cua ở góc cua gấp…
Xử lý các trường hợp trên như thế nào?
Trong quá trình test xe, nhiều khi Sensors bắt không chuẩn hoặc không ổn định.
Khắc phục: Để thu thập các trường hợp, dùng tay đẩy xe đi theo đường đặc biệt là các khúc cua và ghi tín hiệu hiển thị trên các led báo về, tính toán các trường hợp lệch trái, lệch phải, lệch ít, lệch nhiều, không lệch, bắt vạch đích…
Hàn chắc các mối hàn mạch SENSORS, kiểm tra cáp nối với mạch vi điều khiển, điều chỉnh biến trở để lấy điện áp so sánh hoạt động ổn định đưa vào IC LM324
là 3.8V.
Kết quả:Mạch hoạt động ổn định, SENSORS bắt rất tốt, tín hiệu báo về trên mạch vi điều khiển chuẩn xác.
Vấn đề 2: Cách điều chế độ rộng xung PWM để đưa vào chân IN1, IN3 điều khiển chiều quay cũng như tốc độ quay của hai động cơ truyền động.
Trong quá trình test xe, chúng em gặp các vấn đề: băm xung xe không chạy, cùng băm xung với hai giá trị bằng nhau vào IN1 và IN3 nhưng tốc độ quay của hai động cơ không bằng nhau hoặc trường hợp động cơ quay không đúng với chương trình. Ví dụ cùng một trường hợp Led báo về nhưng có lúc động cơ quay thuận, lúc quay ngược.
Khắc phục: Hiệu chỉnh chương trình băm xung cho hợp lý. Mô phỏng chương trình nói riêng cũng như mạch vi điều khiển, động cơ nói chung bằng phần mềm mô phỏng rất mạnh là Proteus bản v7.2 SP6.
Phát hiện điện trở treo ở cổng P0 bị hỏng, một chân điện trở có giá trị nhỏ hơn hẳn các thanh khác dẫn đến tín hiệu vào chân IN của L293 bị ảnh hưởng, hai bánh không quay đều nhau.
Một số trường hợp ở về thu thập tín hiệu SENSORS có cùng một kết quả tuy nhiên lại có những các giải quyết khác nhau nên động cơ lúc quay thế này, lúc quay thế khác. Do vậy chúng em đã hiệu chỉnh lại.
Kết quả: Động cơ chạy đúng, bám đường tốt, xử lý góc cua khá, xe chạy ổn định, theo đúng chương trình đã lập sẵn.
Hạn chế: Xe chuyển động chưa được trơn mà bị giật một chút, tốc độ xe chưa cao, mômen động cơ còn nhỏ khó vượt qua chướng ngại vật nhỏ để đi tiếp.
Vấn đề 3: Hiển thị trên LCD
Bài tập này sử dụng LCD để hiển thị, dùng chế độ 8bit qua cổng P2 để điều khiển LCD. Một số hàm điều khiển LCD được hiệu chỉnh từ một số source code trên các diễn đàn, đảm bảo hoạt động tốt, hiển thị chính xác, ổn định.
Tuy nhiên khi bật đèn nền của LCD thì dòng tiêu thụ lớn dẫn đến LM7805 phát nóng (mặc dù đã gắn tản nhiệt nhỏ) và ắcquy mau hết điện. Do vậy chúng ta chỉ bật đèn LCD khi cần hiển thị ở những trường hợp cần thiết.
Hình ảnh sản phẩm hoàn chỉnh
KẾT LUẬN
Qua quá trình làm bài tập lớn vi xử lý với sản phẩm thực tế là chiếc xe chạy theo đường đi này, chúng em đã học hỏi được rất nhiều kiến thức: thiết kế xe, thiết kế mạch, làm mạch in, lập trình, hiệu chỉnh… Điều quan trọng là chúng em đã làm được một sản phẩm dựa trên những kiến thức đã học vì từ lý thuyết ra thực tế là cả một quãng đường dài.
Bài tập này giúp chúng em hiểu thêm cấu trúc của Vi điều khiển 8051 cũng như tập lệnh của nó, tạo tiền đề để tiếp tục nghiên cứu các vi điều khiển ứng dụng mạnh hơn như AVR, PIC, ARM…., các bộ PLC, các hệ thống SCADA, DSC…, phục vụ cho quá trình làm việc, nghiên cứu sau khi tốt nghiệp.
Chúng em chân thành cảm ơn thầy giáo Nguyễn Hồng Quang đã hướng dẫn, truyền đạt kiến thức để có thể hoàn thành được bài tập này.
MỞ RỘNG ĐỀ TÀI
Để có được chiếc xe tự hành có khả năng di chuyển bắt vạch với độ phức tạp cao của đường đi, xe đạt tốc độ lớn thì đề tài có thể nghiên cứu tiếp như sau:
Sử dụng hộp số và động cơ có momen lớn hơn,
Sử dụng encoder để phản hồi tốc độ, xây dựng vòng điều khiển để động cơ có thể nhanh chóng ổn định ở tốc độ cao.
Kết hợp ADC với mạch sensor để xử lý, loại bỏ hoàn toàn các tác động của nhiễu
Có thể đưa thêm các nút bấm để lựa chọn chiến thuật trên LCD khi xe chạy trên đường có nhiều ngã tư và nhiều lối đi. Và để dễ dàng trong việc phát triển thuật toán hơn thì việc nghiên cứu sử dụng các vi điều khiển có nhiều tính năng như AVR hay PIC có thể là hướng tiếp theo.
Tuy nhiên việc xe tự hành di chuyển bắt vạch không có ứng dụng thực tế lắm, nên để có thể phát triển đề tài thành ứng dụng có tính thực tiễn thì phần sensor cần phát triển để có thể nhận biết vật cản nói chung chứ không chỉ là vạch đen đơn thuần. Công nghệ xử lý ảnh có thể là một hướng phát triển hợp lý cho phần sensor.Từ đó xe tự hành có thể di chuyển trên đường bất kì và ta có thể nghiên cứu phát triển phần cơ khí và các bộ điều khiển để xe có thể thực hiện một số công việc nào đó khi gặp vật cản như nhặt đồ bị rơi, gắp quà (trong cuộc thi robocon), thậm chí có thể là thu dọn rác hay ấn nút mở cửa…!
TÀI LIỆU THAM KHẢO
Bài giảng trên lớp
Cấu trúc và lập trình họ vi điều khiển 8051 – Nguyễn Tăng Cường
Phan Quốc Thắng
3. Họ vi điều khiển 8051 - Tống Văn On
Hoàng Đức Hải
4. Một số trang web:
www.dientuvietnam.net
www.picvietnam.com
www.8051projects.com
www.dieukhien.net
…….
PHỤ LỤC
DANH SÁCH THIẾT BỊ
Tên thiết bị
Số lượng
Nguồn
Giá thành
Động cơ 1 chiều loại nhỏ
2
Chợ Hòa Bình
50k
Bánh xe động cơ
2
Chợ Hòa Bình
30k
Bánh xe dẫn hướng
1
Chợ Hòa Bình
10k
Ắc quy
1
Chợ Hòa Bình
100k
Led phát
6
Hàn Thuyên
6k
Led thu
6
Hàn Thuyên
6k
Led thường
6
Hàn Thuyên
2k
LM324+đế
2
Hàn Thuyên
8k
Tụ điện các loại: tụ sứ 33p, tụ hóa 10uF, 330uF, 0.1uF
Vài
Hàn Thuyên
4k
Điện trở các loại: 330, 10k, trở băng 4K7(1 cái)
Vài
Hàn Thuyên
4k
Biến trở tinh chỉnh 10k
2
Hàn Thuyên
1k
LM7805
1
Hàn Thuyên
2.5k
LM293D+đế
1
Hàn Thuyên
36k
AT89S52+đế
1
Hàn Thuyên
16k
Diode
1
Hàn Thuyên
0.5k
Transistor A1815
1
Hàn Thuyên
0.5k
Thạch anh 12Mhz
1
Hàn Thuyên
2k
Tản nhiệt loại nhỏ
1
Hàn Thuyên
2k
Cầu chì+đế
1
Hàn Thuyên
1k
Công tắc nguồn
2
Chợ Hòa Bình
4k
Jump các loại
Vài
Chợ Hòa Bình
4k
Cáp nối 8 sợi
1
Chợ Hòa Bình
3k
Cổng DB25
1
Hàn Thuyên
3k
LCD 16x2
1
Hàn Thuyên
65k
Phíp đồng, hóa chất
Chợ Hòa Bình
20k
Phụ kiện khác
20k
Tổng
406.5k
MÃ NGUỒN
;*************************************************************
/* Truong Dai hoc Bach Khoa Ha Noi
Khoa Dien-Bo mon Tu dong hoa
Bai tap lon vi xu ly: Thiet ke xe do duong
Giao vien huong dan : NGUYEN HONG QUANG
Sinh vien thuc hien : Nhom 2 - TDH4 - K50
Thanh vien : DANG DINH HOANG
NGUYEN DUC NGHIA
LE CAO SON
LUU BACH TAN
Ha Noi, Thang 12 – 2008 */
;*************************************************************
;=============================================================
;Dinh nghia cac bien
;BIT LCD
LCD DATA P2 ;cong 2 la cong du lieu LCD
BUSY BIT LCD.7 ;bit bao ban
E BIT P1.5 ;chan EN
RW BIT P1.6 ;chan RW doc ghi
RS BIT P1.7 ;chan RS lenh hay du lieu
;BIT Sensors:
trai1 BIT P3.6 ;sensor1
trai0 BIT P3.5 ;sensor2
phai0 BIT P3.2 ;sensor3
phai1 BIT P3.1 ;sensor4
truoc BIT P3.4 ;sensor5
sau BIT P3.3 ;sensor6
;BIT Dieu khien dong co
banh_trai BIT P0.0 ;en1 cho phep dong co trai
banh_phai BIT P0.3 ;en2 cho phep dong co phai
thuan_trai BIT P0.1 ;IN1
dao_trai BIT P0.2 ;IN2
thuan_phai BIT P0.4 ;IN3
dao_phai BIT P0.5 ;IN4
xung_trai EQU 03h ;do rong xung cap cho dco trai
xung_phai EQU 04h ;do rong xung cap cho dco phai
;BIT nho
nho_c BIT 00h
nho_a EQU 05h
;Bien dem so vong di
dem_vong EQU R6 ;dem so vong di duoc
;Bit bat tat den LCD
LCD_light EQU P0.7 ;=0 den sang
;=1 den tat
;=============================================================
;*************************************************************
;bat dau chuong trinh
;=============================================================
ORG 0000h
LJMP main
ORG 000Bh ;dia chi ngat Timer0
LJMP ngattimer0
;=============================================================
;*************************************************************
;Chuong trinh chinh
;=============================================================
ORG 30h
main:
;Khoi tao
MOV P3,#0ffh ;tao cong P3 la cong vao
MOV TMOD,#12h ;timer0 mode 2 (8 bit tu nap lai)
;timer1 mode 1 (16 bit)
LCALL LCD_INIT ;khoi tao LCD
LCALL GIOI_THIEU_TREN_LCD; goi ham gioi thieu
MOV TH0,#-10 ;tao ngat sau moi 10us
MOV IE,#10000010b ;cho phep ngat timer0
SETB TR0 ;bat timer0
SETB banh_trai ;EN1=1
SETB banh_phai ;EN2=1
MOV dem_vong,#0h
;=============================================================
;*************************************************************
;chuong trinh do duong
;=============================================================
/*so do bo tri Sensors: truoc
trai1 trai0 phai0 phai1
sau
+thu tu
cac bit tuong ung: 1 2 3 4 5 6
+neu sensor bat vao vach den thi logic bao ve la 0 va
led tuong ung tren mach vi xu ly se sang */
;============================================================
dithang1:
MOV A,P3
ANL A,#01111110b ;chi lay 6 bit tuong ung sensors
CJNE A,#01100110b,dithang2 ;led truoc sau bat vach
LCALL tien ;banh trai, phai quay thuan
MOV xung_trai,#70 ;bam xung 70%
MOV xung_phai,#70 ;bam xung 70%
LJMP thoatdo
dithang2:
MOV A,P3
ANL A,#01111110b
CJNE A,#01111110b,dithang3 ;khong led nao bat vach
LCALL tien
MOV xung_trai,#30
MOV xung_phai,#60
LJMP thoatdo
dithang3:
MOV A,P3
ANL A,#01111110b
CJNE A,#01011010b,lechtrai1 ;led trai0,truoc,sau,phai0 bat
LCALL tien
MOV xung_trai,#70
MOV xung_phai,#70
LJMP thoatdo
lechtrai1:
MOV A,P3
ANL A,#01111110b
CJNE A,#01001110b,lechtrai2 ;led truoc,trai0
LCALL tien
MOV xung_trai,#70 ;banh trai quay cham hon
MOV xung_phai,#90 ;banh phai
LJMP thoatdo
lechtrai2:
MOV A,P3
ANL A,#01111110b
CJNE A,#01010110b,lechtrai3 ;led trai0,sau bat vach
LCALL tien
MOV xung_trai,#50 ;banh trai quay cham hon
MOV xung_phai,#90 ;banh phai
LJMP thoatdo
lechtrai3:
MOV A,P3
ANL A,#01111110b
CJNE A,#01011110b,lechtrai4 ;led trai 0 bat vach
LCALL tien
MOV xung_trai,#30 ;banh trai quay cham hon
MOV xung_phai,#90 ;banh phai
LJMP thoatdo
lechtrai4:
MOV A,P3
ANL A,#01111110b
CJNE A,#00011110b,lechtrai5 ;led trai0, trai1 bat vach
LCALL tien
MOV xung_trai,#10 ;banh trai quay cham hon
MOV xung_phai,#90 ;banh phai
LJMP thoatdo
lechtrai5:
MOV A,P3
ANL A,#01111110b
CJNE A,#00111110b,lechtrai6 ;led trai1 bat vach
LCALL cua_trai_manh ;banh trai quay nguoc,
;banh phai quay thuan
LJMP thoatdo
lechtrai6:
MOV A,P3
ANL A,#01111110b
CJNE A,#00010110b,lechphai1 ;led trai0,trai1,sau bat vach
LCALL cua_vuong_trai ;ham cua vuong trai
LJMP thoatdo
;*************************************************************
;Lech phai - can cua phai
lechphai1:
MOV A,P3
ANL A,#01111110b
CJNE A,#01101010b,lechphai2 ;led truoc,phai0 bat vach
LCALL tien
MOV xung_trai,#90 ;banh trai quay nhanh hon
;banh phai
MOV xung_phai,#70
LJMP thoatdo
lechphai2:
MOV A,P3
ANL A,#01111110b
CJNE A,#01110010b,lechphai3 ;led sau,phai0 bat vach
LCALL tien
MOV xung_trai,#90 ;banh trai quay nhanh hon
;banh phai
MOV xung_phai,#50
LJMP thoatdo
lechphai3:
MOV A,P3
ANL A,#01111110b
CJNE A,#01111010b,lechphai4 ;led phai0 bat vach
LCALL tien
MOV xung_trai,#90 ;banh trai quay nhanh hon
;banh phai
MOV xung_phai,#30
LJMP thoatdo
lechphai4:
MOV A,P3
ANL A,#01111110b
CJNE A,#01111000b,lechphai5 ;led phai0,phai1 bat vach
LCALL tien
MOV xung_trai,#90 ;banh trai quay nhanh hon
;banh phai
MOV xung_phai,#10
LJMP thoatdo
lechphai5:
MOV A,P3
ANL A,#01111110b
CJNE A,#01111100b,lechphai6 ;led phai1 bat vach
LCALL tien
LCALL cua_phai_manh ;banh trai quay thuan
;banh phai quay nguoc
LJMP thoatdo
lechphai6:
MOV A,P3
ANL A,#01111110b
CJNE A,#01110000b,vach_dich ;led sau,phai0,phai1 bat vach
LCALL cua_vuong_phai ;ham cua vuong phai
LJMP thoatdo
vach_dich:
MOV A,P3
ANL A,#01111110b
CJNE A,#00000000b,thoatdo ;vach dich-cac led deu bat vach
INC dem_vong ;tang so vong di duoc
CJNE dem_vong,#1,v_2;so vong=1 nhay den nhan VONG_1
SJMP VONG_1
v_2: CJNE dem_vong,#2,v_3;so vong=2 nhay den nhan VONG_2
SJMP VONG_2
v_3: CJNE dem_vong,#3,thoatdo
SJMP VONG_3 ;so vong=3 nhay den nhan VONG_3
vong_1:
LCALL HET_VONG_1 ;goi chuong trinh con HET_VONG_1
SJMP thoatdo
vong_2:
LCALL HET_VONG_2 ;goi chuong trinh con HET_VONG_2
SJMP thoatdo
vong_3:
LCALL HET_VONG_3 ;goi chuong trinh con HET_VONG_3
SJMP thoatdo
thoatdo:
LJMP dithang1 ;do lai tu dau
;=============================================================
;*************************************************************
;Ham chuyen dong
;=============================================================
tien:
SETB thuan_trai ;IN1=1
CLR dao_trai ;IN2=0
SETB thuan_phai ;IN3=1
CLR dao_phai ;IN4=0
RET
lui:
CLR thuan_trai ;IN1=0
SETB dao_trai ;IN2=1
CLR thuan_phai ;IN3=0
SETB dao_phai ;IN4=1
MOV xung_trai,#60
MOV xung_phai,#60
RET
dung: ;dung tam thoi 20ms
CLR banh_trai ;EN1=0
CLR banh_phai ;EN2=0
LCALL delay20ms
SETB banh_trai ;EN1=1
SETB banh_phai ;EN2=1
RET
dung_han: ;dung han
CLR banh_trai ;EN1=0
CLR banh_phai ;EN2=0
RET
cua_trai:
CLR thuan_trai ;IN1=0
SETB dao_trai ;IN2=1
SETB thuan_phai ;IN3=1
CLR dao_phai ;IN4=0
MOV xung_trai,#100 ;banh trai dung im
MOV xung_phai,#100 ;banh phai quay thuan 100%
RET
cua_phai:
SETB thuan_trai ;IN1=1
CLR dao_trai ;IN2=0
CLR thuan_phai ;IN3=0
SETB dao_phai ;IN4=1
MOV xung_trai,#100 ;banh trai quay thuan 100%
MOV xung_phai,#100 ;banh phai dung im
RET
cua_trai_manh:
CLR thuan_trai
SETB dao_trai
SETB thuan_phai
CLR dao_phai
MOV xung_trai,#30 ;banh trai quay nguoc 70%
MOV xung_phai,#100 ;banh phai quay thuan 100%
RET
cua_phai_manh:
SETB thuan_trai
CLR dao_trai
CLR thuan_phai
SETB dao_phai
MOV xung_trai,#100 ;banh trai quay thuan 100%
MOV xung_phai,#30 ;banh phai quay nguoc 70%
RET
cua_vuong_trai:
LCALL cua_trai_manh
loop1:
MOV A,P3
ANL A,#00010000b
CJNE A,#00000000b,cua_trai_tiep
;neu sensor 4 dang truoc chua bat vach
;thi tiep tuc quay trai
JMP thoat_cua_trai
cua_trai_tiep:
LCALL cua_trai_manh
JMP loop1
thoat_cua_trai:
RET
cua_vuong_phai:
LCALL cua_phai_manh
loop2:
MOV A,P3
ANL A,#00010000b
CJNE A,#00000000b,cua_phai_tiep
;neu sensor 4 dang truoc chua bat vach
;thi tiep tuc quay phai
JMP thoat_cua_phai
cua_phai_tiep:
LCALL cua_phai_manh
JMP loop2
thoat_cua_phai:
RET
quay_xe: ;quay nguoc xe lai
LCALL cua_phai_manh
loop3:
MOV A,P3
ANL A,#00000010b
CJNE A,#00000000b,quay_tiep
;neu sensor 6 chua bat vach
;thi tiep tuc quay phai
JMP thoat_cua_phai
quay_tiep:
LCALL cua_phai_manh
JMP loop3
RET
HET_VONG_1: ;xe di het 1 vong thi goi ham nay
LCALL tien
MOV xung_trai,#100 ;can tien len mot chut de
MOV xung_phai,#100 ;thoat ra khoi truong hop LCALL delay200ms ;tranh lap lai
CLR LCD_light ;bat den LCD
LCALL dung_han ;dung lai de hien thi
MOV DPTR,#STR19 ;hien thi”HET 1 VONG”
LCALL HIEN_THI_STRING
LCALL delay2s ;tre 2s
LCALL XOA_MAN_HINH ;xoa man hinh
SETB LCD_light ;tat den LCD
SETB banh_trai ;EN1=1
SETB banh_phai ;EN2=1
RET
HET_VONG_2: ;xe di het 2 vong thi goi ham nay
LCALL tien
MOV xung_trai,#100
MOV xung_phai,#100
LCALL delay200ms
CLR LCD_light
LCALL dung_han
MOV DPTR,#STR20 ;hien thi“HET 2 VONG”
LCALL HIEN_THI_STRING
LCALL delay2s
LCALL XOA_MAN_HINH
SETB LCD_light
SETB banh_trai
SETB banh_phai
RET
HET_VONG_3: ;xe di het 3 vong thi goi ham nay
LCALL tien
MOV xung_trai,#100
MOV xung_phai,#100
LCALL delay200ms
CLR LCD_light
LCALL dung_han
MOV DPTR,#STR21 ;hien thi “HET 3 VONG”
LCALL HIEN_THI_STRING
LCALL dung_han
LCALL delay2s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT;den LCD tat roi bat len
MOV DPTR,#STR22 ;hien thi “MET QUA !”
LCALL HIEN_THI_STRING
LCALL delay2s
LCALL ve_dau_dong_2
MOV DPTR,#STR23 ;hien thi “NGHI TI DA !”
LCALL HIEN_THI_STRING
LCALL delay4s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT
MOV DPTR,#STR24 ;hien thi ”QUAY DAU DI TIEP !”
LCALL HIEN_THI_STRING
LCALL XOA_MAN_HINH
SETB LCD_light ;tat den LCD
MOV dem_vong,#0 ;reset so vong dem
SETB banh_trai ;EN1=1
SETB banh_phai ;EN2=1
LCALL QUAY_XE ;goi ham quay dau xe de di theo
;chieu nguoc lai
RET
;=============================================================
;*************************************************************
;Chuong trinh Bam xung - Ngat Timer 0
;=============================================================
ngattimer0:
;thanh ghi A làm bien dem de tao do rong xung
;R0 la bien dem
;bam vao IN1 va IN3
CLR TR0 ;Dung bo dem
CLR TF0 ;xoa TF0
MOV nho_a,A
CJNE R0,#100,trai
MOV R0,#0
SJMP thoat
trai:
CLR C
MOV A,xung_trai ;A=do rong xung trai
SUBB A,R0
;R0 C=0
;R0>A (da du do rong vao IN1) => C=1
CPL C
;dao C de dua vao IN1
MOV thuan_trai,C
phai:
CLR C
MOV A,xung_phai ;A=do rong xung phai
SUBB A,R0
;R0 C=0
;R0>A (da du do rong vao IN3) => C=1
CPL C
;dao C de dua vao IN3
MOV thuan_phai,C
thoat:
INC R0
MOV A,nho_a
SETB TR0
RETI
;=============================================================
;*************************************************************
;Hien thi tren LCD
;=============================================================
LCD_INIT:
MOV A,#38H ;2 line 5x7
ACALL COMMAND
MOV A,#0CH ;LCD on cursor on
ACALL COMMAND
MOV A,#01H ;clear LCD
ACALL COMMAND
MOV A,#06H ;shift cursor right
ACALL COMMAND
CLR LCD_light ;bat den LCD
RET
GIOI_THIEU_TREN_LCD:
MOV DPTR,#str1 ;DH BACH KHOA HN
LCALL hien_thi_string
LCALL delay1_5s
LCALL ve_dau_dong_2
MOV DPTR,#str1b ;BAI TAP LON VDK
LCALL hien_thi_string
LCALL delay1_5s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT
MOV DPTR,#STR2 ;DE TAI:
LCALL HIEN_THI_STRING
LCALL delay1_5s
LCALL ve_dau_dong_2
MOV DPTR,#str3 ;XE DO DUONG
LCALL hien_thi_string
LCALL delay1_5s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT
MOV DPTR,#STR4 ;GV HUONG DAN
LCALL HIEN_THI_STRING
LCALL delay1_5s
LCALL ve_dau_dong_2
MOV DPTR,#str5 ;NG HONG QUANG
LCALL hien_thi_string
LCALL delay1_5s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT
MOV DPTR,#STR6 ;THUC HIEN
LCALL HIEN_THI_STRING
LCALL delay1_5s
LCALL ve_dau_dong_2
MOV DPTR,#str7 ;NHOM 2-TDH4
LCALL hien_thi_string
LCALL delay1_5s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT
MOV DPTR,#STR8 ;DANG DINH HOANG
LCALL HIEN_THI_STRING
LCALL delay1_5s
LCALL ve_dau_dong_2
MOV DPTR,#str9 ;NGUYEN DUC NGHIA
LCALL hien_thi_string
LCALL delay1_5s
LCALL XOA_MAN_HINH
LCALL NHAP_NHAY_TAT_BAT
MOV DPTR,#STR10 ;LE CAO SON
LCALL HIEN_THI_STRING
LCALL delay1_5s
LCALL ve_dau_dong_2
MOV DPTR,#str11 ;LUU BACH TAN
LCALL hien_thi_string
LCALL delay2s
LCALL XOA_MAN_HINH
MOV DPTR,#STR12 ;3...
LCALL DICH_CON_TRO
LCALL NHAP_NHAY_TAT_BAT
LCALL HIEN_THI_STRING
LCALL delay1s
LCALL XOA_MAN_HINH
MOV DPTR,#STR13 ;2...
LCALL DICH_CON_TRO
LCALL NHAP_NHAY_TAT_BAT
LCALL HIEN_THI_STRING
LCALL delay1s
LCALL XOA_MAN_HINH
MOV DPTR,#STR14 ;1...
LCALL DICH_CON_TRO
LCALL NHAP_NHAY_TAT_BAT
LCALL HIEN_THI_STRING
LCALL delay1s
LCALL XOA_MAN_HINH
MOV DPTR,#STR15 ;START....
LCALL DICH_CON_TRO
LCALL NHAP_NHAY_TAT_BAT
LCALL HIEN_THI_STRING
LCALL delay2s
LCALL XOA_MAN_HINH
SETB LCD_light ;tat den LCD
RET
HIEN_THI_STRING: ;hien thi chuoi ki tu
CLR A
MOVC A,@A+DPTR
JZ HET_STRING ;neu ki tu cuoi la 0 thi thoat
LCALL data_display
INC DPTR
LJMP HIEN_THI_STRING
HET_STRING:
RET
;*************************************************************
;Thu vien ham LCD
XOA_MAN_HINH:
MOV A,#01H
LCALL command
RET
TRO_VE_DAU_DONG:
MOV A,#02H
LCALL command
RET
DICH_CON_TO_SANG_TRAI:
MOV A,#04H
LCALL command
RET
DICH_CON_TO_SANG_PHAI:
MOV A,#06H
LCALL command
RET
DICH_HIEN_THI_SANG_PHAI:
MOV A,#05H
LCALL command
RET
DICH_HIEN_THI_SANG_TRAI:
MOV A,#07H
LCALL command
RET
TAT_CON_TRO_TAT_HIEN_THI:
MOV A,#08H
LCALL command
RET
BAT_CON_TRO_TAT_HIEN_THI:
MOV A,#0A0H
LCALL command
RET
TAT_CON_TRO_BAT_HIEN_THI:
MOV A,#0CH
LCALL command
RET
NHAP_NHAY_CON_TRO:
MOV A,#0EH
LCALL command
RET
DICH_CON_TRO_SANG_TRAI:
MOV A,#10H
LCALL command
RET
DICH_CON_TRO_SANG_PHAI:
MOV A,#14H
LCALL command
RET
DICH_TOAN_BO_SANG_TRAI:
MOV A,#18H
LCALL command
RET
DICH_TOAN_BO_SANG_PHAI:
MOV A,#01CH
LCALL command
RET
VE_DAU_DONG_1:
MOV A,#80H
LCALL command
RET
VE_DAU_DONG_2:
MOV A,#0C0H
LCALL command
RET
COMMAND: ;Ham viet lenh
ACALL READY ;cho den khi LCD san sang
MOV LCD,A ;dua code lenh ra cong LCD
CLR RS ;RS=0 truy cap thanh ghi lenh
CLR RW ;R/W=0 viet
SETB E ;E=1 H-to-L
CLR E ;chot du lieu
RET
DATA_DISPLAY: ;Hien thi ki tu
ACALL READY ;cho den khi LCD san sang
MOV LCD,A ;dua code du lieu ra cong LCD
SETB RS ;RS=1 truy cap thanh ghi du lieu
CLR RW ;R/W=0 viet
SETB E ;E=1 xung H-to-L
CLR E ;E=0 chot
RET
READY: ;Ham cho co LCD san sang nhan lenh
SETB BUSY ;Bit BUSY lam dau vao
CLR RS ;RS=0 truy cap thanh ghi lenh
SETB RW ;R/W=1 doc
BACK:
CLR E ;L-to-H
SETB E ;chot du lieu doc vao
JB BUSY,BACK ;cho den khi flag=0
RET
NHAP_NHAY:
SETB LCD_light
LCALL delay1s
CLR LCD_light
RET
DICH_CON_TRO:
MOV R5,#6
dich:
LCALL DICH_CON_TRO_SANG_PHAI
DJNZ R5,dich
RET;=============================================================
;*************************************************************
;Cac ham delay
;=============================================================
delay1: ;Ham tre 50ms
MOV TH1,#03Ch
MOV TL1,#0B0h ;FFFF-3CB0=49999+1 chu ki
;quay vong=50000us=50ms
SETB TR1 ;bat timer1
wait:
JNB TF1,wait
CLR TR1
CLR TF1
DJNZ R7,delay1
RET
delay2: ;Ham tre 10ms
MOV TH1,#0FFh
MOV TL1,#0F5h ;FFFF-FFF5=49999+1 chu ki
;quay vong=50000us=50ms
SETB TR1 ;bat timer1
wait1:
JNB TF1,wait1
CLR TR1
CLR TF1
DJNZ R7,delay2
RET
delay20ms:
MOV R7,#2
LJMP delay2
delay50ms:
MOV R7,#1
LJMP delay1
delay100ms:
MOV R7,#2
LJMP delay1
delay200ms:
MOV R7,#4
LJMP delay1
delay300ms:
MOV R7,#6
LJMP delay1
delay500ms:
MOV R7,#10
LJMP delay1
delay1s:
MOV R7,#20
LJMP delay1
delay1_5s:
MOV R7,#30
LJMP delay1
delay2s:
MOV R7,#40
LJMP delay1
delay4s:
MOV R7,#80
LJMP delay1
;=============================================================
;*************************************************************
;Khai bao cac xau ki tu
;=============================================================
str1: DB "DH BACH KHOA HN",0
STR1B: DB "BAI TAP LON VDK",0
str2: DB "DE TAI:",0
str3: DB "XE DO DUONG",0
STR4: DB "GV HUONG DAN:",0
STR5: DB "NG HONG QUANG",0
STR6: DB "THUC HIEN:",0
STR7: DB "NHOM 2-TDH4",0
STR8: DB "DANG DINH HOANG",0
STR9: DB "NGUYEN DUC NGHIA",0
STR10: DB "LE CAO SON",0
STR11: DB "LUU BACH TAN",0
str12: db "3...",0
str13: db "2...",0
str14: db "1...",0
str15: db "START...",0
str16: db "LECH TRAI",0
str17: db "LECH PHAI",0
str18: db "KHONG LECH",0
str19: db "HET 1 VONG",0
str20: db "HET 2 VONG",0
str21: db "HET 3 VONG",0
str22: db "MET QUA !",0
str23: db "NGHI TI DA !",0
str24: db "QUAY DAU DI TIEP",0
END
CÁC DATASHEET
AT89S52
LM324
L293D
LM7805
LCD 16x2
A1015
Các file đính kèm theo tài liệu này:
- baocao_nhom2_tdh4k50_5477.doc