Tải bản đầy đủ - 0 (trang)
CHƯƠNG 4: LƯU ĐỒ THUẬT TOÁN VÀ ĐIỀU KHIỂN

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

Tải bản đầy đủ - 0trang

Lệch trái 1



Bánh trái: Quay tiến

Bánh Phải : Đứng yên



Lệch trái 2



Bánh Trái: Quay tiến

Bánh Phải : Quay lùi



Lệch phải 1



Bánh Trái: Đứng yên

Bánh Phải: Quay tiến



Lệch phải 2



BánhTrái: Quay lùi

Bánh Phải: Quay tiến



Tất cả các

cảm biến

chạm vạch

Tất cả các

cảm biến ra

khỏi vạch



Bánh Trái: Đứng yên

Bánh Phải: Quay tiến



3 cảm biến

bên trái chạm

vạch đen



Bánh Trái: Quay tiến

Bánh Phải: Đứng yên



3 cảm biến

bên phải

chạm vạch

đen



Bánh Trái: Đứng yên

Bánh Phải: Quay Tiến.



Đồ án thiết kế hệ thống Nhúng



Bánh trái: Quay tiến

Bánh Phải: Quay lùi



Trang 27



CHƯƠNG 5 : CODE

#include "main.h"

#include "stm32f10x.h"

unsigned int i,k=0;

unsigned int maled[]={0x0100,0x0200,0x0400,0x0800,0x1000,0x2000};

//Dinh nghia kieu du lieu tu GPIO_Init thanh GPIO_InitStructure

GPIO_InitTypeDef GPIO_InitStructure;

//Cau hinh toc do su dung cho GPIO

void RCC_Configuration(void)

{

/* Enable GPIOA, GPIOB, and AFIO clocks */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

RCC_APB2Periph_AFIO,

ENABLE);

}

//Ham tao thoi gian tre

void delay_ms(unsigned long int t)

{

unsigned long int i;

for(i=0;i
{}

}

void stop(void)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

void hieuung()

{

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==0&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==1)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

delay_ms(35);

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

delay_ms(35);

Đồ án thiết kế hệ thống Nhúng



Trang 28



GPIO_SetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==1&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==0)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==1&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==1&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==0)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==0&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==1&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==1)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==1&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==1&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==1)

{

Đồ án thiết kế hệ thống Nhúng



Trang 29



GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==0&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==1)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

delay_ms(5);

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==0&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==0)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

delay_ms(5);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==1&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==1&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==1)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

delay_ms(30);

GPIO_SetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

delay_ms(65);

GPIO_SetBits(GPIOB, GPIO_Pin_10);

Đồ án thiết kế hệ thống Nhúng



Trang 30



GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_1)==0&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_3)==0)

{

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_SetBits(GPIOB, GPIO_Pin_11);

}

}

hieuung1(void)

{

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==1)

{

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_SetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)==1)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_SetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_SetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==1)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_SetBits(GPIOB, GPIO_Pin_9);

GPIO_SetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)==1)

{

GPIO_SetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_SetBits(GPIOB, GPIO_Pin_11);

}

Đồ án thiết kế hệ thống Nhúng



Trang 31



if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==0&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_5)==0&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==0&&GPIO_Re

adInputDataBit(GPIOA,GPIO_Pin_7)==0)

{

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

GPIO_ResetBits(GPIOB, GPIO_Pin_9);

GPIO_ResetBits(GPIOB, GPIO_Pin_10);

GPIO_ResetBits(GPIOB, GPIO_Pin_11);

}

return;

}

int main(void)

{

RCC_Configuration();

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9| GPIO_Pin_10 |

GPIO_Pin_11| GPIO_Pin_12 | GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

while(1)

{

nhan:

hieuung();

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==1&&GPIO_ReadInputDataBit(GPIO

A,GPIO_Pin_5)==1)

{

while(1)

{

hieuung1();

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==1&GPIO_ReadInputDataBit(GPIOA

,GPIO_Pin_7)==1)

goto nhan;

}

}

}

}

Đồ án thiết kế hệ thống Nhúng



Trang 32



Đồ án thiết kế hệ thống Nhúng



Trang 33



CHƯƠNG 6: TÀI LIỆU THAM KHẢO

Kiến trúc cơ bản của STM32-ARM Cortex – arm.vn

STM32F101xx and STM32F103xx Reference – arm.vn

Hướng dẫn sử dụng board OPENMX-STM32103RC



Đồ án thiết kế hệ thống Nhúng



Trang 34



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

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

Tải bản đầy đủ ngay(0 tr)

×