找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6624|回复: 2
收起左侧

基于PIC32的激光电子琴制作

[复制链接]
ID:99624 发表于 2015-12-25 04:29 | 显示全部楼层 |阅读模式
这里是视频演示:给力队友弹奏演示(没有学过音乐,弹得丑了点)


  本来这可以几周内做好的作品,但由于元件的采购,学业的压力,还有的是那份惰性,导致了它的难产。正好元旦放假,寝室的该找妈的都回去找妈了,找不成妈的也找...(你懂得)。也好一个人在寝室清静清静,没有复杂的氛围来左右我自恋的给它拍个照了。
      完成后效果图:

只能说激光在平常条件下是难以看到的,所以为了显示效果故意放了个三角尺高手别介意。

这都是我们组员设计的外包装,还算可以吧简单朴素。

好了,开始来干货了,以下内容可能会让你感到不适,眩晕,鄙视,请你选择性略过。
首先要拟好硬件的电路图,才能确定要采购的元器件。

图太大了,先看个大概的情况,稍后附件里添加DSN电路图文件,慢慢仔细看看,这是最小的系统框图,考虑到我们发的试验开发板,左边一列的AN1AN2AN3已经连接好了按键,就先不动它,PGD1PGC1为程序代码烧录端口写的程序就通过这个烧录进单片机的。OSC1OSC2连接的是外部晶振8MHz,就像心脏一样维持着单片机的运行。

通过图片可以看到我们还有4个可用的引脚RB2RB4RA4RB5.本来RB4RA4是用来接辅助晶振的我们用不到就可以去除了。留下尽可能多的引脚口,毕竟至少要有7根弦吧,对于我们的开发板来说就要手动的做些硬件上的改动了。

好,现在细说我们这块开发板硬件的改动,非本次赛课计划的可以忽略以下内容了。
关于辅助晶振的改动已经说了是为了多留出两个引脚端口。关键是左侧的四个电阻的去除,这尤为重要,关系到写入程序后是否能正常运行,两个电容也是防止按键电压不稳。还有添加芯片左右两侧的排针,背面的上拉电阻,硬件改动就这些了。

   可见这个连接口可谓是错综复杂,有按键的端口引脚还有OC1PWM1)共用。OC1(PWM1)输出不同频率的方波从而通过扬声器器发出不同的音调,而按键是否按下需要单片机时刻检测电平的变化信号,方波通过电阻R1影响AN1端口的电平,导致无法正常的检测按键的电平。所以要OC1就不能用按键1,反之亦然,就必须把中间连接的电阻R1去掉,但是去掉电阻后按键的电压会不稳定,注意R3及以上部分是我后来加上去的上拉电阻,加上上拉电阻后电压就稳定了。
   硬件的背面按键上拉电阻:

背面多加了两个电阻接到高电压,老师是将左侧(正面看)的2,7上拉的电阻,由电路图可以看出,是选择的按键AN1和按键AN4。我个人就直接把AN1AN2上拉电阻了方便,当然对应老师给的代码也需要修改小部分。

回归大众,我们继续来看看还有那些端口可用。

   图中已经说了SCLK,SLCK,SDO接数码管芯片,为了简单就不用再叙述数码管的连接方式了(又是一个伤脑筋的东西)。对于我们开发板来说还可以用的引脚有RB10,RB11,RB13.加上之前的四个看7个引脚够了,如果还嫌少可以把按键的引脚也拿来用用。RB7定义为PWM从而输出波形,通过三极管S8050放大电流由发声器发出声音。

    已经可用的RB2,RB4,RA4,RB5RB10,RB11,RB13,七个端口就可以接光敏电阻或者激光接收器(推荐)了,在通过写入程序检测七个端口电压从而发出不同的音调。
   
看一下实验的电路图吧,前方多图高能预警。


   图中由于是实验性质的,所以并没有接光敏电阻这么高级的东西,就是把7个端口引出来,通过电阻与高电平相连,然后引出一条相对地线,依次接触七个端口就会使接触的那个端口电压变低,一样的效果也会发出对应的声音。


   比对电路原理图,所引出的7个的端口如图所示,第几个可要对清楚,例如1(DO)是左侧第6个端口,2(RE)是第11个端口。

接上激光和激光接收器后乱如麻的线路:

