数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 769|回复: 3

[C51] 验证过的数组应用,用STC15F104W的P32脚实现摩尔斯码0-9的LED指示灯显示代码

[复制链接]
发表于 2024-12-28 08:42:34 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
初学单片机徘徊在点灯阶段,下一步进攻数码管


#include <reg51.h>
// 定义摩尔斯码数组,每个元素以分号结束
char* morse_codes[] = {
    "-----",    // 0
    ".----",    // 1
    "..---",    // 2
    "...--",    // 3
    "....-",    // 4
    ".....",    // 5
    "-....",    // 6
    "--...",    // 7
    "---..",    // 8
    "----."     // 9
};

// 定义点划的时间长度
#define DOT_TIME 600    // 点的时间长度,单位ms
#define DASH_TIME (DOT_TIME * 3) // 划的时间长度是点的三倍
#define SYMBOL_SPACE (DOT_TIME)   // 符号之间的间隔
#define DIGIT_SPACE (DOT_TIME * 7) // 数字之间的间隔

sbit LED = P3^2;  // 定义P3.2引脚为LED

// 延时函数,延时ms毫秒
void delay_ms(unsigned int ms) {
    unsigned int i, j;
    for (i = 0; i < ms; i++)
        for (j = 0; j < 123; j++);
}

// 发送点信号
void send_dot() {
    LED = 1;
    delay_ms(DOT_TIME);
    LED = 0;
    delay_ms(SYMBOL_SPACE);
}

// 发送划信号
void send_dash() {
    LED = 1;
    delay_ms(DASH_TIME);
    LED = 0;
    delay_ms(SYMBOL_SPACE);
}

// 显示一个数字的摩尔斯码
void display_morse_digit(char digit) {
    char* codes = morse_codes[digit];
    while (*codes) {
        if (*codes == '.') {
            send_dot();
        } else if (*codes == '-') {
            send_dash();
        }
        codes++;
    }
    delay_ms(DIGIT_SPACE);
}

void main() {
    unsigned char i;
    while (1) {
        for (i = 0; i < 10; i++) {
            display_morse_digit(i);
        }
        delay_ms(DIGIT_SPACE * 5);  // 一组数字后的间隔
    }
}

发表于 2024-12-30 11:50:30 | 显示全部楼层
devcang 发表于 2024-12-28 12:33
来点难度的

下次,试试将输入的嘀……嗒……模拟信号,转成数值

LM567,不知道好不好使
回复 支持 反对

使用道具 举报

发表于 2024-12-28 12:33:11 | 显示全部楼层

来点难度的

下次,试试将输入的嘀……嗒……模拟信号,转成数值
回复 支持 反对

使用道具 举报

发表于 2024-12-28 11:06:02 | 显示全部楼层
我自学单片机时做的第一个东西是棋盘格信号发生器,以前搞过电视维修。
看来楼主爱好无线通信
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-14 04:09 , Processed in 0.156000 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表