找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机的节日彩灯设计 含原理图与源程序

[复制链接]
跳转到指定楼层
楼主
基于51单片机的节日彩灯设计程序以及原理图
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)


单片机源程序如下:
  1.     #include"reg51.h"
  2.         void delay_ms(unsigned int);
  3.         void disp0(void);
  4.         void disp1(void);
  5.         void disp2(void);
  6.         void disp3(void);
  7.         void disp4(void);
  8.         void disp5(void);
  9.         void disp6(void);
  10.         void disp7(void);
  11.     unsigned char code biao0[]={
  12.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  13.         0x18,0x3C,0x7E,0xDB,0x99,0x18,0x18,0x18,
  14.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  15.     unsigned char code biao1[4][8]={
  16.         0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,   
  17.         0x00,0x00,0x3C,0x24,0x24,0x3C,0x00,0x00,
  18.         0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00,
  19.         0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF};
  20.     unsigned char code biao2[7][8]={
  21.         0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
  22.         0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
  23.         0x00,0x18,0x24,0x42,0x42,0x24,0x18,0x00,
  24.         0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18,
  25.         0x24,0x42,0x81,0x00,0x00,0x81,0x42,0x24,
  26.         0x42,0x81,0x00,0x00,0x00,0x00,0x81,0x42,
  27.         0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81};
  28.         unsigned char code biao3[][8]={
  29.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30.         0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
  31.         0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,
  32.         0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,
  33.         0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x3C,0x18};
  34.         unsigned char code biao4[10][8]={
  35.         0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
  36.         0x42,0xA5,0x42,0x18,0x18,0x42,0xA5,0x42,
  37.         0x04,0x0A,0x44,0xBA,0x5D,0x12,0x38,0x10,
  38.         0x04,0x4A,0xA4,0x58,0x1A,0x25,0x52,0x20,
  39.         0x04,0x4E,0xE4,0x58,0x1A,0x27,0x72,0x20,
  40.         0x42,0xA5,0x42,0x18,0x18,0x42,0xA5,0x42,
  41.         0x42,0xE7,0x42,0x18,0x18,0x42,0xE7,0x42,
  42.         0x20,0x72,0x27,0x1A,0x58,0xE4,0x4E,0x04,
  43.         0x10,0x38,0x12,0x5F,0xFA,0x48,0x1C,0x08,
  44.         0x08,0x1C,0x48,0xFA,0x5F,0x12,0x38,0x10};
  45.   
  46. void main(void)
  47. {
  48.         while (1)
  49.                 {
  50.                 switch (P1)
  51.                                 {
  52.                                 case 0xfe:delay_ms(10);
  53.                                         if (P1==0xfe)
  54.                                         {       
  55.                                                 for (;;)
  56.                                                 {
  57.                                                 if (P1==0xfe)
  58.                                                 continue;
  59.                                                 else break;
  60.                                                 }
  61.                                                 for (;;)
  62.                                                 {
  63.                                                 while (P1==0xfe);
  64.                                                 if (P1==0xfe) continue;
  65.                                                 else break;
  66.                                                 }
  67.                                                 disp0();
  68.                                         }       
  69.                                                 break;
  70.                                 case 0xfd:delay_ms(10);
  71.                                         if (P1==0xfd)
  72.                                         {
  73.                                                 for (;;)
  74.                                                 {
  75.                                                 if (P1==0xfd)
  76.                                                 continue;
  77.                                                 else break;
  78.                                                 }
  79.                                                 for (;;)
  80.                                                 {
  81.                                                 while (P1==0xfd);
  82.                                                 if (P1==0xfd) continue;
  83.                                                 else break;
  84.                                                 }
  85.                                                 disp1();
  86.                                         }
  87.                                                 break;
  88.                                 case 0xfb:delay_ms(10);
  89.                                         if (P1==0xfb)
  90.                                         {
  91.                                                 for (;;)
  92.                                                 {                       
  93.                                                 if (P1==0xfb)
  94.                                                 continue;
  95.                                                 else break;
  96.                                                 }
  97.                                                 for (;;)
  98.                                                 {
  99.                                                 while (P1==0xfb);
  100.                                                 if (P1==0xfb) continue;
  101.                                                 else break;
  102.                                                 }
  103.                                                 disp2();
  104.                                         }
  105.                                                 break;
  106.                                 case 0xf7:delay_ms(10);
  107.                                         if (P1==0xf7)
  108.                                         {
  109.                                                 for (;;)
  110.                                                 {
  111.                                                 if (P1==0xf7)
  112.                                                 continue;
  113.                                                 else break;
  114.                                                 }
  115.                                                 for (;;)
  116.                                                 {
  117.                                                 while (P1==0xf7);
  118.                                                 if (P1==0xf7) continue;
  119.                                                 else break;
  120.                                                 }
  121.                                                 disp3();
  122.                                         }
  123.                                                 break;
  124.                                 case 0xef:delay_ms(10);
  125.                                         if (P1==0xef)
  126.                                         {
  127.                                                 for (;;)
  128.                                                 {
  129.                                                 if (P1==0xef)
  130.                                                 continue;
  131.                                                 else break;
  132.                                                 }
  133.                                                 for (;;)
  134.                                                 {
  135.                                                 while (P1==0xef);
  136.                                                 if (P1==0xef) continue;
  137.                                                 else break;
  138.                                                 }
  139.                                                 disp4();
  140.                                         }
  141.                                                 break;
  142.                                 case 0xdf:delay_ms(10);
  143.                                         if (P1==0xdf)
  144.                                         {
  145.                                                 for (;;)
  146.                                                 {
  147.                                                 if (P1==0xdf)
  148.                                                 continue;
  149.                                                 else break;
  150.                                                 }
  151.                                                 for (;;)
  152.                                                 {
  153.                                                 while (P1==0xdf);
  154.                                                 if (P1==0xdf) continue;
  155.                                                 else break;
  156.                                                 }
  157.                                                 disp5();
  158.                                         }
  159.                                                 break;
  160.                                 case 0xbf:delay_ms(10);
  161.                                         if (P1==0xbf)
  162.                                         {
  163.                                                 for (;;)
  164.                                                 {
  165.                                                 if (P1==0xbf)
  166.                                                 continue;
  167.                                                 else break;
  168.                                                 }
  169.                                                 for (;;)
  170.                                                 {
  171.                                                 while (P1==0xbf);
  172.                                                 if (P1==0xbf) continue;
  173.                                                 else break;
  174.                                                 }
  175.                                                 disp6();
  176.                                         }
  177.                                                 break;
  178.                                 case 0x7f:delay_ms(10);
  179.                                         if (P1==0x7f)
  180.                                         {
  181.                                                 for (;;)
  182.                                                 {
  183.                                                 if (P1==0x7f)
  184.                                                 continue;
  185.                                                 else break;
  186.                                                 }
  187.                                                 for (;;)
  188.                                                 {
  189.                                                 while (P1==0x7f);
  190.                                                 if (P1==0x7f) continue;
  191.                                                 else break;
  192.                                                 }
  193.                                                 disp7();
  194.                                         }
  195.                                                 break;
  196.                                         default: break;
  197.                                 }
  198.         }
  199. }       
  200.        
  201. void disp7(void)
  202. {
  203.         char i,temp;
  204.         temp=0x01;
  205.         for(i=0;i<=3;i++)
  206.     {
  207.         temp=0x01;
  208.            P0=(temp<<(4+i)|temp<<(3-i));
  209.         P2=0;
  210.         temp=temp<<1;
  211.            delay_ms(500);
  212.            }
  213.     for(i=0;i<=3;i++)
  214.     {
  215.         temp=0x01;
  216.            P0=(temp<<(7-i)|temp<<(0+i));
  217.         P2=0;
  218.         temp=temp<<1;
  219.            delay_ms(500);
  220.            }       
  221.         P2=0xff;
  222.         P0=0x00;
  223. }

  224. void disp6(void)
  225. {
  226.         char i,temp;
  227.         temp=0xfe;
  228.     for(i=0;i<=7;i++)
  229.     {
  230.            P0=~temp;
  231.         P2=0x00;
  232.         temp=temp<<1;
  233.            delay_ms(500);
  234.            }
  235.     temp=0x80;
  236.     for(i=0;i<=7;i++)
  237.     {
  238.            P0=~temp;
  239.         P2=0x00;
  240.         temp=temp>>1;
  241.            delay_ms(500);
  242.            }
  243.         P2=0xff;
  244.         P0=0x00;
  245. }
  246.        
  247. void disp5(void)
  248. {
  249.         unsigned char i,temp;
  250.         temp=0x01;
  251.         for(i=0;i<=7;i++)
  252.         {
  253.         P0=temp;
  254.         P2=0x00;
  255.         temp=temp<<1;
  256.     delay_ms(500);
  257.         }
  258.         temp=0x80;
  259.     for(i=0;i<=7;i++)
  260.         {
  261.         P0=temp;
  262.         P2=0x00;
  263.         temp=temp>>1;
  264.         delay_ms(500);
  265.         }
  266.         P2=0xff;
  267.         P0=0x00;
  268. }
  269. void disp4(void)
  270. {
  271.         unsigned char i=0,j=0,k=0;
  272.         for (;;)
  273.         {
  274.                 for (i=0;i<=7;i++)
  275.                 {
  276.                 P2=0xff;
  277.                 P0=biao4[k][i];
  278.                 P2=~(0x80>>i);
  279.                 delay_ms(1);
  280.                 }
  281.                 if (j++>=70)
  282.                 {
  283.                 j=0;
  284.                 if(k++>=9) k=0;
  285.                 }       
  286.                 if (P1!=0xff)
  287.                 {
  288.                 P2=0xff;
  289.                 P0=0x00;
  290.                 break;
  291.                 }
  292.         }       
  293. }
  294.        
  295. void disp3(void)
  296. {
  297.         unsigned char i=0,j=0,k=0;
  298.         for (;;)
  299.         {
  300.                 for (i=0;i<=7;i++)
  301.                 {
  302.                 P2=0xff;
  303.                 P0=biao3[k][i];
  304.                 P2=~(0x80>>i);
  305.                 delay_ms(1);
  306.                 }
  307.                 if (j++>=70)
  308.                 {
  309.                 j=0;
  310.                 if(k++>=4) k=0;
  311.                 }       
  312.                 if (P1!=0xff)
  313.                 {
  314.                 P2=0xff;
  315.                 P0=0x00;
  316.                 break;
  317.                 }
  318.         }       
  319. }
  320.        
  321. void disp2(void)
  322. {
  323.         unsigned char i=0,j=0,k=0;
  324.         for (;;)
  325.         {
  326.                 for (i=0;i<=7;i++)
  327.                 {
  328.                 P2=0xff;
  329.                 P0=biao2[k][i];
  330.                 P2=~(0x80>>i);
  331.                 delay_ms(1);
  332.                 }
  333.                 if (j++>=70)
  334.                 {
  335.                 j=0;
  336.                 if(k++>=6) k=0;
  337.                 }       
  338.                 if (P1!=0xff)
  339.                 {
  340.                 P2=0xff;
  341.                 P0=0x00;
  342.                 break;
  343.                 }
  344.         }       
  345. }
  346.        
  347. void disp1(void)
  348. {
  349.         unsigned char i=0,j=0,k=0;
  350.         for (;;)
  351.         {
  352.                 for (i=0;i<=7;i++)
  353.                 {
  354.                 P2=0xff;
  355.                 P0=biao1[k][i];
  356.                 P2=~(0x80>>i);
  357.                 delay_ms(1);
  358.                 }
  359.                 if (j++>=70)
  360.                 {
  361.                 j=0;
  362.                 if(k++>=3) k=0;
  363.                 }       
  364.                 if (P1!=0xff)
  365.                 {
  366.                 P2=0xff;
  367. ……………………

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

所有资料51hei提供下载:
节日彩灯设计程序.rar (155.67 KB, 下载次数: 45)


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

使用道具 举报

沙发
ID:451760 发表于 2019-1-4 15:03 | 只看该作者
那么好
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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