找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

我自己用8×8连16×16,为什么不能用啊,只有第八行和第16行亮

查看数: 2545 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-12-25 01:33

正文摘要:

回复

ID:155507 发表于 2018-12-25 10:03

  1. /*-----------------------------------------------
  2.   名称:595控制4汉字点阵屏
  3.   修改:无 51单片机
  4.   内容:屏+5V、GND连接电源5V
  5.   现象:使用普通速度51系列单片机。单个汉字屏出现红色“德”
  6. ------------------------------------------------*/
  7. #include<reg52.h>

  8. sbit T_STR = P2^6;       //锁存引脚,屏上标识位STR
  9. sbit R1    = P0^4;       //数据引脚,屏上标识R1
  10. sbit G1    = P2^4;       //数据引脚,屏上标识G1
  11. sbit T_CLK = P2^5;       //时钟引脚,屏上标识位CLK
  12. sbit OE    = P2^1;       //使能引脚,屏上标识EN/OE

  13. unsigned char tab[8];
  14. unsigned char DIS[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//行数据

  15. /*-----------------------------------------------
  16.              16x16汉字取模数据
  17. ------------------------------------------------*/
  18. unsigned char code hztest[][32]=    //二维数组,目的是减少运算,可以用最基本的一维数组,每个汉字有32个字节数据
  19. {
  20. /*--  文字:  德  --*/
  21. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  22. 0x08,0x02,0x08,0x02,0xF4,0x7F,0x02,0x02,0xE9,0x3F,0x28,0x25,0x24,0x25,0xE6,0x3F,
  23. 0x05,0x00,0xF4,0x7F,0x04,0x02,0x04,0x24,0xA4,0x44,0xA4,0x50,0x94,0x10,0x04,0x1F,

  24. /*--  文字:  飞  --*/
  25. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  26. 0x00,0x00,0xFF,0x03,0x00,0x02,0x00,0x22,0x00,0x12,0x00,0x0A,0x00,0x06,0x00,0x0A,
  27. 0x00,0x12,0x00,0x22,0x00,0x04,0x00,0x04,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x40,

  28. /*--  文字:  莱  --*/
  29. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  30. 0x10,0x04,0x10,0x04,0xFF,0x7F,0x90,0x04,0x80,0x00,0xFC,0x1F,0x80,0x00,0x88,0x08,
  31. 0x90,0x04,0xFE,0x3F,0xC0,0x01,0xA0,0x02,0x90,0x04,0x8C,0x18,0x83,0x60,0x80,0x00,

  32. };
  33. /*-----------------------------------------------
  34.              向595写入一个字节 单红色
  35. ------------------------------------------------*/
  36. void InputByte( unsigned  char DataR1) //写一个字节
  37. {
  38. unsigned  char i;
  39. for(i=8; i>0; i--)
  40. {
  41. R1 = !(DataR1&0x01);                  
  42. T_CLK = 0;
  43. T_CLK = 1;
  44. DataR1 = DataR1 >> 1;
  45. }
  46. }
  47. /*-----------------------------------------------
  48.              向595写入两个字节 双色
  49. ------------------------------------------------*/
  50. /*
  51. void Input2Byte( unsigned  char DataR1,unsigned  char DataG1) //写一个字节
  52. {
  53. unsigned  char i;
  54. for(i=8; i>0; i--)
  55. {
  56. R1 = !(DataR1&0x01);   
  57. G1 = !(DataG1&0x01);               
  58. T_CLK = 0;
  59. T_CLK = 1;
  60. DataR1 = DataR1 >> 1;
  61. DataG1 = DataG1 >> 1;
  62. }
  63. }
  64. */

  65. /*-----------------------------------------------
  66.             初始化定时器,做为动态扫描
  67. ------------------------------------------------*/
  68. void Init_Timer1(void)
  69. {
  70. TMOD |= 0x10;                             
  71. EA=1;                      //总中断使能
  72. ET1=1;                     //定时中断使能
  73. TR1=1;                     //打开定时器开关
  74. }


  75. /*-----------------------------------------------
  76.                       主程序
  77. ------------------------------------------------*/
  78. main()
  79. {
  80. Init_Timer1(); //初始化定时器

  81. while(1)
  82. {
  83.   //可以加入其它的控制程序
  84. }
  85. }

  86. /*-----------------------------------------------
  87.              定时器执行动态扫描
  88. ------------------------------------------------*/
  89. void Timer1_isr(void) interrupt 3
  90. {

  91. static unsigned char count,j;
  92. unsigned char i;
  93. TH1=0xff;                //重装初值
  94. TL1=0;


  95. T_STR=0;       //锁存释放
  96.    
  97. for(j=0;j<1;j++) //取每个汉字的前2个字节,数据传输完成后锁存输出即可 j表示汉字个数,如果是3个汉字屏就可以修改成3
  98.         {
  99.     InputByte(~hztest[j][i]);
  100.     InputByte(~hztest[j][i+1]);
  101.         }
  102. OE=1;  //暂时关闭屏幕,防止出现鬼影,如果没有使用该引脚控制则会出现拖影现象。
  103. T_STR=1;      //锁存有效,此时一行的数据显示到屏上
  104. P0=DIS[15-count]|0xf0;//用P0口的前4位控制16行,屏内部通过4-16译码器工作,循环扫描其他15行
  105. OE=0;//使能
  106. count++;
  107. i+=2;              //累加调用下一行数据
  108. if(count==16)
  109.     count=0;
  110. if(i==32)
  111.     i=0;

  112. }
复制代码
ID:155507 发表于 2018-12-25 09:25
程序呢?线路图呢?什么都没有,人家想帮你也帮不上呀

我给你来个试试
  1. /*-----------------------------------------------
  2.   名称:595控制4汉字点阵屏
  3.   修改:无 51单片机
  4.   内容:屏+5V、GND连接电源5V
  5.         P0.0-P0.3分别连接A、B、C、D,用于控制16行,通过2路HC138控制
  6.         SCK时钟连接P2.5
  7.         LATCH锁存连接P2.6
  8.         R1红色数据信号连接至P0.4
  9.         G1绿色数据信号连接至P2.4,如果使用单红色屏此信号无需连接
  10.         OE使能端一般接GND,可以用IO引脚PWM控制亮度
  11.         或者使用此引脚控制拖尾现象。
  12.   现象:使用普通速度51系列单片机。单个汉字屏出现红色“德”
  13. ------------------------------------------------*/
  14. #include<reg52.h>

  15. sbit T_STR = P2^6;       //锁存引脚,屏上标识位STR
  16. sbit R1    = P0^4;       //数据引脚,屏上标识R1
  17. sbit G1    = P2^4;       //数据引脚,屏上标识G1
  18. sbit T_CLK = P2^5;       //时钟引脚,屏上标识位CLK
  19. sbit OE    = P2^1;       //使能引脚,屏上标识EN/OE

  20. unsigned char tab[8];
  21. unsigned char DIS[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//行数据

  22. /*-----------------------------------------------
  23.              16x16汉字取模数据
  24. ------------------------------------------------*/
  25. unsigned char code hztest[][32]=    //二维数组,目的是减少运算,可以用最基本的一维数组,每个汉字有32个字节数据
  26. {
  27. /*--  文字:  德  --*/
  28. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  29. 0x08,0x02,0x08,0x02,0xF4,0x7F,0x02,0x02,0xE9,0x3F,0x28,0x25,0x24,0x25,0xE6,0x3F,
  30. 0x05,0x00,0xF4,0x7F,0x04,0x02,0x04,0x24,0xA4,0x44,0xA4,0x50,0x94,0x10,0x04,0x1F,

  31. /*--  文字:  飞  --*/
  32. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  33. 0x00,0x00,0xFF,0x03,0x00,0x02,0x00,0x22,0x00,0x12,0x00,0x0A,0x00,0x06,0x00,0x0A,
  34. 0x00,0x12,0x00,0x22,0x00,0x04,0x00,0x04,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x40,

  35. /*--  文字:  莱  --*/
  36. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  37. 0x10,0x04,0x10,0x04,0xFF,0x7F,0x90,0x04,0x80,0x00,0xFC,0x1F,0x80,0x00,0x88,0x08,
  38. 0x90,0x04,0xFE,0x3F,0xC0,0x01,0xA0,0x02,0x90,0x04,0x8C,0x18,0x83,0x60,0x80,0x00,
复制代码



led16x16_2.jpg (277.76 KB, 下载次数: 13)

led16x16_2.jpg
ID:446674 发表于 2018-12-25 09:16
请说清楚问题,发照片、程序、电路图

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

Powered by 单片机教程网

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