说明

本人系电子信息工程大二的大学牲一名,一直以来想尝试做一些项目,但是出于各种理由一直推脱。去年准备电赛的时候也只是草草学了学单片机(仅不算深入依然很菜),一味的照着视频写例程属实感觉进步不大。正好上学期学校刚开完单片机这门课程,学期结束想利用假期从简单项目入手,顺便把学习过程记录下来,避免以后踩坑,如果顺便能帮助大家那当然更好了。也希望大佬能留下恳切的建议供我学习改正。

个人介绍

对于想今后从事嵌入式系统开发和单纯对单片机控制感兴趣想的同学来说,51单片机绝对是大家入门的首选,听多了各路大佬分享关于七天速成单片机的经验,个人感觉还是有必要较系统的对重要的部分系统学习一下寄存器配置搞懂原理,把基础夯实。今后确实可以不用重复造轮子,在别人的代码基础上改进就可以,但是搞懂原理对于纠错还是大有裨益的。(学校单片机课程时深有体会,一个例程就几十行代码改一下午)

具有想提高能力还是建议大家有一定基础以后,买块板子和工具自己尝试不同项目积累软硬件经验,这篇文章也是博主之前看到某位带佬“问题导向型”学习的方法的效仿。

先交个底吧,本人之前没有做项目的经验,只是简单尝试过“焦耳小偷”类似的简单纯硬件升压点亮LED的实验,接触过烙铁焊接,学习了数电模电电路知识,掌握程度一般。科技类的比赛参加过机器人比赛,但是抱的大腿水了个奖没有实际贡献。希望大家看的时候不要太过在意我拙略的能力,能不吝啬的给新人一些指点。

项目简述

开始项目之前产生了各种想法,之前就是被多种想法和自己预想的困难给劝退了。所以大家不要有太多顾虑,从失败中吸取经验也是一件很好的事,有想法莽就完了!

初步想法是尝试做一个避障机器人项目,加深对51单片机的熟练,顺便当准备10月份的电赛和以后的相关比赛准备个半成品。因为在家博主手头只有当时学习51买的开发板和学院电子协会发的一个STC1524K32S4系列的最小系统。最小系统只用它点过个灯,然后就用它开干了。

工具和元件方面的话,博主在家只有一支烙铁,所以初步准备了如下的一些东西供大家参考:

工具类:
1、烙铁(已有)建议配一个烙铁座
2、海绵、锡丝、松香/助焊剂、吸锡器等焊接必备
3、飞线、各种杜邦线(公母头,双公头、双母头)
4、万用表、尖嘴钳、绝缘胶带,也可以备个螺丝刀、镊子
5、热熔胶枪、胶棒(可有可无吧,挺好玩的)

项目元件类:
1、单片机最小系统板x1(入门的话可以直接用51)
2、小车底盘x1(带轮子电机,可以直接买现成的套件,也可以分开亚克力底盘、轮子、电机等单独买确保配套就行)
3、L298N电机驱动模块x1
4、12V锂电池(带充电器,用于电机供电)x1
5、小车避障传感器x2(因为便宜初步打算使用红外实现避障了)

**说明:**最小系统供电的方法需要考虑清楚,博主用的15最小系统带了一个TTL转USB接口可以充电宝供电,如果大家用51单片机的话还得买下载器和电源线,也可以买稳压模块通过电池供电。

硬件搭建

首先就是底盘拼接了,自带图纸了大家可以跟着装一下。不算难,略花时间,就是那个轮子装上去让自己手糟了不少罪最后大力出奇迹怼上去了。

**ps:**电机最好先用烙铁在电机两端焊接上飞线在组装,不然后面组装好以后还得用各种奇怪的姿势焊飞线,不过也不难问题不大。固定电机螺丝在外,螺母在内,不然卡轮。

底盘搭好以后如图(电机的线后接的图中没有):

然后上驱动模块和电池:
12v电池的话买的时候图便宜和送充电器没看到是2.54插头的,不过还好送了一个转接头接上去以后就是两根独立飞线。电池把图上底盘翻过来用绝缘胶带固定一下就行。

电机驱动模块用热熔胶枪固定了一下,L298N连线还说比较好连的,三端输出口分别是12V、5V、GND通过飞线或者杜邦线接12V电池正极、负极、最小系统VCC即可,四个引脚通过杜邦线接最小系统IO口即可,ENA、ENB有跳线帽保持高电平暂时可以不接,两侧是输出接对应侧电机即可。

