找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2590|回复: 1
打印 上一主题 下一主题
收起左侧

制作七彩照明台灯 PCB文件+单片机程序

[复制链接]
跳转到指定楼层
楼主
无聊的时候,总要找点事情做,就有了想做个灯的想法,板子是用AD18画的,,用STC15F104W,实物PCB 下载程序 线画错了,上传的PCB文件改正优化了, 程序呢,由于水平太低, 时间有限,用了最笨的方法,写的程序有很多可以精简的,待优化,懒的搞了,运行效果还是挺好的,分享给新手。谢谢。
一个按键控制全部灯光效果,长按2秒 关灯

制作出来的实物图如下:


Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)


单片机源程序如下:
  1. #include <STC15F2K60S2.H>
  2. sbit w=P3^3;
  3. sbit nw=P3^4;
  4. sbit b=P3^2;
  5. sbit g=P3^1;
  6. sbit r=P3^0;
  7. sbit k=P3^5;
  8.            void ys();
  9.                 unsigned char  a,c,d,v;

  10.                 unsigned int js;
  11.                   void yss(unsigned int u);
  12. void main()
  13. {
  14.                                 k=1; r=g=b=w=nw=0;         a=b=c=d=0;         P3M1=0X00;        P3M0=0X1F;//设置P3.0-3.4口为强推模式

  15.                     EA=1;         // IE 第7位 打开总中断
  16.         //           TF0=0;         清除定时器溢出标志位

  17.                    ET0=1;        // IE的 第1位  打开定时器中断

  18.                    TR0=0;         // TCON的4位 开启定时0

  19.                    TMOD=0X01;//设置定时器方式1,16位定时器。          tmod 是设置定时器工作方式用的定时或计数 ,高4位是定时器1寄存器
  20.                              //低4是定时器0  7 GATE,6 C/T,5 M1,4 M0 ,3 GATE,2 C/T ,1,M1 0,M0

  21.                    TH0=(65536-922)/256;        //装定时器初值,现在是延时1MS的初值
  22.                    TL0=(65536-922)%256;

  23.                    //  TH0 = 0x0FC;
  24.             // TL0 = 0x66;




  25.    while(1)
  26.    {
  27.            aa:         if(k==0){ ys();


  28.                     if(k==0&&a==0){a=1;c++;TR0=1;if(c==12){r=0;g=0;b=0;w=0;nw=0;c=0;
  29.                  
  30.                  
  31.                  
  32.                  
  33.                  
  34.                  
  35.                  
  36.                  
  37.                                          }
  38.        
  39.                                     

  40.                   switch(c)
  41.                   
  42.                          {        case 0:r=0;g=0;b=0;w=0;nw=0; break;
  43.                                  case 1:         r=0;g=0;b=0;w=1;nw=0;break;
  44.                                  case 2:         r=0;g=0;b=0;w=0;nw=1;break;
  45.                                  case 3:         r=0;g=0;b=0;w=1;nw=1;break;
  46.                                  case 4:         r=1;g=0;b=0;w=0;nw=0;break;
  47.                                 case 5:         r=0;g=1;b=0;w=0;nw=0;break;
  48.                                 case 6:         r=0;g=0;b=1;w=0;nw=0; break;
  49.                                 case 7:         r=1;g=1;b=0;w=0;nw=0; break;
  50.                                 case 8:          r=1;g=0;b=1;w=0;nw=0;break;
  51.                                 case 9:          r=1;g=1;b=1;w=0;nw=0;        break;
  52.                             case 10:  r=1;g=1;b=1;w=1;nw=1 ;break;
  53.                           

  54.                          }
  55.                                   
  56.                                             }        }                 
  57.                                          
  58.                                          
  59.                                           if(c==11&&k==1){
  60.                                                                      r=0;g=0;b=0;w=0;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  61.                                                                     r=1;g=0;b=0;w=0;nw=0; yss(1000);          if(k==0) {c=0;  goto aa;}
  62.                                                                     r=0;g=1;b=0;w=0;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  63.                                                                     r=0;g=0;b=1;w=0;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  64.                                                       r=0;g=0;b=0;w=1;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  65.                                                                    r=0;g=0;b=0;w=0;nw=1; yss(1000);         if(k==0) {c=0;  goto aa;}
  66.                                                                    r=0;g=0;b=0;w=1;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  67.                                                                    r=0;g=0;b=1;w=0;nw=0; yss(1000);  if(k==0) {c=0;  goto aa;}
  68.                                                                    r=0;g=1;b=0;w=0;nw=0; yss(1000);   if(k==0) {c=0;  goto aa;}
  69.                                                                    r=1;g=0;b=0;w=0;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  70.                                                                     r=0;g=0;b=0;w=0;nw=0; yss(1000);   if(k==0) {c=0;  goto aa;}


  71.                                                                           r=1;g=0;b=0;w=0;nw=0; yss(1500); if(k==0) {c=0;  goto aa;}
  72.                                                                    r=1;g=1;b=0;w=0;nw=0; yss(1500);            if(k==0) {c=0;  goto aa;}
  73.                                                                     r=1;g=1;b=1;w=0;nw=0; yss(1500);            if(k==0) {c=0;  goto aa;}
  74.                                                                     r=1;g=1;b=1;w=1;nw=0; yss(1500);            if(k==0) {c=0;  goto aa;}
  75.                                                                   r=1;g=1;b=1;w=1;nw=1; yss(1500);            if(k==0) {c=0;  goto aa;}
  76.                                                                             
  77.                                                                           r=0;g=0;b=0;w=0;nw=1; yss(1500);  if(k==0) {c=0;  goto aa;}
  78.                                                                    r=0;g=0;b=0;w=1;nw=1; yss(1500);          if(k==0) {c=0;  goto aa;}
  79.                                                                     r=0;g=0;b=1;w=1;nw=1; yss(1500);           if(k==0) {c=0;  goto aa;}
  80.                                                                     r=0;g=1;b=1;w=1;nw=1; yss(1500);            if(k==0) {c=0;  goto aa;}
  81.                                                                   r=1;g=1;b=1;w=1;nw=1; yss(1500);           if(k==0) {c=0;  goto aa;}

  82.                                                                     r=0;g=0;b=0;w=0;nw=0; yss(1000);   if(k==0) {c=0;  goto aa;}
  83.                                                                 r=1;g=1;b=1;w=1;nw=1; yss(1000);          if(k==0) {c=0;  goto aa;}
  84.                                                                  r=0;g=0;b=0;w=0;nw=0; yss(1000);            if(k==0) {c=0;  goto aa;}
  85.                                                                          r=1;g=1;b=1;w=1;nw=1; yss(1000);    if(k==0) {c=0;  goto aa;}
  86.                                                                         r=0;g=0;b=0;w=0;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}
  87.                                                                                  r=1;g=1;b=1;w=1;nw=1; yss(1000); if(k==0) {c=0;  goto aa;}       
  88.                                                                  r=0;g=0;b=0;w=0;nw=0; yss(1000);                  if(k==0) {c=0;  goto aa;}
  89.                                                                          r=1;g=1;b=1;w=1;nw=1; yss(1000);   if(k==0) {c=0;  goto aa;}
  90.                                                                         r=0;g=0;b=0;w=0;nw=0; yss(1000);         if(k==0) {c=0;  goto aa;}

  91.                                                                                    c=11;
  92.                                           
  93.                                           }
  94.                                          if(a==1&&k==1)        {a=0;TR0=0;js=0;v=0;}



  95.                                 //  r=g=b=w=nw=1;



  96.    }
  97. }
  98. void ys()
  99. {        unsigned char d,f;

  100.          for(d=0;d<100;d++)
  101.          for(f=0;f<20;f++);



  102. }
  103. void dingshi()interrupt 1// 定时器0 优先级是1
  104.   {
  105.                          
  106.                                     TH0=(65536-922)/256;        //装定时器初值,现在是延时1MS的初值
  107.                             TL0=(65536-922)%256;
  108.                        
  109.                                 js++; if(js==1000){js=0;v++;if(v==1){r=g=b=w=nw=0;TR0=0;v=0;c=0;}if(v==6){v=0;                }
  110.                                
  111.                                
  112.                                
  113.                                 }

  114.                                           
  115.           }       
  116. void yss(unsigned int u)
  117. {        unsigned int d,f;

  118.          for(d=0;d<u;d++)
  119.          for(f=0;f<150;f++);
  120.          
  121.          }
复制代码

所有资料51hei提供下载:
led.rar (1.03 MB, 下载次数: 29)
850ad7c8f94eaa4bc3699e9276356e76.rar (1.56 MB, 下载次数: 28)


评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:98992 发表于 2019-11-5 12:07 | 只看该作者
需要这么大的管子吗 浪费吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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