// 时钟, 还是时钟, 有没有点新鲜的? 续三 [直播更新 蓝牙传输 14:03 ][点阵,音乐频
2011/04/04 22:40 视频上传中...直播开始!2011/04/04 22:50 先两张预览图
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628382WJNYW8.JPG
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628383XN8MCY.JPG
2011/04/04 23:19
视频审核通过 地址: http://v.youku.com/v_show/id_XMjU2MjQ1MjY0.html
2011/04/04 23:54
代码比较凌乱, 欢迎提出宝贵建议使其更加高效,健壮!
目前实现的功能介绍:
1.时钟.
在串口没有频谱数据来的时候是时钟模式, 时钟模式时间变化有过渡效果.
时钟字体参考了杜洋工作室的点阵字体, 在此声明并致谢.
2.音乐频谱
串口有数据接收到时转为频谱模式,有峰值回落的效果
3.遥控
2011/04/05 11:12
昨天的声音太小, 上传个重拍的稍微大点的
http://v.youku.com/v_show/id_XMjU2MzI0NDY0.html
2011/04/05 14:03
没有人气啊...
这可怎么办啊....
接着改造吧.. 摆脱串口线的束缚!
当初没有考虑到这块, 手工加一个...
一个蓝牙转串口模块, 焊下来的时候焊盘给弄掉了..没办法, 飞线!
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628522AW14IF.JPG
其实这线和PCB上的走线是相当细的, 难看了点, 但是通了...
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628523CEEY68.JPG
搭好了...右边两个指示灯
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628524G2FWY7.JPG
现在是想怎么放就怎么放!
接上, 蓝色灯闪烁, 正在等待链接
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628525NWMN9Z.JPG
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628526MRFS3J.JPG
红色表示连接成功, 现在还没有数据过来
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628527O3UJ4Z.JPG
打开Winamp...
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628528CN8CCU.JPG
用的这个适配器
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628529VJD00H.JPG 2011/04/04 22:58
电路图:
点击此处下载 ourdev_628389TPE0FQ.pdf(文件大小:216K) (原文件名:点阵板 110317.pdf)
点击此处下载 ourdev_628390HXB5OK.pdf(文件大小:352K) (原文件名:主板 110317.pdf)
2011/04/04 23:15
点阵板3D图
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628402Q4WVDY.jpg
焊好的点阵板
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628400W4CGRA.JPG
焊好的点阵板正面
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628401MLWT52.JPG
主板3D图
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628403RJCRB5.jpg
主板实物
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628404PZ7XJJ.JPG
焊好的主板反面
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628405OBT9JV.JPG
焊好的主板正面面
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628406Y39N8N.JPG
插座不能放边上, 只能放中间, 而且要垫高, 不然会挤着下面的芯片
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628407AJBUN2.JPG
两边加起来160个针, 按上去可真不容易
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628408AK61A7.JPG
两块中间的距离
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628409OEKJ7A.JPG
2011/04/04 23:25
还有一张图:测试效果
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628415M85XOM.JPG Winamp 插件占楼
之前论坛里有位大侠发过类似的帖子, 一下子找不到了, 也是个Winamp的插件, 那个功能比较强大, 但是我这个是51的, 数据量过大担心处理不过来. 所以自己找了一点资料编写了一个
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628416FXYLT7.jpg
(原文件名:图像 000.jpg)
就一个功能, 将Winamp传来的数据处理一下通过串口发送给点阵
发送的数据每次17Byte, 以0xFF开始,后面 16字节 频谱高度,范围0-15, 计算完全交给上位机.
运行效果:
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628417RRVKC4.jpg
插件选择
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628418Z8DX07.jpg
2011/04/04 23:51
插件源代码 (DEBUG 目录有编译好的 DEBUG 版)
平台 Windows 7 SP1 x64, Visual Studio 2010 SP1, 插件在Windows XP运行不能,需要自行编译...
点击此处下载 ourdev_628421W547HV.rar(文件大小:19K) (原文件名:VisDemo.rar) 2011/04/05 0:26
-------------------------------------------------------HT1632.C
#include "HT1632C.H"
#include "common.h"
#include "FONT_5x7.H"
#include "FONT_7x16.H"
#include "BINARY.H"
#include <intrins.h>
#define NOP() _nop_();_nop_();_nop_();_nop_();_nop_() //延时, 单片机的时钟相对于HT1632C的时钟较快
//接口定义
sbit HT1632C_DATA = P1^3;
sbit HT1632C_WR = P1^2;
sbit HT1632C_RD = P1^1;
sbit HT1632C_CS1 = P2^4;
sbit HT1632C_CS2 = P1^0;
sbit HT1632C_CS3 = P1^5;
sbit HT1632C_CS4 = P1^4;
static u8 xdata DisplayBuffer[4][48]; //显示缓存, 牺牲空间换取时间
static u8 xdata TimeUI_2_Buffer[2][6]={10,10,10,10,10,10,10,10,10,10,10,10}; //时间数据,分别保存上一次和这一次的数据
static u8 xdata TimeUI_2_Step=0; //时间特效显示步骤
static u8 code posX[6]={0,7,17,24,34,41}; //每一位数字显示的X位置
static s8 xdata VisIndex=0; //频谱编号
static s8 xdata VisPeakFallTime=0; //峰值回落延时
static s8 xdata VisPeak[16]={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0}; //频谱峰值
static u8 code VisTable[16][2]={ //相当于频谱的"字模" 需要 "BINARY.H" 支持
B00000000,B00000001,
B00000000,B00000011,
B00000000,B00000111,
B00000000,B00001111,
B00000000,B00011111,
B00000000,B00111111,
B00000000,B01111111,
B00000000,B11111111,
B00000001,B11111111,
B00000011,B11111111,
B00000111,B11111111,
B00001111,B11111111,
B00011111,B11111111,
B00111111,B11111111,
B01111111,B11111111,
B11111111,B11111111,
};
static u8 code VisPeakTable[16][2]={ //频谱峰值的"字模"
B00000000,B00000001,
B00000000,B00000010,
B00000000,B00000100,
B00000000,B00001000,
B00000000,B00010000,
B00000000,B00100000,
B00000000,B01000000,
B00000000,B10000000,
B00000001,B00000000,
B00000010,B00000000,
B00000100,B00000000,
B00001000,B00000000,
B00010000,B00000000,
B00100000,B00000000,
B01000000,B00000000,
B10000000,B00000000,
};
//HT1632C片选
static void HT_CS(u8 ucCSNo)
{
switch(ucCSNo)
{
case 1:
HT1632C_CS2=1;
HT1632C_CS3=1;
HT1632C_CS4=1;
HT1632C_CS1=0;
break;
case 2:
HT1632C_CS1=1;
HT1632C_CS3=1;
HT1632C_CS4=1;
HT1632C_CS2=0;
break;
case 3:
HT1632C_CS1=1;
HT1632C_CS2=1;
HT1632C_CS4=1;
HT1632C_CS3=0;
break;
case 4:
HT1632C_CS1=1;
HT1632C_CS2=1;
HT1632C_CS3=1;
HT1632C_CS4=0;
break;
case 0xAA:
HT1632C_CS1=0;
HT1632C_CS2=0;
HT1632C_CS3=0;
HT1632C_CS4=0;
default:
HT1632C_CS1=1;
HT1632C_CS2=1;
HT1632C_CS3=1;
HT1632C_CS4=1;
}
}
//HT1632C发送数据
static void HT_SendData(u8 ucDat,u8 ucNo)
{
u8 i;
for (i=0;i<ucNo;i++)
{
NOP();
HT1632C_WR=0;
ucDat<<=1;
HT1632C_DATA=CY;
NOP();
HT1632C_WR=1;
}
}
//向对应的HT1632C发送命令
void HT_CMD(u8 ucCS, u8 ucCMD)
{
HT_CS(ucCS);
HT_SendData(0x80,3); //B100x xxxx
HT_SendData(ucCMD,9); //9bit
HT_CS(0xFF);
}
//初始化
void HT_Init(void)
{
u8 i;
HT1632C_DATA = 1;
HT1632C_WR=1;
HT1632C_RD=1;
HT1632C_CS1=1;
HT1632C_CS2=1;
HT1632C_CS3=1;
HT1632C_CS4=1;
HT_CMD(1,CMD_MODE_MASTER);
HT_CMD(1,CMD_NMOS_16COM);
HT_CMD(1,CMD_OSC_ON);
HT_CMD(1,CMD_PWM_DUTY+5);
HT_CMD(1,CMD_LED_ON);
HT_CMD(2,CMD_MODE_SLAVE);
HT_CMD(2,CMD_NMOS_16COM);
HT_CMD(2,CMD_OSC_ON);
HT_CMD(2,CMD_PWM_DUTY+5);
HT_CMD(2,CMD_LED_ON);
HT_CMD(3,CMD_MODE_SLAVE);
HT_CMD(3,CMD_NMOS_16COM);
HT_CMD(3,CMD_OSC_ON);
HT_CMD(3,CMD_PWM_DUTY+5);
HT_CMD(3,CMD_LED_ON);
HT_CMD(4,CMD_MODE_SLAVE);
HT_CMD(4,CMD_NMOS_16COM);
HT_CMD(4,CMD_OSC_ON);
HT_CMD(4,CMD_PWM_DUTY+5);
HT_CMD(4,CMD_LED_ON);
for (i=0;i<48;i++)//清空"显存"
{
DisplayBuffer[0][i]=0x00;
DisplayBuffer[1][i]=0x00;
DisplayBuffer[2][i]=0x00;
DisplayBuffer[3][i]=0x00;
}
}
//将显存刷新到点阵
void HT_Buffer2Screen(void)
{
u8 i;
HT_CS(1);
HT_SendData(0xA0,3); //B101x xxxx
HT_SendData(0x00,7); //Address
for (i=0;i<24;i++)
{
HT_SendData(DisplayBuffer[0][i],8);
HT_SendData(DisplayBuffer[2][i],8);
}
HT_CS(2);
HT_SendData(0xA0,3); //B101x xxxx
HT_SendData(0x00,7); //Address
for (i=24;i<48;i++)
{
HT_SendData(DisplayBuffer[0][i],8);
HT_SendData(DisplayBuffer[2][i],8);
}
HT_CS(3);
HT_SendData(0xA0,3); //B101x xxxx
HT_SendData(0x00,7); //Address
for (i=0;i<24;i++)
{
HT_SendData(DisplayBuffer[1][i],8);
HT_SendData(DisplayBuffer[3][i],8);
}
HT_CS(4);
HT_SendData(0xA0,3); //B101x xxxx
HT_SendData(0x00,7); //Address
for (i=24;i<48;i++)
{
HT_SendData(DisplayBuffer[1][i],8);
HT_SendData(DisplayBuffer[3][i],8);
}
HT_CS(0xFF);
}
//向点阵发送一列数据
void HT_DataXY(u8 ucX, u8 ucDatR, u8 ucDatG)
{
HT_CS(ucX/24+1); //由X坐标计算该片选哪个
HT_SendData(0xA0,3); //B101x xxxx
HT_SendData((((ucX%24)*4)<<1),7); //Address
HT_SendData(ucDatR,8);
HT_SendData(ucDatG,8);
HT_CS(0xFF);
}
//打印5x7字符
void HT_Put5x7(u8 ucX, u8 ucASCIIR, u8 ucASCIIG)
{
u8 i;
for(i=0;i<6;i++)
{
HT_DataXY(ucX,FONT_5x7[ucASCIIR][i],FONT_5x7[ucASCIIG][i]);
ucX++;
}
}
//打印5x7字符串
void HT_Str1(u8 * pStr)
{
u8 i=0;
while(*pStr)
{
HT_Put5x7(i,* pStr,* pStr);
pStr++;
i+=6;
}
}
//输出一位时钟到显存中, ucIndex 位号, ucStep: 动态效果到第几步
static void HT_TimeUI_2_A0(u8 ucIndex,u8 ucStep)
{
u8 i,Redir[7],NewBuffer=0;//Newbuffer=0:即将翻转消隐的旧字符, =1:翻转出新字符
switch(ucStep) //数字翻转的效果, 不同的步骤取字模中不同的列
{
case 0:
for(i=0;i<7;i++) { Redir[i]=i; }
NewBuffer=0;
break;
case 5:
NewBuffer=1;
for(i=0;i<7;i++) { Redir[i]=i; }
break;
case 1:
NewBuffer=0;
Redir[0]=6;Redir[1]=0;Redir[2]=2;Redir[3]=3;Redir[4]=5;Redir[5]=6;Redir[6]=6;
break;
case 4:
NewBuffer=1;
Redir[0]=6;Redir[1]=0;Redir[2]=2;Redir[3]=3;Redir[4]=5;Redir[5]=6;Redir[6]=6;
break;
case 2:
NewBuffer=0;
Redir[0]=6;Redir[1]=6;Redir[2]=0;Redir[3]=5;Redir[4]=6;Redir[5]=6;Redir[6]=6;
break;
case 3:
NewBuffer=1;
Redir[0]=6;Redir[1]=6;Redir[2]=0;Redir[3]=5;Redir[4]=6;Redir[5]=6;Redir[6]=6;
break;
}
for(i=0;i<7;i++)
{
DisplayBuffer[2][posX[ucIndex]+i]= FONT_7x16[TimeUI_2_Buffer[NewBuffer][ucIndex]][Redir[i]][0];
DisplayBuffer[3][posX[ucIndex]+i]= FONT_7x16[TimeUI_2_Buffer[NewBuffer][ucIndex]][Redir[i]][1];
}
}
//更新新旧时间缓存的数据
void HT_TimeUI_2(u8 ucH, u8 ucM, u8 ucS)
{
u8 i;
for (i=0;i<6;i++) //使当前时间变为旧时间
{
TimeUI_2_Buffer[0][i]=TimeUI_2_Buffer[1][i];
}
//获取新时间
TimeUI_2_Buffer[1][0]=ucH/10;
TimeUI_2_Buffer[1][1]=ucH%10;
TimeUI_2_Buffer[1][2]=ucM/10;
TimeUI_2_Buffer[1][3]=ucM%10;
TimeUI_2_Buffer[1][4]=ucS/10;
TimeUI_2_Buffer[1][5]=ucS%10;
//特效归零,需要从头开始
TimeUI_2_Step=0;
}
//时间模式前需要清屏, 以及显示冒号
void HT_TimeUI_2_Dot(void)
{
u8 i;
for (i=0;i<48;i++) //清空显存
{
DisplayBuffer[0][i]=0x00;
DisplayBuffer[1][i]=0x00;
DisplayBuffer[2][i]=0x00;
DisplayBuffer[3][i]=0x00;
}
for (i=0;i<6;i++) //清空时间缓存
{
TimeUI_2_Buffer[0][i]=10;
TimeUI_2_Buffer[1][i]=10;
}
//显存中冒号的字模
DisplayBuffer[2][14]=0x0C;
DisplayBuffer[2][15]=0x0C;
DisplayBuffer[2][16]=0x00;
DisplayBuffer[2][31]=0x0C;
DisplayBuffer[2][32]=0x0C;
DisplayBuffer[2][33]=0x00;
DisplayBuffer[3][14]=0x30;
DisplayBuffer[3][15]=0x30;
DisplayBuffer[3][16]=0x00;
DisplayBuffer[3][31]=0x30;
DisplayBuffer[3][32]=0x30;
DisplayBuffer[3][33]=0x00;
}
//刷新时间
void HT_TimeUI_2_Update(void)
{
u8 i=0;
s8 iStep2;
if (TimeUI_2_Step>18) return;
for (i=0;i<6;i++) //计算每一位时间到了动态效果的哪一步
{
if (TimeUI_2_Buffer[0][i]!=TimeUI_2_Buffer[1][i])
{
iStep2=TimeUI_2_Step-(5-i)*2;
if (iStep2<0) iStep2=0;
if (iStep2>5) iStep2=5;
HT_TimeUI_2_A0(i,iStep2); //刷新显存中的每一位
}
}
TimeUI_2_Step++; //动态效果步骤
HT_Buffer2Screen();
}
void HT_VisReset(void) //频谱重置
{
VisIndex=0;
}
void HT_VisData(u8 ucData)//压入频谱数据
{
//更新对应缓存, 两列一样, 第三列为空
DisplayBuffer[2][VisIndex*3]=VisTable[ucData][0];
DisplayBuffer[3][VisIndex*3]=VisTable[ucData][1];
DisplayBuffer[2][VisIndex*3+1]=VisTable[ucData][0];
DisplayBuffer[3][VisIndex*3+1]=VisTable[ucData][1];
DisplayBuffer[2][VisIndex*3+2]=0x00;
DisplayBuffer[3][VisIndex*3+2]=0x00;
if (ucData>VisPeak[VisIndex]) VisPeak[VisIndex]=ucData; //大于峰值, 则更新峰值
VisIndex++;
if (VisIndex>15) VisIndex=15;
}
void HT_VisUpdate(void) //刷新频谱效果
{
u8 i;
for (i=0;i<16;i++)//填充峰值数据(红色)
{
DisplayBuffer[0][i*3]=VisPeakTable[VisPeak[i]][0];
DisplayBuffer[1][i*3]=VisPeakTable[VisPeak[i]][1];
DisplayBuffer[0][i*3+1]=VisPeakTable[VisPeak[i]][0];
DisplayBuffer[1][i*3+1]=VisPeakTable[VisPeak[i]][1];
DisplayBuffer[0][i*3+2]=0x00;
DisplayBuffer[1][i*3+2]=0x00;
}
VisPeakFallTime++;//峰值回落计数, 可以调节回落速度
if (VisPeakFallTime>2)
{
for (i=0;i<16;i++)//开始回落
{
VisPeak[i]--;
if (VisPeak[i]<0) VisPeak[i]=0; //到最低, 不再变化
}
VisPeakFallTime=0;//峰值回落计数归零
}
HT_Buffer2Screen(); //刷新显存到屏幕
}
<font color=red>2011:04:05 10:30
-----------------------------HT1632C.H 文件内容--------------------------
#ifndef __HT1632C_H__
#define __HT1632C_H__
#include "common.h"
#define CMD_SYS_OFF 0x00
#define CMD_OSC_ON 0x01
#define CMD_LED_OFF 0x02
#define CMD_LED_ON 0x03
#define CMD_BLINK_OFF 0x08
#define CMD_BLINK_ON 0x09
#define CMD_MODE_SLAVE0x10
#define CMD_MODE_MASTER 0x18
#define CMD_MODE_MASEXT 0x1C
#define CMD_NMOS_8COM 0x20
#define CMD_NMOS_16COM0x24
#define CMD_PMOS_8COM 0x28
#define CMD_PMOS_16COM0x2C
#define CMD_PWM_DUTY 0xA0
void HT_Init(void);
void HT_CMD(u8 ucCS, u8 ucCMD);
void HT_Buffer2Screen(void);
void HT_Put5x7(u8 ucX, u8 ucASCIIR, u8 ucASCIIG);
void HT_Str1(u8 * pStr);
void HT_TimeUI_2(u8 ucH, u8 ucM, u8 ucS);
void HT_TimeUI_2_Dot(void);
void HT_TimeUI_2_Update(void);
void HT_VisReset(void);
void HT_VisData(u8 ucData);
void HT_VisUpdate(void);<font color="#0000FF">
#endif 代码占楼2 占了那么多楼要是拿不出点东西.. 后果不堪设想啊... 冷清... 果断顶起 楼主V5,用4片HT1632C的16*24模式驱动16*48个双色点阵,驱动双色点阵要设置主从模式并且要同步吧,不然扫描信号就乱了 手提酱油路过 。要拆开就杯具了,怎么不用圆孔排母。 回复【8楼】little Monkey
楼主v5,用4片ht1632c的16*24模式驱动16*48个双色点阵,驱动双色点阵要设置主从模式并且要同步吧,不然扫描信号就乱了
-----------------------------------------------------------------------
目前设置了 1号为主 其他3个为从, 四个的 OSC和SYNC接在一起, 不过四个都是主也没有关系, 因为硬件上没有共享 COM 回复【9楼】Rapido
手提酱油路过 。要拆开就杯具了,怎么不用圆孔排母。
-----------------------------------------------------------------------
悲剧的点阵脚距2.4...
焊好发现还有一个坏点 啊~~~~ mark 回复【11楼】wowbanui
回复【9楼】rapido
手提酱油路过 。要拆开就杯具了,怎么不用圆孔排母。
-----------------------------------------------------------------------
悲剧的点阵脚距2.4...
焊好发现还有一个坏点 啊~~~~
-----------------------------------------------------------------------
恭喜,还真杯具了... 嗯,这个倒是有点意思呀,整个装在机箱前面不错,等资料... 有套件吗~成品吗? 嗯吸锡器伺候吧 明天继续... 更新: 插件在 KMPlayer下可以运行. 看电影时也能有效果啦
悄悄地进村 打枪地不要 你看人家太君多低调~~~
但是.. 低调是没有好下场地, 所以, 要高调!!!
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628467P43U0J.jpg
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628468T5FKPM.jpg
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628469H53516.jpg 插件选择
KMP能部分支持Winamp的插件
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628470MS69H9.jpg 楼主是高高手呀! 记号~记号~~~ MARK! 昨天的声音太小, 上传个重拍的稍微大点的
http://v.youku.com/v_show/id_XMjU2MzI0NDY0.html 学习…… 没有人气啊...
这可怎么办啊....
接着改造吧.. 摆脱串口线的束缚!
当初没有考虑到这块, 手工加一个...
一个蓝牙转串口模块, 焊下来的时候焊盘给弄掉了..没办法, 飞线!
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628522AW14IF.JPG
其实这线和PCB上的走线是相当细的, 难看了点, 但是通了...
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628523CEEY68.JPG
搭好了...右边两个指示灯
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628524G2FWY7.JPG
现在是想怎么放就怎么放!
接上, 蓝色灯闪烁, 正在等待链接
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628525NWMN9Z.JPG
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628526MRFS3J.JPG
红色表示连接成功, 现在还没有数据过来
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628527O3UJ4Z.JPG
打开Winamp...
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628528CN8CCU.JPG
用的这个适配器
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_628529VJD00H.JPG 羡慕嫉妒恨啊。。。 楼主V5 记号! 一阵新鲜劲过了冷却下来了, 还能加点什么东西不? 大家有啥创意嘞? MARK 不错,挺全的,支持一下 mark 挺厉害的哎‘。 mark ./emotion/em048.gif beautiful 做的很不错 很牛 PCB做的不错! 不喜欢用STC,换种别的就好了.比如STM32 楼主v5 太酷了,这个 mark 记号 关注进展~ 顶一下! 回复【楼主位】wowbanui
-----------------------------------------------------------------------
狠不错,Lz还有PCB么,我也想玩玩 厉害 记号下 高手的境界达到一定的时候,就只能用变态来形容了,太JB厉害了~这都想得到! 这就是境界啊!!mark! mark mark mark 楼主是高高手呀 mark 不错哦 很漂亮 直顶楼主了,好东西了,我想跟你学学怎么搞这个了,弄个玩玩了 mark 跟杜洋1608时钟有的一拼!!! COOL! mark 太牛了,不顶不行 码 mark 高! 猛 强劲 看起来不错呃 学习了 学习了! 好东西,留着学习。 mark! 少了完整程序.. 留个爪印,关心一下有无套件和价钱 NB的东西必须顶起! 有PCB转让就更好了 ei,羡慕嫉妒恨啊 用蓝牙呀~试下改在手机上运行啊~创新点~{:titter:} 做的是牛,但是,感觉没有什么太大的实用效果。 强,必须顶一个 蓝牙不需要配对?LZ蓝牙部份的程序没有贴出来,想学习下。 这是CSR的么?
页:
[1]