找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1286|回复: 2
打印 上一主题 下一主题
收起左侧

关于可任意拼接的开源模块化单片机开发系统设计的问卷

[复制链接]
跳转到指定楼层
楼主
ID:366559 发表于 2019-1-25 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我正在设计一个开源的模块化单片机开发系统,特点在于模块之间任意拼接,以及实现了事件机制(具体见问卷)
烦请各位做一下问卷,并希望大家提一些意见或建议
问卷:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:366559 发表于 2019-1-25 17:13 | 只看该作者
举个例子吧,运用这个系统可以做到:
读取一排8个按键,16*8点阵屏滚动显示,一排LED作音量条,蜂鸣器发声,几个RGB灯随机颜色

视频没法传,就只放代码了
单片机是AVR,型号ATmega16A

  1. #include <avr/io.h>

  2. #define LISTENER_ENABLE
  3. #include "mmds_led.h"
  4. #include "mmds_rgb.h"
  5. #include "mmds_mat.h"
  6. #include "mmds_bzr.h"
  7. #include "mmds_btn.h"

  8. uint8_t append_value = 0;
  9. void listener(void) {
  10.         static uint16_t freq[] = {DO_M, RE_M, MI_M, FA_M, SOL_M, LA_M, SI_M, DO_H};
  11.         switch(data_temp[1]) {
  12.                 case 0x00:
  13.                         append_value = 1 << (7 - data_temp[2]);
  14.                         BZR_set_freq(0x30, freq[data_temp[2]]);
  15.                         LED_rise(0x20);
  16.                         RGB_set_digital(0x22, get_random(1, 63));
  17.                         break;
  18.                 case 0x02:
  19.                         BZR_clear(0x30);
  20.                         LED_fall(0x20);
  21.                         RGB_clear_all(0x22);
  22.                         append_value = 0;
  23.         }
  24. }

  25. int main(void) {
  26.         I2C_init(0x10, I2C_FAST);
  27.         listener_init();
  28.         BTN_set_address(0x40);
  29.         BTN_set_listener(0x40, BTN_STANTARD, &listener);
  30.         enable_listeners();
  31.         while(1) {
  32.                 delay_ms(40);
  33.                 MAT_append(0x24, append_value);
  34.         }
  35. }
复制代码
回复

使用道具 举报

板凳
ID:366559 发表于 2019-1-25 17:13 | 只看该作者
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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