单片机原理及应用 实验
报告
姓名: 何 国 焕学号 63110604020
4班级: 通信工程 专业 11 级 2 班
指导教师:许强
单 片 机 原 理 及 应 用 实 验 报 告
实验项目名称: 双单片机串口通信实验
实验日期: 2013.12.10实验成绩:实验评定标准:
一、实验目的
掌握单片机串口通信的设计方法,了解双单片机通信的原理。
二、实验器材
装有Keil和proteus的计算机一台
三、实验内容
已知8051的串行口采用方式1进行通信,晶振频率为11.0592MHz,选用定时器T1作为波特率发生器,T1工作于方式2,要求通信的波特率为9600,计算T1的初值。设SMOD=0,根据式定时方式:X=M-要求的定时值/(12/fosc),计算T1的初值如下:X=28-11.0592*106/9600*32*12=253=FDH
选用11.0592MHZ晶振的目的就是为了使计算得到的初值为整数,选用定时器T1工作于方式2作为波特率发生器,只需要在初始化编程的时候,将计算得到的初值写入TH1和TL1,当T1溢出时会自动重新装入初值,从而产生精确的波特率真。如果将T1工作于方式0或方式1,则当T1溢出时需要由中断服务程序重装初值,这时中断响应时间和中断服务程序指令的执行时间将导致波特率产
生一定的误差。因此采用T1作为串行口的波特率真发生器时,通常都将T1设置为工作方式2。
四、实验步骤
打开Keil程序,执行菜单命令“Project
New Project”创建“双单片机串口通信”项目,并选择单片机型号为AT89C51。
执行菜单命令“File”“New”创建文件,输入源程序,保存为“双单片机串口通信.A51”。在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group ‘SourceGroup1’”将源程序“双单片机串口通信.A51”添加到项目中。
执行菜单命令“Project”“Options for Target ‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。执行菜单命令“Project”“Build Target”,编译源程序。如果编译成功,则在“OutputWindow”窗口中显示没有错误,并创建了“双单片机串口通信.HEX”文件。
在proteus仿真平台上建立参考图系统,并将程序上载到虚拟芯片上运行。
五、实验结果及分析
上图是此次实验的仿真结果,按照实验要求也取得了理想的结果,实验是验证性实验,因此,只要认真编程并正确连线,都能得出理想的预期的实验结果,不过在实验中还是遇到了大大小小的问题,究其原因,一方面是代码输入有误,造成实验调试过程中的编码报错。另外,在输入时有标点不小心用到了汉语的符号只出现警告,但加载过程不能正确执行。也就是说验证性实验一定要认证仔细的输入代码,否则会得不偿失。还有就是要正确使用芯片,因为各种牌子芯片都有很多型号,选择芯片出了问题,同样不能得到预期结果,还有就是连线时一定要注意各引脚正确连线,只有连线正确,引脚才能发挥相应功能实现实验要求的理想结果。