在网上看到不少老外做的各种旋转LED显示屏,非常COOL,我也动手用洞洞板试做了一个类似的显示屏,结果感觉还不错。于是再接再励继续努力,将作品进一步改进,完善后制成如今这个样子。
  由于刚学51单片机,加上制作电路板软件也是从零开始,的确花了我不少的时间和精力。不过也就是在这艰难的独立制作中,真正学到了不少实在的东西。
  本项目的关键是如何解决高速旋转的电路板如何供电,如何调时的问题。我采用电机电刷的原理,将旋转轴钻空,通过一只插头将电源的从反面引到前面的电路板上,而这个旋转的插头又与固定在背板上的两个铜片接触的。调时的问题有些困难,一是让电路板在旋转前与PC机相接,由电脑传送调时数据,这虽然可行但不方便。还有就是用遥控方法,但此方案在调试方面有很大的困难。
  显示方式上,我采用平衡式的两排LED,这除了在旋转时能较好的保持平衡外,主要能利用两边交替显示方式,比单排要快一倍。
  本装置不仅是一个时钟,它还可以动态显示汉字及图案,这就看如何发挥了。
  其具体制作过程如下:
  一。旋转电机的制作
  从制作成本与方便考虑,选用旧电脑用的大软驱上的直流无刷电机,只是对局部进行改造。

                                 就是这种古董软驱软驱上的直流无刷电机拆开后的电机

仔细拆开直流电机,将带圆盘的铝轴从中开孔,让它刚好能插入一个插头。

                                                                         将旋转轴加工成这样 装配好以后

按拆开时的顺序,反序将轴安装直流电机上。

                                                                               电机装配完成后

用两片铜片做的电刷

                         电刷装好后的侧面图

将电路板上较突出的元件改焊在反面,

电机的电源接法。

从电路板标注的符号看,“+”为电源正,“G”为电源负,
“C”与“M”端分别与电源正相连匀可使电机运转
将一张旧唱片按电机座的位置开孔,而定位用的挡光板应根据电路板上感光组件的位置确定。

二。电路板的制作
  本制作品用51单片机控制,具体电原理图如下:

用Protel 99设计制作了电路板。

最后得到完成的作品。

遥控器用的是松下车载机的,只用了其中的六个键。

三。软件编程
  因学的是C51(不懂汇编)这里只提供C语言源程序,并限制为无遥控功能。也可提供带遥控功能的hex文件。

