1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tên đề tài ĐIỀU KHIỂN VÀ GIẢM SÁT THIẾT BỊ TỪ XÃ DŨNG SÓNG VÔ TUYỂN

94 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

LỜI CẢM ƠN Điều khiển PID phương pháp phổ biến hiệu dùng nhiều thực tế mà qua đồ án lần em có dịp tìm hiểu rõ Em xin chân thành cảm ơn Thầy Cô khoa Điện – Điện Tử tạo điều kiện học tập truyền đạt kiến thức để em nhận đề tài Đặt biệt, em xin chân thành cảm ơn Thầy Phạm Thiên Duy nhiệt tình hướng dẫn em hồn thành đồ án tốt nghiệp Trong thời gian ngắn thực đề tài, em cố gắng khơng thể tránh khỏi thiếu xót, em mong nhận lời góp ý dẫn thêm Thầy Cô, nhằm giúp em củng cố kiến thức, hiểu biết thêm phát triển thêm nhiều ứng dụng sau đồ án tốt nghiệp BẢNG NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Giáo viên hướng dẫn: ThS.Phạm Thiên Duy Họ tên sinh viên: Phạm Thanh Quân Lớp: 08DD3N MSSV: 811210D Ngành: Điện Tử - Tự Động Tên đề tài: ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ TỪ XA DÙNG SĨNG VƠ TUYẾN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Tp.HCM, Ngày Tháng Năm Giáo viên hướng dẫn: ThS.Phạm Thiên Duy BẢNG NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Giáo viên hướng dẫn: ThS.Phạm Thiên Duy Họ tên sinh viên: Phạm Thanh Quân Lớp: 08DD3N MSSV: 811210D Ngành: Điện Tử - Tự Động Tên đề tài: ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ TỪ XA DÙNG SĨNG VƠ TUYẾN NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Tp.HCM, Ngày Tháng Năm Giáo viên hướng dẫn: ThS.Phạm Thiên Duy MỤC LỤC CHƯƠNG 1: GIỚI THIỆU TỔNG QUÁT VÀ TÌM HIỂU ĐỀ TÀI 1.1 Đặt vấn đề: 1.2 Mục đích yêu cầu đề tài: 1.3 Cơ sở lí luận: 1.4 Hướng thực đề tài: 1.5 Giới thiệu sóng radio frequency (RF): CHƯƠNG 2: GIỚI THIỆU THIẾT BỊ, LINH KIỆN 2.1 Các loại module RF thị trường: 2.1.1 FS1000A 315 MHz Radio Transmitting Module: 2.1.2 PCR1A 315 MHz Radio Superregeneration Receiver Module: 2.1.3 Module CC1100_M: 2.1.4 Module RF FSK: 2.1.5 Module JZ861: 2.2 Module RF sử dụng luận văn: 2.3 Giới thiệu vi điều khiển PIC16F877A: 2.3.1 Tính năng: 2.3.1.1 Modun điều khiển PWM 14 bit: 2.3.1.2 Modun motion feedback: 2.3.1.3 Bộ chuyển đổi ADC 10 bit 200ksps, tốc độ cao: 2.3.1.4 Cấu trúc dao động linh hoạt: 2.3.1.5 Những điểm mạnh ngoại vi: 2.3.2 Cấu hình dao động: 2.3.2.1 Các loại dao động: 2.3.2.2 Bộ dao động tinh thể/cộng hưởng gốm: 2.3.2.3 Khối dao động nội: 2.3.3 I/O Port: 2.3.3.1 PORTA, TRISA ghi LATA: 2.3.3.2 PORTB, TRISB ghi LATB: 2.3.3.3 PORT C, TRIS C ghi LATC: 2.3.3.4 PORTD, TRISD ghi LATD: 2.3.3.5 PORT E, TRIS E ghi LATE: 2.3.4 Timer0: 2.3.4.1 Modun timer 0: 2.3.4.2 Modun timer1: 2.3.5 Ngắt: 2.3.5.1 Thanh ghi INTCON: 2.3.5.2 Thanh ghi PIR: 2.3.5.3 Thanh ghi PIE: 2.3.5.4 Thanh ghi IPR: 2.3.6 MODUN PWM: 2.3.6.1 Tính năng: 2.3.6.2 Chế độ FREE-RUNNING: 2.3.6.3 Chế độ SINGLE-SHOT MODE: 2.3.6.4 Chế độ CONTINUOUS UP/DOWN COUNT: 2.4 Động DC: 2.5 Encoder: 2.6 LCD 16x2: 2.7 Quang trở: 2.8 Triac: 2.9 MOSFET (IRF540): CHƯƠNG 3: GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÍ 3.1 Giao tiếp cổng nối tiếp: 3.1.1 Cấu trúc cổng nối tiếp: 3.1.2 Giao tiếp cổng RS-232: 3.1.3 Một số sơ đồ kết nối dùng cổng nối tiếp: 3.2 Truyền nhận liệu qua cổng nối tiếp: CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG MẠCH 4.1 Mơ hình hệ thống điều khiển: 4.2 Thiết kế mạch master giao tiếp máy tính: 4.3 Giới thiệu mơ hình điều khiển trạm 1: 4.3.1 Mơ hình điều khiển: 4.3.2 Giải thuật điều khiển: 4.3.3 Mạch điều khiển: 4.3.3.1 Khối điều khiển trung tâm: 4.3.3.2 Khối điều khiển động DC: 4.3.3.3 Khối đọc giá trị quang trở encoder: 4.4 Giới thiệu mơ hình điều khiển trạm 2: 4.4.1 Mơ hình điều khiển điều khiển: 4.4.2 Giải thuật điều khiển: 4.4.3 Mạch điều khiển: 4.4.3.1 Khối điều khiển trung tâm: 4.4.3.2 Khối điều khiển bóng đèn: 4.4.3.3 Khối điều khiển động bước: PHỤ LỤC A Giao diện điều khiển VB: B Chương trình điều khiển VB: C Chương trình điều khiển trạm 1: D Chương trình điều khiển trạm 2: MỤC LỤC CHƯƠNG 1: GIỚI THIỆU TỔNG QUÁT VÀ TÌM HIỂU ĐỀ TÀI 1.1 Đặt vấn đề 1.2 Mục đích yêu cầu đề tài 1.3 Cơ sở lí luận: 1.4 Hướng thực đề tài 1.5 Giới thiệu sóng radio frequency (RF) CHƯƠNG 2: GIỚI THIỆU THIẾT BỊ, LINH KIỆN 2.1 Các loại module RF thị trường 2.1.1 FS1000A 315 MHz Radio Transmitting Module 2.1.2 PCR1A 315 MHz Radio Superregeneration Receiver Module 2.1.3 Module CC1100_M 10 2.1.4 Module RF FSK 11 2.1.5 Module JZ861 12 2.2 Module RF sử dụng luận văn 13 2.3 Giới thiệu vi điều khiển PIC16F877A 13 2.3.1 Tính 13 2.3.1.1 Modun điều khiển PWM 14 bit 13 2.3.1.2 Modun motion feedback 14 2.3.1.3 Bộ chuyển đổi ADC 10 bit 200ksps, tốc độ cao 14 2.3.1.4 Cấu trúc dao động linh hoạt 14 2.3.1.5 Những điểm mạnh ngoại vi 15 2.3.2 Cấu hình dao động 16 2.3.2.1 Các loại dao động 16 2.3.2.2 Bộ dao động tinh thể/cộng hưởng gốm 16 2.3.2.3 Khối dao động nội 17 2.3.3 I/O Port 18 2.3.3.1 PORTA, TRISA ghi LATA 19 2.3.3.2 PORTB, TRISB ghi LATB 19 2.3.3.3 PORT C, TRIS C ghi LATC 21 2.3.3.4 PORTD, TRISD ghi LATD 22 2.3.3.5 PORT E, TRIS E ghi LATE 22 2.3.4 Timer0 23 2.3.4.1 Modun timer 23 2.3.4.2 Modun timer1 25 2.3.5 Ngắt 28 2.3.5.1 Thanh ghi INTCON 29 2.3.5.2 Thanh ghi PIR 31 2.3.5.3 Thanh ghi PIE 33 2.3.5.4 Thanh ghi IPR 34 2.3.6 MODUN PWM 36 2.3.6.1 Tính 36 2.3.6.2 Chế độ FREE-RUNNING 41 2.3.6.3 Chế độ SINGLE-SHOT MODE 41 2.3.6.4 Chế độ CONTINUOUS UP/DOWN COUNT 42 2.4 Động DC 42 2.5 Encoder 43 2.6 LCD 16x2 44 2.7 Quang trở 45 2.8 Triac 45 2.9 MOSFET (IRF540) 49 CHƯƠNG 3: GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÍ 50 3.1 Giao tiếp cổng nối tiếp 50 3.1.1 Cấu trúc cổng nối tiếp 50 3.1.2 Giao tiếp cổng RS-232 51 3.1.3 Một số sơ đồ kết nối dùng cổng nối tiếp 55 3.2 Truyền nhận liệu qua cổng nối tiếp 56 CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG MẠCH 57 4.1 Mơ hình hệ thống điều khiển 57 4.2 Thiết kế mạch master giao tiếp máy tính 57 4.3 Giới thiệu mơ hình điều khiển trạm 58 4.3.1 Mơ hình điều khiển 58 4.3.2 Giải thuật điều khiển 58 4.3.3 Mạch điều khiển 61 4.3.3.1 Khối điều khiển trung tâm 61 4.3.3.2 Khối điều khiển động DC 62 4.3.3.3 Khối đọc giá trị quang trở encoder 62 4.4 Giới thiệu mơ hình điều khiển trạm 63 4.4.1 Mơ hình điều khiển điều khiển 63 4.4.2 Giải thuật điều khiển 63 4.4.3 Mạch điều khiển 66 4.4.3.1 Khối điều khiển trung tâm 66 4.4.3.2 Khối điều khiển bóng đèn 67 4.4.3.3 Khối điều khiển động bước 67 PHỤ LỤC 68 A Giao diện điều khiển VB 68 B Chương trình điều khiển VB 68 C Chương trình điều khiển trạm 73 D Chương trình điều khiển trạm 73 TÀI LIỆU THAM KHẢO DANH MỤC HÌNH VẼ Hình 2.1 Module phát tần số 315MHz Hình 2.2 Module thu tần số 315 MHz Hình 2.3 Module CC1100_M 10 Hình 2.4 Module RF FSK 11 Hình 2.5 Module JZ861 12 Hình 2.6 Cấu hình XT,LP,HS HSPLL 17 Hình 2.7 Các nguồn dao động PIC 16F877A 18 Hình 2.8 Cấu trúc tổng quát port I/O 18 Hình 2.9 Sơ đồ cấu trúc Timer0 chế độ bit 24 Hình 2.10 Sơ đồ cấu trúc Timer0 chế độ 16 bit 25 Hình 2.11 Sơ đồ khối modun timer1 27 Hình 2.12 Cấu trúc ngắt PIC 16F877A 28 Hình 2.13 Sơ đồ cấu trúc PWM 36 Hình 2.14 Hình dáng động DC 42 Hình 2.15 Đĩa encoder 43 Hình 2.16 Hình dáng encoder 43 Hình 2.17 Sơ đồ mạch hình LCD 16x2 44 Hình 2.18 Hình dáng quang trở 45 Hình 2.19 Hình dáng Triac 46 Hình 2.20 Hình dáng MOSFET 49 Hình 3.1 Dạng truyền đơn công 51 Hình 3.2 Dạng truyền bán song công 51 Hình 3.3 Dạng truyền song cơng 51 Hình 3.4 Hình dáng cổng RS-232 52 Hình 3.5 Sơ đồ kết nối đơn giản cổng RS-232 55 Hình 3.6 Sơ đồ kết nối đầy đủ cổng RS-232 55 Hình 4.1 Mơ hình hệ thống điều khiển 57 Hình 4.2 Sơ đồ mạch giao tiếp máy tính 57 Hình 4.3 Mơ hình trạm 58 Hình 4.4 Lưu đồ giải thuật điều khiển trạm 59 Hình 4.5 Sơ đồ mạch điều khiển trạm 61 Hình 4.6 sơ đồ mạch điều khiển động DC 62 Hình 4.7 Sơ đồ mạch đọc giá trị quang trở encoder 62 Hình 4.8 Mơ hình trạm 63 Hình 4.9 Lưu đồ giải thuật điều khiển trạm 64 Hình 4.10 Sơ đồ mạch điều khiển trạm 66 Hình 4.11 Sơ đồ mạch điều khiển bóng đèn 67 Hình 4.12 Sơ đồ mạch điều khiển động bước 67 PHỤ LỤC PHỤ LỤC A Giao diện điều khiển VB: B Chương trình điều khiển VB: Imports Imports Imports Imports Imports System.IO.Ports System Microsoft.VisualBasic System.Timers System.Threading.Thread Public Class Form1 Dim datainput As Integer = Dim dataoutput As Integer = Dim output As Integer = Dim buffer As Integer = 255 Dim data_output1 As Byte = Dim data_output2 As Byte = Dim send_byte As Byte = Dim en_send As Boolean = False Dim en_thuan As Boolean = False Dim en_nghich As Boolean = False Dim en_start As Boolean = False Dim en_stop As Boolean = False Dim en_pause As Boolean = False Dim en_undo_crc As Boolean = False Dim en_hthi As Boolean = False GVHD: ThS.Phạm Thiên Duy 68 SVTH: Phạm Thanh Quân PHỤ LỤC Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SerialPort1.PortName = "COM6" SerialPort1.BaudRate = 9600 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.DataBits = SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.ReadTimeout = 1000 SerialPort1.ReadBufferSize = 4096 SerialPort1.WriteTimeout = 1000 SerialPort1.WriteBufferSize = 2048 Timer1.Interval = 2000 'dang test truyen so thap phan Timer2.Interval = Timer3.Interval = 'Timer1.Start() Timer2.Start() End Sub Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived datainput = SerialPort1.ReadByte() If en_undo_crc = True Then If datainput = 122 Then en_undo_crc = False en_hthi = True End If End If End Sub Private Sub btopenport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btopenport.Click SerialPort1.Open() tbstatusport.Text = "PORT OPEN" tbsend.Text = "No" tbthuan.Text = "No" tbnghich.Text = "No" tbpause.Text = "No" End Sub Private Sub btcloseport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcloseport.Click SerialPort1.Close() tbstatusport.Text = "PORT CLOSE" tbsend.Text = "No" tbthuan.Text = "No" tbnghich.Text = "No" tbpause.Text = "No" End Sub GVHD: ThS.Phạm Thiên Duy 69 SVTH: Phạm Thanh Quân PHỤ LỤC Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick lbhour.Text = Format(TimeOfDay) lbdate.Text = Format(Now, "dd/mm/yyyy") End Sub Private Sub btexit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btexit.Click End End Sub Private Sub btsend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btsend.Click Timer2.Stop() Timer2.Interval = 10 dataoutput = tbsobuoc.Text data_output1 = dataoutput And buffer data_output2 = (dataoutput >> 8) And buffer 'TextBox6.Text = data_output1 'TextBox7.Text = data_output2 en_send = True Timer2.Start() End Sub Private Sub btthuan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btthuan.Click Timer2.Stop() Timer2.Interval = 10 en_thuan = True Timer2.Start() End Sub Private Sub btnghich_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnghich.Click Timer2.Stop() Timer2.Interval = 10 en_nghich = True Timer2.Start() End Sub Private Sub btstart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btstart.Click Timer2.Stop() Timer2.Interval = 10 en_start = True Timer2.Start() End Sub Private Sub btstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btstop.Click Timer2.Stop() Timer2.Interval = 10 en_stop = True GVHD: ThS.Phạm Thiên Duy 70 SVTH: Phạm Thanh Quân PHỤ LỤC Timer2.Start() End Sub Private Sub btpause_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btpause.Click Timer2.Stop() Timer2.Interval = 10 en_pause = True Timer2.Start() End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick '''''chuong trinh cho nut btsend''''' If en_send = True Then send_byte = send_byte + Select Case send_byte Case SerialPort1.Write(Chr(22)) Case SerialPort1.Write(Chr(10)) Case SerialPort1.Write(Chr(1)) Case SerialPort1.Write(Chr(data_output1)) 'data_output1 Case SerialPort1.Write(Chr(data_output2)) 'data_output2 Case SerialPort1.Write(Chr(0)) Case SerialPort1.Write(Chr(122)) en_undo_crc = True End Select If en_hthi = True Then en_hthi = False send_byte = en_send = False tbsend.Text = "Yes" End If End If ''''''''''''''''''''''''''''''''''''''''''' '''''chuong trinh cho nut nhan btthuan''''' If en_thuan = True Then send_byte = send_byte + Select Case send_byte Case SerialPort1.Write(Chr(22)) Case SerialPort1.Write(Chr(11)) Case SerialPort1.Write(Chr(122)) en_undo_crc = True End Select GVHD: ThS.Phạm Thiên Duy 71 SVTH: Phạm Thanh Quân PHỤ LỤC If en_hthi = True Then en_hthi = False send_byte = en_thuan = False tbthuan.Text = "Yes" tbnghich.Text = "No" End If End If ''''''''''''''''''''''''''''''''''''''''''' '''''chuong trinh cho nut nhan btnghich''''' If en_nghich = True Then send_byte = send_byte + Select Case send_byte Case SerialPort1.Write(Chr(22)) Case SerialPort1.Write(Chr(12)) Case SerialPort1.Write(Chr(122)) en_undo_crc = True End Select If en_hthi = True Then en_hthi = False send_byte = en_nghich = False tbnghich.Text = "Yes" tbthuan.Text = "No" End If End If '''''''''''''''''''''''''''''''''''''''''''' '''''chuong trinh cho nut nhan btstart''''' If en_start = True Then send_byte = send_byte + Select Case send_byte Case SerialPort1.Write(Chr(22)) Case SerialPort1.Write(Chr(13)) Case SerialPort1.Write(Chr(122)) en_undo_crc = True End Select If en_hthi = True Then en_hthi = False send_byte = en_start = False tbpause.Text = "No" End If End If ''''''''''''''''''''''''''''''''''''''''''' '''''chuong trinh cho nut nhan btstop''''' If en_stop = True Then send_byte = send_byte + GVHD: ThS.Phạm Thiên Duy 72 SVTH: Phạm Thanh Quân PHỤ LỤC Select Case send_byte Case SerialPort1.Write(Chr(22)) Case SerialPort1.Write(Chr(14)) Case SerialPort1.Write(Chr(122)) en_undo_crc = True End Select If en_hthi = True Then en_hthi = False send_byte = en_stop = False tbthuan.Text = "No" tbnghich.Text = "No" tbpause.Text = "No" End If End If '''''''''''''''''''''''''''''''''''''''''' '''''chuong trinh cho nut nhan btpause''''' If en_pause = True Then send_byte = send_byte + Select Case send_byte Case SerialPort1.Write(Chr(22)) Case SerialPort1.Write(Chr(15)) Case SerialPort1.Write(Chr(122)) en_undo_crc = True End Select If en_hthi = True Then en_hthi = False send_byte = en_pause = False tbpause.Text = "Yes" End If End If ''''''''''''''''''''''''''''''''''''''''''' End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick End Sub End Class C Chương trình điều khiển trạm 1: #include // PIC16F877A header file #device PIC16F877a*=16 ADC=8 GVHD: ThS.Phạm Thiên Duy 73 SVTH: Phạm Thanh Quân PHỤ LỤC #use delay(clock=8000000) // for 8Mhz crystal #fuses HS,NOWDT,NOPROTECT,NOLVP // for debug mode #use rs232(baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7) #use fast_io(B) #use fast_io(C) #use fast_io(A) //////////////////////// //#locate port_d=0x08 //port xuat data lcd,understand /////////////////////// #byte portB=0x06 #bit sta=portB.5 #bit sto=portB.4 #bit next=portB.3 #bit pre=portB.2 #bit le=portB.1 #bit ri=portB.0 /////////////////////////////// #define WRITE_DATA #define WRITE_COMMAND #define LIMIT_CHAR 16 // max char numbers per line #define MS10 10 // 10 milliseconds #define US400 400 // 400 microseconds #define light PIN_c3 #define LCD_RS PIN_e0 //e0 #define LCD_RW PIN_e1 #define LCD_E PIN_e2 //e1 //e2 //////////////////// int8 en_transmitter; int16 val,v1,v2,v3,v4; int16 v11,v21,v31,v41,v51,v61; int8 input,output,h_encoder,l_encoder; int8 lcd,phat; int16 xung,vp,data1,data2,test; int1 en_tr1,en_re1,en_tr2,en_re2,en; int8 adc,update_adc; GVHD: ThS.Phạm Thiên Duy 74 SVTH: Phạm Thanh Quân PHỤ LỤC /////////////////////////////////////////////////////////// // void lcd_write(byte dat, int1 option) { delay_us(US400); if (option == WRITE_DATA) output_high(LCD_RS); else // option == WRITE_COMMAND output_low(LCD_RS); output_low(LCD_RW); output_d(dat); output_high(LCD_E); delay_us(US400); output_low(LCD_E); } /////////////////////////////////////////////////////////// // void lcd_init(void) { output_low(LCD_E); // Let LCD E line low lcd_write(0x38, WRITE_COMMAND); // Set LCD 16x2, 5x7, 8bits data delay_ms(15); lcd_write(0x01, WRITE_COMMAND); // Clear LCD display delay_ms(MS10); lcd_write(0x0f, WRITE_COMMAND); // Open display & current delay_ms(MS10); lcd_write(0x06, WRITE_COMMAND); // Window fixed (Character Entry Mode?) delay_ms(MS10); } /////////////////////////////////////////////////////////// // void lcd_display_char(int8 row, int8 col, char ch) { GVHD: ThS.Phạm Thiên Duy 75 SVTH: Phạm Thanh Quân PHỤ LỤC row = (row == 0) ? : 1; col = (col > LIMIT_CHAR) ? LIMIT_CHAR : col; lcd_write(0x80 + 0x40 * row + col, WRITE_COMMAND); lcd_write(ch, WRITE_DATA); } /////////////////////////////////////////////////////////// // void lcd_display_str(int8 row, char str[], int8 nchars) { int8 i; for (i = 0; i < nchars; i++) lcd_display_char(row, i, str[i]); } /////////////////////////////////////////////////////////// // void div_display(void) { v1=adc/100; v4=adc%100; v2=v4/10; v3=v4%10; ////////////////////////////// v11=vp/1000; v51=vp%1000; v21=v51/100; v61=v51%100; v31=v61/10; v41=v61%10; //////////////////////////// lcd_display_char(0,10,v1+48); lcd_display_char(0,11,v2+48); lcd_display_char(0,12,v3+48); GVHD: ThS.Phạm Thiên Duy 76 SVTH: Phạm Thanh Quân PHỤ LỤC lcd_display_char(1,10,v11+48); lcd_display_char(1,11,v21+48); lcd_display_char(1,12,v31+48); lcd_display_char(1,13,v41+48); } /////////////////////////////////////////////////////////// // void encoder(void) { l_encoder=(test&0xFF); h_encoder=((test>>8)&0xFF); } //////////////////////////////////////////////////////////// // #priority rda,tbe,timer0,ext #int_global /////////////////////// #int_tbe void transmitter(void) { if(en_transmitter==1) { en_transmitter=0; putc(output); disable_interrupts(int_tbe); } } //////////////////////// #int_rda void receiver(void) { input=getc(); if(input==65) //master byte address { en_re1=true; GVHD: ThS.Phạm Thiên Duy 77 SVTH: Phạm Thanh Quân PHỤ LỤC en_tr1=false; } if(input==97) //undo master byte address { en_tr1=true; en_re1=false; } } /////////////////////////// #int_timer1 void timer1(void) { set_timer1(5535); xung=get_timer0(); vp=xung*40; set_timer0(0); update_adc++; if(update_adc==34) { update_adc=0; adc=read_adc(); } } //////////////////////////////////////////////////////// // void main(void) { char chr1[]={"RECEIVER:"}; char chr2[]={"ENCODER :"}; //////set interrupt//////////////// enable_interrupts(global); enable_interrupts(int_rda); enable_interrupts(int_timer1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); set_timer1(5535); GVHD: ThS.Phạm Thiên Duy 78 SVTH: Phạm Thanh Quân PHỤ LỤC setup_COUNTERS(RTCC_EXT_L_TO_H,RTCC_DIV_2); set_timer0(0); ////////set pwm////////////// setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); set_pwm1_duty(50); set_pwm2_duty(200); //////set adc////////////// setup_adc(adc_clock_internal); setup_adc_ports(AN0); set_adc_channel(0); delay_ms(10); //////set lcd////////////// set_tris_A(255); set_tris_B(255); //portB la input set_tris_C(129); //COUNT,RX: input lcd_init(); output_low(light); //////set varible/////////// output=0; input=0; phat=0; xung=0; vp=0; adc=0; update_adc=0; test=1234; l_encoder=0; h_encoder=0; //encoder(); lcd=0; en=true; en_tr1=false; //dang test bong den nen cho en_tr1=false en_re1=false; /////////////////////////// GVHD: ThS.Phạm Thiên Duy 79 SVTH: Phạm Thanh Quân PHỤ LỤC while(1) { lcd_display_str(0,chr1,9); lcd_display_str(1,chr2,9); div_display(); } } GVHD: ThS.Phạm Thiên Duy 80 SVTH: Phạm Thanh Quân ... PWM (PTCON1)  Thanh ghi điều khiển PWM (PWMCON0)  Thanh ghi điều khiển PWM (PWMCON1)  Thanh ghi điều khiển thời gian chết (DTCON)  Thanh ghi điều khiển đè ngõ (OVDCOND)  Thanh ghi trạng... 25 2.3.5 Ngắt 28 2.3.5.1 Thanh ghi INTCON 29 2.3.5.2 Thanh ghi PIR 31 2.3.5.3 Thanh ghi PIE 33 2.3.5.4 Thanh ghi IPR 34 2.3.6 MODUN... 2.3.4.1 Modun timer 0: 2.3.4.2 Modun timer1: 2.3.5 Ngắt: 2.3.5.1 Thanh ghi INTCON: 2.3.5.2 Thanh ghi PIR: 2.3.5.3 Thanh ghi PIE: 2.3.5.4 Thanh ghi IPR: 2.3.6 MODUN PWM: 2.3.6.1 Tính năng: 2.3.6.2 Chế

Ngày đăng: 30/10/2022, 18:32

Xem thêm:

w