找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机16*96点阵屏仿真 74hc138和74hc595驱动 带源程序

[复制链接]
ID:137190 发表于 2016-9-9 23:45 | 显示全部楼层 |阅读模式
0.png
51单片机做的16*96点阵屏仿真,使用的驱动芯片是74hc138和74hc595,电路原理图如上

单片机程序源码如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit SH=P3^0;
  5. sbit DS=P3^1;
  6. sbit ST=P3^2;
  7. uchar num=12;                             //汉字个数
  8. uchar code hanzi[]={
  9. //好
  10. //C51 Code,逐行从上到下取模,每行左为最高位
  11. //Creat By Super Led_Dot_Matrix Char V1.0
  12. 0x00,0x00,0x0C,0xC6,0x0F,0xCC,0x7F,0x78,
  13. 0x7C,0x70,0x0F,0xF8,0x0F,0x9C,0x21,0x88,
  14. 0x21,0x80,0x21,0x86,0x27,0x86,0x2F,0xFE,
  15. 0x29,0x80,0x39,0x80,0x31,0x80,0x00,0x80,


  16. 0x00,0x00,0x0C,0xC6,0x0F,0xCC,0x7F,0x78,
  17. 0x7C,0x70,0x0F,0xF8,0x0F,0x9C,0x21,0x88,
  18. 0x21,0x80,0x21,0x86,0x27,0x86,0x2F,0xFE,
  19. 0x29,0x80,0x39,0x80,0x31,0x80,0x00,0x80,
  20. //学
  21. //C51 Code,逐行从上到下取模,每行左为最高位
  22. 0x00,0x00,0x0E,0x30,0x4E,0x30,0x7D,0x30,
  23. 0x3D,0x30,0x0D,0x32,0x4D,0x33,0xED,0x73,
  24. 0x2D,0xFE,0x0D,0xF0,0x1D,0xB0,0x7D,0xB0,
  25. 0xED,0x30,0x4E,0x30,0x0E,0x30,0x00,0x00,
  26. //习
  27. //C51 Code,逐行从上到下取模,每行左为最高位
  28. 0x00,0x00,0x00,0x00,0x00,0x10,0x60,0x18,
  29. 0x2C,0x18,0x2E,0x30,0x26,0x30,0x23,0x20,
  30. 0x22,0x60,0x20,0x66,0x20,0xC6,0x20,0x06,
  31. 0x3F,0xFE,0x3F,0xFC,0x00,0x00,0x00,0x00,
  32. //完
  33. //C51 Code,逐行从上到下取模,每行左为最高位
  34. 0x00,0x00,0x3C,0x82,0x3C,0x86,0x34,0x86,
  35. 0x36,0x8C,0x36,0xF8,0x36,0xE0,0xF6,0x80,
  36. 0x76,0x80,0x36,0xFE,0x36,0x86,0x36,0x82,
  37. 0x30,0x82,0x38,0x8E,0x3C,0x8C,0x00,0x00,
  38. //善
  39. //C51 Code,逐行从上到下取模,每行左为最高位
  40. 0x00,0x00,0x11,0x20,0x15,0x3E,0x15,0x31,
  41. 0x55,0xF1,0x35,0x31,0x15,0x31,0x1F,0xF1,
  42. 0x15,0x31,0x15,0x31,0x35,0x31,0x75,0xF1,
  43. 0x15,0x31,0x15,0x3F,0x11,0x20,0x00,0x00,
  44. //自
  45. //C51 Code,逐行从上到下取模,每行左为最高位
  46. 0x00,0x00,0x00,0x00,0x10,0x02,0x1F,0xFE,
  47. 0x12,0x4C,0x12,0x4C,0xF2,0x4C,0x72,0x4C,
  48. 0x12,0x4C,0x12,0x4C,0x12,0x4C,0x12,0x4C,
  49. 0x1F,0xFE,0x1F,0xFE,0x00,0x00,0x00,0x00,
  50. //我
  51. //C51 Code,逐行从上到下取模,每行左为最高位
  52. 0x00,0x00,0x16,0x60,0x36,0x62,0x36,0x62,
  53. 0x3F,0xFE,0x3F,0xFC,0x66,0xC4,0x66,0xC6,
  54. 0x06,0x0C,0x7F,0xEC,0x06,0xF8,0x26,0x3C,
  55. 0x36,0xE6,0x1F,0xC2,0x06,0x0E,0x00,0x04,

  56. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  57. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  59. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  61. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  63. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  64. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  66. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  67. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  68. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  69. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  70. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  71. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  72. };
  73. void delay(uint z)
  74. {
  75.         uint x,y;
  76.         for(x=0;x<z;x++)
  77.                 for(y=50;y>0;y--);
  78. }
  79. void send(uchar dat)
  80. {
  81.     uchar i;
  82.     for(i=0;i<8;i++)
  83.     {
  84.         dat>>=1;
  85.         DS=CY;
  86.         SH=0;
  87.         SH=1;
  88.     }
  89. }
  90. void display(uchar k)
  91. {
  92.     uchar i,j,hang,m;
  93.     uint g;
  94.     for(j=0;j<5;j++)           //动态扫描5次
  95.     {
  96.         hang=0x08;                // 开通第一个138
  97.         for(i=0;i<16;i++)
  98.         {
  99.             ST=0;
  100.             for(m=4;m>0;m--)
  101.             {
  102.                 g=2*i+2*k+m*32-32;
  103.                 send(hanzi[g]);
  104.                 send(hanzi[g+1]);
  105.             }
  106.             P1=hang;
  107.             hang++;
  108.             ST=1;                                    //锁存数据
  109.             delay(1);
  110.         }
  111.     }
  112. }
  113. void move()
  114. {
  115.     uint k,j,a,b;
  116.     for(k=0;k<16*(num-4);k++)
  117.     {
  118.         display(k);
  119.     }
  120.     for(a=16*(num-4);a>0;a--)
  121.     {
  122.             display(a);
  123.     }
  124.     for(j=0;j<2;j++)
  125.     {
  126.         for(b=16;b>0;b--)
  127.         {
  128.             display(16*4*j);
  129.         }
  130.     }  
  131. }
  132. void main()
  133. {
  134.     while(1)
  135.     {
  136.         move();
  137.     }
  138. }
复制代码
0.png

所有资料下载: 595.138点阵屏.zip (74.98 KB, 下载次数: 62)
回复

使用道具 举报

ID:143663 发表于 2016-10-20 20:55 | 显示全部楼层
很好 刚好用得到
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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