找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主

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. }
复制代码


所有资料下载: 595.138点阵屏.zip (74.98 KB, 下载次数: 62)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:143663 发表于 2016-10-20 20:55 | 只看该作者
很好 刚好用得到
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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