接好大概这样:

我使用的最小系统板:(卒)

建议大家接好以后马上用最小系统写一点代码测试一下电机是否正常:
代码后来有改动,定时器部分可以去掉没什么实际用处就是测试一下配置的对不对,方便以后拿来写PWM调速

#include <stc15.h>
#include <stdio.h>
#include <gpio.h>
#include <intrins.h>#define uchar unsigned char
#define uint unsigned int/*实际端口为0时电机转,因为左右电机正转反转定义反可以理解为给1电机转 eg:Left_T=1为左轮电机正转 */
sbit Left_T = P0^0;
sbit Left_F = P0^1;
sbit Right_T = P0^2;
sbit Right_F = P0^3;sbit LED = P1^6;
uchar time = 0;/* 毫秒级延时 */
void delay_ms(uint x)
{uint j;uchar i;for(j=0;j<x;j++){for(i=0;i<120;i++);}
}void Timer0Init(void)      //500微秒@11.0592MHz
{AUXR |= 0x80;     //定时器时钟1T模式TMOD &= 0xF0;       //设置定时器模式TL0 = 0x66;       //设置定时初值TH0 = 0xEA;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时
}/* 定时器0中断服务函数 */
void tm0_isr() interrupt 1 using 1
{
//    time++;
//    if(time == 100)
//      {
//            time = 0;
//              LED = !LED;                    //将测试口取反
//      }
}void straight()       //前进
{Left_T = 1;Left_F = 0;Right_T = 1;Right_F = 0;
}void back()            // 后退
{Left_T = 0;Left_F = 1;Right_T = 0;Right_F = 1;
}void stop()
{Left_T = 0;Left_F = 0;Right_T = 0;Right_F = 0;
}void turn_left()
{Left_T = 1;Left_F = 0;Right_T = 0;    //行驶中左转
//      Right_T = 1;    //原地左转Right_F = 1;
}void turn_Right()
{Left_T = 0;    //行驶中右转 Left_T = 1;    //原地右转Left_F = 1;Right_T = 1;Right_F = 0;
}void main()
{gpio();Timer0Init();EA = 1;ET0 = 1;straight();while(1);
}   

大家还可以参考:
http://www.51hei.com/bbs/dpj-115132-1.html
https://wenku.baidu.com/view/cbc52180ae45b307e87101f69e3143323868f51e.html

以上基本就是Day01和Day02的工作量,博主每天只利用了每天下午时间搞一搞进度感人。不过还算顺利,电机可以正常转起来了。如果你也成功了,恭喜你成功迈出了第一步。(忘记拍视频了,不展示了)

遇到的坑

Day02电机可以正常转以后,第三天打算开始测试PWM调速加红外模块,但是突然最小系统就崩了,反复出现这个情况:

问题描述:然后自此开始就感觉最小系统无尽烫手,尝试冷启动、降低传输波特率无果,但是电脑可以检测到最小系统而且最小系统内的程序可以驱动电机。
刚开始以为是TTL转USB接口杜邦线连线问题,后来拔下来重插了一遍,手忙脚乱的就真的插错了,VCC和GND短接。插上去瞬间电脑提示电涌过大报错,给我吓坏了感觉拔下来,好在后来发现电脑接口没事。(大家遇事千万别慌)
自此单片机进入歇菜状态插上去电脑也检测不到了,过了几分钟就秽土转生又复活了可以检测了而且与电机驱动模块连接,转接口和电源指示方面正常,可以驱动电机还是不可以烧录而且巨烫。自此单片机进入抽风状态,时而在线时而歇菜。

电机上电会突然转停(不会上传本地视频不展示了)

事情出现转机是在又一次挣扎过程中单片机冒烟了后来果断放弃。

逃避问题虽然可耻,但是管用
对于新手来说,确定硬件出现问题大家最好果断换新,修可能比换代价更大。

后果断掏出了吃灰的51学习板接着坐,51还是和15有区别的代码和烧录部分做了调整。

提示:博主使用的是STC公司的89C51,51的定时器相较于STC15系列模式0的16位自动重装载模式成了13位定时/计数器,直接使用STC-ISP的定时器计算器进行设置的话要修改配置。
89C51系列只有六分频和十二分频模式,相比STC15系列没有AUXR寄存器,需要自己设置或者直接删去配置时的这句指令。即使是15系列使用定时器计算器最好也对照手册检查一下寄存器配置是否符合预期。比如:需要使用中断服务程序增加总中断和定时器中断开关或需要接入外部中断控制也要修改。

