找回密码
 立即注册

QQ登录

只需一步,快速开始

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

模拟广告牌的字体流动显示屏单片机源程序

[复制链接]
跳转到指定楼层
楼主
ID:194140 发表于 2017-4-27 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /*********************************************************************************
  2. * 【作    者】: 清翔
  3. * 【外部晶振】: 11.0592mhz        
  4. * 【主控芯片】: STC89C52
  5. * 【编译环境】: Keil μVisio3        
  6. * 【程序功能】: 模拟广告牌的字体流动显示                                                                                          
  7. * 【使用说明】: 含有两个显示函数,一个为一次在任意位显示任意数字,
  8.                   一个为一次显示六个不同数字。
  9. *  说明:免费开源,不提供源代码分析.
  10. **********************************************************************************/

  11. #include<reg51.h>

  12. #define uchar unsigned char

  13. uchar a=0,b=1,c=2,d=3,e=4,f=5,g=6,h=7,temp,key,k,m,n;
  14. unsigned long i,j;

  15. sbit dula=P2^6;
  16. sbit wela=P2^7;
  17. sbit beep=P2^3;

  18. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  19.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
  20.                                                  //最后一个0x00代表无显示。
  21. void delay(unsigned long i)
  22. {
  23.         for(j=i;j>0;j--)
  24.         for(k=125;k>0;k--);
  25. }

  26. void display(uchar wei,uchar shu)//在任意一位显示任意的数字
  27. {
  28.    dula=0;
  29.    P0=table[shu];
  30.    dula=1;
  31.    dula=0;

  32.    wela=0;
  33.    switch(wei)
  34.    {
  35.            case 1:
  36.                         P0=0xfe;
  37.                            wela=1;
  38.                           wela=0;
  39.                            delay(5);
  40.                         break;
  41.         case 2:
  42.                         P0=0xfd;
  43.                    wela=1;
  44.                    wela=0;
  45.                    delay(5);
  46.                    break;
  47.    case 3:
  48.                    P0=0xfb;
  49.                    wela=1;
  50.                    wela=0;
  51.                    delay(5);
  52.                    break;
  53.    case 4:            
  54.                    P0=0xf7;
  55.                    wela=1;
  56.                    wela=0;
  57.                    delay(5);
  58.                    break;
  59.    case 5:
  60.                    P0=0xef;
  61.                    wela=1;
  62.                    wela=0;
  63.                    delay(5);
  64.                    break;
  65.    case 6:
  66.                    P0=0xdf;
  67.                    wela=1;
  68.                    wela=0;
  69.                    delay(5);
  70.                    break;

  71.    case 7:
  72.                    P0=0xbf;
  73.                    wela=1;
  74.                    wela=0;
  75.                    delay(5);
  76.                    break;

  77.    case 8:
  78.                    P0=0x7f;
  79.                    wela=1;
  80.                    wela=0;
  81.                    delay(5);
  82.                    break;
  83.    }
  84. }
  85. void display0(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar g,uchar h)
  86. {                                                  //一次显示六个数字,且每位显示数字可自定。
  87.    dula=0;
  88.    P0=table[a];
  89.    dula=1;
  90.    dula=0;

  91.    wela=0;
  92.    P0=0xfe;
  93.    wela=1;
  94.    wela=0;
  95.    delay(5);

  96.    P0=table[b];
  97.    dula=1;
  98.    dula=0;

  99.    P0=0xfd;
  100.    wela=1;
  101.    wela=0;
  102.    delay(5);

  103.    P0=table[c];
  104.    dula=1;
  105.    dula=0;

  106.    P0=0xfb;
  107.    wela=1;
  108.    wela=0;
  109.    delay(5);

  110.    P0=table[d];
  111.    dula=1;
  112.    dula=0;

  113.    P0=0xf7;
  114.    wela=1;
  115.    wela=0;
  116.    delay(5);

  117.    P0=table[e];
  118.    dula=1;
  119.    dula=0;

  120.    P0=0xef;
  121.    wela=1;
  122.    wela=0;
  123.    delay(5);

  124.    P0=table[f];
  125.    dula=1;
  126.    dula=0;

  127.    P0=0xdf;
  128.    wela=1;
  129.    wela=0;
  130.    delay(5);

  131.    P0=table[g];
  132.    dula=1;
  133.    dula=0;

  134.    P0=0xbf;
  135.    wela=1;
  136.    wela=0;
  137.    delay(5);

  138.    P0=table[h];
  139.    dula=1;
  140.    dula=0;

  141.    P0=0x7f;
  142.    wela=1;
  143.    wela=0;
  144.    delay(5);
  145. }

  146.   void main()
  147.   {
  148.           while(1)
  149.         {        
  150.             display(8,0);                                 //一次只有一位在显示
  151.                 delay(500);
  152.                 display(7,0);                                 //一次只有一位在显示
  153.                 delay(500);                 
  154.                 display(6,0);                                 //一次只有一位在显示
  155.                 delay(500);
  156.                 display(5,0);
  157.                 delay(500);
  158.                 display(4,0);
  159.                 delay(500);
  160.                 display(3,0);
  161.                 delay(500);
  162.                 display(2,0);
  163.                 delay(500);
  164.                 display(1,0);
  165.                 delay(500);
  166.                 display(8,1);                                 //一次只有一位在显示
  167.                 delay(500);
  168.                 display(7,1);                                 //一次只有一位在显示
  169.                 delay(500);        
  170.                 display(6,1);
  171.                 delay(500);
  172.                 display(5,1);
  173.                 delay(500);
  174.                 display(4,1);
  175.                 delay(500);
  176.                 display(3,1);
  177.                 delay(500);
  178.                 display(2,1);
  179.         delay(500);
  180.                 display(8,2);                                 //一次只有一位在显示
  181.                 delay(500);
  182.                 display(7,2);                                 //一次只有一位在显示
  183.                 delay(500);        
  184.                 display(6,2);
  185.                 delay(500);
  186.                 display(5,2);
  187.                 delay(500);
  188.                 display(4,2);
  189.                 delay(500);
  190.                 display(3,2);
  191.                 delay(500);
  192.                 display(8,3);                                 //一次只有一位在显示
  193.                 delay(500);
  194.                 display(7,3);                                 //一次只有一位在显示
  195.                 delay(500);        
  196.                 display(6,3);
  197.                 delay(500);
  198.                 display(5,3);
  199.                 delay(500);
  200.                 display(4,3);
  201.                 delay(500);
  202.                 display(8,4);                                 //一次只有一位在显示
  203.                 delay(500);
  204.                 display(7,4);                                 //一次只有一位在显示
  205.                 delay(500);        
  206.                 display(6,4);
  207.                 delay(500);
  208.                 display(5,4);
  209.                 delay(500);
  210.                 display(8,5);                                 //一次只有一位在显示
  211.                 delay(500);
  212.                 display(7,5);                                 //一次只有一位在显示
  213.                 delay(500);        
  214.                 display(6,5);
  215.                 delay(500);         
  216.                 display(8,6);                                 //一次只有一位在显示
  217.                 delay(500);
  218.                 display(7,6);                                 //一次只有一位在显示
  219.                 delay(500);         
  220.                 display(8,7);                                 //一次只有一位在显示
  221.                 delay(500);
  222.                 for(m=50;m>0;m--)                  //借助一次显示六位函数实现
  223.                 {
  224.                 display0(16,16,16,16,16,16,16,0);                //16代表无显示
  225.                 delay(2);
  226.                 }
  227.                 for(m=50;m>0;m--)
  228.                 {
  229.                 display0(16,16,16,16,16,16,0,16);
  230.                 delay(2);
  231.                 }
  232.                 for(m=50;m>0;m--)
  233.                 {
  234.                 display0(16,16,16,16,16,0,16,16);
  235.                 delay(2);
  236.                 }
  237.                 for(m=50;m>0;m--)
  238.                 {
  239.                 display0(16,16,16,16,0,16,16,16);
  240.                 delay(2);
  241.                 }
  242.                 for(m=50;m>0;m--)
  243.                 {
  244.                 display0(16,16,16,0,16,16,16,16);
  245.                 delay(2);
  246.                 }
  247.                 for(m=50;m>0;m--)
  248.                 {
  249.                 display0(16,16,0,16,16,16,16,16);
  250.                 delay(2);
  251.                 }
  252.                 for(m=50;m>0;m--)
  253.                 {
  254.                 display0(16,0,16,16,16,16,16,16);
  255.                 delay(2);
  256.                 }
  257.                 for(m=50;m>0;m--)
  258.                 {
  259.                 display0(0,16,16,16,16,16,16,16);
  260.                 delay(2);
  261.                 }
  262.                 for(m=50;m>0;m--)
  263.                 {
  264.                 display0(0,16,16,16,16,16,16,1);
  265.                 delay(2);
  266.                 }
  267.                 for(m=50;m>0;m--)
  268.                 {
  269.                 display0(0,16,16,16,16,16,1,16);
  270.                 delay(2);
  271.                 }
  272.                 for(m=50;m>0;m--)
  273.                 {
  274.                 display0(0,16,16,16,16,1,16,16);
  275.                 delay(2);
  276.                 }
  277.                 for(m=50;m>0;m--)
  278.                 {
  279.                 display0(0,16,16,16,1,16,16,16);
  280.                 delay(2);
  281.                 }
  282.                 for(m=50;m>0;m--)
  283.                 {
  284.                 display0(0,16,16,1,16,16,16,16);
  285.                 delay(2);
  286.                 }
  287.                 for(m=50;m>0;m--)
  288.                 {
  289.                 display0(0,16,1,16,16,16,16,16);
  290.                 delay(2);
  291.                 }
  292.                 for(m=50;m>0;m--)
  293.                 {
  294.                 display0(0,1,16,16,16,16,16,16);
  295.                 delay(2);
  296.                 }
  297.                 for(m=50;m>0;m--)
  298.                 {
  299.                 display0(0,1,16,16,16,16,16,2);
  300.                 delay(2);
  301.                 }
  302.                 for(m=50;m>0;m--)
  303.                 {
  304.                 display0(0,1,16,16,16,16,2,16);
  305.                 delay(2);
  306.                 }
  307.                 for(m=50;m>0;m--)
  308.                 {
  309.                 display0(0,1,16,16,16,2,16,16);
  310.                 delay(2);
  311.                 }
  312.                 for(m=50;m>0;m--)
  313.                 {
  314.                 display0(0,1,16,16,2,16,16,16);
  315.                 delay(2);
  316.                 }
  317.                 for(m=50;m>0;m--)
  318.                 {
  319.                 display0(0,1,16,2,16,16,16,16);
  320.                 delay(2);
  321.                 }
  322.                 for(m=50;m>0;m--)
  323.                 {
  324.                 display0(0,1,2,16,16,16,16,16);
  325.                 delay(2);
  326.                 }
  327.                 for(m=50;m>0;m--)
  328.                 {
  329.                 display0(0,1,2,16,16,16,16,3);
  330.                 delay(2);                  
  331.                 }
  332.                 for(m=50;m>0;m--)
  333.                 {
  334.                 display0(0,1,2,16,16,16,3,16);
  335.                 delay(2);                  
  336.                 }
  337.                 for(m=50;m>0;m--)
  338.                 {
  339.                 display0(0,1,2,16,16,3,16,16);
  340.                 delay(2);                  
  341.                 }
  342.                 for(m=50;m>0;m--)
  343.                 {
  344.                 display0(0,1,2,16,3,16,16,16);
  345.                 delay(2);                  
  346.                 }
  347.                 for(m=50;m>0;m--)
  348.                 {
  349.                 display0(0,1,2,3,16,16,16,16);
  350.                 delay(2);
  351.                 }
  352.                 for(m=50;m>0;m--)
  353.                 {
  354.                 display0(0,1,2,3,16,16,16,4);
  355.                 delay(2);
  356.                 }
  357.                 for(m=50;m>0;m--)
  358.                 {
  359.                 display0(0,1,2,3,16,16,4,16);
  360.                 delay(2);
  361.                 }
  362.                 for(m=50;m>0;m--)
  363.                 {
  364.                 display0(0,1,2,3,16,4,16,16);
  365.                 delay(2);
  366.                 }
  367.                 for(m=50;m>0;m--)
  368.                 {
  369.                 display0(0,1,2,3,4,16,16,16);
  370.                 delay(2);
  371.                 }
  372.                 for(m=50;m>0;m--)
  373.                 {
  374.                 display0(0,1,2,3,4,16,16,5);
  375.                 delay(2);
  376.                 }
  377.                 for(m=50;m>0;m--)
  378.                 {
  379.                 display0(0,1,2,3,4,16,5,16);
  380.                 delay(2);
  381.                 }
  382.                 for(m=50;m>0;m--)
  383.                 {
  384.                 display0(0,1,2,3,4,5,16,16);
  385.                 delay(2);
  386.                 }
  387.                 for(m=50;m>0;m--)
  388.                 {
  389.                 display0(0,1,2,3,4,5,16,6);
  390.                 delay(2);
  391.                 }
  392.                 for(m=50;m>0;m--)
  393.                 {
  394.                 display0(0,1,2,3,4,5,6,16);
  395.                 delay(2);
  396.                 }
  397.                 for(m=50;m>0;m--)
  398.                 {
  399.                 display0(0,1,2,3,4,5,6,7);
  400.                 delay(2);
  401.                 }
  402.                 for(n=4;n>0;n--)         //闪烁
  403.                 {
  404.                         for(m=100;m>0;m--)
  405.                         {
  406.                                 display0(0,1,2,3,4,5,6,7);
  407.                         }
  408.                         for(m=100;m>0;m--)
  409.                         {
  410.                                 display0(16,16,16,16,16,16,16,16);
  411.                         }
  412.                 }
  413.         }
  414. }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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