智能小车问题分析总结 第1篇
通过四天的学习,我每一天都收获满满,收益匪浅,接下来就让我用时间的顺序记录我每一天学习的生活吧!
第一天我主要学习了以下主要的内容。
2、其次学习第一个实验项目:LED,实现LED的亮灭。
① 创建Proteus项目,绘制原理图。在搜索框中搜索AT89C51,放置AT89C51芯片,然后再搜索LED,任意选择一种颜色的LED灯进行放置,最后进行接线和放置并接通电源,绘制好的
原理图如下:
③ 创建文件并添加到Source Group1中,编写代码如下:
3、学习第二个项目:MulLED,实现多个灯的亮灭。
① 重复第一个实验的过程,新建Proteus项目和keil项目,原理图及代码如下图:
4、学习第三个项目:流水灯。
① 重复第一个实验的过程,新建Proteus项目和keil项目,原理图及代码如下图:
其实现的效果如下:
5、学习第四个项目:静态数码管显示。
① 重复第一个实验的过程,新建Proteus项目和keil项目,原理图及代码如下图:
6、学习第五个项目:数码管动态显示。
①重复第一个实验的过程,新建Proteus项目和keil项目,原理图及代码如下图:
7、学习第六个项目:KEYS。
①重复第一个实验的过程,新建Proteus项目和keil项目,原理图及代码如下图:
第二天我主要学习了以下内容:
1、首先,老师给我们复习了有关七段数码管的知识。
① 让我们更加清楚的知道七段数码管由8个共阴极/共阳极连接的发光二极管按照特点的顺序和形状构成。
② 让我们更加清楚的学会七段数码管的共阴极和共阳极的判断和编码。首先硬件的判读:将共极为高电平,其余为低电平点亮则说明是共阳极连接;将共极为低电平,其余为高电平点亮则说明是共阴极连接。其次,共阳极段选编码:所有的段都连接到高电位,另外一段为低电位,则点亮对应的段;为高电位,则熄灭对应的段,利用不同的段进行点亮和熄灭显示数据。
③ 多个数码管的显示。在每一个时刻,只能显示一个数码管,需要实现多个数码管同时显示,就利用视觉差,循环显示每一个,位选:单独的显示。
2、老师还给我们复习了有关按键的知识点。
① 由于在按键触发过程中需要消抖,需要让程序阻塞,并且程序顺序执行,就会导致前面的程序执行之后才能够执行后面的程序。所以在某些情况下,不利于整个程序的运行。在某些紧急情况下,可以采用中断方式实现。
3、在今天的学习中,我们首先学习了中断。
① 首先我们学习了中断的处理流程。
② 学习了C51中的中断。在C51中有5个中断源,分别为两个外部中断、两个定时/计数器中断 、一个串行口输入/输出中断。
③ 在C51中中断优先级有2个,中断可以中断正常执行程序;低优先级中断可以被高优先级中断给中断;高优先级中断不能被中断,中断优先级寄存器(IP寄存器)可以设置中断的优先级。
④ 我们还学习了中断异常向量表。
当中断发生的时候,MCU会根据中断源设置程序执行指令的地址(中断向量)。在向量地址去跳转到异常处理程序执行。PS:在定义中断处理函数的时候,需要设置跳转指令的地址,使用的在中断异常处理函数头后面使用interrupt 中断号。例如:外部中断0 void Exti0_handler(void) interrupt 0;
⑤ 我们还学习了中断使能寄存器。
置位表示使能,则产生可以产生中断,清零表示失能,则不可以产生中断。
⑥ 学习了外部中断。
Ø 中断引脚:
外部中断0为
外部中断1为
Ø 中断的触发方式:
低电平触发:(在默认情况下的触发方式)
沿触发(高电平跳变到低电平的时候)
Ø 软件配置:TCON寄存器中ITx位配置
外部中断0:
IT0:外部中断0触发方式控制位,置位时为跳变触发,复位时为低电平触发
外部中断1:
IT1:外部中断1触发方式控制位,置位时为跳变触发,复位时为低电平触发
⑦ 我们学了中断的实例。其中原理图和代码如下所示:
其实现效果如下:
4、 定时器。
①定时器的寄存器TCON
②定时控制寄存器TMOD
③定时时间
第三天,我主要学习了以下内容:
1、首先对中断的相关知识进行了复习,再一次加深了印象,后面主要学习了uart的相关知识以及uart的流程分析。然后进行今天的主要学习。
2、通信:通信分为并行通信和串行通信。并行通信是指再数据交互过程中,数据的多个位由多个通道实现,每一个通道传输数据的一个位,并且并行通信具有传输效率高和数据易出错的特点。而串行通信又分为同步和异步通信,异步串行通信为数据在发送后,需要延迟接收,不需要建立时钟同步连接,常用于不同时钟频率设备直接的通信,同步串行通信则为数据发送和接收是同时进行的。
3、通过异步通信机制实现数据的接收和发送。
4、芯片手册:在C51中,由一个内置的全双工异步串行通信接口。
5、串行控制寄存器SCON。
四种工作模式其中的模式一,他可在包括PC机内的很多器件进行通讯,波特率可调(由PCON寄存器中SMOD为决定)
SMOD=0,波特率不翻倍;SMOD=1,波特率翻倍,波特率计数表达式:
① 如果用定时器1来产生波特率应通过下式来计算TH1的装入值:
TH1=256- (K*OscFreq) / (384*BaudRate) OscFreq:晶振的频率() BaudRate:需要设置的波特率(9600)
② 如果SMOD=0, K= 1: TH1 =256 - (11059200)/(384*9600)=256 -3 = 253 =0xfd。
③ 如果SMOD =1,K=2: THl=256 - (211059200)/ (384*9600)=256一 6= 250 =0xfa。
第四天的学习的主要内容如下:
1、LCD1602液晶显示屏。
LCD ( Liquid Crystal Display 的简称)液晶显示器。能够同时显示16x2,32个字符,是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
2、LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。该显示屏的优点是耗电量低、体积小、辐射低。
3、LCD1602主要用来显示数字、字母、图形以及少量自定义字符。可以显示2行16个字符,拥有16个引脚,其中8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节V0和背光源AK。
注:我们所用的LCD屏的命名,基本都是按照其分辨率来进行命名的 比如lcd1602 就是分辨率为16×2 lcd12864 就是分辨率为128×64。
4、LCD1602主要参数如下:
① 显示字符:16×2个字符。
② 工作电压:。
③ 工作电流:。
④ 工作温度:-20°C~70°C。
⑤ 模块最佳工作电压:。
⑥ 单个字符尺寸×(W×Hmm)。
⑦ 引脚:16脚。
5、LCD发光原理液晶:
① 液晶是液态晶体,是一种几乎透明的物质,是不能发光的;
② 光源:LCD屏幕的光来自于屏幕最下面的背光板发出的光源;
③ 偏光片:一种镜片,只有特定方向的光线(垂直偏振光)才能通过,而其它方向的光线不能通过,两块偏光片的栅栏角度相互垂直时光线就完全无法通过;
④ 液晶的物理特性是:液晶控制光线通过的程度是由加在液晶上的电压强弱来控制的。当通电时导通,排列变的有秩序,使光线容易通过,光的路径不改变;不通电时排列混乱,阻止光线通过,改变光的路径。
6、LCD屏幕的组成:
上偏光片,和下偏光片,使背光源的光只能通过下偏光片,不能通过下偏光片
彩色滤光片: 不同强度的光经过红绿蓝三色滤光片之后,会形成各种各样的颜色
液晶层: 通过通电方式来控制液晶的分子排列,从而改变背光源发出的光的路径,如果通电则不改变路径,光不能通过上偏光片,如果不通电则改变光的路径,光可以通过上偏光片,从而进行显示。
7、TFT基板:排列有序的薄膜晶体管,每一个薄膜晶体管都可以调整其电压,从而使单个晶体管范围内液晶进行不同的亮度和颜色显示,也就是我们说的像素点。
8、背光源: 提供均匀的背景光源,也就是说:如果想要LCD屏幕不显示,那么只需要背光源的光不穿过上偏光片即可,如果需要LCD屏幕显示字符,需要背光源的光穿过上偏光片,而是否能穿过上偏光片,需要看液晶层的分子排列,而液晶层的分子排列,是由加在液晶上的电压强弱来控制的,也就是最后我们只需要控制每个像素点的电压,就可以达到LCD屏幕显示的效果。这样就可以通过不同区域的电压控制使液体水晶重新排列来显示出各种图形图像以及字符。
9、LCD和OLED区别:
10、 LCD ( Liquid Crystal Display 的简称)液晶显示器。OLED(Organic Light-Emitting Diode, OLED)本质是LED发光二极管,当两端加上正向电压,半导体中的载流子发生复合引起光子发射而产生光,又称为有机电激光显示。简单地说,LCD与LED是两种不同的显示技术,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。本质区别二是LCD需要背光源才能亮,OLED是发光二极管自发光,不需要额外的光源.
11、 LCD1602引脚接图如下:
各引脚的功能介绍如下:
① 引脚1(VSS/GND):地引脚;
② 引脚2(VDD/VCC):电源引脚;
③ 引脚3(VL):液晶显示器对比度引脚,接正电源时对比度最弱,接地时对比度最高,使用时可以通过外接一个电位器调整其对比度;
④ 引脚4(RS):寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器;
⑤ 引脚5(R/W):读(read)/写(write)信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当RS为高电平,R/W为低电平时,可以写入数据;
⑥ 引脚6(E):使能端,当E端由高电平跳变为低电平时,液晶模块执行命令;
⑦ 7-14(D0~D7): 8位双向数据线 用于单片机向1602写入数据和从1602读取数据;
⑧ 引脚15:背光源正极;
⑨ 引脚16:背光源负极。
LCD1602共16个管脚,但分类很好分类,其中一个VCC和GND用于给1602供电,一个VCC和GND用于给背光源供电,剩下三个功能引脚:RS(数据命令选择端),R/W(读写选择端),E(使能信号),还有8个D0~D7分别为8位双向数据线传输数据。RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。R/W为读写选择,高电平进行读操作,低电平进行写操作。E端为使能端,后面和时序联系在一起。
12、 LCD1620的RAM地址映射及标准字库表。
LCD1602,总共显示为16行2列,对应着32个RAM地址,在使用的时候,需要在哪个位置显示,就写入对应的RAM地址,然后再写入需要的字符,对应就会显示该字符。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示LCD此时不忙,这时才能写指令和数据,否则此指令失效。要显示字符时要先输入显示字符地址(写指令),也就是告诉模块在,哪里显示字符,然后再写入需要显示的字符(写数据),才能够正常显示字符。下图是1602的内部显示地址,一共32个地址,对应2行16列。
标准字库表(CGROM):
这个ROM中固化了一些我们常用的ASCII字符以及部分日文字符的点阵数据,需要写入那个字符,就直接设置对应进制码就可以,比如大写的字母A,代码是0100 0001(41H) 与ASCII码一致。也就是表中的ASCII码字符的地址和实际的ASCII码字符是一样的。
13、 LCD1602读写操作。LCD1602分为读操作和写操作,其中读操作可以分为读状态和读数据,写操作可以分为写指令和写数据。
① 读状态: 读取LCD引脚状态,返回为状态字,D0-D6为当前LCD数据指针的地址 D7为是否允许读写操作(即检查LCD是否处于忙状态)。
② 读数据:读取D0-07内的数据。
③ 写指令: 写入LCD的控制指令,比如清屏,显示开关等。
④ 写数据: 写入需要显示的数据,比方说要显示字符a,就写入0100 0001(41H)。
⑤ 读状态的引脚电平:RS=L,RW=H,E=H 输出:D0~D7=状态字。
⑥ 读数据的引脚电平:RS=H,RW=H,E=H 输出:D0~D7的数据。
⑦ 写指令的引脚电平:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:无。
⑧ 写数据的引脚电平:RS=H,RW=L,D0~D7=数据,E=高脉冲 输出:无。
⑨ 以51单片机为例,D0-D7接到P0口 RW RW EN接到任意两个口。
Ø 读写操作的时序图如下:
Ø 读操作时序:
Ø 写操作时序:
我们来分析一下时序图,当我们要写指令的时候,RS置为低电平,RW置为低电平,EN置为低电平,然后将指令数据送到数据口D0~D7,延时tsp1,让1602准备接收数据,这时候将EN拉高,产生一个上升沿,这时候指令就开始写入LCD,延时一段时间,将EN置低电平。当我们要写数据的时候,RS置为低电平,RW置为高电平,EN置为低电平,然后将指令数据送到数据口D0~D7,延时tsp1,让1602准备接收数据,这时候将EN拉高,产生一个上升沿,这时候数据就开始写入LCD,延时一段时间,将EN置低电平。我们以51单片机为例,D0-D7接到P0口上,RW RW EN任意三个引脚,则写指令和写数据代码如下:
写指令代码如下:
写数据的代码如下:
14、 LCD1602的指令操作
LCD1602一共有11条指令,下面我们一一解读:
1602液晶模块的读写操作,屏幕和光标的操作都是通过指令来实现的。(1为高电平,0为低电平)。
① 指令1:清显示,指令码01H。
功能:光标复位到地址00H位置,LCD显示DDRAM的内容全部写入” “的ASCII码20H。
② 指令2:光标复位,光标返回到地址00H。
功能:光标复位到地址00H位置,LCD显示DDRAM的内容不变。
③ 指令3:光标和显示位置设置。
功能:I/D,写入新数据后光标移动方向,高电平右移,低电平左移,S:写入新数据后显示屏字符是否整体左移或右移一个字符,高电平表示有效,低电平表示无效。
④ 指令4:显示开关控制。
B(Blink):控制光标是否闪烁,高电平闪烁,低电平不闪烁。
⑤ 指令5:光标或显示移位
功能:SC=0,RL=0 :光标左移;SC=0,RL=1 : 光标右移;SC=1,RL=0时,字符和光标都左移;SC=1,RL=1时字符和光标都右移。
⑥ 指令6:功能设置命令
功能:DL:DL=1代表数据长度为8位,DL=0代表数据长度为4位;N:低电平时只有一行可以显示,高电平时两行都可以显示;F:低电平时一个字符大小为5X7的点阵字符,高电平时一个字符大小为5X10的点阵字符。
⑦ 指令7:CGRAM地址设置。
功能:LCD1602的CGRAM可以设置存储自定义字符,它共有6位,一共可以表示64个地址,即64个字节。一个5×8点阵字符共占用8个字节,那么这64个字节一共可以自定义8个字符。
⑧ 指令8:DDRAM地址设置
功能:指定DDRAM地址。
⑨ 指令9:读忙信号和光标地址
功能:BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。
⑩ 指令10:写数据到CGRAM或DDRAM指令。
⑪ 指令11:从CGRAM或DDRAM读数据指令。
功能:读取DDRAM或CGRAM中的内容。
15、 LCD初始化。
① 写指令38H:162显示,57点阵,8位数据口 (指令6)。
② 写指令0CH:开启显示屏,关光标,光标不闪烁 (指令4)。
③ 写指令0x06:显示地址地址加1,即写一个数据后,显示位置右移一位 (指令3)。
④ 写指令01H:显示清屏。
16、 C51超声波测距 :
① 超声波测距模块是用来测量距离的一种产品,通过发送和就接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。
② HC-SR04这个模块是2线制的(不包含电源线),Echo与Trig,Trig负责接收10us以上的触发信号,Echo则是输出距离信号;下面是时序图:
Ø 采用 IO 触发测距,给至少 10us 的高电平信号;
Ø 模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
Ø 有信号返回,通过 IO 输出一高电平;
Ø 超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;
③ 总的来说就是:控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。
④ greg接口定义:Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd。
⑤ 1602引脚说明:
Ø 引脚1(VSS/GND):地引脚;
Ø 引脚2(VDD/VCC):电源引脚;
Ø 引脚3(VL):液晶显示器对比度引脚,接正电源时对比度最弱,接地时对比度最高,使用时可以通过外接一个电位器调整其对比度;
Ø引脚4(RS):寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器;
Ø 引脚5(R/W):读(read)/写(write)信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当RS为高电平,R/W为低电平时,可以写入数据;
Ø 引脚6(E):使能端,当E端由高电平跳变为低电平时,液晶模块执行命令;
Ø 引脚7-14(D0~D7): 8位双向数据线 用于单片机向1602写入数据和从1602读取数据;
Ø 引脚15:背光源正极;
Ø引脚16:背光源负极。
智能小车问题分析总结 第2篇
首先购买所需各种器件 51板子,L298N ,超声波 ,红外, 蓝牙,再依次结合自己所定义的引脚将各个模块添加至小车上。随后逐个编写各个模块的代码丰富小车的功能,最后用蓝牙调控分别控制实现功能的切换。
1:首先了解各个引脚的定义,接线是否出现出错,电源的线驻接反就会出现导线迅速升温随后L298N以肉眼可见的速度冒白烟。
2:程序中定义的接线口出现连接错误也会使相关功能无法正常行驶。
3:同时会出现是否有硬件损坏导致小车功能无法正常运行的现象,此时可以将自身代码调试在同伴小车上,若小车正常行驶则有可能是硬件模块的问题。
4:当出现小车轮子转速过慢,调试PWM后依旧没有改变就要考虑是否为电池问题。
1:Delay中nop的删除会严重影响到超声波模块的实际应用。应当在代码初始添加函数定义。
2:较难理解的是超声波定时器计时的时间应该是超声波收到信号一直到信号传输完毕的时间段,不是信号发出一直到收到信号的时间。
3:使用蓝牙模块时一定要首先对蓝牙模块进行波特率的调试,如果波特率没有设备正确,AT命令是执行无效的。
4:最后用蓝牙调控分别控制实现红外寻迹和超声波功能时,可以单独在接收函数汇中设置变量以达到代码正常运行的效果。
智能小车问题分析总结 第3篇
通过这段时间的学习,我收获了很多,自己虽然已经学习过单片机,但是还有很多东西都不懂,导致一开始的第一天的课程刚开始感觉还好,可以跟上老师的节奏,但后来渐渐的便跟不上老师的节奏,遇到问题就要卡半天,需要很长时间才能解决。还有就是因为老师水平很高,讲解知识的速度很快,并且知识点很丰富,但是没有缓冲的过程,很难消化知识点。但是很喜欢动手,因为在动手过程中的学习会更好。如果在课上有没有解决的问题的话,我课后都会去观看老师发的视频,在学习第一次的时候就会感觉这些知识点理解起来也不是那么困难了,当你真正搞懂了一个知识点时,做出点东西来时,便会觉得很有成就感。除此之外,我的学习强度适中,跟得上老师的思路。仿真操作过程中虽然出现了一些问题,但在老师的积极指导下也能快速解决。
经过这几天的实训学习,让我深深体会到了自己在专业知识方面的欠缺和不足,也意识到了自己做为物联网工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄外,还必须具备良好的心理素质和动手能力。对这次实训,我深有体会。本次实训的任务是对自己专业的认识,通过老师的讲解与我们的实践相结合,近一步加深了我们对自己专业的认识。从而确定自己以后的努力方向。要想在短暂的实训时间内,尽可能多的学到东西,就需要我们跟老师或同学进行很好的沟通,加深彼此的了解。因为实训指导老师并不了解我们的学习能力和自己对专业所报的态度。这就需要我们跟老师沟通,让老师对我们有大体的了解,才可以对我们进行一些相关的指导工作。“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在这个过程中所讲的知识,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合达到更加完美。这次实训带给我太多的感触,它让我知道生活并没有那么轻松,。让我知道了在实际的动手操作过程并不像学习书本上的知识那样轻松。人非生而知之,虽然我现在的知识结构还很差,但是我知道要学的知识,一靠努力学习,二靠认真实践。没有实践,学习就是无源之水,无本之木。这次实训让我在一瞬间长大:我们不可能永远呆在象牙塔中,过着一种无忧无虑的生活,我们总是要走上社会的,而社会就是要靠我
智能小车问题分析总结 第4篇
通过此次实训主要锻炼了我们的理论和实践操作能力,把学习的理论知识运用于实践当中,并且让我们检验了书本上理论的正确性,有利于融会贯通。同时,也能开拓了我们的视野,完善我们的知识结构,达到实训锻炼能力的目的。实训是为了让我们对专业知识形成一个客观,理性的认识,从而不与社会现实相脱节。并且通过对实际开发的模拟训练,让我们把学到的知识点付诸实战,让我们最大程度的体验实际开发的流程,完成理论到认知的全过程。
智能小车问题分析总结 第5篇
①问题:编译没有.dex文件 。
解决方法: 勾选Creat HEX File。
② 问题: 按键控制七段数码管时,多个七段数码管上的数字乱跳;
解决方法: 借鉴老师写的代码,再对照自己写的,进行了一小点修改后,问题解决。总结来说,很喜欢动手过程,虽然有时候代码遇到问题,但是在寻找解决办法过程中,也欣慰自己又学到了一小点东西。
③ 问题:跟不上老师节奏,对知识点不理解。
解决方法:课后反复观看直播回放,跟随老师的讲解动手操作。
④ 问题:在控制小车向前、后退、向左、向右;LCD1602液晶显示屏实例,在实现小车运动实例中,遇到小车连接驱动,小车却没有动静。
解决方法: 后来和另外小组成员借用试了一下,成功了。