波音の技术小课堂
时间:  
2016-03-15 00:00:00
  来源:  
自动化科学与工程学院
  作者:  

                                             我们迎来了波音航空俱乐部技术部的二轮培训。

640.webp (8).jpg

                                                     师姐耐心授课

640.webp (10).jpg

                                                      师兄悉心指导

640.webp (11).jpg

                                                         小鲜肉们专心地听讲

本次培训的回顾

件仿真,顾名思义。就是把我们从繁杂的电路焊(xi)接(du)中解放出来的一类软件。让我们能够越过硬件的搭建而直接查看程序的效果。

 

 

心动不如行动

 

 

 

请跟随我们的步伐走近仿真吧1.安装

 

 

通过度娘,我们很容易获取到 Protsus Pro 的安装文件与安装教程。推荐使用7.8版本。在这里我们不推荐使用汉化,因为可能会出现一些奇怪的错误。

 

 

2.新建一个画布

vv

询问我们是否需要载入示例项目,在这里我们暂时选No。

640.webp (1).jpg

进入软件之后,就会看到这样的界面。可以按下ctrl+S组合键对仿真工程进行保存。

 

 

3.添加元件

 

 

 

 

 

单击一下模型选择工具栏中的黑色指针图标(第一个),再双击元件列表的空白部分。在弹出对话框的左上角 Keywords 框中输入AT89C52,选择列表中的第一个并双击。此时,元件列表中就已经添加进了51单片机这个元件了

 

 

640.webp (2).jpg

按照相同的方法添加上电容、电阻、排阻(respack)、晶振(crystal)、按钮(button)。可在 keywords 搜索元件的英文名,或对应电容、电阻值。


Proteus 功能非常强大,不仅可以用于软件仿真,也可用于PCB制版。所以元件的命名大多由元件类型+封装+标值+误差得到。如果仅仅是仿真,那么我们关心的主要是标值。

 

 

4.绘制元件

首先我们在元件列表中单击一下你要绘制的元件。此时把鼠标移动到画布上,会变成一个铅笔型的指针。


 

 

 

 

在画布上单击一下左键,此时鼠标会粘上洋红色的元件轮廓图。

 

 

 

 

640.webp (3).jpg

 

 

此时让我们移动鼠标,把元件移动到想要的位置,再单击一下鼠标左键,一个元件就成功绘制到画布上啦!

640.webp (4).jpg

单击一下模型选择工具栏中的黑色指针图标(第一个),然后把鼠标移动到元件的引脚处,会变成绿色的铅笔。单击一下鼠标左键就可以开始连接线了。

 

 

5.绘制端口

细心的小伙伴们可能会问了,有的地方需要接VCC,有的地方需要接GND。画布上可没有电池盒,怎么办呢?不要着急,我们有“端口”来帮忙。


模型选择工具栏的第8个按钮(像标签一样)的图标 “Terminals Mode” 单击一下,元件列表会变成7个标签,我们选择POWER将电源端放置在需要接VCC的地方,放置方法和元件相同。放置完成后,双击放置好的端口,在弹出窗口中 String 方框内输入“+5V”或“VCC”。


相同的方法,我们也可以将GROUND端放置在需要的地方。同样放置好后,双击放置好的端口,在 String 方框内输入“0V”或“GND”。


更细心小伙伴们可能会问:“单片机好像没有VCC和GND的引脚怎么供电呢?” 仿真软件在设计时默认芯片是正常工作的,也就是电源已经接好,不需要我们来考虑了。是不是很人性化呢?


6.调试运行

 

 

 

 

 

按照上述方法绘制、连线后,就得到了这样一张最小系统版的工程。640.webp (5).jpg

 

 

 

 

怎样检测一下自己辛苦的劳动成果是不是正确的呢?别着急,我们先单击一下左下角“仿真控制”工具栏的“播放”按钮。此时会有一个类似编译的过程,检测元件之间的电气连接。双击“仿真控制”工具栏旁边的感叹号,可弹出一个提示消息框。若电路无误,则只有一个黄色叹号的警告 “No program cod loaded” 意思是我们还没有烧录程序进单片机。如果出现红叉,则是电路出现严重错误了,需要重新仔细检查。


