Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 100 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
100
Dung lượng
3,26 MB
Nội dung
ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước CHƯƠNG DẪN NHẬP 1.1 ĐẶT VẤN ĐỀ Ngày nay, phát triển khoa học đặc biệt lĩnh vực điện tử tin học, giúp ích cho người nhiều lao động sản xuất, sống, nghiên cứu khoa học, vui chơi giải trí… Sự phát triển làm cho công việc người trở nên thoải mái, nhẹ nhàng, hiệu Bên cạnh đó, ứng dụng để phục vụ cho nhu cầu sinh hoạt giải trí người Một thiếtbị nghe nhạc nhỏ xíu lưu hàng ngàn hát, ti vi truy cập mạng teletext hay internet…có thể ngồi đâu để làm việc hay mua hàng… Xu hướng điềukhiển nhiều thứ mà cần chỗ, giúp người đỡ công lại nhiều trở thành mục tiêu nhiều công ty doanh nghiệp nơi Điều khiển, quản lí thiếtbị cho nhiều phòng từ lâu ứng dụng để phục vụ tòa nhà cao tầng, khách sạn…Tuy nhiên áp dụng cho nhà thấp hơn, hay cho hộ gia đình tốn không phù hợp… Do đó, để đáp ứng xu hướng nhóm thực đề tài định chọn ý tưởng cho đề tài : “Giao tiếp máytínhđiềukhiểnthiếtbị điện nhà” 1.2 TẦM QUAN TRỌNG CỦA ĐỀ TÀI Việc kiểm tra, điềukhiển trạng thái thiếtbị phòng, đặt biệt nhà nhiều tầng nhiều phòng gặp nhiều phiền toái phải đến phòng để kiểm tra, điềukhiểnthiếtbị điện phòng Nếu công việc thực phòng nhà mà đến phòng giảm thời gian, công sức cho người sử dụng Xuất phát từ nhu cầu thực tế, nhóm thực đề tài “Giao tiếp máytínhđiềukhiểnthiếtbị điện nhà” Board điềukhiểnmáytính tay 1.3 GIỚI HẠN ĐỀ TÀI Do hạn chế kiến thức, thời gian thực kinh nghiệm thực tế, nhóm thực đề tài thực việc sau : • Thiết kế thi công mô hình gồm board cho phòng • Board điềukhiểnthiếtbị • Kết nối với máytính cổng nối tiếp (cổng COM) SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước • Thiếtbị phòng điềukhiển tay • Có thể hẹn tắt cho thiếtbị • Chỉ điềukhiểnthiếtbị công suất nhỏ, đơn giản… 1.4 MỤC ĐÍCH NGHIÊN CỨU Trong trình thực đề tài, người thực nắm vấn đề sau : • Thôngqua việc thực đề tài, giúp cho người thực ôn lại kiến thức học, đồng thời lĩnh hội nhiều kiến thức từ tài liệu, giáo viên hướng dẫn, bạn bè Ngoài nâng cao tay nghề, biết cách lập trình Visual Basic 6.0 giao tiếp máy tính, lập trình cho vi điềukhiển PIC 16F877A • Qua đó, phát sinh vấn đề cần giúp đề tài hoàn chỉnh • Có thể áp dụng thực tế SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước CHƯƠNG CƠ SỞ LÝ LUẬN 2.1 MỤC ĐÍCH YÊU CẦU CẦN ĐẠT ĐƯỢC Mục đích : Thiết kế thi công hoàn chỉnh mạch có khả : • Giao tiếp, điều khiển, kiểm tra thiếtbị phòng • Có khả giao tiếp với máytính • Thiếtbịđiềukhiển tay Yêu cầu : • Thiết kế thi công hoàn chỉnh phần cứng phần mềm • Mạch hoạt động ổn định, xác • Giao diện phải thân thiện, dễ sử dụng 2.2 PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN Phương pháp: • • Tìm kiếm tham khảo tài liệu Thực nghiệm: thiết kế thi công bo mạch, viết chương trình, chạy thử chương trình con, chỉnh sửa, tổng hợp thành chương trình hoàn chỉnh Phương tiện: • Mạng internet • Máytính • Tài liệu tham khảo 2.3 THỜI GIAN THỰC HIỆN Thực đề tài thời gian tuần bao gồm: • Tuần 1: Tham khảo tài liệu liên quan, tài liệu tham khảo Tìm kiếm phương hướng giải yêu cầu đề tài • Tuần 2: Vẽ sơ đồ nguyên lí, thi công mạch in, viết chương trình cho vi điềukhiển SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 10 ĐồÁnTốtNghiệp Khóa 2006-2009 • GVHD : Nguyễn Hữu Phước Tuần 3: Tổng hợp, hoàn thiện chương trình thành chương trình hoàn chỉnh • Tuần 4: Đánh máy, hoàn tất đề tài CHƯƠNG LÝ THUYẾT CƠ SỞ 3.1 MỘT SỐ IC SỬ DỤNG TRONG ĐỒÁN PIC16F877A : Vi điềukhiển DS1307 : Thời gian thực HIN232 : Đệm đường truyền chuẩn RS232 4094BC : Thanh ghi dịch 8bit PC817 : Cách ly quang 7805 : IC ổn áp điện 3.2 VI XỬ LÝ PIC16F877A 3.2.1 GIỚI THIỆU CHUNG Hiện thị trường có nhiều họ vi điềukhiển 8051, Motorola 68HC, AVR, ARM, Ngoài họ 8051 hướng dẫn cách môi trường đại học, thân người viết chọn họ vi điềukhiển PIC để mở rộng vốn kiến thức phát triển ứng dụng công cụ nguyên nhân sau: - Họ vi điềukhiển tìm mua dễ dàng thị trường Việt Nam - Giá thành không đắt - Có đầy đủ tính vi điềukhiển hoạt động độc lập - Là bổ sung tốt kiến thức ứng dụng cho họ vi điềukhiển mang tính truyền thống: họ vi điềukhiển 8051 Số lượng người sử dụng họ vi điềukhiển PIC Hiện Việt Nam giới, họ vi điềukhiển sử dụng rộng rãi Điều tạo nhiều thuận lợi trình tìm hiểu phát triển ứng dụng như: số lượng tài liệu, số lượng ứng dụng mở phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm dẫn gặp khó khăn,… SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 11 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước Sự hỗ trợ nhà sản xuất trình biên dịch, công cụ lập trình, nạp chương trình từ đơn giản đến phức tạp,… Các tính đa dạng vi điềukhiển PIC, tính không ngừng phát triển 3.2.2 GIỚI THIỆU VỀ CẤU TRÚC PHẦN CỨNG PIC16F877A 3.2.2.1 SƠ ĐỒ CHÂN VI ĐIỀUKHIỂN PIC16F877A + IC loại thường + IC loại dán SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 12 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước 3.2.2.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀUKHIỂN PIC16F877A Đây vi điềukhiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368x8 byte RAM nhớ liệu EEPROM với dung lượng 256x8 byte Số PORT I/O với 33 pin I/O Các đặc tính ngoại vi bao gồm khối chức sau: Timer0: đếm bit với chia tần số bit Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điềukhiển hoạt động chế độ sleep Timer2: đếm bit với chia tần số, postcaler Hai Capture/so sánh/điều chế độ rông xung Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI I2C Chuẩn giao tiếp nối tiếp USART với bit địa Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điềukhiển RD, WR, CS bên Các đặc tính Analog: kênh chuyển đổi ADC 10 bit Hai so sánh Bên cạnh vài đặc tính khác vi điềukhiển như: Bộ nhớ flash với khả ghi xóa 100.000 lần Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần Dữ liệu nhớ EEPROM lưu trữ 40 năm Khả tự nạp chương trình với điềukhiển phần mềm Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thôngqua chân Watchdog Timer với dao động Chức bảo mật mã chương trình SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 13 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước Chế độ Sleep Có thể hoạt động với nhiều dạng Oscillator khác 3.2.3 SƠ ĐỒ KHỐI VI ĐIỀUKHIỂN PIC16F877A SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 14 ĐồÁnTốtNghiệp Khóa 2006-2009 SVTH: Võ Hoàng An – Huỳnh Quốc Huy GVHD : Nguyễn Hữu Phước Trang 15 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước 3.2.4 TỔ CHỨC BỘ NHỚ Cấu trúc nhớ vi điềukhiển PIC16F877A bao gồm nhớ chương trình (Program memory) nhớ liệu (Data Memory) 3.2.4.1 BỘ NHỚ CHƯƠNG TRÌNH Bộ nhớ chương trình vi điềukhiển PIC16F877A nhớ flash, dung lượng nhớ 8K word (1 word = 14 bit) phân thành nhiều trang (từ page0 đến page 3) Như nhớ chương trình có khả chứa 8*1024 = 8192 lệnh (vì lệnh sau mã hóa có dung lượng word (14 bit) Để mã hóa địa 8K word nhớ chương trình, đếm chương trình có dung lượng 13 bit (PC) Khi vi điềukhiển reset, đếm chương trình đến địa 0000h (Reset vector) Khi có ngắt xảy ra, đếm chương trình đến địa 0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm: Bộ nhớ stack không địa hóa đếm chương trình Bộ nhớ stack đề cập cụ thể phần sau SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 16 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước 3.2.4.2 BỘ NHỚ DỮ LIỆU Bộ nhớ liệu PIC nhớ EEPROM chia làm nhiều bank Đối với PIC16F877A nhớ liệu chia làm bank Mỗi bank có dung lượng 128 byte, bao gồm ghi có chức đặc biệt SFG (Special Function Register) nằm vùng địa thấp ghi mục đích chung GPR (General Purpose Register) nằm vùng địa lại bank Các ghi SFR thường xuyên sử dụng (ví dụ ghi STATUS) đặt tất cà bank nhớ liệu giúp thuận tiện trình truy xuất làm giảm bớt lệnh chương trình Sơ đồ cụ thể nhớ liệu PIC16F877A sau: SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 17 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước Sơ đồ mạch in mạch : Sơ đồ bố trí linh kiện mạch SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 93 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước 4.4 THIẾT KẾ PHẦN MỀM VÀ GIAO DIỆN ĐIỀUKHIỂN 4.4.1 Lưu đồ giải thuật: bắt đầu Đầu tiên khởi động chương trình có lệnh nạp giá trị ban đầu cho ghi cho Nạp giá trị để bit địa chỉ, đồng thời reset port thiết lập thông số cho việc truyền liệu nối tiếp như: tốc độ baud, cho phép Không Không ngắt, … Lệnh Lệnh Lúc vi xử lý đợi lệnh từ máytính nút nhấn để thực đóng ngắt thiếtbị từ máytính từ nút nhấn Có Có Chương trình ngắt Đóng/ngắt thiếtbị Nếu có lệnh từ máytính truyền Chương xuống, cờ ngắt trình ngắt thu RI tự động bật lên bắt đầu vào chương Đưa liệu trình ngắt, vi xử lý đệm truyền lấy liệu nhận so sánh với liệu đặt trước, đóng – ngắt thiết bị, sai quay trở đầu chương trình So sánh với giá trị đặt trước Sai Đúng Đóng/ngắt thiếtbị end Nếu có lệnh từ nút nhấn thực lệnh đóng – ngắt thiết bị, đồng thời bật cờ ngắt phát TI để vào chương trình phục vụ ngắt, sau đưa liệu cần truyền đệm chuẩn bị truyền liệu lên máytính 4.4.2 Giao diện chương trình điềukhiểnmáy tính: SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 94 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước Kết luận hướng phát triển đề tài: Ưu điểm: Mạch gọn nhẹ, dễ thiết kế, hoạt động ổn định khoảng thời gian vừa phải Khuyết điểm: Do dùng vi xử lý nên dòng cấp nhỏ, đưa rờ le gây sụt áp, cần phải có biện pháp nâng dòng, đồng thời cách ly vi xử lý với rờ - le, mặt khác dùng rờ-le để đóng ngắt thiếtbị nên nguồn cung cấp phải tính toán cẩn thận để đủ dòng cung cấp cho cuộn dây bên rờ-le Hướng phát triển: Có thể điềukhiểnthôngqua remote , kết nối nhiều phòng lại với Có thể kết hợp với mạng Internet mạng điện thoại để đóng ngắt thiếtbị điện từ xa CHƯƠNG SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 95 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước PHỤ LỤC Chương trình viết cho vi xử lý: #include #device *=16 #fuses NOWDT,XT,PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT #use delay (clock=4000000) #include #include #include #include #include #include #use fast_io (b) #use fast_io (c) #use fast_io (d) #use fast_io (e) #byte porte=0x09 #byte portd=0x08 #byte portc=0x07 #byte portb=0x06 #byte porta=0x05 #byte intcon=0x000b #bit RBIF=intcon.0 //dinh nghia co ngat RB #bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB #bit RB0 = 0x06.0 #bit RB1 = 0x06.1 #bit RB2 = 0x06.2 #bit RB3 = 0x06.3 #bit RB4 = 0x06.4 #bit RB5 = 0x06.5 #bit RB6 = 0x06.6 #bit RB7 = 0x06.7 BYTE sec; BYTE min; BYTE hrs; //BYTE day; //BYTE month; //BYTE yr; //BYTE dow; SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 96 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước int thietbi0,giomo0,phutmo0,giotat0,phuttat0; int k=0,n0,mode=0; const unsigned char bangso[9]={0b10001000,0b11101110,0b01001001,0b01001100,0b00101110,0b00011 100,0b00011000,0b11001110,0b00001000,0b00001100}; void Data_in(int1 k) { output_bit(pin_e0,k); output_low(pin_e1); output_high(pin_e1); } void LatchData() { output_low(pin_e2); output_high(pin_e2); } #SEPARATE void xulybyte(int8 kq) { #bit byte0=kq.0 #bit byte1=kq.1 #bit byte2=kq.2 #bit byte3=kq.3 #bit byte4=kq.4 #bit byte5=kq.5 #bit byte6=kq.6 #bit byte7=kq.7 Data_in(byte7); Data_in(byte6); Data_in(byte5); Data_in(byte4); Data_in(byte3); Data_in(byte2); Data_in(byte1); Data_in(byte0); } int kiemtra() { if ((hrs>giomo0)&&(hrs=phutmo0)&&(mingiomo0)&&(hrs==giotat0)&&(min 60)) Then MsgBox "Nhap lai phut mo: 0->60" ElseIf ((Text4.Text < 0) Or (Text4.Text > 24)) Then MsgBox "Nhap lai gio tat tu: 0->24" ElseIf ((Text5.Text < 0) Or (Text5.Text > 60)) Then MsgBox "Nhap lai phut tat: 0->60" SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 104 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước ElseIf ((Text6.Text < 1) Or (Text6.Text > 8)) Then MsgBox "Nhap lai thiet bi: 1->8" Else: MsgBox "Successfull" End If End Sub Private Sub Delay(ByVal giay As Integer) Dim Start As Double Start = Timer While (Timer < Start + giay) DoEvents Wend End Sub Private Sub Form_Load() cmdSend.Caption = "&Send" Text2.Text = "0" Text3.Text = "0" Text4.Text = "0" Text5.Text = "0" Text6.Text = "0" Text7.Text = "" Text8.Text = "" Text9.Text = "" Text10.Text = "" Text11.Text = "" Text12.Text = "" Text13.Text = "" Text14.Text = "" Text15.Text = "" Text1.Text = "" Text1.Visible = False Text1.Enabled = False Text15.Enabled = False cmdExit.Caption = "&Exit" With MSComm1 Settings = "9600,N,8,1" CommPort = RThreshold = SThreshold = InputMode = comInputModeText InputLen = Handshaking = comNone InBufferSize = 1024 OutBufferSize = 1024 If PortOpen = False Then SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 105 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước PortOpen = True End If End With End Sub Private Sub MSComm1_OnComm() Dim Buffer As Variant Dim chuoi As String If MSComm1.CommEvent = comEvReceive Then Text1.Text = MSComm1.Input chuoi = Text1.Text If (Len(chuoi) >= 3) Then Text15.Text = chuoi End If If (Text1.Text = "1") Then Text7.Text = "ON" End If If (Text1.Text = "2") Then Text8.Text = "ON" End If If (Text1.Text = "3") Then Text9.Text = "ON" End If If (Text1.Text = "4") Then Text10.Text = "ON" End If If (Text1.Text = "5") Then Text11.Text = "ON" End If If (Text1.Text = "6") Then Text12.Text = "ON" End If If (Text1.Text = "7") Then Text13.Text = "ON" End If If (Text1.Text = "8") Then Text14.Text = "ON" End If If (Text1.Text = "9") Then Text7.Text = "" Text8.Text = "" Text9.Text = "" Text10.Text = "" Text11.Text = "" SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 106 ĐồÁnTốtNghiệp Khóa 2006-2009 GVHD : Nguyễn Hữu Phước Text12.Text = "" Text13.Text = "" Text14.Text = "" End If End If End Sub SVTH: Võ Hoàng An – Huỳnh Quốc Huy Trang 107 .. .Đồ Án Tốt Nghiệp Khóa 200 6-2 009 GVHD : Nguyễn Hữu Phước • Thiết bị phòng điều khiển tay • Có thể hẹn tắt cho thiết bị • Chỉ điều khiển thiết bị công suất nhỏ, đơn giản…... sau: - Họ vi điều khiển tìm mua dễ dàng thị trường Việt Nam - Giá thành không đắt - Có đầy đủ tính vi điều khiển hoạt động độc lập - Là bổ sung tốt kiến thức ứng dụng cho họ vi điều khiển mang tính. .. Hoàng An – Huỳnh Quốc Huy Trang 12 Đồ Án Tốt Nghiệp Khóa 200 6-2 009 GVHD : Nguyễn Hữu Phước 3.2.2.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC16F877A Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh