1. Trang chủ >
  2. Kỹ Thuật - Công Nghệ >
  3. Điện - Điện tử >

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 34 trang )


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



Xem Thêm
Tải bản đầy đủ (.docx) (34 trang)

×