有趣的串口--之超级终端的玩法-1[转]

本文介绍了如何使用Windows的超级终端进行串口通信,特别是与51单片机的交互。通过短接串口线实现自环测试,并提供了51单片机的串口程序示例,展示了向串口发送字符和控制显示的基本操作。超级终端不仅可以用于简单的字符收发,还能实现颜色、样式控制,甚至创建简单的图形效果。
摘要由CSDN通过智能技术生成

 引用

nt有趣的串口--之超级终端的玩法-1[转]

题:有趣的串口--之超级终端的玩法(基于51)
作:杜洋 (doyoung)
时:2006年11月14日
源:doyoung的手记(http://doyoung.blog.ifeng.com/)
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中写入下面的程序。在超级终端上会发现同样自慰的效
果。
---------
#include <AT89X51.h>
#include <string.h>
//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(十六进制输
入)来设置一个美丽的图景。当然,这是大炮打蚊子,她看了不会感动的,就自己感动一下算了。
    下面的程序里我用到了上面我提过的功能,有兴趣研究一下是一件好事,不然就看下一节。
#include <AT89X51.h>
#include <string.h>
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);
         *str++;
        }
*str = 0;
}
//欢迎画面(启动时显示)
void x_welcome ( void )
{
send_string_com("\x0c\n\r\033[1;34m");
send_string_com("欢迎使用串口控制平台          ");
send_string_com("\n\rby DoYoung V1.0 2006.11.11");
}

//
void x_menu ( void )
{
send_string_com("\n\n\r\033[1;31mUART> \033[1;30m");
send_string_com("请输入功能序号:        ");
send_string_com("\n\r\033[1;31mdoyoung> \033[1;30m");
}

void x_run ( void )
{
send_string_com("\b\x5c");
Delay(200);
send_string_com("\b|");
Delay(200);
send_string_com("\b/");
Delay(200);
send_string_com("\b-");
Delay(200);
}
void Delay(unsigned int a)
{
unsigned char i;
while( --a != 0)
{
   for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
}          //i 从0加到125,CPU大概就耗时1毫秒
}
//主程序
main()
{
init_serialcomm(); //初始化串口
x_welcome (); //显示欢迎画面
x_menu ();
    while(1)
    {
x_run ( ) ;           
    }
}
------------
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值