云鼎国际娱乐DS太阳城棋牌: [MM32软件] 【MM32 eMiniBoard测评报告】+通过点灯传递摩尔斯码

金威娱乐开户导航
80|1
楼主
昨天收到板子后,一直想先写一篇关于点灯的测评、逛了一遍论坛后发现大家都已写了这方面的内容。普通的点灯、流水灯呼吸灯等等,花样繁多。我在想怎样写才能有新意呢?看着一部老电影忽然想到可以通过点灯传递摩尔斯电码。于是寻找这方面的资料,编写这个例程。
一、摩尔斯码的规则
摩尔斯码是由点(DOT)和划(DASH)为基本单元组成的一套编码。这套编码包含26个字母、10个数字以及一些特殊符号。如下图所示:

其中点为基本时间单元,即为1t;而划的时间长度为点的3倍,记为3t;点划之间需要停顿1t的时间;字母之间需要停顿3t的时间;单词之间需要停顿7t的时间、
二、用C描述摩尔斯码
首先定义两个结构体:
typedef struct
{
        char character;
        unsigned char str[6];
}Morse_Table;

typedef struct
{
        char character;
        unsigned char len;
        unsigned int code;
}Morse_Code_Table;

通过const Morse_Table tablel[TABLE_LENGTH]定义一个存储在FLASH中的字符-摩尔斯码对应表,例如字符A:{ 'A', { DOT, DASH, '\0' } }。然后通过Morse_Code_Table code_tablel[TABLE_LENGTH]定义一个开始运行后的字码翻译表。在Morse_Code_Table中,code用于表示将DOT、DASH翻译成机器可以识别的编码。编码中1表示接通,0表示停顿。之所以使用unsigned int,是由于其有32bit位,相较于数组,既节省空间也有足够的长度可供实用。
三、运行
开机运行MorseCode.c中的Test函数时,先通过Transfer_Morse_Code(tablel, code_tablel);将编码表转换。

然后运行Transfer_String(string1, string2);将预定的字符串翻译。其实主要是在字母中插入停顿符“|”。
之后通过Beep_State(string2);获取相应的状态控制直到字符串末尾输出0xFF为止。


代码如下: MM32L073.zip (306.36 KB, 下载次数: 1)
沙发
 楼主 | 2020-5-21 22:35 | 只看该作者
通过改变delay_ms的参数可以改变单位时间的长短,云鼎国际娱乐DS太阳城棋牌:即DOT和DASH的时间长度,从而控制发码的速度。
以程序规定的300ms时间计算,发完“Hello 21ic”这个字符串需要约35秒。
最后吐槽一下,由于拍摄的视频有69M,想多压缩包上传居然不行。建议论坛以后允许多压缩包上传,不然上传文件受限太麻烦了。大家只能下程序进板子里看效果了。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

金威娱乐开户导航 永利游戏开户直营 返回顶部 返回列表
申博太阳城游戏进不去游戏导航 y8.cc永利娱乐网址 海立方EB易博馆计划群大全 太阳城金星电子游戏手机客户端下载网上娱乐场 k8凯发娱乐手机app
t6棋牌官网 乐橙FG 同升国际棋牌外围 新锦江真人棋牌 大丰收YG电子
七彩MG电子 十三张娱乐开元棋牌 优博EB棋牌 永昌棋牌app 欧洲娱乐棋牌app
澳门黄金城登入 sb119.com www.588suncity.com 心水博真人棋牌 一号庄娱乐MW电子