专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

基于单片机的旋转led(初级版)

作者:佚名   来源:本站原创   点击数:  更新时间:2012年12月13日   【字体:

   旋转led,记得第一次接触的时候是在半年前的一个视频,当时什么都不知道,为何这样显示呢?就是想不通,后来买了一个套件,做出来了,也是想不通,其实那个套件不用编程序,有一个可以直接生成.HEX文件,所以对于 这种懒于编程序的人来说,是一个不错的选择,可是后来,在度娘不断的开导与帮助下,我终于能自己编一个小程序了,度娘给予了我极大的帮助,她教会了我许多,在此感谢一下我伟大的度娘,先说一下本次历时很久,颇具传奇的旋转led吧。
硬件部分:
(1)底座供电,采用通用的无线供电技术,别小瞧这个东西,虽然电路很简单,可是不是很好调啊,这个破东西浪费了我数日不吃不喝的精力,平时看网上他们调的都很好,供电也很稳定,为啥我这个就问题重重呢?真是特娘的无语,电压值先从0.8v升到1.3v,这个升压是我调了一下三极管的基极电压值,然后又从1.3v升至1.8,这是我换了一个三极管,可是这个电压还不能是单片机工作起来,怎么办,此时我的脑袋里闪现了华仔的那个半波与全波问题了,我换了一个整流桥,结果升至3.3v了,虽然这个电路产生的电流呈现三角波,按照常理,我这个用个半波就够了,但是我这个真的不可以,虽然此时的电压是3.3v但是及其的不稳定,也就是说单片机总是重启,不能连续的工作,就在此时,我把供电的电压改变成了12v,原来是5v供电,这个结果很明显,单片机工作了,记得那天的这个时候已经熄灯了,可是晚上我左思右想,想了许久,终于想出来了,把电容改变一下(记得第二天我和别人吹,我的脑袋就是一个多功能的示波器),结果成功了,现在5v供电电压值一般在3.8v以上,这时我终于可以组装测试了。
(2)最小系统,这个很简单,但是由于我对于我的每一件作品要求比较高,所以我这个东西焊的时间也比较长,还有一个就是由于无线供电的问题,上面的最小系统的某些东西选型一定要注意,尤其是发光二级管的选择,当然如果无线供电调的很好就不用考虑这些了,还有一点就是千万不能用那种三色七彩闪烁的那种,只要用一个就会出问题,但是我现在还没有找到原因,可能是我那个东西得位置放置的不合理吧,等以后慢慢研究...
软件部分:
如果只想显示几个字那很简单,要是想弄其他的,有点难度,所以对于初级版的来说,我这个就简单的让它显示点自吧,
平面字程序:
 void main(void)
{
    uint i=0,j=0 ;
P1=0XFF;
P2=0XFF;
P3=0XFF;
    //主程序中只检测对管
    while(1)
    {
        if(KEY==0) //红外接收管 判断起始位
        {
            j++;           
            if(j>320) //根据显示的字数定义改数值320/16=20个字 显示完20个字后 重新开始
            {
                j=0 ;
            }           
             for(i=j;i<96+j;i++) //每转一圈  前进一列  这里定义一圈中同时显示96/16=6个字,
             {                                   
                P1=love[i*2];  //字幕数据低位送显示
                P2=love[i*2+1]; //字幕数据高位送显示 
                DelayUs(210);//延时让LED亮起来 每列延时的时间
                P1=0XFF;
                P2=0XFF;
               
            }
        }
    }
}
这里还有个小插曲,就是字刚开始的大小问题,其实解决这个问题很简单,有些人用软件解决,但是我比较喜欢用硬件,因为省事,在电机的一段串几个二极管就好了。
下面是我本次旋转了的的图片和视频




关闭窗口

相关文章