汽车单片机实训报告

河北科技大学唐山分院

汽车单片机实训

实训报告

班级 及 专业:汽车检测与维修11班

姓        名:      孙树杰

学        号:        23

指 导  老 师:       高欣

报告完成时间: 20##年12月27日

汽车单片机实训报告

实训目的:通过近两周的汽车单片机实训,使我们充分掌握单片机编程的方法,了解单片机的原理和应用,通过以两轮智能移动机器人工程项目为主线,循序渐进的构建智能机器人的智能控制器和传感器电路,掌握单片机外围接口特性、内部结构原理、应用设计方法和 C 语言程序设计、汇编语言等知识。

实训要求:通过实训来熟练掌握汽车单片机的外围接口特性;掌握单片机内部结构原理;了解C51 系列单片机的 C 语言编程环境和使用方法;了解单片机的输入接口、使用方法和 C程序设计、单片机的输出接口、使用方法和 C程序设计;掌握单片机与 LCD的连接与 C 编程;了解基础传感器原理和用 C51 编程实现机器人基本智能的实现方法等。

实训时间:20##年12月18日—20##年12月27日

实训地点:A区308

实训内容:

一、硬件连接及单片机的简单实验程序

正确连接汽车单片机串口、ISP下载线、电池等。

启用Keil uvision IDE,编辑第一个程序:HelloRoBotYourTurn.c

#include<uart.h>

int main(void)

int i;

uart_Init();

i=7*11;

printf("What's 7 X 11?\n");

printf("The answer is :%d\n",i);

while(1);

}

接下来下载HelloRoBotYourTurn.c这个程序到汽车单片机,打开串口调试工具,检测程序是否运行正常,完成第一项任务。

二、单灯闪烁控制

为了验证 P1 口的输出电平是不是编写的程序输出的电平,可以采用一个非常简单有效的办法,就是在P1的端口位接一个发光二极管。当输出高电平时,发光二级管灭;输出低电平时,发光二极管亮。进而实现对单片机的单灯控制。

电路连接及程序如下:

#include<BoeBot.h>

#include<uart.h>

int main(void)

{

uart_Init();        //初始化串口

printf("The LED connected to P1_0 is blinking!\n");

while(1)

{

P1_0=1;           // P1_0 输出高电平

delay_nms(500);   //延时 500ms

P1_0=0;           // P1_0 输出低电平

delay_nms(500);   //延时 500ms

}

}

将程序编制到单片机中,观察发光二极管是否能闪烁。

三、伺服电机控制信号

控制伺服电机转动速度的信号是下图所示的脉冲信号。控制电机运动转速的是高电平持续的时间,当高电平持续时间为 1.3ms 时,电机顺时针全速旋转,当高电平持续时间1.7ms 时,电机逆时针全速旋转。

   为让机器人的两个轮子全速旋转,输入如下程序控制伺服电机的旋转:

   while(1)

{

P1_0=1;             //P1_0 输出高电平

delay_nus(1300);    //延时 1.3ms

P1_0=0;             //P1_0 输出低电平

delay_nus(20000);   //延时 20ms

 }

观察连接到 P1_0 脚的机器人轮子是不是顺时针全速旋转?同样输入下面的程序观察连接到 P1_1脚的机器人轮子是不是顺时针全速旋转?

While(1)

{

P1_0=1;             //P1_0 输出高电平

delay_nus(1700);    //延时 1.7ms

P1_0=0;             //P1_0 输出低电平

delay_nus(20000);   //延时 20ms

}

四、机器人的基本巡航控制---触觉导航

    给机器人加装胡须,在机器人行走过程中,如果有胡须被触动,那就意味着碰到了什么。导航程序需要接受这些输入信息,判断它的意义,调用一系列使机器人倒退、旋转朝不同方向行走的动作子函数以避开障碍物。

        下面的程序让机器人向前走直到碰到障碍物。在这种情况下,机器人用它的一根或者两根胡须探测障碍物。一旦胡须探测到障碍物,调用第三章中的导航程序和子程序使小车倒退或者旋转,然后再重新向前行走,直到遇到另一个障碍物。

  #include<BoeBot.h>

#include<uart.h>

int P1_4state(void)//获取P1_4的状态,右胡须

