引用

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 ( ) ;           
    }
}
------------

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

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

    nt 的 有趣的串口--之超级终端的玩法-2[转] 5. ASC II码表和转义字符 ================================     我们输入的显示字符都是ASC II的标准 ...

  2. 嵌入式 printf(\033[1;33m Hello World. \033[0m \n);有趣的串口之超级终端的玩法

    printf("\033[1;33m Hello World. \033[0m \n"); 颜色特效控制: printf("\033[1;33m Hello World. ...

  3. printf(\033[1;33m Hello World. \033[0m \n);有趣的串口之超级终端的玩法

    <pre name="code" class="cpp">颜色特效控制:printf("\033[1;33m Hello World. \ ...

  4. putty 串口暂停_win7系统中使用putty串口设置超级终端的方法

    我们在win7系统的使用中,有很多的小伙伴想要知道我们在win7系统电脑中使用putty串口的方法,putty串口是我们在设置我们电脑的设置超级终端的时候使用到的,很多的小伙伴还不会putty串口的使 ...

  5. CC2530串口控制LED灯奇怪玩法

    CC2530串口控制LED灯奇怪玩法 实验目的:CC2530用串口从上位机发送16进制命令代码来控制LED3.4.5.6并返回相应动作 文章目录 CC2530串口控制LED灯奇怪玩法 一.串口设置 二 ...

  6. 超级战墙伤害计算机制,《我的世界》超级战墙玩法心得分享

    <我的世界>是一款自由度极高的游戏,游戏当中有非常多的要素可以体验,游戏的玩法也是极其的丰富,当然游戏当中有一种超级战墙的模式玩法,非常的有意思,那么在这种玩法当中需要注意点什么东西,该怎 ...

  7. linux终端窗口玩法

    ctrl + shift + = 放大终端窗口的字体显示 ctrl + - 缩小终端窗口的字体显示 开启多个窗口(不在一个窗口) Ctrl + Alt + T Alt + n对应的就会切换到第n个终端 ...

  8. 微三国介绍及超级简单入门玩法

    微三国APP出来已经有一段时间了,看到群里每天都有人在晒收款图,这个项目大狗做了也有一段时间了,基本上是每天提现一次,现在平台赚钱方式比较简单每天看12个广告就享有分红及每天得6毛多,满1元即可提现到 ...

  9. 玩法与叙事撕裂许久,3A与暴力却难分难舍

    编注:原文出处为Polygon文章The Last of Us 2 epitomizes one of gaming's longest debates[1],谈及了TLOU2这部作品的特征及其对玩家 ...

最新文章

  1. html中section与div,如何在html中的section标签内包含div标签
  2. Nature Chemistry | 化学机器学习的最佳实践:推荐的一套标准化指南
  3. 非常好用的卸载软件——Geek Uninstaller【官网、介绍、使用演示(卸载“格式工厂”)、软件包下载地址(百度网盘)】
  4. js 手机端触发事事件、javascript手机端/移动端触发事件
  5. PowerBI 秒级实时大屏展示方案 全面助力双十一
  6. springboot 获取bean_3W 字的 Spring Boot 超详细总结
  7. 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!
  8. 一层循环时间复杂度_数据结构与算法系列——时间、空间复杂度
  9. mongodb自定义字段_mongodb为集合新增字段、删除字段、修改字段(转)
  10. mysql5.7.22的配置说明_mysql 5.7.22 免安裝版Windows配置
  11. .net2.0中对config文件的操作方法总结
  12. 代码评审 16.7.1
  13. linux磁盘分配最佳实践,干货再次来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载八)用命令实现批量添加用户...
  14. 威佐夫博弈(C语言)
  15. linux没有安装防火墙,Linux安装防火墙
  16. Heterogeneous Graph Attention Network翻译
  17. varclus变量聚类对变量有啥要求_「SPSS数据分析」SPSS聚类分析(K-均值聚类)软件操作结果解读...
  18. Kali + Win10双系统下的grub问题
  19. 如何用python实现地图定位_GPS 测试汇总和python GPS 导航地图实现
  20. python运维工具开源_开源运维自动化平台-opendevops

热门文章

  1. 微信公众号营销背后的技术
  2. game游戏学习网站
  3. 饥荒联机版专用服务器怎么修改小偷包,《饥荒》联机版怎么刷小偷背包 刷小偷背包技巧...
  4. Improving Language Understanding by Generative Pre-Training
  5. IntelliJ IDEA 常用设置(配置)吐血整理。首次安装必需
  6. FOJ Problem 1003 Counterfeit Dollar
  7. 论文翻译(10)--CASME2: A Database for Spontaneous Macro-Expression and Micro-Expression Spotting and Rec
  8. docker在centos上的使用
  9. php合成大西瓜,火遍全网的《合成大西瓜》到底什么来头?
  10. ServiceMesh的关键:边车模式(sidecar);又要开车了