找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C51单片机8*8点阵循环显示0123456789.

[复制链接]
跳转到指定楼层
楼主
C51单片机8*8点阵循环显示0123456789.
制作出来的实物图如下:


单片机源程序如下:

  1. #include <reg52.h>
  2. #include <intrins.h>

  3. typedef unsigned char u8;                
  4. typedef unsigned int u16;

  5. #define MATRIX_PORT                P0               


  6. sbit SCK = P3^6;                
  7. sbit RCK = P3^5;               
  8. sbit SER = P3^4;                


  9. u8 gLineCode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  



  10. u8 g0[] = {0x0,0x0,0x7F,0x41,0x41,0x7F,0x0,0x0};       
  11. u8 g1[]  = {0x0,0x0,0x0,0x22,0x7E,0x2,0x0,0x0};                       
  12. u8 g2[]   = {0x0,0x0,0x4F,0x49,0x49,0x79,0x0,0x0};
  13. u8 g3[] = {0x0,0x0,0x49,0x49,0x49,0x7F,0x0,0x0};               
  14. u8 g4[]  = {0x0,0x0,0x78,0x8,0x8,0x7F,0x0,0x0};               
  15. u8 g5[]   = {0x0,0x0,0x79,0x49,0x49,0x4F,0x0,0x0};
  16. u8 g6[] = {0x0,0x0,0x7F,0x49,0x49,0x4F,0x0,0x0};               
  17. u8 g7[]  = {0x0,0x0,0x40,0x40,0x40,0x7F,0x0,0x0};               
  18. u8 g8[]   = {0x0,0x0,0x7F,0x49,0x49,0x7F,0x0,0x0};
  19. u8 g9[]  = {0x0,0x0,0x79,0x49,0x49,0x7F,0x0,0x0};               
  20. u8 g10[]   = {0x0,0x7F,0x0,0x7F,0x41,0x41,0x7F,0x0};               


  21. void Hc595SendByte(u8 dat);
  22. void MatrixDisplay(u8 *zimo);
  23. void delay1s();


  24. void main(void)
  25. {
  26. int i;
  27. while(1)
  28. {       
  29. for(i=0;i<999;i++)
  30.         {
  31.         MatrixDisplay(g0);
  32.          
  33.           
  34.          }
  35.          
  36.         for(i=0;i<999;i++)
  37.                         {
  38.         MatrixDisplay(g1);
  39.                           
  40.                    }
  41.                  
  42.                  for(i=0;i<999;i++)
  43.                         {
  44.         MatrixDisplay(g2);
  45.                           
  46.                    }
  47.                  
  48.                  for(i=0;i<999;i++)
  49.                         {
  50.         MatrixDisplay(g3);
  51.                           
  52.                    }
  53.                
  54.                  for(i=0;i<999;i++)
  55.                         {
  56.         MatrixDisplay(g4);
  57.                           
  58.                    }
  59.        
  60.                  for(i=0;i<999;i++)
  61.                         {
  62.         MatrixDisplay(g5);
  63.                           
  64.                    }
  65.                
  66.                  for(i=0;i<999;i++)
  67.                         {
  68.         MatrixDisplay(g6);
  69.                           
  70.                    }
  71.                  
  72.                  for(i=0;i<999;i++)
  73.                         {
  74.         MatrixDisplay(g7);
  75.                           
  76.                    }
  77.        
  78.                  for(i=0;i<999;i++)
  79.                         {
  80.         MatrixDisplay(g8);
  81.                           
  82.                    }
  83.        
  84.                  for(i=0;i<999;i++)
  85.                         {
  86.         MatrixDisplay(g9);
  87.                           
  88.                    }
  89.        
  90.                   for(i=0;i<999;i++)
  91.                         {
  92.         MatrixDisplay(g10);
  93.                           
  94.                    }
  95.        
  96.         }               
  97. }



  98. void MatrixDisplay(u8 *zimo)
  99. {
  100.         u8 i = 0;

  101.        
  102.        
  103.                 for(i=0;i<8;i++)
  104.                 {
  105.                         MATRIX_PORT = gLineCode[i];                                 
  106.                         Hc595SendByte(zimo[i]);               
  107.                         Hc595SendByte(0x00);         
  108.                 }       
  109.           
  110. }



  111. void Hc595SendByte(u8 dat)
  112. {
  113.         u8 i = 0, j = 0;

  114.         SCK = 0;                       
  115.         RCK = 0;                               

  116.         for (i=0; i<8; i++)
  117.         {
  118.                 SER = dat & (0x01);
  119.                 dat >>= 1;

  120.                 SCK = 1;
  121.        
  122.                 SCK = 0;       
  123.         }

  124.         RCK = 1;

  125. }

  126. void delay1s(void)   
  127. {
  128.     unsigned char a,b,c;
  129.     for(c=167;c>0;c--)
  130.         for(b=171;b>0;b--)
  131.             for(a=16;a>0;a--);
  132.     _nop_();
  133. }
复制代码

所有资料51hei提供下载:
点阵循环显示.zip (847 Bytes, 下载次数: 35)


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

使用道具 举报

沙发
ID:1 发表于 2018-12-8 18:03 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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