定时器原理介绍和一些问题解决可以参考这两篇文章:

https://blog.csdn.net/DDM76/article/details/43225751
https://blog.csdn.net/qq_44051174/article/details/100851970

新手入门单片机实战超详细以及遇到一些坑-避障小车1【更新中】相关推荐

  1. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

  2. 【Android】0、Android 开发从入门到实战超详细路线图

    文章目录 入门 进阶 专项 实战 入门 刚开始入门时,可看 Android开发者官网,先在 Android Studio 的 IDE 上,跑一个 hello world 的 App 程序 然后入门阶段 ...

  3. 前端主流面试官必问超详细面试题(整理完以秃头)持续更新中

    前端优化 我们可以使用以下几种方式做前端优化 CDN: CDN利用最靠近每位用户的服务器,更快.更可靠地将音乐.图片.视频.应用程序及其他文件发送给用户,来提供高性能.可扩展性及低成本的网络内容传递给 ...

  4. python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...

    简介:简介(转发文章+私信[Python]获取资料方式)1.Hello world安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行 ...

  5. python入门教程收藏_python入门教程:超详细保你2小时学会Python,快来收藏看看...

    简介:(转发文章+私信[Python]获取资料方式)1.Hello world安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行.我 ...

  6. c++ stack用法 入门必看 超详细

    1.stack的作用 stack是一个比较简单易用的数据结构,其最大的特性就是先进后出.就好比一个桶,先放进出的数据就在底部,如果想要取出就先要把上面的数据取出,现在不懂没关系,看完本文就可以理解了. ...

  7. Java并发编程(中下篇)从入门到深入 超详细笔记

    接上一篇博客笔记:Java并发编程(中上篇)从入门到深入 超详细笔记_未来很长,别只看眼前的博客-CSDN博客https://blog.csdn.net/weixin_53142722/article ...

  8. AI 绘画神器 Midjourney入门教程,超详细

    AI 绘画神器 Midjourney入门教程,超详细 一.介绍 最近大火的AI绘画工具"Midjourney"大家想必已经听过他的大名了. 那些惊掉下巴的图片,看似不可能,又特别真 ...

  9. 教你快速入门ElasticSearch,超详细简单~

    教你快速入门ElasticSearch,超详细简单~ 一. 初探ElasticSearch 1.1 什么是ElasticSearch? ElasticSearch,简称为ES,它是一个开源的高扩展的分 ...

最新文章

  1. j2ee下的单元测试小工具
  2. System.Object 是 .NET 中所有类型的根吗?
  3. 【bzoj4385】[POI2015]Wilcze doły
  4. raspberry pi_如何进行Raspberry Pi聚会
  5. SPOJ QTree【树链剖分】
  6. ❤️Bean的自动装配(详细)
  7. Unity3D基础9:获取鼠标键盘输入
  8. 做独立淘客app有哪些运营方法
  9. mysql联合索引原理
  10. PAT.1143 Lowest Common Ancestor
  11. 基于plc控制的太阳能追光逐日系统实训装置,QY-PV26
  12. 【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)...
  13. 【办公-WORD】Word 背景颜色层次分析
  14. 打印机无法打印的一些解决办法
  15. 我和数据类型抗争的血泪史(二十五分钟)
  16. Linux中的rm指令
  17. 汉白玉产地在哪里_汉白玉产地在哪里?
  18. c语言软件如何调字间距,sublime text2如何更改行间距和字符间距?
  19. html表格中复选框代码怎么写,获取html表中的选中复选框
  20. HJ87 密码强度等级(一把过)

热门文章

  1. 分贝,功率,功率谱,功率谱密度,信噪比
  2. 付宇泽20190919-1 每周例行报告
  3. Android elevation使用
  4. questionnaire-template调查问卷快速实现组件引入与使用说明
  5. 微信小程序删除文件Page剩余
  6. 基于ssm+maven+idea的滴滴网络租车系统设计与实现
  7. SBT下载特别慢的问题解决
  8. Apache Doris 0.11.x 版本升级
  9. web前端期末大作业 HTML+CSS+JavaScript---介绍自己的家乡-宁夏js菜单下拉
  10. 银行的atm是一台通用计算机,ATM自动取款机是不是所有银行通用的,要不...