以下放送外壳的加工,队友给力呀,没什么可多说的了,看图吧







   就此结束了,结果还可以吧,程序(老师给好的)见附件下载吧,有一些注释,结合我前几篇的基础讲解应该可以看懂吧,也可以试着修改看看多加几根弦如何(发现没我是9根弦)?


难得有心情,再完善一下,更新下最新作品,隔得时间有点久了.....   贴上最新作品制作过程(2015年6月版)
框架定型




刚开始的棺材板一般的造型,后来淘宝换材料,记得是端午节刚到然后当天加工好,第二天就交作品了(真悬)
















  1. #include "DZQConfig.h"

  2. //按键和显示
  3. //显示:RB8-RB9-RB15
  4. //按键:RA0-RB3
  5. //说明:RB15-SPI的CLK时钟信号;RB8-SPI的SDO数据信号;RB9-SPI的LCK数据锁存信号
  6. //     AN1-RA0;AN4-RB3
  7. void InitKeyDisp(void)
  8. {
  9.     SpiOpenFlags oFlags;
  10.     oFlags = SPI_OPEN_MSTEN | SPI_OPEN_CKP_HIGH | SPI_OPEN_MODE8 | SPI_OPEN_ON;        
  11.     SpiChnOpen(2, oFlags, 6);
  12.     PPSOutput(2, RPB8, SDO2);
  13.     PORTSetPinsDigitalOut(IOPORT_B, BIT_9);

  14.     PORTSetPinsDigitalIn(IOPORT_A,BIT_0);
  15.     PORTSetPinsDigitalIn(IOPORT_B,BIT_3);
  16. }
  17. // 对定时器1进行初始化
  18. void InitTimer1(void)
  19. {
  20.     OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_1, PERIOD);
  21.     INTEnable(INT_T1, INT_ENABLED);
  22.     INTSetVectorPriority(INT_TIMER_1_VECTOR, INT_PRIORITY_LEVEL_2);
  23.     INTSetVectorSubPriority(INT_TIMER_1_VECTOR, INT_SUB_PRIORITY_LEVEL_0);

  24. }
  25. // 对蜂鸣器进行初始化
  26. // PWM1-RB7
  27. // 说明:48MHZ系统频率,4分频为12MHZ,使用定时器2产生
  28. //       200HZ对应周期值为60000,2KHZ对应6000;
  29. void InitBeep(void)
  30. {
  31.     OC1CON = 0x0000;
  32.     RPB7Rbits.RPB7R = 0b0101;       // PWM1-RB7
  33.     OC1RS = 0;                  // 占空比
  34.     PR2 = 60000;                    // 周期
  35.     OC1CON = 0x0006;                // 配置位PWM模式
  36.     OC1CONSET = 0x8000;             // 使能PWM1
  37.         T2CONSET = 0x8020;              // 使能定时器2和4分频48MHZ/4 = 12MHZ
  38. }
  39. //对激光接收管进行初始化
  40. void InitInput(void)
  41. {
  42.     u32 in=0;
  43.     in = in | BIT_2 |BIT_4 |BIT_5 |BIT_10|BIT_11|BIT_13|BIT_14;
  44.     PORTSetPinsDigitalIn(IOPORT_B,in);

  45.     // 其他没用的引脚配置成输出,并输出为低
  46.     PORTSetPinsDigitalOut(IOPORT_A,BIT_1|BIT_4);
  47.     PORTClearBits(IOPORT_A, BIT_1|BIT_4);
  48. }

  49. // 系统硬件初始化
  50. void BSP_Init(void)
  51. {
  52.     SYSTEMConfig(PERIOD, SYS_CFG_WAIT_STATES |SYS_CFG_PCACHE);
  53.     INTDisableInterrupts();
  54.     INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);

  55.     InitKeyDisp();
  56.     InitTimer1();
  57.     InitBeep();
  58.     InitInput();

  59.     INTEnableInterrupts();
  60. }

复制代码
关于程序代码,解压后用MPLAB打开文件夹工程。
DZQ-1.X.zip (175.02 KB, 下载次数: 14)
回复

使用道具 举报

ID:210627 发表于 2017-9-8 21:41 | 显示全部楼层
可以改成基于STC的单片机吧
回复

使用道具 举报

ID:704585 发表于 2020-6-20 17:30 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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