四川师范大学成都学院电子工程学院课程设计报告
此过程是在Keil软件中编写双机通信的C语言程序,通过Keil软件验证程序的对错与否,在此基础上来改正,直至程序编写成功,并由此软件生成HEX文件,可通过此文件调试开发板,验证所做的双机通信是否成功。
4.2 仿真结果
通过Proteus进行仿真,将所生成的“.HEX”文件加载到已绘制好的Proteus原理图中,使Proteus与Keil真正连接起来,实现联合调试。调试结果如图所示:可以看到,接收端已将接受到的数据完整的显示了出来。按下“开始”后,数码管开始工作,仿真结果如附录所示。
5.设计总结
本次课程设计实现的是单片机双机串行通信的功能。在进行设计的初期,先查询了书本知识,了解了相关的原理之后,先进行了自发自收通信功能的设计,由于设计电路比较简单,而且程序也比较好懂,所以在原理方面没有遇到什么问题,主要的问题就是熟悉两个软件KEIL和PROTEUS的使用。
但是在后来调试实物的时候,由于单片机整块板子上面有许多可以利用的电路,所以为了方便,修改了一些程序,把输出显示接在了P0口,因为P0口与流水灯相连接,利用流水灯来完成相关的显示,刚开始的时候仿真总是不出来,后来才发现P0口没有自带的上拉电阻,所以在P0口加了上拉电阻之后,仿真开始正常进行。
在设计双机串行通信的功能时,由于根据题目的要求甲机发送而乙机接收,所以就选择做了单工通信的功能。对于显示电路来说,由于传送的是两位数据,所以选用了两个数码管进行显示。程序编程方面,刚开始在KEIL中进行编程生成.HEX文件时,总是生成不了,后来经过查询资料得知有可能是我装的软件不是破解版的,当进行短程序编程时可以正常进行,但是当程序比较长时,就不能生成.HEX文件。
还有就是程序运行正常之后,数码管的显示跳得太快了,根本无法捕捉到所有数据的显示,刚开始还比较迷茫,不知道该从哪个地方开始调,后来经过同学的帮忙,修改了单片机中的频率之后,可以清楚地看到接收的每一个数据。
经过本次课程设计,我知道了团队的力量,一个人是完成不了这么多的。我们不仅掌握了双机串行通信的相关原理和实现方式,还深化了对汇编语言中断程
10
四川师范大学成都学院电子工程学院课程设计报告
序设计的了解。其实,这整个课程设计不仅需要个人知识的储备,还需要在不断的实践中发现自己存在的不足。同时,与同学的交流不仅能让自己进步,有时候还能点醒自己在哪些方面做得不对,哪些方面需要改正。从这种实践课程我学到了从书本上学不到的知识,提高了我的实践能力和解决问题的能力。
6.参考文献
[1] 谭浩强.C语言程序设计[M].清华大学出版社,1999.12.125-142 [2] 杨恢先,黄辉先.单片机原理与应用[M].人民邮电出版,2009.7.234-256 [3] 朱定华.单片机原理与接口技术[M].电子工业出版社,2001.4.276-284
[4] 王威.HCS12微控制器原理及应用[M].北京航空航天大学出版社,2007.10.167-179 [5] 龚运新.单片机C语言开发技术[M].北京清华大学出版社,2006.10.145-163 [6] 胡洪波.单片机原理与应用实验教程[M].湘潭大学出版社,2009.7.68-83 [7] 汪道辉.单片机系统设计与实践[M].电子工业出版社,2006.5.89-104.116-135 [8] 李明,李君君.单片机原理与接口技术[M].大连理工大学出版,2006.5.89-104.116-135
11
四川师范大学成都学院电子工程学院课程设计报告
附录
附录一:元件清单
元件名称 单片机 电平转换芯片 数码管 电阻 晶振 电容 型号 AT89C51 Max232 八段LED RES CRYSTAL CAP 数量 2 2 1 4 2 12
12
四川师范大学成都学院电子工程学院课程设计报告
附录二:源程序
1. 主机发送程序
#include
={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //定义数码表 uchar i,sum; //定义变量 int j;
main() //主程序 { init(); send(); }
void init(void) //程序初始化 { EA=1; //开CPU中断 ES=1; //允许串行口中断 TMOD=0x20; //设定时器T1为方式2 TH1=0xfd; //赋初值 TL1=0xfd;
PCON=0x00; //令SMOD=0波特率不倍增 SCON=0x50; //串行口为方式1 TR1=1; //启动T1 }
void send(void) //发送子程序 {do
{ SBUF=0xaa; //主机送AAH给从机 while(!TI); //等待一帧发送结束 TI=0; //发送完后清零
13
四川师范大学成都学院电子工程学院课程设计报告
while(!RI); //等待一帧接收结束 RI=0; //接收完后清零 }
while((SBUF^0xbb)!=0); //等待从机回答,返回BBH后继续 do { sum=0; // for(i=0;i<=15;i++)
{ SBUF=TAB[i]; // sum+=TAB[i]; // while(!TI); TI=0;
}
SBUF=sum; // while(!TI); TI=0; while(!RI); RI=0;
}
while(SBUF!=0); //}
2. 从机接收程序
#include
void delay(int ); //void receive(void) ; void init(void); uchar i,sum;
清校验和 主机发送数据 求检验和 发送校验和 等待
头文件 定义数据类型 定义子程序 14
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的双机通信程序设计课程设计报告 _大学论文(3)在线全文阅读。
相关推荐: