找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7886|回复: 11
收起左侧

电脑上位机控制单片机流水灯花样的变化

  [复制链接]
ID:3721 发表于 2016-6-17 01:21 | 显示全部楼层 |阅读模式

0.png

上位机程序,vc++编程,51黑附件中该可以下载源代码

下面是电脑可控流水灯的下位机单片机源码:
  1. #include<reg52.h>
  2. #include <intrins.h>                                //该库函数中包含了下面程序中要用到的_crol_()函数
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar flag,d;
  6. const unsigned char design[77]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,// 左移
  7. 0x7F,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,//右移
  8. 0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, //逐渐点亮
  9. 0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, //逐渐点亮
  10. 0xE7,0xDB,0xBD,0x7E,0xFF ,//从中间到两边
  11. 0xE7,0xDB,0xBD,0x7E,0xFF,//从中间到两边
  12. 0x7F,0x7F,0xDF,0xDF,0xf7,0xf7,0xfd,0xfd,0x0,0x0,
  13. 0xbf,0xbf,0xef,0xef,0xfb,0xfb,0xfe,0xfe,0x0,0x0,
  14. 0x3f,0xcf,0xfc,0xf3,
  15. 0x1f,0x8f,0xc7,0xe3,0xf1,};





  16. void delayms()            // 延时子程序
  17. {                                               
  18.         uint i;

  19.   for(i = 0; i < 20000; i++);

  20. }



  21. void main()
  22. {
  23.   TMOD=0x20;
  24.   TH1=0xfd;
  25.   TL1=0xfd;
  26.   TR1=1;
  27.   REN=1;
  28.   SM0=0;
  29.   SM1=1;
  30.   EA=1;
  31.   ES=1;
  32.   while(1)
  33.   {           if(flag==1)
  34.      {         ES=0;
  35.             flag=0;
  36.             SBUF=d;

  37.            while(!TI);
  38.            TI=0;
  39.                 ES=1;
  40.                  
  41.          
  42.          }
  43.   
  44.   }       

  45. }
  46. void ckzd() interrupt 4
  47. { uchar b,LED,c, i;         uint a;
  48. uchar LED1=0XFE,LED2=0XFD,LED3=0XFB,LED4=0XF7,LED5=0XEF,LED6=0XDF,LED7=0xbf,LED8=0X7F;
  49.          RI=0;
  50.          b=SBUF;

  51.     d=SBUF;
  52.          flag=1;





  53. switch( b ) {
  54.     case 'a':
  55.   
  56.       P1=P1&LED1;break;

  57.         case 'A':                        //led1

  58.       P1=P1|(~LED1);break;

  59.     case 'b':

  60.       P1=P1&LED2;break;
  61.          case 'B':                         //led2

  62.      P1=P1|(~LED2);break;

  63.         case 'c':
  64.       
  65.       P1=P1&LED3;break;

  66.         case'C':                        //led3

  67.            P1=P1|(~LED3); break;

  68.     case'd':

  69.       P1=P1&LED4;break;

  70.         case'D':                   //led4

  71.            P1=P1|(~LED4);break;

  72.         case 'e':

  73.       P1=P1&LED5; break;

  74.     case'E':
  75.                                           //led5
  76.            P1=P1|(~LED5); break;

  77.         case 'f':                          

  78.         P1=P1&LED6;break;

  79.         case'F':
  80.        
  81.            P1=P1|(~LED6);break;         //led6

  82.         case 'g':

  83.       P1=P1&LED7; break;

  84.      case'G':

  85.          P1=P1|(~LED7);break; //led7

  86.          case 'h':
  87.    
  88.       P1=P1&LED8;break;

  89.          case'H':
  90.        
  91.            P1=P1|(~LED8);break;         //led8

  92.   






  93.         case '1':

  94.               LED = 0x7f;
  95.            P1 = P1&LED;
  96.       for(i=0;i<8;i++)
  97.           {

  98.                              
  99.                 LED = _crol_(LED,1);//循环左移1位,点亮下一个LED,_crol_()是库函数左移
  100.                 P1 = LED;
  101.                          delayms();//延时

  102.           }        ;
  103.              LED = 0x7f;
  104.            P1 = P1&LED;
  105.       for(i=0;i<8;i++)
  106.           {

  107.                              
  108.                 LED = _crol_(LED,1);//循环左移1位,点亮下一个LED,_crol_()是库函数左移
  109.                 P1 = LED;
  110.                          delayms();//延时

  111.           }        ;

  112.                 P1=0xff;
  113.    
  114.        break;
  115.            case '2':

  116.               LED = 0xFE;
  117.            P1 =P1& LED;

  118.           for(i=0;i<8;i++)
  119.           {

  120.                              
  121.                 LED = _cror_(LED,1);//循环右移1位,点亮下一个LED,_crol_()是库函数左移
  122.                 P1 = LED;
  123.                 delayms();//延时
  124.                

  125.           }        ;

  126.                   LED = 0xFE;
  127.            P1 =P1& LED;

  128.           for(i=0;i<8;i++)
  129.           {

  130.                              
  131.                 LED = _cror_(LED,1);//循环右移1位,点亮下一个LED,_crol_()是库函数左移
  132.                 P1 = LED;
  133.                 delayms();//延时
  134.                

  135.           }        ;
  136.                  P1=0xff;
  137.    
  138.        break;

  139.    case '3':
  140.   
  141.            for (c=0; c<77; c++)
  142.                             {
  143.                              for(a=0; a<30000; a++); //延时一段时间
  144.                              P1 = design[c]; //读已定义的花样数据并写花样数据到 P0 口
  145.                             }
  146.          

  147.      default:
  148.       P1=0xff;
  149.       break;
  150.   }
  151.        
  152. }
  153.        
复制代码

0.png

可以通过上位机按钮控制流水灯花样变化
led上位机下位机.rar (4.99 MB, 下载次数: 146)

评分

参与人数 4黑币 +19 收起 理由
xb84510 + 5
小菜不败 + 4 绝世好帖!
23032 + 5 很给力!
dcs + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:138918 发表于 2016-9-9 10:12 | 显示全部楼层
真的不错哦 果断收藏
回复

使用道具 举报

ID:199554 发表于 2017-5-11 15:01 | 显示全部楼层
感谢
回复

使用道具 举报

ID:249699 发表于 2017-11-15 15:51 | 显示全部楼层
给力!!51黑有你更精彩!!!
回复

使用道具 举报

ID:240034 发表于 2018-4-12 18:11 | 显示全部楼层
不错,跟着学习了!!
回复

使用道具 举报

ID:218113 发表于 2018-8-24 13:43 | 显示全部楼层
感谢分享,很不错
回复

使用道具 举报

ID:456793 发表于 2018-12-27 20:46 | 显示全部楼层
老铁,很棒
回复

使用道具 举报

ID:432687 发表于 2019-5-26 03:16 来自手机 | 显示全部楼层
完美一直在寻找它很长一段时间! 谢谢你的分享。
回复

使用道具 举报

ID:71883 发表于 2019-7-31 17:35 | 显示全部楼层
感谢分享,很不错。w10能用吗?
回复

使用道具 举报

ID:384552 发表于 2019-10-31 15:51 | 显示全部楼层
非常感谢
回复

使用道具 举报

ID:185751 发表于 2019-11-10 14:43 | 显示全部楼层

不错,跟着学习了!!
回复

使用道具 举报

ID:517493 发表于 2019-11-26 17:50 | 显示全部楼层
支持楼主,学习
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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