{return (P1&0x10)?1:0;

}

int P2_3state(void)//获取P2_3的状态,左胡须

{   return (P2&0x08)?1:0;

}

void Forward(void)

{    P1_1=1;

    delay_nus(1700);

    P1_1=0;

    P1_0=1;

    delay_nus(1300);

    P1_0=0;

    delay_nms(20);

}

void Left_Turn(void)

{

    int i;

    for(i=1;i<=26;i++)

    {P1_1=1;

        delay_nus(1300);

         P1_1=0;

        P1_0=1;

        delay_nus(1300);

        P1_0=0;

        delay_nms(20);

    }

}

void Right_Turn(void)

{  int i;

    for(i=1;i<=26;i++)

    {   P1_1=1;

        delay_nus(1700);

        P1_1=0;

        P1_0=1;

        delay_nus(1700);

        P1_0=0;

        delay_nms(20);

    }

}

void Backward(void)

{ int i;

    for(i=1;i<=65;i++)

    {   P1_1=1;

        delay_nus(1300);

         P1_1=0;

        P1_0=1;

        delay_nus(1700);

        P1_0=0;

        delay_nms(20);

    }

}

int main(void)

{   uart_Init();

    printf("Program Running!\n");

     

    while(1)

    {   if((P1_4state()==0)&&(P2_3state()==0))

        {   Backward(); //向后

            Left_Turn();//向左

            Left_Turn();//向左

        }

        else if(P1_4state()==0)

        {   Backward();//向后

            Left_Turn();//向左

        }

        else if(P2_3state()==0)

        {   Backward();//向后

            Right_Turn();//向右

        }

        else

            Forward();//向前

    }

        }

    观察小车是否能碰到障碍物后后退并且转向。

五、实训总结

       本次实训以两轮智能移动机器人工程项目为主线,通过循序渐进的构建智能机器人的智能控制器和传感器电路,使我们了解到单片机外围接口特性、内部结构原理、应用设计方法和c语言程序等知识。使我们真正在快乐中学会了编程,学会了汽车单片机的编程,与智能机器人的控制。在学习过程中,我们通过结合教材程序,并且自己写程序的方法,掌握了对汽车单片机原理,并且自己设计了自己的电路。

经过这两周的实训是我们对单片机产生了浓厚的兴趣,同时这两周的动手操作是我们亲身体验了单片机的神奇。借助这次试验我们也更加清楚地了解了单片机的工作原理,同时对他的结构和功能也有了初步了解。另外对程序的是我们更清晰的了解编程的流程,为我们以后独立操作进行编程打下了一个基础。这次实训也大大培养了我们的动手能力,为我们今后的工作给了一助力。

成绩和评语:

 

第二篇:单片机模拟汽车信号灯实训报告

沈阳理工大学应用技术学院

单片机原理及应用实训报告

题    目    汽车信号灯设计    

院    系   装备制造工程分院                            

专    业 机械设计制造及其自动化                       

学生姓名       刘  阳          

学    号         12            

指导教师       张慧玲          

完成日期   20##年12月2日     

一.系统设计

实训题目:汽车信号灯设计

1.实训目的

通过实训掌握并行I/O口的使用和软件延时法的应用,掌握多分支程序的设计方法。

2. 实训要求

用发光二极管模拟汽车信号灯,用逻辑电平开关模拟控制开关,设计一个汽车信号灯控制系统。实验箱晶振频率11.0592MHz。具体要求如下:

(1)        正常驾驶时,接通左转弯开关,左转弯灯、左头灯、左尾灯同时闪烁;接通右转弯开关,右转弯灯、右头灯、右尾灯同时闪烁,闪烁频率为2Hz。

(2)        刹车时,接通刹车开关,左尾灯、右尾灯同时亮。

(3)        停靠站时,接通停靠开关,左头灯、右头灯、左尾灯、右尾灯同时闪烁,闪烁频率为2Hz。

(4)        出现紧急情况时,接通紧急开关,左转弯灯、右转弯灯、左头灯、右头灯、左尾灯、右尾灯同时闪烁,闪烁频率为10Hz。

