Danh mục

CHƯƠNG V : THUẬT TOÁN ĐIỀU KHIỂN

Số trang: 10      Loại file: pdf      Dung lượng: 108.89 KB      Lượt xem: 16      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Dùng máy tính thiết kế giao diện truyền thông số vị trí xuống vi điều khiển, sau đó vi điiều khiển sẽ nhận và xử lí tín hiệu đó rồi cho động cơ chạy đến vị trí định trước. 5.2. Thực hiện 5.2.1.Thiết kế giao diện và lập trình dùng Visual Basic 6.0 Giao diện giúp người dùng truyền 2 byte chứa vị trí cần đi của vít-me và các thông số về chiều quay a.Giao diệnHình 5.1 Giao diện VB
Nội dung trích xuất từ tài liệu:
CHƯƠNG V : THUẬT TOÁN ĐIỀU KHIỂN CHƯƠNG V : THUẬT TOÁN ĐIỀU KHIỂN5.1.Ý tưởng :Dùng máy tính thiết kế giao diện truyền thông số vị trí xuống vi điều khiển, sau đóvi điiều khiển sẽ nhận và xử lí tín hiệu đó rồi cho động cơ chạy đến vị trí địnhtrước.5.2. Thực hiện5.2.1.Thiết kế giao diện và lập trình dùng Visual Basic 6.0Giao diện giúp người dùng truyền 2 byte chứa vị trí cần đi của vít-me và các thôngsố về chiều quay.a.Giao diện Hình 5.1 Giao diện VBb.VB codePrivate Sub cmd1_Click()If cmd1.Caption = Vitri Thenvitri = Val(txt1.Text) * 199malenh(0) = 251bytetosend(0) = vitri And 255bytetosend(1) = vitri 256 And 255MSComm1.Output = bytetosend()MSComm1.Output = malenh()Elsecmd1.Caption = Vitricmd5.Enabled = Truevitri = Val(txt1.Text) * 197malenh(0) = 251bytetosend(0) = vitri And 255bytetosend(1) = vitri 256 And 255MSComm1.Output = bytetosend()MSComm1.Output = malenh()End IfEnd SubPrivate Sub cmd2_Click()malenh(0) = 253MSComm1.Output = malenh()End SubPrivate Sub cmd3_Click()malenh(0) = 254MSComm1.Output = malenh()End SubPrivate Sub cmd4_Click()malenh(0) = 252MSComm1.Output = malenh()End SubPrivate Sub cmd5_Click()cmd5.Enabled = Falsecmd1.Caption = Readymalenh(0) = 254MSComm1.Output = malenh()End SubPrivate Sub Form_Load()With MSComm1 .CommPort = 1 chose COM1 .Settings = 9600,N,8,1 baud 9600bps, none parity, 8 bit data, 1 bit stop .InBufferSize = 1024 .InputLen = 0 .RThreshold = 1 .SThreshold = 0 .OutBufferSize = 512 .InputMode = comInputModeBinary .InputMode = comInputModeText .PortOpen = TrueEnd Withcmd2.Enabled = Falsecmd3.Enabled = FalseEnd SubPrivate Sub test_Click()If test.Caption = Test Thentxt1.Enabled = Falsecmd5.Enabled = Falsecmd1.Enabled = Falsecmd2.Enabled = Truecmd3.Enabled = Truetest.Caption = UntestElsetxt1.Enabled = Truecmd2.Enabled = Falsecmd3.Enabled = Falsetest.Caption = Testcmd5.Enabled = Truecmd1.Enabled = TrueEnd IfEnd Sub5.2.1.Lập trình điều khiển dùng Atmega8Sau khi nhận vị trí do máy tính gửi xuống lúc này VĐK sẽ cho trục vít-me quayđến đúng vị trí thì dừng.Code :#include #include #define thuan PORTC.5#define nghich PORTC.4int flag;unsigned int xung,xung1;unsigned int vitri;char m;// External Interrupt 0 service routineinterrupt [EXT_INT0] void ext_int0_isr(void){// Place your code here xung=xung+1;}// External Interrupt 1 service routineinterrupt [EXT_INT1] void ext_int1_isr(void){// Place your code herenghich=0;thuan=0;OCR1A=0 ;}#define RXB8 1#define TXB8 0#define UPE 2#define OVR 3#define FE 4#define UDRE 5#define RXC 7#define FRAMING_ERROR (1// USART Receiver buffer#define RX_BUFFER_SIZE 8char rx_buffer[RX_BUFFER_SIZE];#if RX_BUFFER_SIZE case 1: vitri=(unsigned int)data; break; case 2: vitri=((unsigned int)data*256) + vitri; m=0; break; };}}#ifndef _DEBUG_TERMINAL_IO_// Get a character from the USART Receiver buffer#define _ALTERNATE_GETCHAR_#pragma used+char getchar(void){char data;while (rx_counter==0);data=rx_buffer[rx_rd_index];if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;#asm(cli)--rx_counter;#asm(sei)return data;}#pragma used-#endif// USART Transmitter buffer#define TX_BUFFER_SIZE 8char tx_buffer[TX_BUFFER_SIZE];#if TX_BUFFER_SIZE { --tx_counter; UDR=tx_buffer[tx_rd_index]; if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; };}#ifndef _DEBUG_TERMINAL_IO_// Write a character to the USART Transmitter buffer#define _ALTERNATE_PUTCHAR_#pragma used+void putchar(char c){while (tx_counter == TX_BUFFER_SIZE);#asm(cli)if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) { tx_buffer[tx_wr_index]=c; if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; ++tx_counter; }else UDR=c;#asm(sei)}#pragma used-#endif// Standard Input/Output functions#include // Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] void timer0_ovf_isr(void){// Place your code here}// Declare your global variables herevoid main(void){// Declare your local variables here// Input/Output Ports initialization// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=OutFunc0=In// State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=TPORTB=0x00;DDRB=0x02;// Port C initialization// Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In// State6=T State5=0 State4=0 State3=T State2=T State1=T State0=TPORTC=0x00;DDRC=0x30;// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=InFunc0=In// State7=T State6=T State5=T State4=T State3=P State2=P State1=T State0=TPORTD=0x0C;DDRD=0x00;// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: 250.000 kHzTCCR0=0x03;TCNT0=0x00;// Timer/Counter 1 initialization// Clock source: Sy ...

Tài liệu được xem nhiều: