搜索
bottom↓
回复: 16

16LED摇摇棒

[复制链接]

出0入0汤圆

发表于 2011-10-24 18:03:16 | 显示全部楼层 |阅读模式
#include <reg52.h>
/*********外部接口定义**********/
#define out P1        //数据输出端口
sbit led1=P3^0;        //第1组LED
sbit led2=P3^1;        //第2组LED
sbit p3_3=P3^3;//滚珠开关
sbit key1=P3^7;//切换开关

/*********全局变量定义**********/
unsigned long int TimeCount=0;         //定时器单位时间计数
unsigned int         DelayN=80,                //延时临时计数
                                DelayTime=80;                //每次延时的周期个数
unsigned char key;                //按键输入

/*********图片点阵数据表**********/
unsigned char code pic1[]=
{

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,
0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,0x07,0xC0,
0x07,0xC0,0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,
0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF //I
};
unsigned char code pic2[]=
{
0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0x07,0xFE,
0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,
0x1F,0xE0,0x0F,0xF0,0x07,0xF8,0x03,0xFC,
0x07,0xFE,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF //爱心
};
unsigned char code pic3[]=
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xF0,
0x03,0xE0,0xFF,0xC7,0xFF,0xCF,0xFF,0xCF,
0xFF,0xCF,0xFF,0xCF,0xFF,0xC7,0x03,0xE0,
0x03,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF //U
};
/*0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,
0xFF,0xCF,0xE7,0xCF,0xE3,0xCF,0x01,0xC0,
0x01,0xC0,0xFF,0xCF,0xFF,0xCF,0xFF,0xCF,
0xFF,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF*///1

/*0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFB,0xEF,
0xFB,0xEF,0x1B,0xE0,0xFB,0xEF,0xFB,0xEF,
0x03,0xE0,0x7B,0xEF,0x7B,0xEF,0xFB,0xEF,
0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF*/ //正

/*0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,
0xFF,0xCF,0xFF,0xCF,0xFF,0xCF,0x01,0xC0,
0x01,0xC0,0xE3,0xCF,0xE7,0xCF,0xFF,0xCF,
0xFF,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF*///1
/* (16 X 16 ) */

/*********子程序声明**********/
void delay(unsigned char n);        //延时子程序
void display_pic(unsigned char code *pic);        //图片显示子程序
/********* 主 程 序 **********/
void main()
{       
    unsigned int i;
        EX1=1;        //开放外部中断1
        IT1=0;        //中断1为边沿触发方式
        IP=0x08;        //设置中断嵌套
        TMOD=0x20;        //定时器1方式2,8位重装载
        TH1=0x80;        //设定定时器初值
        TL1=0x80;
        EA=1;                //开放中断
        ET1=1;        //开放定时器1中断
        TR1=1;        //启动定时器0,开始计时
        key=0;        //初始化显示第一组文字
   // out=0xff;
    //led1=0x00;
    //led2=0x00;
        while(1)
      {
         //等待中断
                if(key1==0)
           {
                        for(i=0;i<6000;i++);        //按键去抖处理
                        if(key1==0)
                {                        //有键按下
                                key++;                                //更换下一幅图片
                                if(key==4) key=0;        //图片循环显示
                                while(key1==0);                //等待按键释放
                            }
                    }
          };       
}

/*********图片显示子程序**********/
void display_pic(unsigned char code *pic)        //显示16*16点阵图
{        unsigned char i,n;
        n=0;                                        //初始化数据表计数
        for(i=0;i<16;i++){                //共显示16*3=48列
                out=0xff;                        //清显示
                led2=1;                        //关闭第2组LED
                led1=0;                        //开启第1组LED          
                out=*(pic+n++);        //输出数据到LED
                delay(1);                //延时
                       
                out=0xff;                        //清显示
                led1=1;                        //关闭第1组LED
                led2=0;                         //开启第2组LED
                out=*(pic+n++);        //输出数据到LED
                delay(1);                 //延时
        }
}
/*********显示内容选择子程序**********/
void display(unsigned char i)
{
        switch (i){                                                        //通过按键选择显示内容
                case 0:        display_pic(pic1);break;
                case 1:        display_pic(pic2);break;
                case 2:        display_pic(pic3);break;
        }
}
/*********延时子程序**********/
void delay(unsigned char n)
{
        for(;n>0;n--)
       {
                DelayN=DelayTime;
                while (DelayN);
           }
}


