聚丰项目 > 无线供电声控LED小闹钟

无线供电声控LED小闹钟

拥有一个无线供电的底座,放在底座上即可工作,简单方便。利用手工焊接的蓝色LED灯作为数码管显示时间,造型美观。采用纽扣电池和计时芯片计时,即使断电后时间不会改变。可以用声音控制LED灯的亮灭以实现时间的显示和熄灭。(本项目采用的是IDT 3W无线充电开发套件)

绿萝晨梦 绿萝晨梦

分享
2 喜欢这个项目
团队介绍

绿萝晨梦 绿萝晨梦

团队成员

罗伟 软件工程师

分享
项目简介
拥有一个无线供电的底座,放在底座上即可工作,简单方便。利用手工焊接的蓝色LED灯作为数码管显示时间,造型美观。采用纽扣电池和计时芯片计时,即使断电后时间不会改变。可以用声音控制LED灯的亮灭以实现时间的显示和熄灭。(本项目采用的是IDT 3W无线充电开发套件)
硬件说明

img_20171023222731.jpg

img_20171023222920.jpg

MCU采用MSP430G2553

显示驱动芯片选用SN74HC595N

时间芯片采用DS1302

无线供电采用IDT3W模块。

IO对应关系如下:

 VCC                       GND

       P1.0--声控输入               XIN

      P1.1--时间CLK               XOUT

      P1.2--时间DAT              TEST

      P1.3--数码管DATA      RST

      P1.4--数码管SCLK       P1.7

      P1.5--数码管RCLK       P1.6--闹钟输出

      P2.0--COM0                  P2.5--时间RST

      P2.1--COM1                   P2.4--COM4

      P2.2--COM2                     P2.3--COM3


软件说明

软件开发环境采用CCS6.0

部分代码如下:

void main(void)

{

unsigned char i=0,j=0,dat=0,com=1;

unsigned char s=0,s1=0,s_change=0;

unsigned char voice=0,voice1=0,state=0,get_en=1;

unsigned int t=0,l_time=0;

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

  BCSCTL1 = CALBC1_1MHZ;

    DCOCTL = CALDCO_1MHZ;

    BCSCTL3 |= LFXT1S_2;

    IFG1 &= ~OFIFG;

    //P1.0是闹钟输出

    P1DIR |= BIT0 ;//P1.0配置为输出

    P1OUT &= ~BIT0;//P1.0输出低电平

    //P1.6是声音传感器输入

    P1REN |= BIT6;//P1.6输入

    P1OUT |= BIT6;//上拉

    P1DIR |= BIT1 + BIT3 + BIT4 + BIT5;//DATA,SCK,RCK输出

    P1OUT &=~(BIT1 + BIT3 + BIT4 + BIT5);//DATA,SCK,RCK=0

    P2DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5;//COM1,2,3,4输出

    P2OUT |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4;

    P2OUT &= ~BIT5;

    //Set_RTC(init);//设置初始时间

    while(1)

    {

     Read_RTC(time);

     if(get_en)

     {

      if(!(P1IN&BIT6)) voice=1;

      else voice=0;

     }

     else

     {

      t++;

      if(t==50) {t=0;get_en=1;}

     }

     if(voice1==0 && voice==1)

     {

      if(state)state=0;

      else {state=1;l_time=0;}

      get_en=0;

     }

     voice1=voice;

     P2OUT |= BIT1 + BIT2 + BIT3 + BIT4;//COM0,1,2,3,4=1,全灭

     if(state==1)//满足显示条件

     {

      l_time++;

      if(l_time==5000){l_time=0;state=0;}

      //显示

      s=time[0];

      if(s!=s1) s_change=1;

      s1=s;

      i++;

      if(i==5)i=1;

      if(s_change==1) {s_change=0;P2OUT &= ~BIT0;j=0;}

      j++;

      if(j==95) P2OUT |= BIT0;

      switch(i)

      {

       case 1:send_sum(sum_code[(time[2]&0xF0)>>4]&0xff);P2OUT &= ~BIT1;break;

       case 2:send_sum(sum_code[time[2]&0x0F]&0xfe);P2OUT &= ~BIT2;break;

       case 3:send_sum(sum_code[(time[1]&0xF0)>>4]&0xfe);P2OUT &= ~BIT3;break;

       case 4:send_sum(sum_code[time[1]&0x0F]&0xfe);P2OUT &= ~BIT4;break;

       default:break;

      }

     }//显示结束

     else P2OUT |= BIT0;

     if(time[2]==0x07 && time[1]==0x00)  P1OUT |= BIT0;//开闹钟

     else P1OUT &= ~BIT0;//关闹钟

    }

}


评论区(2 )
  • 动心忍性1234: 您好我是无线电杂志的编辑,我们对您的项目十分感兴趣,请问您有兴趣投稿吗?成为我们的作者除稿费外还有其他优厚条件。敬请参与。投稿请联系QQ260534978.

    回复

  • erictan: 我有类似的项目需要开发,可否与我联系?谢谢。QQ:1014637381

    回复