3. 设计思路

   用八位逻辑电平输出模块的前五位开关做发光二极管的控制开关,用电平显示模块的LED7、LED6、LED5分别代表汽车的左转弯灯、左头灯、左尾灯。用LED2、LED1、LED0分别代表右转向灯、右头灯、右尾灯。

注意:由于K5、K6、K7未用到,初始化为高电平。如改变为低电平,程序无法正常使用。

延迟时间是由DJNZ命令来控制的,此命令执行需要两个机器周期,即2μs。用此命令的执行次数来控制执行时间,来达到实验题目所要求的闪烁频率。

二.硬件设计

1.硬件设计方法

   用P1口作输入口,用8P数据线连接CPU的P1口和八位逻辑电平输出模块,控制二极管的亮与灭。用P0口作输出口,用8P数据线连接CPU的P0口和八位逻辑电平显示模块,输出二极管的闪烁频率。用串行数据通信线连接计算机与仿真器,并将USB线连接到计算机和仿真器,把仿真头插到模块的锁紧插座中,实现软件控制硬件。

2.实验电路

3.实验照片

三.软件设计

1. 主程序流程图

2.延时子程序流程图

3.源程序

ORG 0000H

    LJMP MAIN

    ORG 0030H

MAIN:MOV P0,#0FFH

     MOV P1,#0FFH

LOOP0:MOV A,P1

      CJNE A,#0FEH,LOOP1

      MOV 50H,#04H

      MOV P0,#1FH

      ACALL SHIJIAN

      MOV P0,#0FFH

      ACALL SHIJIAN

LOOP1:CJNE A,#0FDH,LOOP2

      MOV 50H,#04H

      MOV P0,#0F8H

      ACALL SHIJIAN

      MOV P0,#0FFH

      ACALL SHIJIAN

LOOP2:CJNE A,#0FBH,LOOP3

      MOV P0,#0DEH

LOOP3:CJNE A,#0F7H,LOOP4

      MOV 50H,#04H

      MOV P0,#9CH

      ACALL SHIJIAN

      MOV P0,#0FFH

      ACALL SHIJIAN

LOOP4:CJNE A,#0EFH,LOOP5

      MOV 50H,#01H

      MOV P0,#18H

      ACALL SHIJIAN

      MOV P0,#0FFH

     ACALL SHIJIAN

LOOP5:CJNE A,#0FFH,LOOP0

      MOV P0,#0FFH

      LJMP LOOP0    

SHIJIAN:MOV R6,#0FFH

        MOV R7,#0FFH

   MOV R5,50H

DINGSHI:DJNZ R7,DINGSHI

        DJNZ R6,DINGSHI

   DJNZ R5,DINGSHI

        RET

      END

四.总结

    一周的单片机实训结束了,在我和我们组的组员的共同努力下,在老师的指导和同学的帮助下,我们成功的完成了汽车信号灯控制系统的设计任务。本学期我们学习了AT89C51单片机的编程设计,看似简单的题目自己动手编写却没想象的那么简单。刚拿到设计题目时,有种似曾相识的感觉,我们做的题目和以前实验课上做的实验很相似,通过调用几个实验的程序就能完成这个设计。我们先讨论了并决定了设计方案,但在自己编程时,却发现自己平时上课学习的知识掌握的不扎实的,在编写时常常出现这样那样的错误。调用时程序格式错误,子程序编写错误等等。最终,我们还是成功完成了本次设计,很有成就感。通过这次设计,我再一次学习了单片机的程序设计,特别是多分支程序的设计方法,对一些知识又加深了印象,加深了对所学理论知识的巩固和理解。本次实训虽然只有短短的一周,但在这一周中通过自己的努力完成的程序设计是这一学期课程学习的成果,是对自己本学期的肯定,同时又提高了自己的动手和动脑能力,更主要的是增强了对这门课程学习的信心。同时团队的合作也是十分重要的。了解到了单片机在平时日常生活中的应用是如此的广泛,在信息技术日益发达的现代社会,学习一门技术是多么的重要。在今后的学习生活中,我们要更加开阔视野,拓展自己的思路,活跃自己的大脑,锻炼自己的思维能力。认真学习知识,把学到的知识运用到日常的生活中,为以后的毕业工作打好扎实的基础。

相关推荐