Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 155 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
155
Dung lượng
2,11 MB
Nội dung
CHƢƠNG 1: GIỚI THIỆU HỆ THỐNG VI XỬ LÝ VÀ VIĐIỀUKHIỂN 1.1 Lịch sử phát triển vi xử lý viđiểukhiểnVi xử lý (viết tắt µP hay uP), đơi đƣợc gọi vi xử lý, linh kiện điện tử đƣợc chế tạo từ tranzito thu nhỏ tích hợp lên vi mạch tích hợp đơn Khối xử lý trung tâm (CPU) vi xử lý đƣợc nhiều ngƣời biết đến nhƣng nhiều thành phần khác máy tính có vi xử lý riêng nó, ví dụ card hình (video card) có vi xử lý Trƣớc xuất vi xử lý, CPU đƣợc xây dựng từ mạch tích hợp cỡ nhỏ riêng biệt, mạch tích hợp chứa khoảng vào chục tranzito Do đó, CPU bảng mạch gồm hàng ngàn hay hàng triệu vi mạch tích hợp Ngày nay, cơng nghệ tích hợp phát triển, CPU tích hợp lên vài vi mạch tích hợp cỡ lớn, vi mạch tích hợp cỡ lớn chứa hàng ngàn hàng triệu tranzito Nhờ cơng suất tiêu thụ giá thành vi xử lý giảm đáng kể Viđiềukhiển (viết tắt µC hay uC), máy tính đƣợc tích hợp chíp, thƣờng đƣợc sử dụng để điềukhiển thiết bị điện tử Viđiều khiển, thực chất, hệ thống bao gồm vi xử lý có hiệu suất đủ dùng giá thành thấp (khác với vi xử lý đa dùng máy tính) kết hợp với khối ngoại vi nhƣ nhớ, mô đun vào/ra, mô đun biến đổi số sang tƣơng tự tƣơng tự sang số, Ở máy tính mơ đun thƣờng đƣợc xây dựng chíp mạch ngồi Viđiềukhiển thƣờng đƣợc dùng để xây dựng hệ thống nhúng Nó xuất nhiều 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 viđiềukhiển ngày đƣợc xây dựng dựa kiến trúc Harvard, kiến trúc định nghĩa bốn thành phần cần thiết hệ thống nhúng Những thành phần lõi CPU, nhớ chƣơng trình (thơng thƣờng ROM nhớ Flash), nhớ liệu (RAM), vài định thời cổng vào/ra để giao tiếp với thiết bị ngoại vi môi trƣờng bên - tất khối đƣợc thiết kế vi mạch tích hợp Viđiềukhiển khác với vi xử lý đa chỗ hoạt động với vài vi mạch hỗ trợ bên 1.2 Một số dòng vi xử lý viđiềukhiển đại - Thế hệ (1971 - 1973): vi xử lý bit, đại diện 4004, 4040, 8080 (Intel) hay IPM16 (National Semiconductor) + Độ dài word thƣờng bit (có thể lớn hơn) + Tốc độ 10 - 60 μs / lệnh với tần số xung nhịp 0.1 - 0.8 MHz + Tập lệnh đơn giản phải cần nhiều vi mạch phụ trợ - Thế hệ (1974 - 1977): vi xử lý bit, đại diện 8080, 8085 (Intel) hay Z80 + Tập lệnh phong phú + Địa đến 64 KB Một số vi xử lý phân biệt 256 địa cho thiết bị ngoại vi + Sử dụng công nghệ NMOS hay CMOS + Tốc độ - μs / lệnh với tần số xung nhịp - MHz - Thế hệ (1978 - 1982): vi xử lý 16 bit, đại diện 68000/68010 (Motorola) hay 8086/ 80286/ 80386 (Intel) + Tập lệnh đa dạng với lệnh nhân, chia xử lý chuỗi + Địa nhớ từ - 16 MB phân biệt tới 64KB địa cho ngoại vi + Sử dụng công nghệ HMOS + Tốc độ 0.1 - μs / lệnh với tần số xung nhịp 10 MHz - Thế hệ 4: vi xử lý 32 bit 68020/68030/68040/68060 (Motorola) hay 80386/80486 (Intel) vi xử lý 32 bit Pentium (Intel) + Bus địa 32 bit, phân biệt GB nhớ + Có thể dùng thêm đồng xử lý (coprocessor) + Có khả làm việc với nhớ ảo + Có chế pipeline, nhớ cache + Sử dụng công nghệ HCMOS - Thế hệ 5: vi xử lý 64 bit 1.3 Viđiềukhiển Pic PIC họ viđiềukhiển RISC đƣợc sản xuất cơng ty Microchip Technology Dòng PIC PIC1650 đƣợc phát triển Microelectronics Division thuộc General Instrument PIC bắt nguồn chữ viết tắt "Programmable Intelligent Computer" (Máy tính khả trình thông minh) sản phẩm hãng General Instrument đặt cho dòng sản phẩm họ PIC1650 Lúc này, PIC1650 đƣợc dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16bit CP1600, vậy, ngƣời ta gọi PIC với tên "Peripheral Interface Controller" (Bộ điềukhiểngiao tiếp ngoại vi) CP1600 CPU tốt, nhƣng lại hoạt động xuất nhập, PIC 8-bit đƣợc phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt ROM, mặc dù, cụm từ RISC chƣa đƣợc sử dụng thời bây giờ, nhƣng PIC thực viđiềukhiển với kiến trúc RISC, chạy lệnh chu kỳ máy (4 chu kỳ dao động) Năm 1985 General Instrument bán phận vi điện tử họ, chủ sở hữu hủy bỏ hầu hết dự án - lúc lỗi thời Tuy nhiên PIC đƣợc bổ sung EEPROM để tạo thành điềukhiển vào khả trình Ngày nhiều dòng PIC đƣợc xuất xƣởng với hàng loạt module ngoại vi tích hợp sẵn (nhƣ USART, PWM, ADC ), với nhớ chƣơng trình từ 512 Word đến 32K Word Hiện nay, Việt Nam, có cộng đồng nghiên cứu phát triển PIC, dsPIC PIC32 1.4 Xu hƣớng ứng dụng hệ viđiềukhiểnVi xử lý, chip loại máy tính ngày nay, nên hẳn bạn biết rõ có ứng dụng Ở đây, tơi nói đên ứng dụng viđiềukhiểnViđiềukhiển dùng thiết kế loại máy tính nhúng Máy tính nhúng có hầu hết thiết bị tự động, thơng minh ngày Chúng ta dùng viđiềukhiển để thiết kế điềukhiển cho sản phẩm nhƣ: Trong sản phẩm dân dụng: o Nhà thông minh: ƒ Cửa tự động Khóa số Tự động điều tiết ánh sáng thông minh (bật/tắt đèn theo thời gian, theo cƣờng độ ánh sáng, ) Điềukhiển thiết bị từ xa (qua điều khiển, qua tiếng vỗ tay, ) Điều tiết ẩm, điều tiết nhiệt độ, điều tiết khơng khí, gió Hệ thống vệ sinh thông minh, o Trong quảng cáo: ƒ Các loại biển quảng cáo nháy chữ Quảng cáo ma trận LED (một màu, màu, đa màu) Điềukhiển máy bạt quảng cáo, o Các máy móc dân dụng Máy điều tiết độ ẩm cho vƣờn Buồng ấp trứng gà/vịt ƒ Đồng hồ số, đồng hồ số có điềukhiển theo thời gian o Các sản phẩm giải trí Máy nghe nhạc ƒ Máy chơi game ƒ Đầu thu kỹ thuật số, đầu thu set-top-box, ™ Trong thiết bị y tế: o Máy móc thiết bị hỗ trợ: Máy đo nhịp tim, máy đo đƣờng huyết, máy đo huyết áp, điện tim đồ, điện não đồ,… Máy cắt/mài kính o Máy chụp chiếu (city, X-quang, ) ™ Các sản phẩm công nghiệp: o Điềukhiển động o Điềukhiển số (PID, mờ, ) o Đo lƣờng (đo điện áp, đo dòng điện, áp suất, nhiệt độ, ) o Cân băng tải, cân toa xe, cân ô tô, o Máy cán thép: điềukhiển động máy cán, điềukhiển máy quấn thép, o Làm điềukhiển trung tâm cho RoBot o Ổn định tốc độ động o Đếm sản phẩm nhà máy, xí nghiệp,… o Máy vận hành tự động (dạng CNC) CHƢƠNG 2: CẤU TRÚC VIĐIỀUKHIỂN PIC 2.1 Cấu trúc bên viđiềukhiển PIC Hình 2.1: Cấu trúc chung viđiềukhiển Cấu tạo viđiềukhiển chia làm phần nhƣ sau: - Phần lõi: gồm điềukhiển trung tâm có chức chạy chƣơng trình (gồm câu lệnh) đƣợc nạp vào nhớ chƣơng trình (program memory) trƣớc - Phần ngoại vi: gồm có timer, biến đổi tƣơng tự số ADC modun khác Phần lõi viđiềukhiển chịu trách nhiệm chạy chƣơng trìnhviđiềukhiển quản lý tồn hoạt động khác bao gồm hoạt động ngoại viViđiềukhiển chạy chƣơng trình gồm lệnh nhớ chƣơng trình, địa lệnh nằm ghi đếm chƣơng trình PC, lúc khởi động PC=0, sau thực lệnh PC=PC+1 viđiềukhiển chạy lệnh chƣơng trình Lệnh viđiềukhiển nhớ thực đƣợc mã hóa lệnh thành 14 bit Quá trình thực lệnh gồm bƣớc: - Lệnh nhớ chƣơng trình đƣợc đƣa vào ghi lệnh (địa lệnh nằm ghi PC) Sau lệnh đƣa vào giải mã điềukhiển để giải mã lệnh Trên sở đó, viđiềukhiển biết lệnh lệnh gì, thao tác với liệu nào, phép thao tác v.v.v Trên sở đó, lệnh thao tác với liệu chứa ghi RAM, điềukhiểnđiềukhiển đọc liệu RAM đƣa vào xử lý số học logic ALU, phép toán đƣợc thực qua trung gian ghi làm việc W, trình kết thúc kết trả liệu cho chƣơng trình, PC tăng lên đơn vị, viđiềukhiển nhảy đến lệnh kế tiếp, tiếp tục chu lệnh 2.2 Bộ nhớ liệu ghi đặc biệt Bộ nhớ viđiềukhiển PIC chia làm phần: - Bộ nhớ chƣơng trình-FLASH: chứa nội dung chƣơng trình chạy viđiềukhiển Bộ đếm chƣơng trình PC (Program counter) thực lệnh chứa nhớ chƣơng trình theo thứ tự từ xuống - Bộ nhớ liệu tạm thời- RAM : Gồm phần: ghi đặc biệt-SFR (Special Function Register) - ghi chức thể trạng thái, điềukhiển khối bên viđiềukhiển PIC (các ghi trạng thái chân viđiềukhiển nhƣ PORTA v.v, Các ghi Status v.vv, TMR0 cho timer v.v ) Các ghi mục đích chung GPR (general purpose register) nơi lƣu giá trị tạm thời, nơi mà biến chƣơng trình nằm - Bộ nhớ liệu không nội dung- EEPROM cho phép chứa liệu liệu không nội dung điện (phần xem nhƣ thiết bị ngoại vi) Hình 2.2: Bộ nhớ liệu RAM Bộ nhớ liệu tạm thời (RAM) viđiềukhiển gồm phần chính, chia thành bank nhớ: - Các ghi chức đặc biệt SFR (Special Function Register) điềukhiểntrình hoạt động phận chức viđiềukhiển nhƣ thiết bị ngoại vi đƣợc tích hợp viđiềukhiển Nhìn vào hình vẽ tổ chức nhớ nhƣ ta thấy, ghi SFR phân bố từ địa 00h - 1Fh bank 0, phân bố rải rác từ 80F- 9Fh bank 1, từ 100h đến 11Fh bank 2, từ 180h19Fh bank - Các ghi mục đích chung GPR (General Purpose Register) dùng để chứa liệu (dùng để đặt biến) từ 20h-7Fh bank 0, từ A0h-EFh bank 1, từ 120h-16Fh bank 2, từ 1A0h-1F0h bank Một số điểm ý khác là: Khi truy cập địa từ F0h-FFh bank 1, 170h-17Fh bank 1F0h1FFh bank tức truy cập đến 70h-7Fh bank Các vị trí màu xám khơng sử dụng Tại thời điểm, viđiềukhiển làm việc bank nhớ , việc lựa chọn làm việc bank nhớ phụ thuộc bit RP1, RP0 ghi STATUS Bảng 2.1: Bảng chọn bank nhớ Chú ý: Trong chƣơng trình viết cho viđiềukhiển PIC, sau ki thực lệnh ghi (thanh ghi SFR GPR) bank i, muốn thực l lệnh ghi khác bank j (j#i) ta phải chọn lại bank nhớ, tức phải có lệnh can thiệp đến bit RP1 RP0, khơng lệnh sau khơng tác dụng: Ví dụ: ta có chƣơng trình nhƣ sau: BCF TRISA,2 ADDWF PORTA,1 Lệnh thứ khơng có tác dụng, lệnh thao tác với ghi TRISA nằm bank 1, lệnh thứ tác động đến PORTA nằm bank Chƣơng trình BSF STATUS,5 ; ĐƢA GIÁ TRỊ RP0 LÊN MỨC CHỌN BANK BCF TRISA,2 BCF STATUS,5 ; ĐƢA GIÁ TRỊ RP0 XUỐNG MỨC CHỌN BANK ADDWF PORTA,1 Lí việc phải chọn bank nhớ giải thích nhƣ sau: Chúng ta xem lại bảng tổng hợp tất lệnh viđiềukhiển PIC để ý lệnh thao tác với ghi (các ghi nằm nhớ RAM), ghi đƣợc mã hóa bit (tức đánh số từ 00-7Fh) Ví dụ: Lệnh ADDWF f,d mã hóa lệnh nhƣ sau: 00 111 d fffffff Nhƣ vậy: ADDWF PORTA,0 có mã lệnh: 00 111 000 0100 (do địa PORTA=0x05=000 0100) ADDWF TRISA, viết đƣợc địa TRISA=0x85=1000 0100 gồm bit khơng thể mã hóa đƣợc bit nhƣ luật mã hóa lệnh Để giải vấn đề này, để mã hóa lệnh ADDWF TRISA,0 viđiềukhiển mã hóa ghi TRISA bit nhƣ PORTA, việc phân biệt PORTA TRISA phụ thuộc vào bit chọn bank nhớ RP1 RP0 Giải thích tƣơng tự cho lệnh thao tác ghi bank 1, bank bank Do đó, thực lệnh có thao tác với ghi thuộc bank nhớ khác với bank nhớ đƣợc tác động cần phải có lệnh chọn lại bank nhớ Địa gián tiếp Để hiểu địa gián tiếp ta xem địa trực tiếp nhƣ Để dễ hiểu ta cho ví dụ: CLRF 0x30 Câu lệnh thực việc xóa ghi có địa 30h nhớ Ram Rõ ràng địa lấy trực tiếp RAM, địa đƣợc ghi trực tiếp lệnh Trong số trƣờng hợp ta dùng đến địa gián tiếp, cụ thể là: ghi FSR (File Select Register) chứa địa ghi RAM ghi INDF ánh xạ vào ghi RAM có địa nội dung FSR, thao tác INDF xem nhƣ thao tác ghi RAM nêu Ví dụ: MOVLW 0x30 FSR ; sau lệnh FSR chứa 0x30 tức đến ghi có địa MOVWF 0x30 RAM INDF; xóa INDF tức xóa nội dụng ghi địa 0x30 CLRF Hình 2.3: Địa gián tiếp Hình vẽ cho ta cách mà viđiềukhiển xác định ghi Ram đƣợc thực Trở lại ví dụ trên: CLRF 0x30 lệnh mã hóa nhƣ sau: 00 0001 fff ffff Trong fff ffff= mã ghi = 011 0000 Khi RP1=0, RP0=0 bank nhớ đƣợc chọn Rõ ràng thông qua byte thấp opcode giá trị RP1, RP0 viđiềukhiển xác định đƣợc ghi nhớ RAM Đối với lệnh gián tiếp: MOVLW MOVWF 0x30 FSR CLRF INDF; 10 Hình 7.17: Phương thức truyền khơng bắt tay Đây hình thức truyền có bắt tay, có q trình thăm dò hỏi đáp trƣớc bắt đầu truyền Giả sử DTE1 muốn truyền liệu đến DTE2 Trƣớc hết DTE1 phải đƣa chân RTS (Request to send) lên mức tích cực bắt đầu thăm dò tín hiệu từ chân CTS (Clear to Send) Nếu DTE2 sẵn sàng để nhận liệu, DTE2 đƣa chân RTS lên mức tích cực Chân nối với chân CTS DTE1 Vì vậy, DTE1 nhận đƣợc tín hiệu tích cực thơng qua chân CTS biết DTE2 sẵn sàng nhận liệu DTE1 bắt đầu truyền liệu Nếu DTE1 chủ động muốn nhận liệu từ DTE2 DTE1 đƣa chân DTR (Data terminal Ready) lên mức tích cực để báo với với DTE2 sẵn sàng muốn nhận liệu Nếu DTE2 sẵn sàng để truyền liệu, đƣa chân DSR (Data Set Ready) để báo với DTE1 chuẩn bị liệu sẵn sàng để gửi đến DTE1 Và sau đó, DTE2 bắt đầu truyền liệu cho DTE1 Kết nối giao tiếp máy tính viđiềukhiển PIC 16F877A qua chuẩn RS232: Sơ đồ phần cứng: Viđiềukhiển PIC 16F877A hỗ trợ giao tiếp nối chuẩn RS232 Cứng thức truyền theo kiểu không bắt tay: Gồm đƣờng truyền, đƣờng truyền liệu từ PIC đến máy tính thông qua chân RC6, đƣờng nhận liệu từ máy tính truyền đến thơng qua chân RC7 Do qui định mức điện áp cho logic PIC 141 5V, mức điện áp cho logic máy tính đến 25V -25 đến -3V, nên cần có chuyển đổi điện áp cho đồng Ngƣời ta hay sử dụng chip MAX232 để làm nhiệm vụ Hình 7.18: Sơ đồ mạch nguyên lý kết nối Viđiều khiển- máy tính Ở đầu dây nối ta sử dụng đầu nối DB9 Có chân RX( chân số 2) đầu nối nối với TX (chân số 3) đầu nối ngƣợc lại max đầu nối đƣợc nối với Sơ đồ nối từ viđiềukhiển PIC chip MAX232 nhƣ sau: 142 Hình 7.19: Cách kết nối Max232 Chân nhận liệu viđiềukhiển PIC RC6 đƣợc nối với chân 12 MAX232 Chân truyền liệu viđiềukhiển PIC RC7 đƣợc nối với chân 12 MAX232 Chân 13,14 MAX232 đƣợc nối với chân (truyền liệu đến máy tinh) chân (nhận liệu từ máy tính) Giái trị tụ dùng theo datasheet Phần mềm máy tính: - Có thể sử dụng Visual Basic, Visual C, MatLab, LabView, Delphi v.v Phần mềm dùng Visual Basic: Visual Basic sử dụng ActiveX MSCOMM, component thƣ viện Visual Basic để dùng để giúp máy tính giao tiếp với thiết bị ngoại vi Các bƣớc để sử dụng MSCOM 143 Lấy component MSCOMM từ thƣ viện ToolBox Bƣớc 1: Kích chuột phải lên ToolBox, chọn Components Hình 7.20: Các bước tạo giao diện kết nối bước 144 Hình 7.20: Các bước tạo giao diện kết nối bước Bƣớc 2: Hiện thƣ viện Components, chọn Microsoft Comm Control 6.0 , nhấn Apply, Hình điện thoại ToolBox Đây MSCOMM, Cách để đƣa đối tƣợng vào ứng dụng tƣơng tự nhƣ đối tƣợng khác ToolBox Các thuộc tính quan trọng MSCOMM: - Setting: Cú pháp: MSCOMM1.Setting= “BBBB,P,D,S” BBBB: Tốc độ truyền, chọn 9600 19200 P: Dạng bit kiểm tra lỗi chẵn lẻ D: Số bit liệu 8, mặc định 145 S: số bit STOP, 1,1.5 Ví dụ: MSCOMM1.Setting= “9600,O,8,1” + CommPort: dạng object.CommPort = value Value số cổng Com có giá trị từ ‐> 16 mặc định có giá trị =1 Các bạn cần phải thiết lập thông số trƣớc mở cổng Sẽ có lỗi error 68 (Device unavailable) nhƣ không mở đƣợc cổng + InBuferSize: thiết lập trả lại kích thƣớc đệm nhận, tính = byte Mặc định 1024 byte Các bạn khơng đƣợc nhầm lẫn với đặc tính InBufferCount số byte chờ đệm nhận + InputLen : object.InputLen [ = value ] thiết lập trả lại số byte lần thuộc tính Input đọc đệm nhận Mặc định giá trị Value=0 tức thuộc tính Input đọc hết nội dung đệm nhận thuộc tính đƣợc gọi Nếu số kí tự đệm nhận khơng = InputLen thuộc tính Input trả lại kí tự rỗng “” Ví bạn cần phải chọn cách kiểm tra InBufferCount để chắn số kí tự yêu cầu có đủ trƣớc dùng lệnh Input Tính chất có ích đọc liệu máy mà liệu đƣợc định dạng khối có kích thƣớc + InputMode: cố object.InputMode [ định = value ] Value = hay = comInputModeText liệu nhận đƣợc dạng văn kiểu kí tự theo chuẩn ANSI Dữ liệu nhận đƣợc sâu Value=1 hay = comInputModeBinary dùng nhận kiểu liệu nhƣ kí tự điềukhiển nhúng, kí tự NULL, Giá trị nhận đƣợc từ Input mảng kiểu Byte + OutBuferSize: giống nhƣ InBuferSize, mặc định 512 + ParityReplace: thiết lập trả lại kí tự thay kí tự khơng lỗi giống + PortOpen: thiết lập trả lại tính trạng cổng(đóng mở) 146 object.PortOpen [ = value ] value = true cổng mở value =false cổng đóng xóa toàn liệu đệm nhận truyền Cần phải thiết lập thuộc tính CommPort với tên cổng trƣớc mở cổng giao tiếp Thêm vào đó, cổng giao tiếp thiết bị bạn phải hỗ trợ giá trị thuộc tính Setting thiết bị bạn hoạt động đúng, khơng hoạt động dở khơng nói chạy khơng tốt Đƣờng DTR RTS ln giữ lại trạng thái cổng + RthresHold: object.Rthreshold [ = value ] value kiểu số nguyên Thiết lập số kí tự nhận đƣợc trƣớc gây lên kiện comEvReceive Mặc định = tức khơng có kiện OnComm nhận đƣợc liệu Thiết lập = tức kiện OnComm xảy tự đƣợc chuyển đến kí đệm nhận + Settings: object.Settings [ = value ] thiết lập trả lại thơng số tần số baud, bít liệu, bít chẵn lẻ, bít stop Nếu Value khơng có giá trị mở gây lỗi 380 (Invalid property value) + SThreshold: thiết lập và trả lại số kí tự nhỏ đƣợc cho phép đệm gửi để xảy kiện OnComm = comEvSend Theo mặc định giá trị = tức truyền không gây kiện OnComm Nếu thiết lập thơng số =1 kiện OnComm xảy đệm truyền rỗng Sự kiện OnComm = comEvSend xảy mà số kí tự đệm truyền nhỏ = Sthreshold Nếu số kí tự đệm ln lớn Sthreshold kiện khơng Truyền thể nhận xảy liệu: + CommEvent: trả lại phần lớn kiện giao tiếp có lỗi CommEvent xảy có lỗi xảy kiện Sau số số lỗi: Sự kiện comEventBreak Giá 1001 trị Miêu tả kiện Xảy nhận đƣợc tín hiệu Break 147 1004 Lỗi hệ thống Phần cứng phát lỗi hệ comEventOverrun 1006 Xảy cổng tự tràn( Overrun) Một kí tự comEventFrame thống khơng đƣợc đọc từ phần cứng trƣớc kí tự tới kí tự bị comEventRxOver cho 1008 Xảy đệm nhận bị tràn Khơng có đủ chỗ liệu đệm nhận comEventRxParity 1009 Lỗi Parity Phần cứng phát lỗi Parity comEventTxFull xảy đệm truyền bị đầy Bộ đệm truyền 1010 bị đầy comEventDCB ghi liệu lớn vào đệm 1011 Một lỗi không mong muốn khôi phục lại lỗi điềukhiển thiết bị( DCB – Device Control Block) cho cổng Một Sự số kiện comEvSend Giá kiện trị Miêu : tả kiện Xảy số kí tự đệm truyền nhỏ giá trị Xảy đệm nhận đƣợc số kí tự giá trị SthresHold comEvReceive RthresHold Sự kiện đƣợc tạo liên tục bạn dùng thuộc tính Input để lấy hết liệu từ đệm nhận RcomEvCTS Xảy có thay đổi đƣờng CTS( Clear To Send) comEvDSR Xảy thay đổi đƣờng DSR( Data Set Ready) Sự kiện xảy đƣờng DSR thay đổi từ ‐> comEvCD Xảy có thay đổi đƣờng CD( Carrier Detect) comEvRing Phát chuông (Ring).Một số UART không hỗ trợ 148 kiện comEvEOF Xảy nhận đƣợc kí tự kết thúc file ( kí tự 26 bảng mã ASCII) + EOFEnable : object.EOFEnable [ = value ] định hành động MSComm tìm thấy kí tự kết thúc file Nếu value=true tìm thấy kí tự kết thúc file gây lên kiện comEvEOF OnCommEvent Nếu value= false khơng gây lên kiện + InBufferCout: trả lại số kí tự có đệm nhận Bạn xố đệm nhận cách đặt thuộc tính =0 Khơng nhầm với thuộc tính InBufferSize + Input: tổng nhận kích xố thƣớc liệu đệm nhận đệm nhận Nếu InputMode comInputModeText giá trị trả xâu tức có kiểu String , liệu dạng text biến kiểu Variant Nếu InputMode = comInputModeBinary thuộc tính trả lại liệu dạng nhị phân dƣới dạng + mảng OutBufferCount: kiểu trả lại byte số kí tự biến đệm Variant truyền + Output: ghi liệu vào đệm truyền truyền kiểu text kiểu nhị phân Nếu truyền kiểu text cho biến Variant = kiểu String, truyền kiểu nhị phân cho cho Output= variant = mảng kiểu Byte Các bƣớc để thực việc truyền nhận từ máy tính dùng VB: Cài đặt thuộc tính Setting qui định tốc độ truyền khung truyền Ví dụ: MSCOMM1.Setting= “9600,N,8,1” Qui định thuộc tính RThreshold xác định số kí tự nhận đệm nhận làm phát sinh kiện Oncomm Ở nói thêm kiện Oncomm: Đây kiện lỗi, kiện đệm nhận nhận đƣợc N kí tự (N= RThreshold), kiện đệm truyền truyền N kí tự (N=SThreshold) v.v 149 Vì vậy, ta muốn sau đệm nhận nhận N kí tự tiến hành lấy liệu vào biến để xử lý ta phải cài đặt trƣớc thuộc tính RThreshold N: MSCOMM1.RThreshold=N Và có N kí tự đến đệm nhận, kiện OnComm xảy chƣơng trình VB nhảy vào hàm Private Sub MSComm1_OnComm() Thân hàm End Sub Trong thân hàm, ta xử lý liệu Ví dụ đọc liệu vào biến: Biến= MSCOMM1.INPUT Qui định dạng liệu nhận dạng Text hay Binary thuộc tính InputMode Ví dụ: Nhận dạng liệu dạng Binary mscomm1.InputMode= comInputModeBinary Nhận liệu dạng Text MSComm1.InputMode=comInputModeText Muốn truyền liệu dùng thuộc tính Output o MSCOMM1.Output= chuỗi cần truyền Phần mềm viđiều khiển: Sử dụng phần mềm CCS để lập trình cho viđiềukhiển PIC Các phần cần thiết muốn giao tiếp với máy tính : - Khai báo tốc độ thạch anh dùng, sai không truyền #use delay(clock=4000000) - // Dùng thạch anh 4MHZ Khai báo cài đặt truyền thông cho viđiềukhiển theo chuẩn RS 232 sử dụng #use rs232 (tham số cài đặt 1, tham số cài đặt 2,… ) 150 Các tham số cài đặt có nhiều, quan tâm đến số tham số sau: o BAUD=x: Tốc độ truyền, hay dùng 9600 19200 Lƣu ý tốc độ truyền phải giống nhƣ cài đặt máy tính Ví dụ: BAUD=9600 o XMIT= Pin: Qui định chân truyền liệu chân chức viđiều khiển, ví dụ: viđiềukhiển 16F RC6 Ví dụ: XMIT=PIN_C6 o RCV= Pin: Qui định chân nhận liệu chân chức viđiều khiển, ví dụ: viđiềukhiển 16F RC7 Ví dụ: RCV=PIN_C7 o Parity=x: Khai báo dạng kiểm tra chẵn lẻ, x= N, E O Lƣu ý phải giống nhƣ cài đặt Parity phần mềm máy tính Ví dụ: Parity=N o Bits= n: Số bit liệu, o Stop=n: Số bit Stop, mặc định - Hàm nhận liệu: o KBhit(): cho biết trạng thái đệm nhận có liệu hay khơng Bằng chƣa có liệu đến Bằng có liệu đến Cú pháp: value= KBhit() o Getc(): Cú pháp: value=getc() Hàm đợi viđiềukhiển nhận đƣợc kí tự đọc kí tự vào biến value 151 Vì hàm đợi nhận kí tự nên khơng muốn thời gian đợi ta nên dùng hàm Kbhit() để xem viđiềukhiển nhận kí tự hay khơng trƣớc dùng hàm để đọc kí tự - Hàm truyền chuỗi kí tự: Printf() Cú pháp: Printf(Chuỗi kí tự cần truyền) Hàm truyền chuỗi kí tự từ viđiềukhiển Có thể định dạng chuỗi kí tự cần truyền %nt n số kí tự cần truyền ví dụ: %2.3 nghĩa truyền kí tự phần nguyên kí tự thập phân t dạng truyền, dạng sau: c Character s String or character u Unsigned int d Signed int Lu Long unsigned int Ld Long signed int x Hex int (lower case) X Hex int (upper case) Lx Hex long int (lower case) LX Hex long int (upper case) f Float with truncated decimal g Float with rounded decimal e Float in exponential format w Unsigned int with decimal place inserted Specify two numbers for n The first is a total field width The second is the desired number of decimal places - Hàm truyền kí tự: Putc() Cú pháp: Putc(kí tự cần truyền) 152 TÀI LIỆU THAM KHẢO [1] Ngô Diên Tập, Vi xử lý đo lường và điề u khiể n, Nhà xuất khoa học kỹ Thuật, 2010 [2] Tống Văn On, Họ viđiềukhiển 8051, NXB Lao động, 2001 [3] Đỗ Xuân Tiến, Kỹ thuật Vi Xử Lý lập trình Asembly cho hệ Vi Xử Lý, NXB KH&KT, 2001 [4] Mohamed Rafiquzzaman, Microprocessors and microcomputer-based system design CRC Press, 2002 [5] Barry B Bray, The Intel Microprocessors 32 bit, Prentice – Hall, 2005 [6] Micheal Thorne, Computer Organization and Assembly Language Programming for IBM PC and Compatibles, The Benjamin-Cummings Publishing Company, Inc, 2005 153 MỤC LỤC CHƢƠNG GIỚI THIỆU HỆ THỐNG VI XỬ LÝ & VIĐIỀUKHIỂN 1.1 Lịch sử phát triển vi xử lý viđiềukhiển 1.2 Một số dòng vi xử lý & viđiềukhiển đại 1.3 Viđiềukhiển Pic 1.4 Xu hƣớng ứng dụng hệ thống viđiềukhiển CHƢƠNG CẤU TRÚC VIĐIỀUKHIỂN PIC 2.1 Cấu trúc bên viđiềukhiển PIC 2.2 Bộ nhớ liệu – ghi đặc biệt 2.3 Bộ nhớ chƣơng trình – Mã hóa lệnh 11 CHƢƠNG LẬP TRÌNH HỢP NGỮ VỚI VIĐIỀUKHIỂN PIC .23 3.1 Cú pháp chƣơng trình hợp ngữ 23 3.2 Biến hằng, dẫn biên dịch hợp ngữ .23 3.3 Khung chƣơng trình hợp ngữ .28 3.4 Tập lệnh hợp ngữ viđiềukhiển PIC 31 3.5 Lập trình tạo trễ, hiển thị led đơn, giao tiếp led đoạn, phím bấm, LCD 40 CHƢƠNG LẬP TRÌNH C VỚI VIĐIỀUKHIỂN PIC 79 4.1 Cú pháp chƣơng trình C 79 4.2 Biến hằng, dẫn biên dịch C .81 4.3 Khung chƣơng trình C 83 4.4 Các lệnh hàm built-in viđiềukhiển PIC 85 4.5 Lập trình tạo trễ, hiển thị led đơn, giao tiếp led đoạn, phím bấm, LCD 86 CHƢƠNG BỘ ĐỊNH THỜI – BỘ ĐẾM 87 5.1 Nguyên lý hoạt động định thời – đếm .87 5.2 Cấu hình cài đặt ghi điều khiển, trạng thái cho định thời 90 5.3 Sử dụng định thời tạo trễ 93 5.4 Sử dụng đếm đếm số sản phẩm 94 CHƢƠNG XỬ LÝ NGẮT 96 6.1 Sự cần thiết phải ngắt viđiềukhiển .96 154 6.2 Ngắt viđiềukhiển PIC .99 6.4 Đáp ứng viđiềukhiển có yêu cầu ngắt 99 6.5 Xử lý ƣu tiên ngắt 99 6.6 Ứng dụng ngắt định thời tạo trễ 100 6.7 Ứng dụng ngắt đếm hệ thống đo tốc độ động dùng encoder 105 6.8 Ứng dụng ngắt RB để xử lý bàn phím ma trận 108 6.9 Ứng dụng ngắt truyền thơng giao tiếp máy tính 110 CHƢƠNG MỘT SỐ ỨNG DỤNG .113 7.1 Ứng dụng viđiềukhiển toán đo hiển thị nhiệt độ 113 7.2 Ứng dụng viđiềukhiển toán điềukhiển động chiều 123 7.3 Ứng dụng viđiềukhiển tốn điềukhiển giám sát máy tính 130 7.4 Ứng dụng viđiềukhiển toán điềukhiển giám sát từ xa qua sóng Radio .135 7.5 Ứng dụng viđiềukhiển toán điềukhiển giám sát qua internet 138 7.6 Ứng dụng viđiềukhiển thiết kế nghịch lƣu .150 155 ... ngoại vi: gồm có timer, biến đổi tƣơng tự số ADC modun khác Phần lõi vi điều khiển chịu trách nhiệm chạy chƣơng trình vi điều khiển quản lý toàn hoạt động khác bao gồm hoạt động ngoại vi Vi điều khiển. .. chƣơng trình Vi c mã hóa phải tn theo qui luật loại vi điều khiển mà cụ thể PIC16F877a vi c mã hóa phải tn theo qui luật nhà sản xuất microchip qui định để trình thực lệnh, điều khiển bên vi điều khiển. .. thời điểm, vi điều khiển làm vi c bank nhớ , vi c lựa chọn làm vi c bank nhớ phụ thuộc bit RP1, RP0 ghi STATUS Bảng 2.1: Bảng chọn bank nhớ Chú ý: Trong chƣơng trình vi t cho vi điều khiển PIC,