#include <reg51.h>
sbit gate11=P3^0;
sbit gate12=P3^1;
#define unit unsigned int
#define uchar unsigned char
uchar data BUFFER[]={0,0,0,0,1,1,7};
uchar data M[]={31,28,31,30,31,30,31,31,30,31,30,31};
uchar code NUM1[] =
{
0x80,0x7F,0xC0,0xFF,0x40,0x90,0x40,0x8C, // -0-
0x40,0x82,0xC0,0xFF,0x80,0x7F,0x00,0x00,
0x00,0x00,0x00,0x81,0x80,0x81,0xC0,0xFF, // -1-
0xC0,0xFF,0x00,0x80,0x00,0x80,0x00,0x00,
0x80,0xE0,0xC0,0xF0,0x40,0x98,0x40,0x8C, // -2-
0x40,0x86,0xC0,0xC3,0x80,0xC1,0x00,0x00,
0x80,0x40,0xC0,0xC0,0x40,0x84,0x40,0x84, // -3-
0x40,0x84,0xC0,0xFF,0x80,0x7B,0x00,0x00,
0x00,0x0C,0x00,0x0E,0x00,0x0B,0x80,0x89, // -4-
0xC0,0xFF,0xC0,0xFF,0x00,0x88,0x00,0x00,
0xC0,0x47,0xC0,0xC7,0x40,0x84,0x40,0x84, // -5-
0x40,0x8C,0x40,0xFC,0x40,0x78,0x00,0x00,
0x00,0x7F,0x80,0xFF,0xC0,0x84,0x40,0x84, // -6-
0x40,0x84,0x00,0xFC,0x00,0x78,0x00,0x00,
0xC0,0x00,0xC0,0x00,0x40,0xF0,0x40,0xF8, // -7-
0x40,0x0C,0xC0,0x07,0xC0,0x03,0x00,0x00,
0x80,0x7B,0xC0,0xFF,0x40,0x84,0x40,0x84, // -8-
0x40,0x84,0xC0,0xFF,0x80,0x7B,0x00,0x00,
0x80,0x03,0xC0,0x87,0x40,0x84,0x40,0x84, // -9-
0x40,0xC4,0xC0,0x7F,0x80,0x3F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63, // -:-
0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code NUM2[]=
{
0x00,0x00,0x7f,0x80,0xff,0xc0,0x82,0x40, // -0-
0x8c,0x40,0x90,0x40,0xff,0xc0,0x7f,0x80,
0x00,0x00,0x00,0x00,0x20,0x40,0x60,0x40, // -1-
0xff,0xc0,0xff,0xc0,0x00,0x40,0x00,0x40,
0x00,0x00,0x41,0xc0,0xc3,0xc0,0x86,0x40, // -2-
0x8c,0x40,0x98,0x40,0xf0,0xc0,0x60,0xc0,
0x00,0x00,0x40,0x80,0xc0,0xc0,0x88,0x40, // -3-
0x88,0x40,0x88,0x40,0xff,0xc0,0x77,0x80,
0x00,0x00,0x0c,0x00,0x1c,0x00,0x34,0x00, // -4-
0x64,0x40,0xff,0xc0,0xff,0xc0,0x04,0x40,
0x00,0x00,0xf8,0x80,0xf8,0xc0,0x88,0x40, // -5-
0x88,0x40,0x8c,0x40,0x8f,0xc0,0x87,0x80,
0x00,0x00,0x3f,0x80,0x7f,0xc0,0xc8,0x40, // -6-
0x88,0x40,0x88,0x40,0x0f,0xc0,0x07,0x80,
0x00,0x00,0xc0,0x00,0xc0,0x00,0x83,0xc0, // -7-
0x87,0xc0,0x8c,0x00,0xf8,0x00,0xf0,0x00,
0x00,0x00,0x77,0x80,0xff,0xc0,0x88,0x40, // -8-
0x88,0x40,0x88,0x40,0xff,0xc0,0x77,0x80,
0x00,0x00,0x70,0x00,0xf8,0x40,0x88,0x40, // -9-
0x88,0x40,0x88,0xc0,0xff,0x80,0x7f,0x00,
0x00,0x00,0x00,0xc0,0x01,0x80,0x03,0x00, // -/-
0x06,0x00,0x0c,0x00,0x18,0x00,0x30,0x00,
};
unit disp1,disp2,key1,key2;
unit ii,jj;
unit i,sw,xz;
void Delay(unit ms){
ms=“ms”*3;
while(–ms);
}

void num_led(int kk, int tt)
{
int jj;
for(jj=0;jj<8;jj++){
gate11=key1; gate12=key2;
P2=NUM1[kk+jj*2];P1=NUM1[kk+1+jj2];
Delay(20);
P1=0xff;P2=0xff;
gate11=key2; gate12=key1;
P2=NUM2[tt+15-jj*2];P1=NUM2[tt+14-jj
2];
Delay(20);
P1=0xff;P2=0xff;
}
}
void display_clock(void)
{
key1=!key1;key2=!key2;
disp1=BUFFER[3]/10;disp2=BUFFER[4]-(BUFFER[4]/10)*10;
ii="disp1"16;jj=disp216;
num_led(ii,jj);
P2=0xff;P1=0xff;Delay(60);

            disp1=BUFFER[3]-disp1*10;disp2=BUFFER[4]/10;ii="disp1"*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);ii="160";jj=160;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[2]/10;disp2=BUFFER[5]-(BUFFER[5]/10)*10;ii="disp1"*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[2]-disp1*10;disp2=BUFFER[5]/10;ii="disp1"*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);ii="160";jj=160;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[1]/10;disp2=BUFFER[6]-(BUFFER[6]/10)*10;ii="disp1"*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[1]-disp1*10;disp2=BUFFER[6]/10;ii="disp1"*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);

}

void timer0(void) interrupt 1 using 1
{
TMOD=“0x11”;
TH0=-(5000/256);
TL0=-(5000%256);
TR0=1;
BUFFER[0]=BUFFER[0]+1;
if (BUFFER[6]%4==0) M[1]=M[1]+1;
if (BUFFER[0]>201+xz){
BUFFER[0]=0;
BUFFER[1]=BUFFER[1]+1;
if (BUFFER[1]==60){
BUFFER[1]=0;
BUFFER[2]=BUFFER[2]+1;
if (BUFFER[2]==60){
BUFFER[2]=0;
BUFFER[3]=BUFFER[3]+1;
if (BUFFER[3]==24){
BUFFER[3]=0;
BUFFER[4]=BUFFER[4]+1;
if (BUFFER[4]>M[BUFFER[5]-1]){
BUFFER[4]=1;
BUFFER[5]=BUFFER[5]+1;
if (BUFFER[5]>12){
BUFFER[5]=1;
BUFFER[6]=BUFFER[6]+1;
if(BUFFER[6]>99) {
BUFFER[6]=0;
M[1]=M[1]-1;
}
}
}
}
}
}
}
}

