历史上的今天
今天是:2025年03月20日(星期四)
2020年03月20日 | 多模式51单片机心形流水灯+呼吸灯+蜂鸣器音乐
2020-03-20 来源:eefocus
1.基础硬件DIY设计
电路硬件:
[MCU]STC89C52RC
[外设]蜂鸣器/24个LED/4个四角按键
1)整体原理图

2)PCB电路

3)3D_PCB
TOP层

2.单片机程序设计
1)呼吸灯[简易模拟PWM]
//呼吸灯 [PWM调制]
while(1)
{
for(high=1;high P2=P1=P0=0XFF; delay2(high); P2=P1=P0=0X00; low=cycle-high; delay2(low); } for(low=1;low P2=P1=P0=0XFF;; high=cycle-low; delay2(high); P2=P1=P0=0X00; delay2(low); } } 2)蜂鸣器音乐 // 定义青花瓷简易音谱 [定时器产生音乐脉冲] // 定义青花瓷简易音谱 [定时器产生音乐脉冲] uchar code music[][2]={{0,4}, {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4}, {24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,16},{0,4}, {17,4},{19,4},{17,4},{17,4},{19,4},{17,4},{19,4},{19,4},{21,8},{24,4},{21,4},{21,12},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4}, {19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4},{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,12},{12,4},{21,8},{19,4},{19,8},{17,16}, {0xFF,0xFF}}; // 蜂鸣器音乐 [定时器产生音乐脉冲] while(1) { m=music[i][0];n=music[i][1]; if(m==0x00) {TR0=0;delay1(n);i++;} else if(m==0xFF) {TR0=0;delay1(30);i=0;} else if(m==music[i+1][0]) {TR0=1;delay1(n);TR0=0;pause();i++;} else {TR0=1;delay1(n);i++;} } } 3)几种简易流水灯方式 // 蜂鸣器音乐 [定时器产生音乐脉冲] void disp10() //状态10 从LED全部亮到全不亮(间断8格的3个LED开始逆时针熄灭) { for(i=0;i<9;i++) { P0=table5[i]; P2=table4[i]; P1=table4[i]; delay(100); } delay(300); } void disp11() //状态11 间断8格的3个LED亮并顺时针旋转 { for(j=0;j<2;j++) { for(i=0;i<8;i++) { P0=table0[i]; P2=table1[i]; P1=table1[i]; delay(100); } P0=0xff; P2=0xff; P1=0xff; for(i=0;i<8;i++) { P0=table0[i]; P2=table1[i]; P1=table1[i]; delay(100); } P0=0xff; P2=0xff; P1=0xff; } } void disp12() //间断8格的3个LED亮,然后顺时针逐渐点亮(直到全部点亮) { for(i=0;i<8;i++) { P0=table2[i]; P2=table3[i]; P1=table3[i]; delay(100); } delay(1000); } void disp13() //状态13 从LED全部亮到全不亮(间断8格的3个LED开始顺时针熄灭) { for(i=0;i<8;i++) { P0=table4[i]; P2=table5[i]; P1=table5[i]; delay(100); } delay(300); } void disp14() //状态14 从LED不亮到全亮(从P0.0、P1.0、P1.7、P2.0开始逐步点亮) { for(i=0;i<8;i++) { P0=table2[i]; P2=table2[i]; if(i<4) { P1=table8[i]; } delay(100); } } void disp15() //状态15 从LED全亮到全不亮(从P0.7、P1.3、P1.4、P2.7开始逐步熄灭) { for(i=0;i<8;i++) { P0=table5[i]; P2=table5[i]; if(i<4) { P1=table11[i]; } delay(100); } } 3.效果展示 1)实物电路顶层图 2)实物电路底层图 内部较为简陋 (* ̄︶ ̄) 3)整体效果图 可充电设计 内置锂电池连接锂电池充电模块【可用mini-USB充电口充电】 可玩性 预留三个调试按键,一个复位按键 程序可改进:按下功能键直接切换模式,不必按下复位才行。


史海拾趣
|
1 步进电机 步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变成角位移,即给一个脉冲,步进电机就转一个角度,因此非常适合单片机控制。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响, ...… 查看全部问答> |
|
1 引言 现今,随着整机尺寸的减小和元器件的高度集成,促进了元器件的小型化、薄型化。由于SAW(Surface Acoustic Wave)器件小型化并且有着出众的滤波功能,它们存许多领域的应用中扮演着非常重要的角包。小型化和多功能化是SAW器件发展的主要动力 ...… 查看全部问答> |
|
概述:步进电机主要是依相数来做分类,而其中又以二相、五相步进电机为目前市场上所广泛采用。二相步进电机每转最细可分割为400等分,五相则可分割为 1000等分, 所以表现出来的特性以五相步进电机较佳、 加减速时间较短、 动态惯性较低。 二相/ ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 针对消费娱乐的家庭网络连接 利用多媒体家庭联网技术,各种多媒体设备 ( 例如电视机、便携式媒体播放器、照相机和蜂窝电话等) 以及数据设备 (例如PC和PDA) 可以在安全的家庭网络环境中共享音 ...… 查看全部问答> |
|
目前我手上有一台导航仪,用的是wince5.0的系统,现在我想在这台导航仪上开发一个程序。 目前的问题是,我无法直接在该导航仪上调试我的程序,只能将程序编译好后再复制到导航仪上运行,这样调试起来非常不方便。 因为我的导航仪目前是只要通过US ...… 查看全部问答> |
|
推荐一本用PowerPC开发通信设备的书,我还是第一次见同类型的书 嵌入式设计及通信设备开发详解——基于MPC82XX处理器 卓越的链接 http://www.amazon.cn/mn/detailApp?qid=1238487283&ref=SR&sr=13-1&uid=168-0888845-7367438&prodid=bkbk941360 当当的链接 http://product.dangdang.com/product.aspx?pro ...… 查看全部问答> |
|
一个非常奇怪的keil c51串口中断问题! 比如我的程序如下: uchar b[10]; #define a4 0x03 void fun1(void) interrupt 4 { fun2(2); } fun2(uchar a2) { while(a2--) { .... } fun3(a4); } void fun3(uchar a3)//这个函数无论有没 ...… 查看全部问答> |




