基于51单片机的智能小车系统设计

白茶茶668 白茶茶668     2022-12-16     408

关键词:

原理图:

 程序运行图:

部分程序:

/*******************************************************************************

* 文件名称:main.c                         

* 说明:本文件为小车控制的主函数

* 功能:1.看门狗定时器初始化

        2.调用函数,进行小车直流电机的开环控制

*******************************************************************************/

#include  <AT89X52.h>

#include  <kongzhi.h>

/********************************************************

*函数名称:void main()

*函数功能:调用函数

*函数入口:无

*函数出口:无

********************************************************/

void main()

           WDT_CONTR=0x3b;

           timer_init();                  //初始化

           while(1)

        

           keyboard();          //键盘扫描

          // jieshou();            //遥控信号检测,要与传感器实物连接才能正常使用.

           xunji();                  //循迹检测

           bizhang();             //避碍物检测

           stop();                   //目标站点检测

           WDT_CONTR=0x3b;         //喂狗

        

/*******************************************************************************

* 文件名称:kongzhi.c                        

* 说明:本文件为小车控制的c文件

* 功能:1.检测障碍物传感器查询

        2.小车的状态控制

*******************************************************************************/

#include  <AT89X52.h>

#define     kongzhi_GLOBAL 1

#include  <kongzhi.h>

  uchar      PWM_t,PWM_t0;                //PWM_t为脉冲宽度(0~100)时间为0~10ms

  uchar      time_count;                  //定时计数

  uint       number,number1;

  uchar      flag;                //flag为小车状态标志,0:停止,1:前进,2:后退

  uchar      flag2;              //flag2为小车状态恢复寄存区,当小车遇到障碍物停止,等到障碍物排除之后,小车在停止之前的状态就寄存在flag2中

  uchar      flag3;              //flag3为小车避障停止延时标志,初始化为0,等待障碍排除之后赋值为1,开始计时,数秒之后恢复停止前的行进状态

  uchar      flag4;     //--flag4为看门狗复位后状态恢复寄存区

  uchar      kind = 0;         //传感器的种类

/********************************************************

*函数名称:void bizhang()

*函数功能:遇到障碍物时的处理函数

*函数入口:无

*函数出口:无

********************************************************/

void bizhang()

      

                  zhang_ai = 1;

                  if(zhang_ai == 0)

               

                  flag2=flag;

                  flag=0;

                  while(zhang_ai == 0)

                        

                  keyboard();

                  xunji();

                  stop();

                  WDT_CONTR=0x3b;

                 

                  flag3=1;

        

/********************************************************

*函数名称:void stop()

*函数功能:到达目标点的控制函数

*函数入口:无

*函数出口:无

********************************************************/

void stop()

                  stop_1=1;                                    //目标站点1

                  if(stop_1==0)flag=0;

                  stop_2=1;                                    //目标站点2

                  if(stop_2==0)flag=0;        

                  stop_3=1;                                    //目标站点3

                  if(stop_3==0)flag=0;

 

       

/*******************************************************

*函数名称:void timer_init()

*函数功能:定时器初始化设置

*函数入口:无

*函数出口:无

********************************************************/

void timer_init()

                  flag=0;flag3=0;

                  key = 0xFF;

             TMOD = 0x20;                                                     //定时器1为模式2(8位自动重装)

                  TF1 = 0;                                                        //清中断标志

                  TH1 = timer_data;                                     //保证定时时长为0.1ms

                  TL1 = TH1;

                  ET1 = 1;                                                        //允许T0中断

                  TR1 = 1;                                                       //开始计数

                  EA = 1;                                                          //中断允许

                  ENA = 0;                                                       //电机禁止

             PWM_t = PWM_t0;                                           //看门狗复位后速度恢复

             flag = flag4;                                                //看门狗复位后小车状态恢复

/*******************************************************

*函数名称:void IntTime1() interrupt 3 using 2

*函数功能:定时器中断处理,小车行走控制

*函数入口:无

*函数出口:无

********************************************************/