void intersvr0(void) interrupt 0
{
sw=1;
}
void main(void)
{
xz=“8”;
key1=1;key2=0;
EA=“1”;

             IT0=1;EX0=1; IT1=1;ET0=1;TMOD="0x11";  TH0=-5000/256; TL0=-5000%256;TR0=1;

for(;

DIY基于51单片机的旋转LED数字电子钟(红外线遥控调时)相关推荐

  1. 基于51单片机的旋转LED

    大三的期末设计(大三好几个期末设计),当初感觉这个东西挺酷炫的,就去搞了一下,然而未曾料到,大三期末太多设计,同时51单片机的项目以前有做过,就没花很多时间在这个设计上,做了一周多,效果差强人意. 先 ...

  2. 【转帖】POV LED基于51单片机的旋转LED电子钟

    http://hi.baidu.com/52_diy/blog/item/d8310dfac0a97716a8d3114b.html POV即persistancd of vision 利用单片机控制 ...

  3. 基于51单片机实现旋转LED灯报警(Proteus仿真)

    WeChat:[嵌入式工程师成长日记] https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&a ...

  4. 最简单DIY基于51单片机的舵机控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  5. 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  6. 51lcd显示光传感器c语言程序,基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例...

    基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例,系统由GY-30数字光照传感器.51单片机最小系统.1602液晶显示屏组成,电路简单,附件中的程序是实物验证过了的.1 ...

  7. 基于51单片机的简易电子数字计算器Proteus仿真

    资料编号:089 采用51单片机,使用矩阵键盘,可以计算加减乘除,进行简易计算: 全套资料齐全:具体功能请看下面演示视频 89-基于51单片机的简易电子数字计算器Proteus仿真 单片机最小系统介绍 ...

  8. DIY 基于51单片机的电子温度计的总结

    仿真图和程序: 链接:https://pan.baidu.com/s/16yHINVxLvfdHiHGzz_S_9Q 提取码:1234 总结一下这次画PCB的问题,以前都是写软件,使用传感器之类的也只 ...

  9. 基于51单片机的PT100热敏电阻数字温度计-仿真设计

    硬件 本设计使用PT100热敏电阻作为温度传感器,利用其感温效应,将随被测温度变化的电压经运算放大电路将信号放大后,通过ADC0804转换芯片,将电压信号转换为数字信号,用单片机采集下来,将被测温度在 ...

最新文章

  1. mysql下载地址与安装
  2. 【计算机视觉】跟踪算法及相关主页
  3. iOS开发之 [NSNull length]:unrecognized selector sent
  4. 随想录(从kaldi学习语音识别)
  5. Task02:SQL基础查询与排序-天池龙珠计划SQL训练营
  6. 【王道计组笔记】数制、编码、校验
  7. matlab 中的textscan
  8. 感知机为什么不能表示“异或”?
  9. [BD 41-1629] </zynq_ultra_ps_e_0/SAXIGP3/HP1_QSPI> is excluded from all addressable master spaces.
  10. Js去除路径和文件后缀名
  11. HTML+CSS实现一个淡显淡隐轮播图
  12. iOS开发之《英语词汇学习》
  13. 小程序图片自适应宽高,保持图片比例不变
  14. wep 与 wpa 的区别
  15. 树莓派 EC20 mini pcie 开机自动拨号
  16. 五分钟,让你掌握学好CNC数控编程的技巧
  17. python/zmq/monitor
  18. CollectionUtils属于哪个包
  19. win7字体_免费字体?别再乱找了,这里应有尽有
  20. 高阶函数、js函数内返回一个内部函数详解---->函数柯里化

热门文章

  1. webmatrix3 php,webmatrix下载_webmatrix v3.0 官方版_魅蓝下载
  2. Unity3d入门选作作业(一)
  3. Java Swing高级组件——分割面板
  4. 使用 openpyxl 在 Excel 电子表格中自动执行日常任务
  5. linux 路径 冒号_收藏 | Linux常用实用命令
  6. Linux grep命令使用介绍
  7. 【Java】实现聊天程序(完整版)
  8. 【算法】_004_插入排序
  9. 当马斯克打开潘多拉魔盒
  10. 7、em/px/rem/vh/vw区别?