/*********中断子程序**********/
void int1() interrupt 2                //使用外部中断1
{       
        if(TimeCount<800) return;        //中断去抖4500
        out=0xff;                                //清显示
        DelayTime=TimeCount/200;//设定每次延时时钟周期数=总时间/(16列*2组*1个字)640
        TimeCount=0;                        //延时周期计数清零
        delay(70);                //延时20列

        display(key);
        //display_pic(pic1);                        //显示图片
        out=0xff;
        while(p3_3==0);
}



void timer1() interrupt 3                //定时器1中断子程序
{
        TimeCount++;
        if (DelayN!=0)
                DelayN--;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2011-10-24 18:28:22 | 显示全部楼层
回复【楼主位】rickly_hzy
-----------------------------------------------------------------------


自己焊接的电路 (原文件名:20111024568.jpg)

看看效果ourdev_688309A2EG4J.avi视频文件大小:7.00M) (原文件名:20111022032.avi)

出0入0汤圆

发表于 2011-10-29 19:31:18 | 显示全部楼层
这个不错

出0入0汤圆

发表于 2013-1-26 12:08:10 | 显示全部楼层
我在做。少几个10k的电阻。。。少一个水银开关。。。买不到啊。。。什么情况?

出0入0汤圆

发表于 2013-1-27 10:36:42 来自手机 | 显示全部楼层
598439837 发表于 2013-1-26 12:08
我在做。少几个10k的电阻。。。少一个水银开关。。。买不到啊。。。什么情况? ...

我的开关是用滚珠自制的,也还凑合用,不知你用10K电阻做什么

出0入0汤圆

发表于 2013-1-27 11:38:50 | 显示全部楼层
5612404 发表于 2013-1-27 10:36
我的开关是用滚珠自制的,也还凑合用,不知你用10K电阻做什么

这图上很多10k电阻啊。。我照这个做的。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-27 11:40:32 | 显示全部楼层
在做,新手,第一次做东西。求QQ,求指点。。

出0入0汤圆

发表于 2013-1-27 22:37:21 | 显示全部楼层
不错,有时间我也试试

出0入0汤圆

发表于 2013-1-27 23:05:32 | 显示全部楼层
挺好不错

出0入0汤圆

发表于 2013-2-1 10:47:22 | 显示全部楼层
598439837 发表于 2013-1-27 11:38
这图上很多10k电阻啊。。我照这个做的。。。

不用10k的也应该可以,和10k接近,复位电路还是用10k吧

出0入0汤圆

发表于 2013-2-1 12:42:44 | 显示全部楼层
挺不错的

出0入0汤圆

发表于 2013-2-1 14:04:59 | 显示全部楼层
598439837 发表于 2013-1-27 11:38
这图上很多10k电阻啊。。我照这个做的。。。

淘宝搜索“排阻”吧少年,那东西用起来真TM爽……

出0入0汤圆

发表于 2013-2-9 10:36:58 | 显示全部楼层
清雨影 发表于 2013-2-1 14:04
淘宝搜索“排阻”吧少年,那东西用起来真TM爽……

好吧。。。

出0入0汤圆

发表于 2013-2-10 08:07:57 | 显示全部楼层
我也做过,挺好玩的。。

出0入0汤圆

发表于 2013-2-10 16:23:37 | 显示全部楼层
PCB打样做了个小的,52mm*17mm,用的是STM8l101f3,送妹子了。

出0入0汤圆

发表于 2013-2-14 09:43:02 | 显示全部楼层
F:\电子小组\摇摇帮 终极精简美化版(附程序 取模软件)

出0入0汤圆

发表于 2013-2-14 09:44:22 | 显示全部楼层
摇摇棒STC89C52

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 13:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表