void IntTime1()interrupt 3      using        2

      time_count++;

               if(flag3)number++;

                  if(number==6000)number=0;number1++;

                  if(number1==8)flag3=0;number1=0;flag=flag2;        

               if(flag==0)ENA=0;                             //小车停止,flag=0,小车停止标志

                  if(flag==1)                                                   //小车前进,flag=1,小车前进标志

        

                  ENA=1;                                                         //PWM波输出使能

                  DR=0;                                                           //直流电机一端接低电平

                  DR2=0;                                                         //直流电机一端接低电平

                  if(kind==0)                                                   //没有传感器检测到黑线,走直线

               if(time_count<PWM_t)

                PWM=1;PWM2=1;

                else

                PWM=0;PWM2=0;

                 

                  if(kind==1)                                                   //左边第一个传感器检测到黑线

              

                          if(time_count<(PWM_t-20))

                PWM=1;

                else

                PWM=0;                        

                          if(time_count<PWM_t)

                PWM2=1;

                else

                PWM2=0;

                 

                  if(kind==2)                                                   //左边第二个传感器检测到黑线

              

                          if(time_count<3)

                PWM=1;

                else

                PWM=0;                        

                          if(time_count<PWM_t)

                PWM2=1;

                else

                PWM2=0;

                 

                  if(kind==3)                                                   //右边第一个传感器检测到黑线

              

                          if(time_count<(PWM_t-20))

                PWM2=1;

                else

                PWM2=0;                      

                          if(time_count<PWM_t)

                PWM=1;

                else

                PWM=0;

                 

                  if(kind==4)                                                   //右边第二个传感器检测到黑线

              

                          if(time_count<3)

                PWM2=1;

                else

                PWM2=0;                      

                          if(time_count<PWM_t)

                PWM=1;

                else

                PWM=0;

                 

        

                  if(flag==2)                                                   //小车倒退,flag=2,小车倒退标志

        

                  ENA=1;

                  PWM=0;

                  PWM2=0;

                  if(kind==0)                                                   //没有传感器检测到黑线,走直线

                    if(time_count<PWM_t)

                         DR=1;DR2=1;

                         else

                         DR=0;DR2=0;

                 

                  if(kind==1)                                                   //左边第一个传感器检测到黑线

                   

                          if(time_count<(PWM_t-20))

                 DR=1;

                 else

                 DR=0;                    

                          if(time_count<PWM_t)

                 DR2=1;

                 else

                 DR2=0;

                 

                  if(kind==2)                                                   //左边第二个传感器检测到黑线

                   

             

        

      if(time_count >= PWM_T)                //每输出一个PWM波计数器清一次零,也即PWM波周期长度

       

         time_count=0;

       

资料包括:

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

 

毕业设计-题目:基于单片机的智能小车-嵌入式物联网本科毕设(代码片段)

...c;大家好,这里是丹成学长,今天向大家介绍一个单片机项目基于单片机的智能小车大家可用于课程设计或毕业设计技术解答、毕设帮助、开题指导print("Q746876041")2绪论2.1课题背景与目的智能化作为现代电子产品的... 查看详情

基于51单片机的温度控制系统毕设

基于51单片机的温度控制系统毕设分享一下单片机毕设课程计参考资料33个,献给大四的朋友,毕业设计就不用愁了,如果有什么不懂的地方可以加群大家一起交流:813238832资料下载的地址:https://bbs.usoftchina.com/thread-208012-1-1.html1... 查看详情

基于51单片机的智能时控开关设计

基于51单片机的智能时控开关设计智能时控开关设计基于51单片机的智能时控开关设计摘要引言1功能要求1.1主要内容1.2基本要求1.3提高部分2系统设计2.1控制端口分配及开关状态定义2.2控制键的分配和主要寄存器功能2.2.1按键分配2... 查看详情

基于51单片机的智能时控开关设计

基于51单片机的智能时控开关设计智能时控开关设计基于51单片机的智能时控开关设计摘要引言1功能要求1.1主要内容1.2基本要求1.3提高部分2系统设计2.1控制端口分配及开关状态定义2.2控制键的分配和主要寄存器功能2.2.1按键分配2... 查看详情

毕业设计:基于单片机的超声波智能跟随小车-物联网智能小车嵌入式单片机stm32跟随小车(代码片段)

