找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3992|回复: 1
收起左侧

51单片机8*8点阵应用实例程序+Protesu原理图

[复制链接]
ID:335114 发表于 2018-5-21 18:54 | 显示全部楼层 |阅读模式
8*8点阵仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char  //宏定义
  3. code uchar jiantou[]={0x00,0x18,0x3C,0x7E,0x99,0x18,0x18,0x00,0x00,0x18,0x3C,0x7E,0x99,0x18,0x18,0x00,0x00,0x18,0x3C,0x7E,0x99,0x18,0x18,0x00,0x00,0x18,0x3C,0x7E,0x99,0x18,0x18,0x00};
  4. code uchar ling[]={0x00,0x7C,0x44,0x44,0x44,0x44,0x44,0x7C};//定义数组 0
  5. code uchar   yi[]={0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04};//定义数组 1
  6. code uchar   er[]={0x00,0x7C,0x04,0x04,0x7C,0x40,0x40,0x7C};//定义数组 2
  7. code uchar  san[]={0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x7C};//定义数组 3
  8. code uchar   si[]={0x00,0x44,0x44,0x44,0x7C,0x04,0x04,0x04};//定义数组 4
  9. code uchar   wu[]={0x00,0x7C,0x40,0x40,0x7C,0x04,0x04,0x7C};//定义数组 5
  10. code uchar  liu[]={0x00,0x7C,0x40,0x40,0x7C,0x44,0x44,0x7C};//定义数组 6
  11. code uchar   qi[]={0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x04};//定义数组 7
  12. code uchar   ba[]={0x00,0x7C,0x44,0x44,0x7C,0x44,0x44,0x7C};//定义数组 8
  13. code uchar  jiu[]={0x00,0x7C,0x44,0x44,0x7C,0x04,0x04,0x7C};//定义数组 9
  14. code uchar  xin[]={0x00,0x66,0x99,0x81,0x81,0x42,0x24,0x18};//定义数组 心
  15. code uchar  sanjiao[]={0x00,0x00,0x10,0x28,0x44,0xFE,0x00,0x00};//定义数组 三角
  16. code uchar  zhang[]={0xE9,0x2A,0xEC,0x9F,0xEC,0x2A,0xED,0x00};//定义数组 “张”
  17. code uchar  f[]={0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40};//定义数组 字母“F”

  18. sbit P20=P2^7;        
  19. unsigned char date=0;         
  20. int i;
  21. uchar b;
  22. void delay()//延时函数
  23. {
  24. for(i=0;i<50;i++);
  25. }

  26. void zuoyi()
  27. {
  28. int i,a,b,c;

  29. for(a=0;a<24;a++)
  30. {for(b=0;b<50;b++)
  31. {
  32. P3=0xfe;  //行控制
  33. for(c=0;c<8;c++)//扫描一针取八个数据
  34. {
  35. P1=jiantou[a+c];//a+c表示第a针第c列
  36. delay();
  37. P3=P3<<7|P3>>1;
  38. }
  39. }
  40. }
  41. }
  42. void youyi()
  43. {
  44. int i,a,b,c;

  45. for(a=0;a<24;a++)
  46. {for(b=0;b<50;b++)
  47. {
  48. P3=0xfe;  //行控制
  49. for(c=0;c<8;c++)//扫描一针取八个数据
  50. {
  51. P1=jiantou[a+c];//a+c表示第a针第c列
  52. delay();

  53. P3=P3<<1|P3>>7;
  54. }
  55. }
  56. }
  57. }
  58. void xiayi()
  59. {
  60. int i,a,b,c;

  61. for(a=0;a<24;a++)
  62. {for(b=0;b<50;b++)
  63. {
  64. P1=~0xfe;  //行控制
  65. for(c=0;c<8;c++)//扫描一针取八个数据
  66. {
  67. P3=~jiantou[a+c];//a+c表示第a针第c列
  68. delay();

  69. P1=P1<<7|P1>>1;
  70. }
  71. }
  72. }
  73. }
  74. void shangyi()
  75. {
  76. int i,a,b,c;

  77. for(a=0;a<24;a++)
  78. {for(b=0;b<50;b++)
  79. {
  80. P1=~0xfe;  //行控制
  81. for(c=0;c<8;c++)//扫描一针取八个数据
  82. {
  83. P3=~jiantou[a+c];//a+c表示第a针第c列
  84. delay();

  85. P1=P1<<1|P1>>7;
  86. }
  87. }
  88. }
  89. }

  90. void anjian()
  91. {
  92. P1=~0xfe;  //行控制
  93. for(b=0;b<8;b++)//循环数组内容
  94. {
  95. if(P20==0)
  96. {

  97. date++;
  98. while(!P20);
  99. }
  100. switch(date)
  101. {
  102. case 0:P3=~ling[b]; break;
  103. case 1:P3=~yi[b]; break;
  104. case 2:P3=~er[b]; break;
  105. case 3:P3=~san[b]; break;
  106. case 4:P3=~si[b]; break;
  107. case 5:P3=~wu[b]; break;
  108. case 6:P3=~liu[b]; break;
  109. case 7:P3=~qi[b]; break;
  110. case 8:P3=~ba[b]; break;
  111. case 9:P3=~jiu[b]; break;
  112. case 10:P3=~xin[b]; break;
  113. case 11:P3=~sanjiao[b]; break;
  114. case 12:P3=~zhang[b]; break;
  115. case 13:P3=~f[b]; break;
  116. case 14:date=0; break;
  117. }

  118. delay();
  119. P1=P1<<1|P1>>7;        
  120. }

  121. }

  122. main()
  123. {

  124. shangyi();
  125. xiayi();
  126. zuoyi();
  127. youyi();
  128. while(1)
  129. {
  130. anjian();
  131. }
  132. }
复制代码
0.png

所有资料51hei提供下载:
8X8点阵.rar (54.3 KB, 下载次数: 50)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:403554 发表于 2018-10-9 08:38 | 显示全部楼层
有帮助~!谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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