那么,怎样烧录程序呢?原来做过最小系统版的小伙伴们肯定知道,烧录程序是非常考验我们小心脏的一个环节,那么对于仿真的烧录又是怎么样的呢?


烧写程序

对于 Proteus 仿真,程序的烧录非常轻松愉快。只需要双击画布上又大又美(雾)的单片机,就会biu~地弹出一个对话框,第四行的 Program file旁边有一个文件夹的小图标,单击她,选择我们要载入的.hex文件,烧写就完!成!啦!是不是超级简单呢!


接下来,我们就可以利用这块最小系统版,去做一些书上或者网上的实验啦,从流水灯、数码管、串口通讯,到液晶屏、总线协议等等的实验都可以用仿真来学习与测试程序哦!

下次培训的预告
信按照传统的理解就是信息的传输与交换。对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。没有通信,单片机所实现的功能仅仅局限于单片机本身,就无法通过其他设备获得有用信息,也无法将自己产生的信息告诉其它设备。如果单片机通信没处理好的话,它和外围器件的合作程度就受到限制,最终整个系统也无法完成强大的功能,由此可见单片机通信技术的重要性。UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用于单片机和电脑之间以及单片机和单片机之间的通信。

1.嗨!我的名字叫串口

并行通信时数据的各个位同时传送,可以实现字节为单位通信,但是因为通信线多占用资源多,成本高。比如我们前边用到的P0 = 0xfe;一次给P0的8个IO口分别赋值,同时进行信号输出,类似于有8个车道同时可以过去8辆车一样,这种形式就是并行的,我们习惯上还称P0、P1、P2和P3为51单片机的4组并行总线。


而串行通信,就如同一条车道,一次只能一辆车过去,如果一个0xfe这样一个字节的数据要传输过去的话,假如低位在前高位在后,那发送方式就是0-1-1-1-1-1-1-1-1,一位一位的发送出去的,要发送8次才能发送完一个字节。


 

 

 

 

在我们的STC89C52上,有两个引脚,是专门用来做UART串口通信的,一个是P3.0一个是P3.1,还分别有另外的名字叫做RXD和TXD,这两个引脚是专门用来进行UART通信的。

 

 

640.webp (6).jpg

 

 

单片机UART的串口通信

2.让我成为单片机的语言

两个单片机之间要通信,首先电源基准得一样,所以我们要把两个单片机的GND相互连起来,然后单片机1的TXD引脚接到单片机2的RXD引脚上,即此路为单片机1发送而单片机2接收的通道,单片机1的RXD引脚接到单片机2的TXD引脚上,即此路为单片机2发送而单片机2接收的通道。这个示意图就体现了两个单片机各自收发信息的过程。


当单片机1想给单片机2发送数据时,比如发送一个0xE4这个数据,用二进制形式表示就是0b11100100,在UART通信过程中,是低位先发,高位后发的原则,那么就让TXD首先拉低电平,持续一段时间,发送一位0,然后继续拉低,再持续一段时间,又发送了一位0,然后拉高电平,持续一段时间,发了一位1……一直到把8位二进制数字0b11100100全部发送完毕。这里就牵扯到了一个问题,就是持续的这“一段时间”到底是多久?从这里引入我们通信中的另外重要概念——波特率,也叫做比特率。


波特率就是发送一位二进制数据的速率,习惯上用baud表示,即我们发送一位数据的持续时间=1/baud。在通信之前,单片机1和单片机2首先都要明确的约定好他们之间的通信波特率,必须保持一致,收发双方才能正常实现通信,这一点大家一定要记清楚。

 

 

 

 

 

约定好速度后,我们还要考虑第二个问题,数据什么时候是起始,什么时候是结束呢?不管是提前接收还是延迟接收,数据都会接收错误。在UART串行通信的时候,一个字节是8位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位0表示起始位,然后发送8位数据位,数据位是先低后高的顺序,数据位发完后再发一位1表示停止位。这样本来要发送一个字节8位数据,而实际上我们一共发送了10位,多出来的两位其中一位起始位,一位停止位。而接收方呢,原本一直保持的高电平,一旦检测到来了一位低电平,那就知道了要开始准备接收数据了,接收到8位数据位后,然后检测到停止位,再准备下一个数据的接收了。

 

 

640.webp (7).jpg