找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LED趣味作品 8*8数字转换及循环 有实物和仿真

[复制链接]
跳转到指定楼层
楼主
51单片机做的8*8数字转换及循环实物图:


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):




单片机源程序如下:
  1. #include<reg52.h>
  2. void delay();
  3. unsigned char code digittab[88]={ //行选通
  4. 0x00,0x00,0x00,0x00,//缓冲下,0从右端出来啦!!!
  5. 0x00,0x00,0x7c,0x82,0x82,0x82,0x7c,0x00,//0
  6. 0x00,0x00,0x00,0x00,0x84,0xfe,0x80,0x00,/*1*/
  7. 0x00,0x00,0xe4,0xa2,0xa2,0xa2,0x9c,0x00,/*2*/
  8. 0x00,0x00,0x44,0x92,0x92,0x92,0x6c,0x00,/*3*/
  9. 0x00,0x00,0x30,0x28,0x24,0xfe,0x20,0x00,/*4*/
  10. 0x00,0x00,0x4e,0x8a,0x8a,0x8a,0x72,0x00,/*5*/
  11. 0x00,0x00,0x7c,0x92,0x92,0x92,0x64,0x00,/*6*/
  12. 0x00,0x00,0x02,0x02,0x02,0xf2,0x0e,0x00,/*7*/
  13. 0x00,0x00,0x6c,0x92,0x92,0x92,0x6c,0x00,/*8*/
  14. 0x00,0x00,0x4c,0x92,0x92,0x92,0x7c,0x00,/*9*/
  15. 0x00,0x00,0x00,0x00//让9继续滚动完
  16. };
  17. unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,}; //列选通  
  18. unsigned char code lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  19. unsigned char code ssy[]={0xff,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  20. unsigned char code zjl[]={0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e};
  21. unsigned char code ssz[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};

  22. void delay(int z)       //延时函数  
  23. {       
  24.         int x,y;   
  25.         for(x=z;x>0;x--)
  26.         for(y=156;y>0;y--);  }

  27. void ss(void)       
  28. {       
  29.         unsigned char i;
  30.     P0=0xff;
  31.         for(i=0;i<8;i++)
  32.         {
  33.                 P2=ssy[i];
  34.                  delay(100);
  35.                  P2=0xff;
  36.                  delay(100);
  37.         }
  38.         for(i=0;i<8;i++)
  39.         {
  40.                 P2=ssz[i];
  41.                 delay(100);
  42.                 P2=0XFF;
  43.                 delay(100);
  44.         }
  45. }
  46.        
  47. void zh(void)
  48. {       
  49.         unsigned char i;
  50.     P0=0xff;
  51.         for(i=0;i<7;i++)
  52.         {P2=zjl[i];
  53.         delay(100);}
  54. }       

  55. void lsy(void)
  56. {       
  57.         unsigned char j,i,k;
  58.         for(k=8;k>0;k--)
  59.         {       
  60.                 P0=lie[i];
  61.                 i++;
  62.                 if(i%2==0)
  63.                 {       
  64.                         for(j=8;j>0;j--)
  65.                          {
  66.                                 P2=tab[j-1];
  67.                                 delay(100);
  68.                         }
  69.                 }
  70.                 else
  71.                 {
  72.                         for(j=0;j<8;j++)
  73.                           {
  74.                                 P2=tab[j];
  75.                                  delay(100);
  76.                         }
  77.                 }
  78.                  if(i==8)
  79.                 {i=0;}
  80.         }
  81. }

  82. void lsl(void)
  83. {       
  84.         unsigned char j,i,k;
  85.         for(k=8;k>0;k--)
  86.         {       
  87.                 P2=tab[7-i];
  88.                 i++;
  89.                 if(i%2==0)
  90.                 {       
  91.                         for(j=8;j>0;j--)
  92.                          {
  93.                                 P0=lie[j-1];
  94.                                 delay(100);}
  95.                         }
  96.                 else
  97.                 {
  98.                         for(j=0;j<8;j++)
  99.                           {       
  100.                                 P0=lie[j];
  101.                                  delay(100);
  102.                         }
  103.                 }
  104.                  if(i==8)
  105.                 {i=0;}
  106.          }
  107. }

  108. void xh(void)
  109. {       
  110.         int j,i;
  111.         for(i=0;i<8;i++)
  112.         {       
  113.                 P0=lie[i];
  114.                   for(j=0;j<8;j++)
  115.                   {        
  116.                         P2=tab[7-j];
  117.                     delay(200);
  118.                 }
  119.         }
  120. }

  121. void main()
  122. {
  123.         unsigned char i=1,x=0,j=0,tcount=0;
  124.         unsigned int ledroll[8];
  125.         for(j=0;j<8;j++)
  126.         ledroll[j]=digittab[j];
  127.         zh();
  128.         ss();
  129.         lsl();
  130.         P0=0X00;
  131.         lsy();
  132.         while(1)
  133. ……………………

  134. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
led趣味作品 - 副本.rar (16.05 MB, 下载次数: 20)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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