找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1258|回复: 0
收起左侧

单片机广告屏程序

[复制链接]
ID:512872 发表于 2019-10-3 10:44 | 显示全部楼层 |阅读模式
广告屏,实现五个传输功能

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define T 100
  6. uint ii;                     //延时循环次数
  7. uint i;
  8. uchar v;
  9. sbit S1=P1^0;  //ABCD"
  10. sbit S2=P1^1;  //01234
  11. sbit S3=P1^2;  //好好学习
  12. sbit S4=P1^3;  //天天向上
  13. sbit S5=P1^4;  //我叫林哲任
  14. sbit S6=P1^5;  //生日快乐
  15. sbit S7=P1^6;  //单片机
  16. sbit S8=P1^7;  //O YE !

  17. uchar code PP[]=
  18. {
  19.         /*--  " P " --*/
  20.         0x78,0x44,0x44,0x44,0x78,0x40,0x40,0x44
  21. };
  22. uchar code DZ[]=
  23. {        /*--  A   --*/
  24.         0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,
  25.         /*--  B   --*/
  26.         0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,
  27.         /*--  C   --*/
  28.         0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,
  29.         /*--  D   --*/
  30.         0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,
  31.        
  32. };
  33. uchar code S[]=
  34. {
  35.     /*--  1  --*/
  36.         0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,
  37.         /*--  6 --*/
  38.         0x20,0x20,0x20,0x3F,0x21,0x21,0x21,0x3F,
  39.         /*--  0  --*/
  40.         0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,
  41.         /*--  3  --*/
  42.         0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,
  43.         /*--  0  --*/
  44.         0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,
  45.         /*--  2  --*/
  46.         0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,
  47.         /*--  4  --*/
  48.         0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,
  49.         /*--  0  --*/
  50.         0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,
  51.         /*--  2  --*/
  52.         0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,
  53.         /*--  1  --*/
  54.         0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,
  55.         /*--  3  --*/
  56.         0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,
  57. };
  58. uchar code SZ[]=
  59. {
  60.     /*-- 好   --*/
  61.         0x20,0x4F,0xF2,0x94,0x6F,0x62,0x96,0x02,
  62.         /*-- 好   --*/
  63.         0x20,0x4F,0xF2,0x94,0x6F,0x62,0x96,0x02,
  64.         /*-- 学   --*/
  65.         0x54,0xDF,0xBA,0x08,0xDE,0x08,0x18,0x10,
  66.         /*-- 习   --*/
  67. 0x00,0x7F,0x22,0x12,0x02,0x12,0x22,0x00,
  68.         };


  69. uchar code AX[]=
  70. {
  71.         /*--  天 --*/
  72.         0x7E,0x10,0x10,0xFF,0x18,0x24,0x42,0x81,
  73.         /*--  天  --*/
  74.         0x7E,0x10,0x10,0xFF,0x18,0x24,0x42,0x81,
  75.         /*--  向  --*/
  76.         0x00,0x10,0x20,0x7E,0x42,0x5A,0x5A,0x00,
  77.         /*--  上  --*/
  78.         0x00,0x10,0x10,0x1C,0x10,0x10,0x7E,0x00,
  79. };

  80. uchar code RR[]=
  81. {
  82.         /*--  我 --*/
  83.         0x60,0x24,0x26,0xFF,0x2E,0x74,0x24,0x66,
  84.         /*--  叫--*/
  85.         0x00,0x0A,0x6A,0x6A,0x6E,0x02,0x02,0x00,
  86.         /*--  林--*/
  87.         0x24,0x24,0x7E,0x5A,0x24,0x24,0x24,0x24,
  88.         /*--  哲--*/
  89.         0x22,0xFF,0xF9,0x29,0x29,0x3F,0x21,0x3F,
  90.         /*--  任--*/
  91.     0x12,0x24,0x6C,0xBF,0x24,0x3F,0x24,0x3F,
  92. } ;
  93.                                                
  94. uchar code SJ[]=
  95. {
  96. /*--  生   --*/
  97.         0x10,0x50,0x7e,0x90,0x7c,0x10,0xfe,0x00,
  98.         /*--  日  --*/
  99.         0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x00,
  100.         /*--  快  --*/
  101.         0x48,0x48,0x5e,0xea,0xff,0x54,0x63,0x00,
  102.         /*--  乐  --*/
  103.         0x38,0x50,0x90,0xfe,0x38,0x54,0xb3,0x10,
  104. };

  105. uchar code HY[]=
  106. {
  107. /*--单 --*/
  108.         0x14,0x3E,0x2A,0x3E,0x2A,0x3E,0xFF,0x08,
  109.     /*--片--*/
  110.         0x28,0x28,0x3E,0x20,0x3E,0x22,0x22,0x22,
  111.         /*--机--*/
  112.         0x20,0x2E,0xFA,0x7A,0x7A,0x6A,0xAB,0x33,
  113. };

  114. uchar code HR[]=
  115. {
  116.         /*--  O  --*/
  117.         0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x00,
  118.         /*--  YE --*/
  119.         0x00,0x88,0x57,0x24,0x27,0x24,0x27,0x00,
  120.         /*--  ! --*/
  121.         0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,
  122. };


  123. uchar code NN[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  124. /*函数申明*/
  125. void display(void);
  126. void display_p(void);
  127. void display_XL(void);
  128. void display_SZ(void);
  129. void display_FK(void);                       
  130. void delay(uint m);

  131. /*************延时程序**************/                                                                                         
  132. void delay(uint m)                 
  133.   {
  134.           while(--m);
  135.   }
  136. /*************初始化程序**************/
  137. void ini(void)                               
  138.          {
  139.                      TMOD=0x01;
  140.                   TH0=(65536-46082)/256;
  141.                   TL0=(65536-46082)%256;
  142.                   ET0=1;
  143.                   EA=1;
  144.          }

  145. /*************键扫描程序**************/
  146. uchar keyscan()
  147. {
  148. uchar tmp;                         //列号,行号
  149. P1=0xff;               //发全行0扫描码
  150. if((P1&0xff)!=0xff)     //若有键按下
  151.   {
  152.    delay(100);          // 延时去抖   
  153.    if((P1&0xff)!=0xff)          //有键按下
  154.        {
  155.                 tmp=(P1&0xff);
  156.             do{}while((P1&0xff)!=0xff);
  157.                 tmp=~tmp;                  
  158.         return (tmp);                         //返回键值
  159.                            }                        
  160.     }                                                                                                                       
  161.    return (0);                                //无键按下,返回0
  162. }

  163. /*************主程序**************/
  164.   void main(void)
  165.    {
  166.             uchar ii,v;
  167.          int         K;
  168.          ini();
  169.        
  170.          while(1)
  171.          {                  for(ii=0;ii<=T;ii++)//字符显示
  172.                         {
  173.                                 for(i=0;i<=7;i++)//行列扫描
  174.                                 {
  175.                                 P0=PP[i];
  176.                                 P2=NN[i];
  177.                                 delay(100);
  178.                                 P2=0xff;                               
  179.                                 }                                       
  180.                          }       
  181.                 v=keyscan();                 
  182.                  if(v==1||v==2||v==4||v==8||v==16||v==32||v==64||v==128)
  183.                  {
  184.                  while(1)
  185.                  {               
  186.                        
  187.              switch(v)
  188.            {
  189.             case 1:          P0=0X00;                                           //ABCD//
  190.                           while(v==1||v==0)
  191.                                   {           P3=v^0xff;
  192.                                   for(K=0;K<=3&&(v==1||v==0);K++)//控制显示字符数
  193.                               {
  194.                                           for(ii=0;ii<=T&&(v==1||v==0);ii++)//字符显示
  195.                                           { for(i=0;i<=7&&(v==1||v==0);i++)//行列扫描
  196.                                                   {P0=DZ[K*8+i];
  197.                                                 P2=NN[i];
  198.                                                 delay(100);
  199.                                                 P2=0xff;                               
  200.                                         v=keyscan();        }                                                  
  201.                                          }
  202.                                           P2=0xff;
  203.                                                 }         //调键扫描程序
  204.                                 }
  205.                                    break;

  206.                  case 2:   P0=0X00;         
  207.                          while(v==2||v==0)                                  //01234//
  208.                              {          P3=v^0xff;
  209.                                    for(K=0;K<=10&&(v==2||v==0);K++)
  210.                                                 {        for(ii=0;ii<=T&&(v==2||v==0);ii++)
  211.                                                         {        for(i=0;i<=7&&(v==2||v==0);i++)
  212.                                                                 {
  213.                                                                 P0=S[K*8 +i];
  214.                                                                 P2=NN[i];
  215.                                                                 delay(100);
  216.                                                                 P2=0xff;                               
  217.                                                   v=keyscan();                }
  218.                                         }
  219.                                                    }
  220.                                            P2=0xff;
  221.                                                                     }
  222.                                    break;
  223.          
  224.                  case 4:  P0=0X00;       
  225.                          while(v==4||v==0)                                //好好学习//
  226.                            {                 P3=v^0xff;
  227.                                  for(K=0;K<=3&&(v==4||v==0);K++)
  228.                                         {        for(ii=0;ii<=T&&(v==4||v==0);ii++)
  229.                                                 {        for(i=0;i<=7&&(v==4||v==0);i++)
  230.                                                         {
  231.                                                         P0=SZ[K*8 +i];
  232.                                                         P2=NN[i];
  233.                                                         delay(100);
  234.                                                         P2=0xff;                               
  235.                                                 v=keyscan();         }
  236.                          }
  237.                                    }      
  238.                                  P2=0xff;
  239.                                  }
  240.                                  break;
  241.          
  242.            case 8:        P0=0X00;
  243.                                 while(v==8||v==0)                           //天天向上//
  244.                            {                 P3=v^0xff;
  245.                                  for(K=0;K<=3&&(v==8||v==0);K++)
  246.                                         {        for(ii=0;ii<=T&&(v==8||v==0);ii++)
  247.                                                 {        for(i=0;i<=7&&(v==8||v==0);i++)
  248.                                                         {
  249.                                                         P0=AX[K*8 +i];
  250.                                                         P2=NN[i];
  251.                                                         delay(100);
  252.                                                         P2=0xff;                               
  253.                                         v=keyscan();                }
  254.                                                 }
  255.                                                 }       
  256.                                  P2=0xff;
  257.                                 }
  258.                                  
  259.                                   break;
  260.           case 16:         P0=0X00;
  261.                     while(v==16||v==0)                   //我叫刘人杰//
  262.                            {        P3=v^0xff;
  263.                                  for(K=0;K<=4&&(v==16||v==0);K++)
  264.                                            {        for(ii=0;ii<=T&&(v==16||v==0);ii++)
  265.                                            {        for(i=0;i<=7&&(v==16||v==0);i++)
  266.                                           { P0=RR[K*8 +i];
  267.                                                    P2=NN[i];
  268.                                                 delay(100);
  269.                                                         P2=0xff;
  270.                                    v=keyscan(); }
  271.                            }
  272.                                                    }
  273.                                                            P2=0xff;
  274.                                                         }
  275.                                    break;

  276.           case 32:  P0=0X00;                                    //生日快乐//       
  277.                             while(v==32||v==0)
  278.                             {         P3=v^0xff;
  279.                                   for(K=0;K<=3&&(v==32||v==0);K++)
  280.                                            {        for(ii=0;ii<=T&&(v==32||v==0);ii++)
  281.                                            {        for(i=0;i<=7&&(v==32||v==0);i++)
  282.                                             { P0=SJ[K*8 +i];
  283.                                                           P2=NN[i];
  284.                                                         delay(100);
  285.                                                         P2=0xff;
  286.                                    v=keyscan(); }
  287.                                      }                          
  288.                                          }
  289.                                          P2=0xff;
  290.                                          }

  291.                            break;
  292.           
  293.          case 64:         P0=0X00;                                                        //单片机//
  294.                            while(v==64||v==0)
  295.                            {         P3=v^0xff;
  296.                                  for(K=0;K<=2&&(v==64||v==0);K++)
  297.                                   {        for(ii=0;ii<=T&&(v==64||v==0);ii++)
  298.                                     {        for(i=0;i<=7&&(v==64||v==0);i++)
  299.                                             { P0=HY[K*8 +i];
  300.                                                           P2=NN[i];
  301.                                                         delay(100);
  302.                                                         P2=0xff;
  303.                             v=keyscan(); }
  304.                                                                       }
  305.                                               }
  306.                                                           P2=0xff;
  307.                                                          }
  308.                            break;

  309.    case 128:          P0=0X00;                                                           //O YE !//
  310.                   while(v==128||v==0)
  311.                   {            P3=v^0xff;
  312.                           for(K=0;K<=2&&(v==128||v==0);K++)
  313.                                    {        for(ii=0;ii<=T&&(v==128||v==0);ii++)
  314.                                     {        for(i=0;i<=7&&(v==128||v==0);i++)
  315.                                             { P0=HR[K*8 +i];
  316.                                                           P2=NN[i];
  317.                                                         delay(100);
  318.                                                         P2=0xff;
  319.                             v=keyscan();         }
  320.                                                 }
  321.                                           }
  322.                                                           P2=0xff;
  323.                                                           }
  324.                           break;
  325.         }
  326.     }
  327. }
  328. }
  329. }
复制代码

所有资料51hei提供下载:
广告屏.zip (59.83 KB, 下载次数: 8)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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