文章目录1项目简介2课题背景3硬件说明3.1小车硬件设计3.2小车底座3.3无线收发器3.4超声波模块3.5直流电机和电源3.6目标携带装置3.7整体电路图4跟随系统的软件设计4.1方案一:4.2方案二:4.3方案三:5相关代码效果演示6... 查看详情

iot蔽障智能车设计:带有无线调试系统的蔽障小车(代码片段)

...计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个... 查看详情

资料分享基于51单片机的智能指纹考勤系统设计-原理图-pcb-程序-报告基于51单片机和max1898的智能手机充电器设计

1661[毕设课设]基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告摘要随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到。这些技术的发展有效的带动着社会生... 查看详情

智能小车机器人

电路设计[从零开始学电路基础从零开始学单片机技术]-->芯片可以买现成的51单片机(信号智能电子信息工程)读懂51单片机的结构图 焊接电路板实践:图像显示器真正的机器人:脚+腿+手+手臂+芯片+存储器+相机+语音对话 ... 查看详情

本人大四(面向嵌入式和单片机的),要做毕设,求建议,以下是题目,本人成绩中下。

...现11楼宇节能用电智能控制12智能监控目标识别系统13基于单片机的太阳能草坪灯的设计与实现14太阳能广告灯箱的设计与实现15基于ARM的心电接收机及分析装置16多频点波形发射机17基于单片机的波形接收机18虚拟波形显示器19安卓... 查看详情

iot蔽障智能车设计:带有无线调试系统的蔽障小车(代码片段)

...计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个... 查看详情

基于51单片机智能恒温控制系统设计(仿真,程序,原理图,pcb)

基于51单片机智能恒温控制系统设计(仿真,程序,原理图,PCB),通过按键设置上下范围,控制升温装置和降温装置运作,温度传感器实时采集温度,电路包含升温电路、降温电路、声光报警... 查看详情

基于51单片机的智能晾衣架设计开题报告

...科毕业论文(设计)开题报告题目:   基于51单片机的智能晾衣架设计开题报告填写要求一、 开题报告主要内容:1.课题来源、目的、意义。2.国内外研究现况及发展趋势。3.预计达到的目标、关键理论和技术、主... 查看详情

转发-基于单片机寻迹巡线避障智能小车系统设计资料protues电路仿真(代码片段)

 模拟红外传感器进行检测循迹,具体模式如图所示,使用超声波进行避障,避障距离可以进行调整,预设为200cm,可以代码进行修改。适合二次开发。非常好的毕业设计资料参考,包括仿真图+程序+p... 查看详情

基于单片机家庭防盗报警系统设计基于51单片机的智能照明控制系统基于单片机电子琴音乐盒电路仿真系统基于单片机超声波液位测量仪系统设计(代码片段)

805基于单片机家庭防盗报警系统设计,设计资料方案安全、隐蔽家庭防盗报警器设计     该设计包括硬件和软件设计两个部分。模块化分为数据采集、按键控制、报警等模块。电路结构可划分为:热释电红外传感器、... 查看详情

恒德室内智能照明控制系统电路设计

   随着电子技术的飞速发展,基于单片机的控制系统已广泛应用于工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。楼宇智能化的发... 查看详情

基于51单片机和max1898的智能手机充电器设计

 本设计以单片机89C51为核心,并采用锂电池的智能管理芯片MAX1898对充电过程进行智能控制,并结合6N137光耦芯片对电池进行充满断电的方式进行保护。并且采用ADC0832模数转换芯片结合LCD1602液晶显示屏显示充电电压状态&#... 查看详情

毕业设计基于51单片机智能停车场管理车位引导系统设计(代码片段)

基于51单片机智能停车场管理车位引导系统设计1、项目简介1.1系统构成1.2系统功能2、部分电路设计2.1STC89C52单片机核心系统电路设计2.2LCD1602液晶显示模块电路设计2.3红外避障模块电路设计3、部分代码展示3.1让液晶从某个位置起... 查看详情

基于stm32的自平衡小车

...0模块的介绍2.5.2、OLED12864显示屏2.5.3、LN298N电机驱动块3、单片机的选择及硬件设计介绍3.1、单片机选择3.2、电路设计4、系统程序4.1、主程序4.1.1主程序设计如下 查看详情