找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 2225|回复: 0
打印 上一主题 下一主题
收起左侧

单片机led点阵显示数字

[复制链接]
跳转到指定楼层
楼主
ID:300305 发表于 2018-4-1 12:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>

  3. sbit SRCLK=P3^6;
  4. sbit RCLK=P3^5;
  5. sbit SER=P3^4;

  6. //--定义要使用的IO口--//
  7. #define COMMONPORTS                P0

  8. //--列选通控制--//
  9. unsigned char code TAB[8]  = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

  10. //--点阵字码--//
  11. unsigned char code CHARCODE[18][8]=
  12. {

  13. {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0

  14. {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1

  15. {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2

  16. {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3

  17. {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4

  18. {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5

  19. {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6

  20. {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7

  21. {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8

  22. {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9

  23. {0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P

  24. {0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R

  25. {0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E

  26. {0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C

  27. {0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H

  28. {0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I

  29. {0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N

  30. {0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00}  //中

  31. };
  32. void delay(unsigned int time)
  33. {
  34.   unsigned int i,j;
  35.   for(i=0;i<time;i++)
  36.     for(j=0;j<121;j++);
  37. }

  38. /*******************************************************************************
  39. * 函数名         : Hc595SendByte(unsigned char dat)
  40. * 函数功能                   : 想74H595发送一个字节的数据
  41. * 输入           : 无
  42. * 输出                  : 无
  43. *******************************************************************************/
  44. void Hc595SendByte(unsigned char dat)
  45. {
  46.         unsigned char a;
  47.         SRCLK=0;
  48.         RCLK=0;
  49.         for(a=0;a<8;a++)
  50.         {
  51.                 SER=dat>>7;
  52.                 dat<<=1;

  53.                 SRCLK=1;
  54.                 _nop_();
  55.                 _nop_();
  56.                 SRCLK=0;       
  57.         }

  58.         RCLK=1;
  59.         _nop_();
  60.         _nop_();
  61.         RCLK=0;
  62. }
  63. /*******************************************************************************
  64. * 函数名         : main
  65. * 函数功能                   : 主函数
  66. * 输入           : 无
  67. * 输出                  : 无
  68. *******************************************************************************/

  69. void main()
  70. {       
  71.         unsigned char tab, j;
  72.         unsigned int  i;

  73.         while(1)
  74.         {       
  75.                 for(i= 0; i<50; i++ )   //两个字之间的扫描间隔时间
  76.                 {
  77.                         for(tab=0;tab<8;tab++)
  78.                         {       

  79.                                 Hc595SendByte(0x00);                             //消隐                                                                                                                               
  80.                                 COMMONPORTS        = TAB[tab];                                 //输出字码       
  81.                                 Hc595SendByte(CHARCODE[j][tab]);       
  82.                                 delay(2);               
  83.                         }
  84.                          
  85.                 }
  86.                 j++;
  87.                 if(j == 18)
  88.                 {
  89.                         j = 0;
  90.                 }
  91.         }       
  92. }
复制代码

所有资料51hei提供下载:
LED点阵显示数字.zip (8.08 KB, 下载次数: 9)


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

举报

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

本版积分规则

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

Powered by 单片机教程网

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