两个单片机串行通讯与仿真..doc
文本预览下载声明
两个单片机串行通信
与非网网站首页| 更新于2009-04-23 08:09:22
在某控制系统中有甲、乙两个单片机,甲单片机首先将P1口指拨开关数据载入SBUF,然后经由TXD将数据传送给乙单片机,乙单片机将接收数据存入SBUF,再由SBUF载入累加器,并输出至P1,点亮相应端口的LED。
4.12.1 硬件设计
在桌面上双击图标,打开ISIS 7 Professional窗口。单击菜单命令“File”→“New
Design”,新建一个DEFAULT模板,保存文件名为“两个单片机串行通信.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“Library”→“Pick
Device/ Symbol”,添加如表4-12所示的元件。
表4-12 两个单片机串行通信所用的元件
在ISIS原理图编辑窗口中放置元件,再单击工具箱中的“元件终端”图标,在对象选择器中单击“POWER”和“GROUND”放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计,如图4-39所示。
图4-39 两个单片机串行通信电路图
在此电路中采用了总线及总线分支线。绘制总线的步骤如下:
(1)将光标靠近一个对象引脚末端,该处自动出现一个“”,单击左键。
(2)拖动鼠标,在合适位置双击鼠标左键,画出一条直线。
(3)如果该线为单线,要设置为总线时,先选中该线,右击鼠标,弹出菜单,选择“Edit Wire Style”项,再在弹出的对话框的“Global
Style”下拉列表中选择“BUS WIRE”。
绘制总线分支线的步骤如下:
(1)将光标靠近一个对象引脚末端,该处自动出现一个“”,单击左键。
(2)拖动鼠标,在靠近总线合适位置双击鼠标左键,画出一条直线。
(3)将光标靠近该直线末端,该处自动出现一个“”,单击左键。
(4)拖动鼠标,同时按住Ctrl键,在总线出现一个“”时单击左键,就画好一条总线分支线。
在工具箱中单击图标,再在总线或各分支线上单击鼠标左键。在Label页的“String”项中键入相应的线路标号,如总线为AD[0..7](表示有AD0~AD7共8根数据线),分支线为AD0、AD1等。
4.12.2 程序设计
1. 程序流程
两个单片机串行通信程序流程如图4-40所示。
图4-40 两个单片机串行通信程序流程
2. 汇编源程序
1)单片机1的汇编源程序
2)单片机2的汇编源程序
3. C语言源程序
1)单片机1的C语言源程序
2)单片机2的C语言源程序
4.12.3 调试与仿真
打开Keil程序,执行菜单命令“Project”→“New Project”创建“两个单片机串行通信”项目,并选择单片机型号为AT89C51。
执行菜单命令“File”→“New”创建文件,输入汇编(或C语言)源程序,保存为“两个单片机串行通信.ASM”或“两个单片机串行通信.C”。在Project栏的File项目管理窗口中右击文件组,选择“Add
Files to Group Source Group1”,将源程序“两个单片机串行通信.ASM”(或“两个单片机串行通信.C”)添加到项目中。
执行菜单命令“Project”→“Options for Target Target 1”,在弹出的对话框中选择“Output”选项卡,选中“Create
HEX File”。在“Debug”选项卡中,选中“Use:Proteus VSM Simulator”。
执行菜单命令“Project”→“Build Target”,编译源程序。如果编译成功,则在“Output
Window”窗口中显示没有错误,并创建了“两个单片机串行通信.HEX”文件。
在已绘制好原理图的Proteus ISIS菜单栏中,执行菜单命令“Debug”→“Use Remote Debug
Monitor”将该项选中,使Proteus与Keil真正连接起来,使它们联合调试。
在Keil中执行菜单命令“Debug”→“Start/Stop Debug Session”,或直接单击图标,进入Keil调试环境。同时,在Proteus
ISIS窗口中可看出Proteus也进入了程序调试状态。
在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需要设置断点语句的空白处双击鼠标左键,可设置断点;再次双击,可取消该断点。
设置好断点后,在Keil中按F5键运行程序。在拨动U1单片机输入开关,改变开关值时,U2单片机相应的LED显示。运行结果如图4-41所示。
图4-41 两个单片机串行通信的运行结果
显示全部