DAMH2
Transcript of DAMH2
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
MỤC LỤC
LỜI NÓI ĐẦU Trang 2TRUYỀN THÔNG NỐI TIẾP RS232 Trang 3VISUAL BASIC VÀ ACTIVEX Trang 7 GIỚI THIỆU PIC16F877A VÀ CCS Trang 12CẤU TẠO ĐỘNG CƠ BƯỚC Trang 14SƠ ĐỒ NGUYÊN LÝ Trang 17LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH Trang 20TỔNG KẾT Trang 42
NHẬN XÉT CỦA GIÁO VIÊN................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 1
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
LỜI NÓI ĐẦU
Điều khiển và giám sát bằng máy tính là một trong những xu hướng phát triển trong lĩnh vực điều khiển học. Với sự hỗ trợ của những phần cứng điện tử có mật độ tích hợp cao và phần mềm hỗ trợ trong việc lập trình thuyền thông giữa máy tính và phần cứng thì việc giao tiếp giữa máy tính và phần cứng để điều khiển và giám sát ngày càng được thực hiện dễ dàng hơn.
Một hệ thống được xây dựng trên cơ sở giao tiếp giữa máy và phần cứng giúp cho việc điều khiển và thu thập dữ liệu, giám sát và xử lý dữ liệu nhận về được dễ dàng hơn. Bên cạnh đó với giao diện trên máy tính sẽ giúp cho việc vận hành hệ thống được dễ dàng thẩm mỹ và trực quan hơn rất nhiều. Chính vì những lợi thế đó mà em đã quyết định chọn đề tài giám sát và điều khiển hệ thống bằng máy tính. Hệ thống bao gồm: hai động cơ bước, hai cảm biến nhiệt độ LM35, các cảm biến vị trí. Khi hệ thống hoạt động ta có thể nhập các thông số trên giao diện máy tính để điều khiển hai động cơ bước như: chiều, số bước, tốc độ. Còn bên dưới phần cứng sẽ gửi dữ liệu về nhiệt độ của hai động cơ lên máy tính để máy tính xử lý và điều khiển thích hợp. Khi ta không điều khiển trên dao diện máy tính thì ta vẫn có thể điều khiển trực tiếp trên board với 4 nút chức năng: X+, X-, Y+, Y-.
Đề tài này trong tương lai có thể phát triển thành sản phẩm có tính ứng dụng cao như: Máy khoan mạch tự động 2 trục X, Y, máy gia công cơ khí tự động hai trục…
Đây là đề tài còn khá mới mẻ đối với em, chính vì lý do đó dù đã rất cố gắng tìm hiểu nhưng chắc hẳn sẽ không tránh khỏi nhứng thiếu sót, rất mong được sự đóng góp ý kiền của các thầy cô và các bạn sinh viên để đề tài được hoàn thiện và mang tinh ứng dụng cao hơn.
Xin chân thành cảm ơn quý nhà trường, khoa điện điện tử, đặc biệt là thầy Nguyễn Văn Hiệp đã tạo điều kiện và hướng dẫn tận tình em hoàn thành đề tài này.
TP.HCM tháng 06 năm 2010 SVTH: Võ Thanh Hà
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 2
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
TRUYỀN THÔNG NỐI TIẾP VỚI RS2321. Cấu trúc cổng nối tiếp Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có các ưu điểm sau:- Khoảng cách truyền xa hơn truyền song song. - Số dây kết nối ít. - Có thể truyền không dây dùng hồng ngoại. - Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device). - Cho phép nối mạng. - Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc. - Có thể cung cấp nguồn cho các mạch điện đơn giảnCác thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE (Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền). Các tín hiệu còn lại có chức năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tín hiệu bắt tay (handshake). Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations). Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps. Các phương thức nối giữa DTE và DCE: - Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng. - Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng. - Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng. Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V). Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0 đến D7và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 3
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Hình 1: Tín hiệu truyền của ký tự ‘A’Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps, 9600 bps và 19200 bps.
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 4
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Cổng COM có hai dạng: đầu nối DB25 (25 chân) và đầu nối DB9 (9 chân) mô tả như hình 4.2. Ý nghĩa của các chân mô tả như sau:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 5
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Truyền thông giữa hai nútCác sơ đồ khi kết nối dùng cổng nối tiếp:
Hình 2: Kết nối đơn giản trong truyền thông nối tiếpKhi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau. Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt.Truy xuất trực tiếp thông qua cổng Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4 với các địa chỉ như sau:
Giao tiếp nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi cho trong bảng sau:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 6
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
GIỚI THIỆU PHẦN MỀM LẬP TRÌNH VISUAL BASIC 6.0:TRUYỀN THÔNG NỐI TIẾP VỚI ACTIVEX TRONG VISUAL BASIC 6.0Mô tả Việc truyền thông nối tiếp trên Windows được thực hiện thông qua một ActiveX có sẵn là Microsoft Comm Control.. ActiveX này dược lưu trữ trong fileMSCOMM32.OCX. Quá trình này có hai khả năng thực hiện điều khiển trao đổi thông tin:- Điều khiển sự kiện: Truyền thông điều khiển sự kiện là phương pháp tốt nhất trong quá trình điều khiển việc trao đổi thông tin. Quá trình điều khiển thực hiện thông qua sự kiện OnComm.- Hỏi vòng: Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự kiện nào xảy ra hay không. Thông thường phương pháp này sử dụng cho các chương trình nhỏ.ActiveX MsComm được bổ sung vào một Visual Basic Project thông qua menu Project > Components:
Hình 3: Bổ sung đối tượng MsComm vào VBP
Biểu tượng của MsComm: và các thuộc tính cơ bản mô tả như sau:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 7
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Hình 4 Các thuộc tính của đối tượng MSCommCác thuộc tính + Settings: Xác định các tham số cho cổng nối tiếp. Cú pháp: MSComm1.Settings = ParamString MSComm1: tên đối tượng ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S" BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là:
P: kiểm tra chẵn lẻ, với các giá trị:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 8
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bitS: số bit stop (1, 1.5, 2)VD: MSComm1.Settings = "9600,O,8,1" sẽ xác định tốc độ truyền 9600bps, kiểm tra parity chẵn với 1 bit stop và 8 bit dữ liệu.CommPort:Xác định số thứ tự của cổng truyền thông, cú pháp: MSComm1.CommPort = PortNumber PortNumber là giá trị nằm trong khoảng từ 1 đến 99, mặc định là 1. VD: MSComm1.CommPort = 1 xác định sử dụng COM1PortOpen:Đặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp. Nếu dùng thuộc tính này để mở cổng nối tiếp thì phải sử dụng trước 2 thuộc tính Settings và CommPort. Cú pháp: MSComm1.PortOpen = True | False Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng thời xoá nội dung của các bộ đệm truyền, nhận. VD: Mở cổng COM1 với tốc độ truyền 9600 bps MSComm1.Settings = "9600,N,8,1" MSComm1.CommPort = 1 MSComm1.PortOpen = TrueCác thuộc tính nhận dữ liệu:Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm. Cú pháp: InputString = MSComm1.Input Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào. Nếu InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm. InBufferCount: số ký tự có trong bộ đệm nhận. Cú pháp: Count = MSComm1.InBufferCount Thuộc tính này cùng dược dùng để xoá bộ đệm nhận bắng cách gán giá trị 0. MSComm1.InBufferCount = 0 InBufferSize: đặt và xác định kích thước bộ đệm nhận (tính bằng byte). Cú pháp: MSComm1.InBufferCount = NumByte Giá trị măc định là 1024 byte. Kích thước bộ đệm này phải đủ lớn để tránh tình trạng mất dữ liệu.
VD: Đọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệuMSComm1.InputLen = 0
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 9
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
If MSComm1.InBufferCount <> 0 Then InputString = MSComm1.Input End IfCác thuộc tính xuất dữ liệu:Bao gồm các thuộc tính Output, OutBufferCount và OutBufferSize, chức năng của các thuộc tính này giống như các thuộc tính nhập.CDTimeout:Đặt và xác định khoảng thời gian lớn nhất (tính bằng ms) từ lúc phát hiện sóng mang cho đến lúc có dữ liệu. Nếu quá khoảng thời gian này mà vẫn chưa có dữ liệu thì sẽ gán thuộc tính CommEvent là CDTO (Carrier Detect Timeout Error) và tạo sự kiện OnComm. Cú pháp:
MSComm1.CDTimeout = NumTimeDSRTimeout: Xác định thời gian chờ tín hiệu DSR trước khi xảy ra sự kiện OnComm. CTSTimeout: Đặt và xác định khoảng thời gian lớn nhất (tính bằng ms) đợi tín hiệu CTS trước khi đặt thuộc tính CommEvent là CTSTO và tạo sự kiện OnComm. Cú pháp: MSComm1.CTSTimeout = NumTime CTSHolding: Xác định đã có tín hiệu CTS hay chưa, tín hiệu này dùng cho quá trình bắt tay bằng phần cứng (cho biết DCE sẵn sàng nhận dữ liệu), trả về giá trị True hay False. DSRHolding: Xác định trạng thái DSR (báo hiệu sự tồn tại của DCE), trả về giá trị True hay False. CDHolding: Xác định trạng thái CD, trả về giá trị True hay False. DTREnable: Đặt hay xoá tín hiệu DTR để báo sự tồn tại của DTE. Cú pháp: MSComm1.DTREnable = True | False RTSEnable: Đặt hay xoá tín hiệu RTS để yêu cầu truyền dữ liệu đến DTE. Cú pháp: MSComm1.RTSEnable = True | False NullDiscard: Cho phép nhận các ký tự NULL (rỗng) hay không (= True: cấm). Cú pháp: MSComm1.NullDiscard = True | False SThreshold:Số byte trong bộ đệm truyền làm phát sinh sự kiện OnComm. Nếu giá trị này bằng 0 thì sẽ không tạo sự kiện OnComm. Cú pháp: MSComm1.SThreshold = NumChar
CommEvent:Trả lại các lỗi truyền thông hay sự kiện xảy ra tại cổng nối tiếpCác sự kiện:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 10
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Các lỗi truyền thông:
Sự kiện OnCommSự kiện OnComm xảy ra bất cứ khi nào giá trị của thuộc tính CommEvent thay đổi. Các thuộc tính RThreshold và SThreshold = 0 sẽ cấm sự kiện OnComm khi thực hiện nhận hay gởi dữ liệu. Thông thường, SThreshold = 0 và RThreshold = 1.Giao tiếp với vi điều khiểnKhi thực hiện giao tiếp với vi điều khiển, ta phải dùng thêm mạch chuyển mức logic từ TTL ↔ 232. Các vi mạch thường sử dụng là MAX232 của Maxim hay DS275 của Dallas. Mạch chuyển mức logic mô tả như sau:
Hình 5: Mạch chuyển mức logic TTL ↔ RS232
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 11
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC16F877A VÀ PHẦN MỀM LẬP TRÌNH C CHO PIC CCS
Hình 6: Sơ đồ bố trí chân của PIC16F877
PIC16F877A là vi điều khiển 8 bit được sản xuất bởi hãng Microchip với các đặc tính cơ bản như sau:+ Tần số hoạt động DC – 20Mhz+ 8K bộ nhớ chương tình flash (14 bit word) + 368 byte bộ nhớ dữ liệu+ 256 byte bộ nhớ EEPROM+ 15 nguồn ngắt+ 5 port xuất nhập A,B,C,D,E.+ 3 timer+ 2 module capture/compare/PWM+ Hỗ trợ giao tiếp theo chuẩn ISP, I2C+ Hỗ trợ nạp chương trình trên chip ICSP+ Module ADC 8bit/10bit 8 kênh vào+ 2 bộ so sánh tương tự+ 35 lệnh+ Số chân 40.
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 12
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Hình 7: Sơ đồ khối PIC16F877A
Cảm biến nhiệt độ LM35 có tầm hoạt động từ -60 đến 150 oC với stepsize là 10mV/oC
Một số hàm CCS cơ bản được sử dụng trong đề tài:
output_a (value)output_b (value)output_c (value)output_d (value)
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 13
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
output_e (value)
Xuất dữ liệu ra các port với tham số là value thay đổi từ 0 đến 255.Input_state(pin)Đọc trạng thái một chân vi điều khiển mà không là đổi hướng dữ liệu cảu chân nàyV d: Bien = input_state(pin_d0)Đọc trạng thái chân d0 lưu vào bien bien la kieu du lieu int1.Getc()Hàm này đợi đọc byte từ bộ đệm dữ liệu nối tiếp.Putc(value)Hàm này phát một byte ra cổng nối tiếpValue có giá trị từ 0 đến 255 hoặc phát ký tự bất kỳ.Read_adc()Hàm này đọc giá trị ADC trả về giá trị int8 hoặc 10bit tùy vào định cấu hình ADCSet_adc_channel()Chọn kênh ADC vào.Có thể tham khảo thêm nhiều hàm khác trong phần help của CCS.
CẤU TẠO CỦA ĐỘNG CƠ BƯỚC
Hình 8: động cơ bước lưỡng cực 2 pha
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 14
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Hình 9: cách bố trí dây trong động cơ bước đơn cực 2 pha
Hình 10: Một số mạch điều khiển động cơ bước cơ bản
Hình 11: Động cơ bước trong thực tế
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 15
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Phương pháp điều khiển 1 bước full step mode:
Phương pháp điều khiển nửa bước half step mode:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 16
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
SƠ ĐỒ NGUYÊN LÝ MẠCH DIỀU KHIỂN:
Hình 12: Sơ đồ nguyên lý mạch giao tiếp máy tính và điều khiển
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 17
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
SƠ ĐỒ NGUYÊN LÝ MẠCH CÔNG SUẤT:
F 1
+24V
2K 2
1K
IR F 540
1K
+24V
C O N TR O L
12345678910
0
D Z 12
MT1
1 2 3 4 5 6
4 K 7
+24V
+24V +24V
D Z 12
D3
1 243
+ 2 4V
+24V
0
I R F 540
4K 7
D0
+2 4V
+24V
2K 2
D7
D Z 12
IR F 540
D Z 12
+2200uF
0
4K 7
IR F 540
1 243
+2 4V
IR F 540
4K 7
00
2K 2
D1
1 K
4K 7
2K 2
4K 7
0
2K 2
1K
D Z 12
MT2
1 2 3 4 5 6
+ 2 4V
1 243
+2 4V
0
+24V
D Z 12
D2
D0
+2 4V
2K 2
1K
D Z 12
1 243
D5
0
I R F 540
D2
0
10K
2K 2
D Z 12
- +
2
1
3
4
4K 7
2K 2
1K1K
D1
D5
+2 4V
1 243
2 K 2
D7
D6
D4
PW IN
12
1 243
D4
1 K
1 243
1 243
+ 2 4V
IR F 540
+24V
4K 7
D6
+2 4V
+24V
IR F 540
D3
Hinh 13: Sơ đồ nguyên lý mạch công suất
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 18
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
MỘT VÀI THÔNG SỐ CƠ BẢN CỦA MOSFET IRF540
Các thông số định mức của IRF540
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 19
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
LƯU ĐỒ GIẢI THUẬT VÀ CÁC CHƯƠNG TRÌNH:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang:
Begin
Khởi tạo ngắt truyền nối tiếp.Khởi tạo ngắt timer.Khởi tạo ADC.Xóa các byte điều khiển hoạt động trục x và trục y.Nạp các thông số hoạt động ban đầu cho chương trình…
Quét các phím chức năng
Có phím nhấn ?Thực hiện CT tương ứng
Kiểm tra byte hoạt động x
Kiểm tra byte hoạt động y
Chayx(chieux,1,tocdox);
Kiểm tra byte hoạt động x
Đủ sobuocx ?
0
1
0
1
Xóa byte hoạt động x
Đủ
0
1
Chayy(chieuy,1,tocdoy);
Kiểm tra byte hoạt động y
Đủ sobuocy ?
Xóa byte hoạt động y
chưa
Đủ
1
0
có
ko
chưa
20
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Chương trình con phục vụ ngắt nối tiếp:
Chương trình con phục vụ ngắt timer1:
LƯU ĐỒ GIẢI THUẬT TRÊN VB:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang:
return
Ct ngắt nối tiếp
Nhận byte mã lệnh
0
1 2
Nhận byte chieuxNhận byte cao sobuocxNhận byte thấp sobuocxNhận byte tocdoxNối thành sobuocx 16bitHoatdongx = 1
Nhận byte chieuyNhận byte cao sobuocyNhận byte thấp sobuocyNhận byte tocdoyNối thành sobuocy 16bitHoatdongy = 1
Hoatdongx = 0Hoatdongy = 0 Cập nhật tocdox
Cập nhật tocdoy
Kiểm tra mã lệnh
3
4
Ct ngắt timer1
Đọc giá trị cảm biến nhiệt độ 1Đọc giá trị cảm biến nhiệt độ 2Truyền byte nhiệt độ 1Truyền byte nhiệt độ 2
return
21
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
Các nút RUNX và RUNY:
Sự kiện OnComm:
Code C chương trình trên vi điều khiển:#include "D:\CTpic\giaotiepPIC.h"
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang:
Nhấn nút RUNX
Tách sobuocx 16bit thành 2 bytePhát byte 0Phát byte chieuxPhát byte cao sobuocxPhát byte thấp sobuocxPhát byte tocdox
Nhấn nút RUNY
Tách sobuocx 16bit thành 2 bytePhát byte 0Phát byte chieuxPhát byte cao sobuocxPhát byte thấp sobuocxPhát byte tocdox
CommEvent ?
CommEvReceive
Nhận chuỗi (2 byte)Tách byte nhiệt độ 1Tách byte nhiệt độ 2 Xuất gt nhiệt độ trên giao diện
Exit
Khác CommEvReceive
22
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
#use rs232(baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7)#define buzz pin_c0 #define xtang pin_b2#define xgiam pin_b3#define ytang pin_b0#define ygiam pin_b1int8 byte_cao,byte_thap,tt,hoatdongx,hoatdongy,malenh,demtimer1;int8 chieuy,tocdoy,chieux,tocdox,nhietdo1,nhietdo2;int16 sobuocx,sobuocy;int16 i;void chayx(int8,int16,int8);void chayy(int8,int16,int8);void quetphim();#int_rdavoid sbrs232() { malenh = getc(); switch(malenh) { case 0: chieux = getc(); //chieu byte_cao = getc(); byte_thap = getc(); tocdox = getc(); //toc do sobuocx = byte_cao*256 + byte_thap; //so buoc (noi 2 byte thanh so 16bit) hoatdongx = 1; //cho hoat dong break; case 1: chieuy = getc(); byte_cao = getc(); byte_thap = getc(); tocdoy = getc(); sobuocy = byte_cao*256 + byte_thap; hoatdongy = 1; break; case 2: hoatdongx = 0; hoatdongy = 0; break; case 3: tocdox = getc(); break; case 4: tocdoy = getc();
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 23
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
break; case 5: break;
}
}//////////////////////////////// #int_TIMER1void TIMER1_isr() { demtimer1++; set_timer1(-62500); //100ms if(demtimer1==5) //500ms { set_adc_channel(0); delay_us(300); nhietdo1 = read_adc(); set_adc_channel(1); delay_us(300); nhietdo2 = read_adc(); putc(nhietdo1); putc(nhietdo2); demtimer1=0; } } ////////////////////////////////void main(){ setup_adc_ports(AN0_AN1_AN2_AN4_VSS_VREF); setup_adc(ADC_CLOCK_INTERNAL ); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(int_rda); enable_interrupts(INT_TIMER1); enable_interrupts(global);/////////////////////////////////demtimer1=0;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 24
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
tt = 0b00010001;output_d(tt);hoatdongx = 0;hoatdongy = 0;port_b_pullups(1);for(i=0;i<3;i++) { output_high(buzz); delay_ms(50); output_low(buzz); delay_ms(150); }while(1) { quetphim(); if(hoatdongx == 1) { for(i=0;i<sobuocx;i++) { if(hoatdongx==1) {chayx(chieux,1,tocdox);} else break; } hoatdongx=0; } if(hoatdongy==1) { for(i=0;i<sobuocy;i++) { if(hoatdongy==1) {chayy(chieuy,1,tocdoy);} else break; } hoatdongy =0; } }}//////////////CAC HAM CON/////////////void quetphim(){ ktxtang: if(input(xtang)==0) { for(i=0;i<200;i++)
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 25
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
{if(input(xtang)==1)goto ktxgiam;} chayx(1,1,40); } ktxgiam: if(input(xgiam)==0) { for(i=0;i<200;i++) {if(input(xgiam)==1) goto ktytang;} chayx(0,1,40); } ktytang: if(input(ytang)==0) { for(i=0;i<200;i++) {if(input(ytang)==1) goto ktygiam;} chayy(1,1,40); } ktygiam: if(input(ygiam)==0) { for(i=0;i<200;i++) {if(input(ygiam)==1) return;} chayy(0,1,40); } }///////////////////////////////////////void chayx(int8 chieu, int16 sobuoc, int8 tocdo){ int8 trunggian; switch (chieu) { case 0: // dong co quay nghich if(input_state(pin_d0)==1 && sobuoc >0) { loop1: trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 26
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop1; } else if(input_state(pin_d1)==1 && sobuoc >0) { loop2: trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; //////////////////////
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 27
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop2; } else if(input_state(pin_d2)==1 && sobuoc >0) { loop3: trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop3; } else if(input_state(pin_d3)==1 && sobuoc >0) { loop4: trunggian= tt & 0b11110000;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 28
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop4; } break; case 1: // dong co quay thuan if(input_state(pin_d0)==1 && sobuoc >0) { loop1n: trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo);
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 29
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop1n; } else if(input_state(pin_d1)==1 && sobuoc >0) { loop2n: trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 30
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop2n; } else if(input_state(pin_d2)==1 && sobuoc >0) { loop3n: trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop3n; } else if(input_state(pin_d3)==1 && sobuoc >0) { loop4n: trunggian= tt & 0b11110000; tt = trunggian | 0b00000100; output_d(tt);
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 31
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; /////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000010; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00000001; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; ////////////////////// trunggian= tt & 0b11110000; tt = trunggian | 0b00001000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc-1; if(sobuoc == 0)break; goto loop4n; } break; } }//////////////////////////////////////void chayy(int8 chieu, int16 sobuoc, int8 tocdo){ int8 trunggian; switch (chieu) { case 0: { if(input_state(pin_d4)==1 && sobuoc > 0) { loop1ny: trunggian = tt & 0b00001111; //xoa 4 bit cao tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo);
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 32
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop1ny; } else if(input_state(pin_d5)==1 && sobuoc > 0) { loop2ny: trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 33
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop2ny; } else if(input_state(pin_d6)==1 && sobuoc > 0) { loop3ny: trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop3ny;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 34
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
} else if(input_state(pin_d7)==1 && sobuoc > 0) { loop4ny: trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop4ny; } } break; case 1: { if(input_state(pin_d4)==1 && sobuoc > 0) { loop1ty: trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo);
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 35
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop1ty; } else if(input_state(pin_d5)==1 && sobuoc > 0) { loop2ty: trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 36
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop2ty; } else if(input_state(pin_d6)==1 && sobuoc > 0) { loop3ty: trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop3ty;
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 37
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
} else if(input_state(pin_d7)==1 && sobuoc > 0) { loop4ty: trunggian = tt & 0b00001111; tt = trunggian | 0b01000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00100000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b00010000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; /////////////////////////// trunggian = tt & 0b00001111; tt = trunggian | 0b10000000; output_d(tt); delay_ms(tocdo); sobuoc = sobuoc -1; if(sobuoc == 0) break; goto loop4ty; } } break; } }
GIAO DIỆN VÀ CODE CHƯƠNG TRÌNH VB:
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 38
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
G iao diện:
C ode:
Dim so As IntegerDim byte_cao, byte_thap As ByteDim chuoi As StringPrivate Sub chayx_Click()so = Val(Text1.Text)byte_cao = so \ 256 'xu ly tach thanh 2 bytebyte_thap = so Mod 256MSComm1.Output = Chr(0) 'byte ma lenh chayxIf Option1(1).Value = True Then 'byte ma chieu MSComm1.Output = Chr(1) Else MSComm1.Output = Chr(0) End IfMSComm1.Output = Chr(byte_cao) '2 byte sobuocxMSComm1.Output = Chr(byte_thap)MSComm1.Output = Chr(VScroll1.Value) 'byte toc doEnd Sub
Private Sub chayy_Click()so = Val(Text2.Text)byte_cao = so \ 256
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 39
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
byte_thap = so Mod 256MSComm1.Output = Chr(1) 'byte ma lenh chayxIf Option1(1).Value = True Then 'byte ma chieu MSComm1.Output = Chr(1) Else MSComm1.Output = Chr(0) End IfMSComm1.Output = Chr(byte_cao) '2 byte sobuocxMSComm1.Output = Chr(byte_thap)MSComm1.Output = Chr(VScroll2.Value) 'byte toc doEnd Sub
Private Sub Command1_Click()MSComm1.Output = Chr(2) 'lenh stopMSComm1.PortOpen = FalseEndEnd Sub
Private Sub Command2_Click()MSComm1.Output = Chr(2) 'ma lenh stopEnd Sub
Private Sub Form_Load()MSComm1.CommPort = 1MSComm1.Settings = "9600,n,8,1"MSComm1.RThreshold = 2 'oncomm khi bo dem co 2 byteMSComm1.RTSEnable = FalseMSComm1.InputLen = 0 'doc het bo demMSComm1.PortOpen = TrueTimer1.Enabled = FalseTimer2.Enabled = FalseText1.Text = "1"Text2.Text = "1"HScroll1.Value = 50Label13.Caption = HScroll1.ValueVScroll2.Value = 10VScroll1.Value = 10Label1.Caption = VScroll2.ValueLabel3.Caption = VScroll1.ValueEnd Sub
Private Sub Form_Unload(Cancel As Integer)MSComm1.Output = Chr(2) 'lenh stopMSComm1.PortOpen = False
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 40
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
End Sub
Private Sub HScroll1_Change()Label13.Caption = HScroll1.ValueEnd Sub
Private Sub MSComm1_OnComm()If MSComm1.CommEvent = comEvReceive Thenchuoi = MSComm1.Input 'Doc chuoi gom 2 ky tu la 2 gt ADC gui lenEnd If 'tach tung byteLabel7.Caption = Asc(Mid(chuoi, 1, 1)) 'nhiet do 1Label8.Caption = Asc(Mid(chuoi, 2, 1)) 'nhiet do 2If Val(Label7.Caption) > Val(Label13.Caption) ThenTimer1.Enabled = TrueElseTimer1.Enabled = FalseShape1.FillColor = &H80000005End IfIf Val(Label8.Caption) > Val(Label13.Caption) ThenTimer2.Enabled = TrueElseTimer2.Enabled = FalseShape2.FillColor = &H80000005End IfEnd Sub
Private Sub Timer1_Timer()If Shape1.FillColor = &H80000005 ThenShape1.FillColor = &HFF&ElseShape1.FillColor = &H80000005End IfEnd SubPrivate Sub Timer2_Timer()If Shape2.FillColor = &H80000005 ThenShape2.FillColor = &HFF&ElseShape2.FillColor = &H80000005End IfEnd Sub
Private Sub VScroll1_Change()
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 41
ĐỒ ÁN MÔN HỌC 2 ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ BẰNG MÁY TÍNH
MSComm1.Output = Chr(3) 'ma lenh cap nhat tocdoxMSComm1.Output = Chr(VScroll1.Value)Label3.Caption = VScroll1.ValueEnd Sub
Private Sub VScroll2_Change()MSComm1.Output = Chr(4) 'ma lenh cap nhat tocdoyMSComm1.Output = Chr(VScroll2.Value)Label1.Caption = VScroll2.ValueEnd Sub
TỔNG KẾT
Mạch hoạt động ổn định và chính xác.Chương trình điều khiển trên vi điều khiển hoạt động tốt, động cơ hoạt động chính xác với số bước và tốc độ được truyền từ máy tính xuống.Chương trình VB hoạt động tốt.Nếu có đủ thời gian và tài chính thì đề tài này có thể phát triển thành sản phẩm mang tính ứng dụng cao.
GVHD: NGUYỄN VĂN HIỆP SVTH: VÕ THANH HÀ 09301016 Trang: 42