当前位置:首页 > 单片机 > 单片机
[导读]该文是一篇基于51单片机的DIY制作详述,作者此时是51单片机初学者,这个制作也可以作为不少单片机学习者的练手实验,如进行多样衍生会得到不错的设计。

该文是一篇基于51单片机的DIY制作详述,作者此时是51单片机初学者,这个制作也可以作为不少单片机学习者的练手实验,如进行多样衍生会得到不错的设计。

在网上看到不少老外做的各种旋转LED显示屏,非常cool,我也动手用洞洞板试做了一个类似的显示屏,结果感觉还不错。

由于刚学51单片机,加上制作电路板软件也是从零开始,的确花了我不少的时间和精力。不过也就是在这艰难的独立制作中,真正学到了不少实在的东西。

本项目的关键是如何解决高速旋转的电路板如何供电,如何调时的问题。我采用电机电刷的原理,将旋转轴钻空,通过一只插头将电源的从反面引到前面的电路板上,而这个旋转的插头又与固定在背板上的两个铜片接触的。调时的问题有些困难,一是让电路板在旋转前与PC机相接,由电脑传送调时数据,这虽然可行但不方便。还有就是用遥控方法,但此方案在调试方面有很大的困难。

显示方式上,我采用平衡式的两排LED,这除了在旋转时能较好的保持平衡外,主要能利用两边交替显示方式,比单排要快一倍。

本装置不仅是一个时钟,它还可以动态显示汉字及图案,这就看如何发挥了。

其具体制作过程如下:

一, 旋转电机的制作

从制作成本与方便考虑,选用旧电脑用的大软驱上的直流无刷电机,只是对局部进行改造。

就是这种古董软驱

软驱上的直流无刷电机

拆开后的电机

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

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

电机装配完成后用两片铜片做的电刷

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

二, 电路板的制作

本制作品用51单片机控制。

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

三, 软件编程

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

#include

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;jj201+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(;;){

Delay(10);

if(sw==1) {display_clock();sw=0;}

}

}

四, 运行效果

从开机,调整到最后完成。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