Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 117 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
117
Dung lượng
5,01 MB
Nội dung
MỤC LỤC CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Đặt vấn đề 1.2 Sơ lƣợc thị giác máy tính 1.3 Lịch sử thuật toán Robot chơi cờ 1.4 Nhiệm vụ luận văn 11 1.5 Sơ đồ khối hệ thống 12 CHƢƠNG 2: GIỚI THIỆU SƠ LƢỢC ĐỘNG CƠ BƢỚC VÀ ĐỘNG CƠ DC 13 2.1 Cấu tạo nguyên lý hoạt động động bƣớc 13 2.2 Các loại động bƣớc 14 2.3 Các mạch điều khiển 17 2.4 Các phƣơng pháp điều khiển động bƣớc 19 CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC18F67J60 23 3.1 Giới thiệu chung họ PIC 23 3.2 Giới thiệu vi điều khiển PIC18F67J60 27 CHƢƠNG 4: XÂY DỰNG THUẬT TOÁN CHƠI CỜ 44 4.1 Dạng trò chơi 44 4.2 Cây trò chơi 45 4.3 Vét cạn 45 4.4 Chiến lƣợc tìm kiếm trò chơi 47 4.5 Thủ tục minimax 48 4.6 Thủ tục Alpha-Beta: 51 4.7 Thuật toán khai cuộc(Openning book) tàn cuộc(Endgame database) 54 CHƢƠNG 5: XỬ LÝ ẢNH VỚI OPENCV 55 5.1 Tổng quan thƣ viện OpenCV 55 5.2 OpenCV HĐH Ubuntu 58 5.3 Các vấn đề xử lý ảnh 64 5.4 Thuật toán sử dụng luận văn: Biến đổi Hough 69 CHƢƠNG 6: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH PHẦN CỨNG 76 6.1 Giới thiệu Robot 76 6.2 Yêu cầu ý tƣởng 83 6.3 Thiết kế Robot 86 6.4 Thiết kế bàn cờ quân cờ 90 6.5 Mô hình sau thực 93 SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 v GVHD: TS Nguyễn Đức Thành MỤC LỤC CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH 96 7.1 Lƣu đồ giải thuật 96 7.2 Phƣơng pháp điều khiển cánh tay Robot Scara 97 7.3 Thuật toán xử lý ảnh nhận dạng nƣớc 99 7.4 Chƣơng trình chơi cờ ứng dụng trí tuệ nhân tạo 102 CHƢƠNG 8: KẾT QUẢ ĐẠT ĐƢỢC VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI 112 8.1 Hình ảnh kết đạt đƣợc 112 8.2 Hạn chế đề tài hƣớng phát triển 115 SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 vi GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Đặt vấn đề Thị giác máy lĩnh vực phát triển mạnh mẽ giới Khái niệm thị giác máy – Computer Vision có liên quan tới nhiều ngành học có nhiều hƣớng nghiên cứu khác Kể từ năm 70 kỷ 20 mà khả tính toán máy tính trở nên mạnh mẽ, giải đƣợc công việc cần tới tốc độ cao nhƣ xử lý tập ảnh hay đoạn video thị giác máy đƣợc nhắc đến, nghiên cứu phát triển ngày Trong thị giác máy tính, lĩnh vực phát nhận dạng đóng vai trò cốt yếu với nhiều ứng dụng hầu hết lĩnh vực đại nhƣ thám hiểm không gian, quân sự, y tế, giải trí … Với kết hợp thị giác máy tính với trí tuệ nhân tạo, cỗ máy tự động (robot) ngƣời chế tạo ngày thông minh giống ngƣời Từ tình hình thực tế đó, đề tài luận văn “Robot chơi cờ tƣớng” em đời, đƣợc ứng dụng xử lý ảnh nhằm mục đích kiểm nghiệm lại kiến thức học trƣờng qua nghiên cứu thêm lĩnh vực mới, thử thách đƣờng khoa học ngày phát triển Xử lý ảnh trí tuệ nhân tạo lĩnh vực giới, với kiến thức thuật toán đƣợc phát triển ngày Do thời gian thực luận văn gói gọn trọng học kỳ kiến thức thân hạn chế, nên thiếu sót tránh khỏi Em mong nhận đƣợc góp ý quí thầy cô bạn 1.2 Sơ lƣợc thị giác máy tính 1.2.1 Khái niệm Thị giác máy bao gồm lý thuyết kỹ thuật liên quan nhằm mục đích tạo hệ thống nhân tạo nhận thông tin từ hình ảnh thu đƣợc tập liệu đa chiều SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI Máy móc ngày thông minh, không thay ngƣời làm công việc nặng nhọc nhàm chán mà có số khả bắt chƣớc động vật ngƣời Một số khả nhận biết đƣợc giới qua “mắt” Bằng việc kết hợp với mô hình khác nhƣ máy học, mạng nơron… giúp cho chúng dần tiến tới hệ thống nhân tạo có định linh hoạt xác Hình 1.1: Tƣơng tác thị giác máy tính lĩnh vực khác Lĩnh vực nghiên cứu thị giác máy tính rộng, đặc điểm chung toán thị giác máy tính đề chung cách giải Mỗi giải pháp giải vấn đề thu đƣợc kết định cho trƣờng hợp cụ thể Thị giác máy tính bao gồm: o Nhận dạng (recognition) : Nhận dạng ảnh vấn đề kinh điển lĩnh vực thị giác máy xử lý ảnh Mục đích nhận dạng ảnh tức xác định xem liệu ảnh có tồn đối tƣợng, đặc điểm đặc biệt hay không Chức thực tự động, không cần tác động ngƣời; nhiên không đảm bảo trƣờng hợp chung, với đối tƣợng tuỳ ý tình tuỳ ý Nhận dạng vật thể (nhận dạng biển báo giao thông, đƣờng biên xe chạy…) Phân biệt vật thể ( phân biệt khuôn mặt, dấu vân tay, chữ viết …) SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI Phát vật thể ( phát xe cộ, vật lạ …) Hình 1.2: Ứng dụng thị giác máy tính nhận dạng khuôn mặt o Phân tích chuyển động (motion tracking): Nhận dạng chuyển động đƣợc áp dụng để sử lý chuỗi ảnh liên tiếp để ƣớc lƣợng tốc độ chuyển động điểm ảnh Egomotion: Xác định chuyển động khung cảnh 3D từ camera Áp dụng cho camera theo dõi tự động Tracking: Theo dõi chuyển động đối tƣợng đó, ví dụ nhƣ ngƣời hay xe cộ Hình 1.3: Ứng dụng thị giác máy tính theo dõi chuyển động SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI o Xây dựng cảnh (scene reconstruction): Đây chức cho phép xây dựng mô lại khung cảnh 3D từ ảnh đọan phim cho trƣớc Hình 1.4: Ứng dụng thị giác máy tính mô lại cấu trúc không gian o Phục hồi ảnh(image restoration): Lọai bỏ tác động nhiễu ảnh, khôi phục lại hình ảnh ban đầu 1.2.2 Lịch sử phát triển Năm 1955, Selfridge lần đƣa khái niệm thị giác máy tính( eyes and ears for the computer ) Những năm đó, thị giác máy tính phát triển ngày nhanh, đạt đƣợc nhiều thành tựu Năm 1965, Roberts đạt thành tựu việc phát góc cạnh hình khối đơn giản chuyển sang dạng hình học không gian Sau thập kỷ, năm 1978, Hanson Riseman nhận dạng đƣờng thẳng cách hoàn chỉnh Công nghệ thị giác máy tính tiến bƣớc dài việc kết hợp với lĩnh vực trí tuệ nhân tạo (Artificial Intelligence) SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI Năm 1979, Nagel bƣớc đầu thành công việc phân tích hình ảnh giao thông, sở cho phận trợ lý ảo (Visual driver assistance) đƣợc lắp đặt xe trợ giúp tài xế đƣợc hoàn thành vào thập kỷ sau vào năm 1988 Bajcsy Năm 1996, Dickmanns phân tích chuyển động đƣờng cao tốc hoàn thiện công nghệ phát chuyển động (Motion tracking) Lĩnh vực sau phát triển mạnh ứng dụng nhiều hầu hết thành tựu tiên tiến Hình 1.5: Ứng dụng thị giác máy tính phân tích chuyển động xe đƣờng cao tốc Những năm đầu kỷ 21, đánh dấu bƣớc phát triển vƣợt bậc lĩnh vực phát khuôn mặt Thành tựu thị giác máy tính ngày phát triển hội thảo khoa học thị giác máy tính đƣợc tổ chức thƣờng xuyên 1.2.3 Các ứng dụng Các ứng dụng CV rộng lớn đa dạng Tuy nhiên số ứng dụng mức hạn chế hiệu tích hợp với công nghệ khác Dƣới điểm qua vài ứng dụng bật, qua cảm nhận đƣợc vai trò nhƣ tiềm CV Y khoa (chẩn đoán, giải phẫu) Các ứng dụng chẩn đoán y khoa dựa vào thiết bị phần cứng đa dạng nhƣ máy chụp cắt lớp (CT - computed tomography), máy chụp cộng hƣởng từ (MRI - magnetic resonance imaging), máy siêu âm, chụp X-quang Ảnh chụp từ thiết bị đƣợc điều SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI chỉnh để giúp bác sĩ xem xét dễ dàng hơn, đƣợc tổng hợp để giúp bác sĩ nhìn nhận đầy đủ Ngoài ra, từ tập hợp ảnh (chụp cắt lớp, chụp camera tí hon) mô hình 3D đƣợc xây dựng sử dụng hiệu chẩn đoán nhƣ điều trị Điển hình nhƣ hệ thống chụp cắt lớp tối tân Brilliance iCT Scanner công ty thiết bị y khoa Philips phát triển năm 2007 (Hình ) có khả tạo mô hình ảnh ba chiều toàn cấu trúc thể bệnh nhân - xƣơng khớp, quan nội tạng đến mạch máu An ninh (camera thông minh, nhận dạng) CV đƣợc tích hợp vào hệ thống camera theo dõi truyền thống, đảm nhận vai trò theo dõi cảnh báo, giúp giám sát viên trực tiếp quan sát 24/24: phát chuyển động cảnh báo xâm phạm, phát tình bất thƣờng dựa nhận dạng cử động nhƣ ẩu đả, cƣớp ngân hàng, nguy chết đuối Hình 1.6: Ứng dụng thị giác máy tính an ninh Một ứng dụng khác CV lĩnh vực an ninh nhận dạng khuôn mặt phổ biến số dòng máy tính xách tay Giao thông (theo dõi lƣu thông, điều khiển xe) Ứng dụng đƣợc phổ biến theo dõi lƣu thông: cảnh báo sớm tình trạng ùn tắc, ghi nhận trƣờng hợp phóng nhanh lạng lách, chụp truy suất số xe vi phạm để xử lí SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI Một ứng dụng khác đƣợc nghiên cứu phát triển điều khiển xe tự hành Hệ thống camera ghi nhận hình ảnh xung quanh xe di chuyển, cảm quan máy tính, định vị đƣờng, phát vật cản xe khác, nhận biết bảng dẫn, để điều khiển xe Robot (gia đình, không gian) Trong lĩnh vực không gian, CV có vai trò quan trọng việc vận hành robot thám hiểm (hình12) Trƣớc hết xây dựng mô hình 3D bề mặt hành tinh để hoạch định đƣờng an toàn Trong trình di chuyển, robot ƣớc lƣợng chuyển động dựa phân tích chuyển động cảnh quan Khi tiếp cận mục tiêu cần khảo sát, robot điều khiển cánh tay học qua quan sát từ camera thực thao tác đào bới, lấy mẫu đất đá, chụp ảnh chi tiết, Hình 1.7: Ứng dụng thị giác máy tính thám hiểm không gian CV đƣợc phát triển cho robot gia đình, giúp robot xây dựng mô hình định vị (SLAM – Simultaneous Localization and Mapping), giao tiếp với ngƣời qua nhận dạng cử động Tự động hóa sản xuất (đo lƣờng, kiểm định chất lƣợng) Trong dây chuyền sản xuất, công nghệ cảm quan máy tính đƣợc ứng dụng thay phƣơng pháp thủ công học nhằm tăng hiệu suất tránh va chạm hƣ hại sản phẩm SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 1: TỔNG QUAN ĐỀ TÀI Phổ biến đo lƣờng kiểm định chất lƣợng sản phẩm: màu sắc độ phủ sơn vỏ xe hơi, độ cân đối hình dáng bánh (hình 13), chất lƣợng in nhãn mác (hình 14), 1.2.4 Thị giác máy tính Việt Nam Trong năm gần đây, lĩnh vực thị giác máy đƣợc ứng dụng rộng rãi khắp nƣớc đặc biệt đƣợc nghiên cứu chuyên sâu tổ chức quân đội số viện nghiên cứu khác Việc áp dụng thị giác máy vào ứng dụng nghiên cứu khoa học đƣợc coi khởi đầu cho chặng đƣờng phát triển thị giác máy trƣờng đại học 1.3 Lịch sử thuật toán Robot chơi cờ 1.3.1 Những máy đánh cờ Một điều đáng kinh ngạc chƣơng trình chơi cờ đƣợc viết trƣớc máy tính đƣợc phát minh Nó đƣợc viết ngƣời nhìn xa trông rộng, biết máy tính lập trình đƣợc đời đƣợc phát minh ra, chơi cờ đƣợc Ngƣời Alan Turing, nhà toán học lớn thời kỳ Turing đứng đầu nhóm phá mã bí mật "Enigma" Đức, có ảnh hƣởng lớn đến kết cục chiến tranh giới lần thứ Ông thích chơi cờ nhƣng thông minh giành nhiều công sức để học cờ nhƣng ông ngƣời chơi tƣơng đối yếu Sau chiến tranh, ông viết lệnh hƣớng dẫn để máy tính chơi cờ đƣợc Vào thời điểm chƣa có máy tính chạy đƣợc lệnh nên ông thực lệnh đó, đóng vai xử lý trung tâm cần khoảng nửa tiếng cho nƣớc Một ván cờ đƣợc ghi lại, "paper machine" Turing thua đồng nghiệp Cũng vào thời với Turing, nhà toán học lớn khác, Claude Shanon Bell Laboratorié nghĩ tới việc dạy máy tính chơi cờ Ông nhận vấn đề chỗ có nhiều khả tiếp diễn sau nƣớc Do ông phân biệt "chiến lƣợc A", tìm kiếm tất nƣớc tiếp theo, "chiến lƣợc B", bỏ đƣờng không cần thiết Trong năm chiến tranh, Mĩ xây dựng phòng thí nghiệm khổng lồ Los Alamos sa mạc bang New Mexico Mục đích nghiên cứu chế tạo bom nguyên tử Để tìm dạng cấu tạo phần kích nổ để tạo thành phản ứng dây chuyền đòi hỏi nhiều tính toán SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 GVHD: TS Nguyễn Đức Thành CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH c) Xác định vị trí quân cờ Lợi dụng đặc điểm quân cờ tƣớng hình tròn có vòng tròn quân cờ, ta áp dụng thuật toán tìm đƣờng tròn vùng quân cờ định vị trí tƣơng đối quân cờ Quá trình nhận dạng đƣờng tròn nhƣ sau: CvMemStorage* storage= NULL; CvSeq* circles = 0; circles = cvHoughCircles(monoimgbot, storage,CV_HOUGH_GRADIENT, 1, monoimgbot ->height/16, 100, 30,30,40); for (k = 0; k < circles->total; k++) { float* p = (float*)cvGetSeqElem( circles, k ); toadochitiet[k].x=cvRound(p[0]); toadochitiet[k].y=cvRound(p[1]); } for (h = 0; h < circles->total; h++) { for(i=0;i (toadochitiet[h].y)) SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 101 GVHD: TS Nguyễn Đức Thành CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH ) temp_board[i][j]= const_red; }}}} 7.4 Chƣơng trình chơi cờ ứng dụng trí tuệ nhân tạo 7.4.1 Biểu diễn bàn cờ quân cờ Bàn cờ trò chơi cờ Tƣớng bảng chữ nhật bao gồm đƣờng dọc 10 đƣờng ngang Các quân cờ chia làm hai bên đứng giao điểm đƣờng Ta dùng mảng piece có độ lớn 90 để biểu diễn toàn bàn cờ Hình 7.4: Biểu diễn bàn cờ số, vị trí quân pháo ứng với vị trí 20 Các ô mảng chứa giá trị khác cho biết quân cờ Mỗi quân cờ đƣợc gán mã số khác nhƣ bảng dƣới Quân cờ Giá trị Tốt (Chốt) Sĩ Tƣợng Mã Pháo Xe SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 102 GVHD: TS Nguyễn Đức Thành CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH Tƣớng Trống Ngoài ta dùng mảng khác gọi mảng color để biểu diễn màu quân Bên Kí hiệu Giá trị Xanh LIGHT Đỏ DARK Trống EMPTY Để biết bên tới lƣợt đi, ta dùng biến toàn cục side chứa hai giá trị LIGHT DARK Một biến toàn cục khác xside có sẵn giá trị ngƣợc với side để tiện tính toán (ví dụ side = LIGHT xside = DARK) Khi tới phiên đối phƣơng đi, ta cần đảo ngƣợc giá trị side xside Trên giao diện đồ họa, ta sử dụng 90 hình ứng với 90 vị trí Nhƣ vậy, để biểu diễn toàn bàn cờ, ta lần lƣợt quét mảng nhƣ sau: private void DrawAllPieces() { for (Byte i = 0; i < 90; i++) { Drawpieces( piece[i],color[i],i) // } } 7.4.2 Sinh nƣớc (Hàm GEN) Một việc quan trọng để máy tính chơi đƣợc cờ phải cho biết nƣớc đi đƣợc từ cờ Máy tính toán để chọn nƣớc có lợi cho Các yêu cầu thủ tục sinh nƣớc là: Chính xác (rất quan trọng) Một nƣớc sai làm hỏng tính toán Đồng thời chƣơng trình bị trọng tài xử thua Do số lƣợng nƣớc sinh lớn, luật quân nhiều phức tạp nên việc kiểm tra tính đắn tƣơng đối khó Đầy đủ (rất quan trọng) Sinh đƣợc nƣớc có từ cờ SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 103 GVHD: TS Nguyễn Đức Thành CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH Nhanh Do chức phải sinh đƣợc hàng triệu nƣớc máy đến lƣợt nên giảm thời gian sinh nƣớc có ý nghĩa lớn Một nƣớc có hai giá trị cần quan tâm Đó điểm xuất phát (from) điểm đến (dest) Ta khai báo cấu trúc move nhƣ sau để dùng nơi cần đến liệu nƣớc public struct MOVE { public SByte from; public SByte dest; } Kiểm tra giới hạn bàn cờ Ví dụ có quân Xe nằm ô số 84 (trong mảng piece) Bây ta sinh thử nƣớc sang trái ô cho Nƣớc sang trái ô đƣợc chuyển thành ô số 83 vị trí hàng với ô xuất phát nên đƣợc chấp nhận Một nƣớc khác cần phải xem xét sang trái ba ô - ô 81 Ô 81 có bàn cờ nhƣng khác hàng nên không đƣợc chấp nhận Nhƣ vậy, muốn biết ô nƣớc sang trái có đƣợc phép không ta phải kiểm tra xem có hàng với ô xuất phát không Việc kiểm tra thực cách chia cho (kích thƣớc dòng) lấy phần nguyên (trƣớc lại phải chuyển thứ tự ô gốc cách trừ 1) Các nƣớc vừa sinh đƣợc đƣa vào danh sách nƣớc nhờ gọi thủ tục Gen_push Thủ tục có hai tham số vị trí xuất phát quân cờ nơi đến dest quân cờ Kỹ thuật MAILBOX: mục đích kĩ thuật nhằm giảm bớt phép kiểm tra vƣợt giới hạn bàn cờ làm đơn giản chƣơng trình Mấu chốt thay cho bàn cờ có kích thƣớc bình thƣờng 9x10 = 90, ta dùng bàn cờ mở rộng, chiều có thêm đƣờng (bàn cờ có kích thƣớc 13x14 = 182) Các ô ứng với đƣờng bao mở rộng có giá trị -1, tức giá trị báo vƣợt biên Các nƣớc bàn cờ 9x10 đƣợc chuyển tƣơng ứng sang bàn cờ Nếu nƣớc đƣợc sinh lại rơi vào hai đƣờng bao có nghĩa rơi bàn cờ rồi, phải bỏ ngừng sinh nƣớc phía Sở dĩ có đến hai đƣờng biên (chứ một) quân Mã Tƣợng nhảy xa đến hai ô SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 104 GVHD: TS Nguyễn Đức Thành CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH Hình 7.5: Chuyển tƣơng ứng bàn cờ từ bảng 9x10 sang bảng 13x14 để kiểm tra giới hạn Việc chuyển đổi toạ độ thực nhờ hai mảng Mảng mailbox90 dùng để chuyển từ toạ độ bàn cờ thƣờng sang toạ độ bàn cờ Mảng ứng với bàn cờ - mailbox182 dùng để kiểm tra nƣớc vƣợt đƣờng biên liệu để chuyển trở lại toạ độ bình thƣờng Chƣơng trình cần kiểm tra số nƣớc tối đa theo hƣớng quân cờ xét Chỉ có quân Pháo Xe đến nƣớc đi, quân khác có nhiều Việc quân sang vị trí thực chất ta thay đổi toạ độ cách cộng với số (dƣơng âm) Ở ta thấy để quân Xe sang trái nƣớc ta phải cộng vị trí với -1 Để sinh ô theo hàng dọc, ta phải cộng với +13 13 (chú ý, việc sinh nƣớc kiểm tra hợp lệ dựa vào mảng mailbox182 nên giá trị 13 kích thƣớc dòng mảng này) Để sinh nƣớc chéo ta phải cộng trừ với số khác Ta nên lƣu số vào mảng offset có chiều Một chiều dựa vào loại quân cờ nên số đƣợc đánh từ đến Chiều lại số hƣớng tối đa quân cờ Quân cờ có nhiều hƣớng quân Mã có tới hƣớng nên chiều đƣợc khai báo số từ đến Các quân cờ có số hƣớng đƣợc điền vào phần thừa Chú ý nƣớc quân Tốt hai bên khác hƣớng tiến Để tiết kiệm ta lƣu nƣớc tiến Tốt đen, nƣớc tiến Tốt trắng đơn giản lấy ngƣợc dấu Kiểm tra vị trí đƣợc phép đến SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 105 GVHD: TS Nguyễn Đức Thành CHƢƠNG 7: GIẢI THUẬT CHƢƠNG TRÌNH Việc chuyển toạ độ từ bàn cờ thƣờng sang bàn cờ mở rộng giúp ta loại bỏ đƣợc nƣớc vƣợt biên Ta phải kiểm tra số giới hạn khác Ví dụ nhƣ Tƣớng Sĩ cung, Tƣợng đƣợc phép điểm cố định phía bên mình, Tốt đƣợc phép tung hoành đất đối phƣơng, phía bên bị giới hạn ngặt nghèo số ô Để thực phép kiểm tra này, ta dùng mảng legalmove ứng với ô bàn cờ cung cấp thông tin Để kiểm tra quân cờ có đƣợc phép không, ta dùng mặt nạ bít Maskpiece mà tuỳ theo quân có giá trị khác Nếu ô cần kiểm tra có bit trùng với mặt nạ đƣợc đặt quân cờ đƣợc phép đến ô Hình 7.6: Mặt nạ kiểm tra quân cờ có đƣợc phép đến vị trí không? Ngoài ra, ta phải kiểm tra nƣớc bị cản (đối với Tƣợng Mã) xử lí cách ăn quân quân Pháo nhƣ trƣờng hợp đặc biệt Nhƣ vậy, tổng thể sinh nƣớc cho quân cờ có dạng nhƣ sau: p = piece[i]; { Sinh nước cho quân cờ p vị trí i } for (j = 1;j++;j[...]... thiệu về vi điều khiển PIC1 8F67J60 3.2.1 Giới thiệu chung PIC1 8F4550 là một vi xử lý cơ bản đa chức năng và rẻ Nó là sản phẩm của họ vi xử lý PIC thông dụng của công ty Microchip của Mỹ có trụ sở đặt tại Chandler, Arizona (Mỹ) Vi điều khiển PIC1 8F67J60 là một vi điều khiển thuộc dòng vi điều khiển PIC1 9F97J60, do đó nó có các đặc trƣng chung của Hình 3.1: Vi điều khiển PIC1 8F67J60 họ vi điều khiển này... đƣợc nhờ vào vi c điều xung điện áp cấp vào cuộn dây động cơ Tỉ số điều xung trên cuộn dây này giảm thì tỉ số điều xung trên cuộn dây khi lại tăng lên tạo ra sự chuyển bƣớc mịn, không tạo ra tiếng ồn SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 22 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60... đầu vào Ethernet SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 31 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 TPIN+ I Tín hiệu đầu vào Ethernet Bảng 0.1: Chức năng các chân của PIC1 8F67J60 3.2.3 Dao động thạch anh Mỗi vi điều khiển hoạt động đều cần một xung clock nhất định Hai chân OSC1 và OSC2 cung cấp dao động cho vi điều khiển PIC hoạt động PIC1 8F67J60... trình song song, trừ PIC1 2C5xx và PIC1 6C505 đƣợc nạp trình nối tiếp theo giao thực ICSP Họ cấp chung (Mid-range) Bao gồm 12C6xx, 14C000, 16C55x, 16C6x, 16C62x, 16F62x, 16C67x, 16C8x, 16F87x và 16C9xx SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 24 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 Độ dài từ lệnh 14 bit Là họ vi điều khiển PIC thông dụng nhất... so với họ PIC cấp chung, cấp thấp Có ác lệnh tăng cƣờng và nhiều khả năng định địa chỉ Vi điều khiển giao tiếp bus, truy nhập cac thiết bị song song trực tiếp Có một số lối vào/ra tăng cƣờng Bộ nhớ chƣơng trình OTP SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 25 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 Nạp trình kiểu song song Họ cấp cao... nguồn thì PIC mới hoạt động đƣợc SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 33 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 PIC có tổng cộng 3 chế độ hoạt động Run, Idle mode với dòng ít hơn 5.8 µA và Sleep mode với dòng tiêu thụ chỉ 0.1 µA Hai chế độ idle và sleep đƣợc kích hoạt để đƣa pic vào trạng thái tiết kiệm năng lƣợng 3.2.6 Tổ chức bộ nhớ PIC1 8F67J60... các hãng sản xuất vi điều khiển khác (các tài liệu công cụ này đƣợc cung cấp miễn phí trên www.microchip.com) Ngoài ra còn có rất nhiều sách vi t về PIC và các trang web nói về vi điều khiển này Tài liệu hỗ trợ cho vi điều khiển PIC chỉ dùng sau máy tính cá nhân PC và về doanh số bán ra thi trƣờng hiện nay Microchip đã đứng đầu về doanh số bán PIC 8 bit, vƣợt lên trên cả các vi điều khiển của motorola... gian nạp trình cũng đƣợc cải thiện đáng kể ( chỉ khoảng vài chục giây) so với UV EPROM (cỡ hơn chục phút) SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 26 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 Microchip cung cấp rất đầy đủ và chi tiết các tài liệu kỹ thuật về tất cả các loại vi điều khiển PIC Ngoài ra còn cung cấp phần mềm công cụ miễn phí MPLAB-IDE... GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 - Có 3 module EnhancedCapture/Compare/PWM - Các giao tiếp nối tiếp MSSP (Master Synchronous Serial Port) và Enhanced USART (Universal asynchronous receiver/transmitter) - Có 11 kênh chuyển đổi A/D 10 bit 3.2.2 Sơ đồ chân Sau đây là sơ đồ chân của PIC1 8F67J60 Hình 3.2: Sơ đồ chân của PIC1 8F67J60 Chân Loại SVTH: Lê Bạch... flash đã loại bỏ vai trò của vi điều khiển có bộ nhớ xoá bằng tia cực tím, có vỏ bằng gốm đắt tiền và các đèn chiếu tia cực tím SVTH: Lê Bạch Quí Cƣờng 40800236 Vũ Văn Khắc 40800953 23 GVHD: TS Nguyễn Đức Thành CHƢƠNG 3: HỌ VI ĐIỀU KHIỂN PIC VÀ VI ĐIỀU KHIỂN PIC1 8F67J60 3.1.2 Phân loại Tiêu chuẩn để phân nhóm dựa trên sự khác nhau về kiến trúc bộ xử lý bên trong vi điều khiển Số các thanh ghi có thể truy