超级终端使用

  • 格式:doc
  • 大小:86.00 KB
  • 文档页数:18

下载文档原格式

  / 18
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有趣的串口之超级终端的玩法

题:有趣的串口之超级终端的玩法(基于51)

作:杜洋(doyoung)

时:2006年11月14日

源:

1. 导言

================================

本文为超级终端的应用总结文章,实验基于51单片机,对ARM和其它MPU同样适用。

某人,接听一位用户的电话,他问什么是超级终端。对于嵌入式系统开发工程师来说,问这个问题是

值的讨论的,我们应该不应该问这个问题呢?至少阅过本文您不会重蹈覆辙。

2. 了解超级终端

================================

在WINDOWS XP或是WINDOWS 2000操作系统下,在“「开始」菜单\程序\附件\通讯”目录下可以看到

“超级终端”。这是WINDOWS自带的通信终端工具,我们用它的串口通信功能。

在“文件/属性/连接到(选项卡)/连接时使用(项)”里设置 COM1(串口接啥就选啥),在“设置

...”里设置为“19200 8 无 1 无”。最后点击“呼叫/呼叫”行完事了。

好吧,没有介绍其它设备之前您是可以用超级终端自慰的(自己和自己玩)。将COM1串口的2、3引脚

短接(接错了把电脑搞炸了别找我),即是将发出的数据接收回来。在超级终端框里输入信息同样显示出

来,好像在用TXT记事本或是QQ聊天对话框一样。如果您这样玩的很开心那就不用再看下一节了,直到您

还想知道更有趣的知识。

3. 单片机平台建立

================================

断开串口COM1的2、3引脚吧,应该和单片机互动起来才有应用的价值。之前,我们要有一块拥有串口

功能的单片机实验板或是嵌入目标板,否则请您检查一下IE的地址栏,看看您是不是错输入了网址来到我

的博客,希望我的地址和黄色小说的地址字符并不接近。在百度里输入“单片机串口电路”,答案会挤进

您的眼睛里,那我就不费口水了。

全当您有了我们所需要的设备,在51的FLASH中写入下面的程序。在超级终端上会发现同样自慰的效

果。

---------

#i nclude

#i nclude

//BAUD SET == 19200 8 NOR 1 NOR

//主程序

void main()

{

unsigned char dat;

SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr

TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80; //SMOD=1;

TH1 = 0xFD; //Baud:9600 fosc=11.0592MHz

IE |= 0x90; //Enable Serial Interrupt

TR1 = 1; // timer 1 run

while(1)

{

if ( RI )

{

dat = SBUF; //接收数据 SBUF 为单片机的接收发送缓冲寄存器

RI = 0;

SBUF = dat; //发送数据

}

}

}

-----------------------

4. 有趣的功能

================================

向串口打印字符吧,应该是有趣的事了。您可以在超级终端上打出你想对女友说却又不敢说的话。还

可以把关键的字眼改变颜色、加亮或是闪烁显示,还可以用\n(换行)、\r(归位)、\x00(十六进制输

入)来设置一个美丽的图景。当然,这是大炮打蚊子,她看了不会感动的,就自己感动一下算了。

下面的程序里我用到了上面我提过的功能,有兴趣研究一下是一件好事,不然就看下一节。

#i nclude

#i nclude

void send_char_com(unsigned char ch);

void send_string_com(unsigned char *str);

void init_serialcomm(void);

void Delay(unsigned int a);

//串口初始化

void init_serialcomm(void) //btl == 19200

{

SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr

TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80; //SMOD=1;

TH1 = 0xFD; //Baud:9600 fosc=11.0592MHz

IE |= 0x90; //Enable Serial Interrupt

TR1 = 1; // timer 1 run

}

//串口接收中断函数

void serial () interrupt 4 using 3

{

if(RI)

{

unsigned char ch;

RI = 0;

send_string_com("\x0c");

//send_char_com(0x0c);

x_welcome (); //显示欢迎画面

x_menu ( );

}

}

//向串口发送一个字符

void send_char_com(unsigned char ch)

{

SBUF=ch;

while(TI == 0);

TI=0;

}

//向串口发送一个字符串,长度不限。

//应用:send_string_com("d9887321$");

void send_string_com(unsigned char *str)

{

while(*str != '\0')

{

send_char_com(*str);