南昌航空大学单片机之间RS-232串行通信的实现(4)

2019-05-27 21:10

第五章 结论

本次设计是通过两块简单的89C51单片机实现信息的串口通信。在设计过程中,通过查找资料了解了双机通信背景,从熟悉串口通信的原理,到掌握具体串口通信在双机之间的实现,从硬件电路设计到程序编写,一步步加深了自己对单片机的理解,从硬件调试到软件模拟实现等过程中,收获不少东西,也遇到了不少的问题。比如对于单片机知识不够透彻,对内容的掌握不够,缺乏灵活运用的能力,对于知识的扩展也存在一定的问题,因此,刚开始面对设计课题,感觉自己无从下手。其次,硬件设计过程中,I/O口的扩展,外部ROM的扩展,对于芯片的选择,软件编写时,对于某些指令的功能,功能模块的连接,芯片地址选择等都遇到了很大的障碍,不过在老师以及同学的帮助下得到了解决。另外,设计中犯了一些常识性的错误,对设计进程造成了一定的影响。例如,程序调试时,由于粗心,在写程序时,将0(零)和字母O混淆,还有中文标点符号和英文标点符号混淆等。这样的错误很难发现,以至于花费了很多时间。

短暂的单片机学习,有种意犹未尽之感,在这次课设中,加深了单片机相关知识的理解,之前的模棱两可已经不存在,这种感觉很好。由于自身水平有限,本次报告还有许多部分未能详细分析,在此仅作简单了解和认识。

本文采用的RS-232标准实现单片机与单片机之间的串行通信。RS-232是目前最常用的一种串行通讯接口。由于RS-232-C接口标准出现较早,难免有不足之处。

主要表现在:

1、接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不容,故需使用电平转换电路才能与TTL电路连接。

2、传输速率较低,在异步传输时,波特率为20Kbps。

3、接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地 传输容易产生共模干扰,所以抗噪声干扰性弱。

4、传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米 左右。

因此建议使用RS-485标准实现,RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等优点就使其成为首选的串行接口。

12

参考文献

[1] 马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,2003

[2] 杨子文.单片机原理及应用.西安:西安电子科技大学出版社,2006. [3] 郭惠 吴讯著 单片机C语言程序设计.北京:电子工业出版社2008 [4] 谭浩强. C程序设计.北京:清华大学出版社,2009.

[5] 孙近平 张大鹏著 51系列单片机原理、开发与应用实例.北京:中

国电力出版社,2009

[6] 张先庭.单片机原理、接口与C51应用程序设计.北京:国防工业出版社,2011.

[7] 陈涛著 单片机应用及C51程序设计.北京:机械工业出版社,2011

13

附录

1.主机程序清单

#include //包含头文件 Unsigne char TAB[16]

={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xf9,0xa4,0xb0,0x99,0x92};

#define KEY P1 unsigned char temp;

unsigned char pre_keyno = 16,keyno = 16; void key_scan(void);

void delay(unsigned int x) {

unsigned char i; while(x--) {

for(i = 0;i < 120;i++); }

}//字符发送函数

void putchar(unsigned char data1) {

SBUF = data1; //将待发送的字符送入发送缓冲器 while(TI == 0); //等待发送完成

14

TI = 0; //发送中断标志请0 }

void date_output(unsigned char date) {

putchar(date);

}//主函数 void main(void) {

unsigned char c = 0;

SCON = 0x50; //串口方式1 ,允许接收 TMOD = 0x20; //T1工作于方式2 PCON = 0x00; //波特率不倍增 TL1 = 0xfd; //波特率设置 TH1 = 0xfd; //

EA = 1; //开总中断 ES = 1; //开串口接收中断 TR1 = 1; //定时器开启 delay(200); delay(50); while(1) { while(1) {

P1 = 0xf0;

if(P1 != 0xf0) //扫描键盘获得按键序号 {

key_scan(); }

if(pre_keyno != keyno) {

15

date_output(TAB[keyno]);//显示,共阳极段码取反作为共阴极段码 } } } }

void revdata(void) interrupt 4 {

if(RI == 0) { //P1 = 0x00; return;

} //如果没有接收中断标志,返回 ES = 0; //关闭串口中断 RI = 0; //清串行中断标志位 temp = SBUF; //接收缓冲器中的字符

ES = 1; //开启串口中断 }

void key_scan(void) {

unsigned char i; //高4位置1,放入4行 KEY = 0x0f; delay(1);

//有键按下后,其中一列将变为低电平 i = KEY^0x0f;

//判断按键发生在哪一列 switch(i) {

case 1: keyno = 0;break;

16


南昌航空大学单片机之间RS-232串行通信的实现(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:汽机监理实施细则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: