混响电路设计.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
混响电路设计

51单片机的调音台混响控制电路[声明:] ? ? 由于本文内容过于简单,因此只供 51 编程初学者参考,高手请飘过。。。 [正文:] 上午一个朋友打电话说收了个调音台, 数码混响电路坏了, 一片M65831数码混响IC和一片89C2051控制电路烧得发黄, 更换M65831后混响固定为500mS, 无法调节。 随后发了个图纸给我, 简单分析后发现电路并不复杂, 89S2051接受两个按键的控制信号, 进行增减计数并显示在数码管上, 同时输出控制信号(D1~D4)给M65831以控制混响时间。 每次设置值改变后都送入一片24C08保存。 网上查到了M65831的手册, D1~D4其实就是对应0~16的二进制步进数值。 鉴于该电路比较简单, 重新编程的过程比较适合初学者参考, 因此挖个坑, 把重写过程开源供大家参考。 [未完待续] [ 本帖最后由 DreamonII 于 2008-12-1 14:53 编辑 ]电路虽简单,但需要控制的部件还挺多的。。。 ? ?·控制7段数码管,显示 0~9,A~F 共 16 个字符; ? ?·检测两个键的状态,我理解为一键增,一键减,再加个功能:两键同时按为清 0; ? ?·读写24C01(SDA,SCK); ? ?·控制M65831混响时间(D1~D4 计数输出)。 老规矩,逐一解决然后整合。 注意:以下代码采用 Keil C51 编写,直接在贴子里边想边写,未测试,写完后再统一调试。 为书写方便,习惯性定义两个类型: #define uchar unsigned char #define uint??unsigned int 复制代码 由图中可以看出各控制端口的功能定义: #define LED? ? P1? ? // 其中 P1.0 用作读取键信号,输出恒为 1; #define CTRL? ?P3? ? // 仅使用P3.0~P3.3作控制输出 sbit KEY_1 = P1^0;? ? // 向上键 sbit KEY_2 = P3^7;? ? // 向下键 sbit SCK? ?= P3^4;? ? // IIC 串行时钟,用于读写 24C08 sbit SDA? ?= P3^5;? ? // IIC 串行数据,用于读写 24C08 uchar value;? ?? ?? ? // 定义一个变量,用于保存混响值 复制代码 还不知道会不会有问题,先写着,出错再改。。。 再来看数码管显示控制。 一提到 51 控制数码管,第一反应就是查表。 定义显示表并不是容易的事,费时费力, 好在我有先见之明,很早前就写了51LED 代码生成器。。。 对照图中接法逐一设置端口与笔段对应关系, 注意,由于采用了共阳接法(所有笔段都是低电平点亮), 因此要勾选“反相”复选钮。 设置好了,点“常用字符集”按钮, 生成了 0~F 共 16 个数字和一个“-”, 再点一下“生成源码”按钮,码表生成好了。。。 uchar code table[17]={0x03, ? ? ? ? ? ? ? ? 0xcf,0x25,0x85,0xc9,0x91, ? ? ? ? ? ? ? ? 0x11,0xc7,0x01,0x81,0x41, ? ? ? ? ? ? ? ? 0x19,0x33,0x0d,0x31,0x71, ? ? ? ? ? ? ? ? 0xfd}; 复制代码 [待续] [ 本帖最后由 DreamonII 于 2008-12-1 16:43 编辑 ] LED_CODE.PNG (14.49 KB) 下载次数:5 2008-12-1 13:50 再看看怎么查表显示。。。 // 在 LED 上显示数字 void Display(uchar ch) { ? ? LED = table[ch] | 0x01;??// 查表显示。保持 P1.0 为高,以读取键值 } 复制代码 什么???? 就这么简单??? 是的啊。。。 不然还能怎么样呢??? IIC操作参见 /viewthread.php?tid=75943extra=page%3D4 我的程序中写的有错误,不更正了。。。 [未完待续]再来看看我们伟大的主要功能:混响时间控制。。。 // 向 M65831 发送控制信息 void DelayCtrl(uchar val) { ? ? uchar temp; ? ? temp = CTRL 0x0f;? ? // 保存非控制信息,并清除控制位 ? ? temp |= (val 4);? ? // 合并控制数据 ? ? CTRL = temp;? ?? ?? ???// 这就完了。。。 } 复制代码 好象还差点什么。。。。 哦,对了,键“盘”。。。 就两个键,这事好办了。。。 放在主函数 main() 里查

文档评论(0)

haocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档