找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2036|回复: 5
收起左侧

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

[复制链接]
ID:453993 发表于 2018-12-25 01:33 | 显示全部楼层 |阅读模式


回复

使用道具 举报

ID:446674 发表于 2018-12-25 09:16 | 显示全部楼层
请说清楚问题,发照片、程序、电路图
回复

使用道具 举报

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
回复

使用道具 举报

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:453993 发表于 2018-12-25 10:50 来自手机 | 显示全部楼层
Arvin0011 发表于 2018-12-25 09:16
请说清楚问题,发照片、程序、电路图

#include <reg51.h>
unsigned char i;
sbit DATA1=P3^7;
sbit DATA2=P3^5;
sbit CLCK1=P3^6;
sbit CLCK2=P3^4;
#define uchar unsigned char
#define uint unsigned int
void shuru_1();
void shuru_2();
unsigned char num,k,temp1,temp2,zuo=0;
unsigned int timecount;
unsigned char code lie[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};/*74hc154显示代码从左到右16列依次选通*/
unsigned char code hang[288]={
0x00,0x00,0x00,0x00,0x1F,0xF8,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0xFF,0xFE,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1F,0xF9,0x00,0x01,0x00,0x0F,0x00,0x00,

0x02,0x02,0x0A,0xEA,0xAA,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0xEA,0x0A,0x02,0x02,0x00,
0x82,0x4A,0x2A,0x1E,0x0B,0x4A,0x8A,0x7A,0x02,0xFA,0x4B,0x4A,0x4A,0xFA,0x02,0x00,

0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,

0x00,0x00,0x00,0x7F,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x7F,0x00,0x00,0x00,0x00,
0x81,0x41,0x21,0x1D,0x21,0x41,0x81,0xFF,0x89,0x89,0x89,0x89,0x89,0x81,0x81,0x00,

0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00,
0x20,0x60,0x3F,0x25,0x15,0x15,0xFF,0x90,0x47,0x29,0x11,0x2D,0x43,0x80,0x80,0x00,

0x10,0x10,0xD0,0xFF,0x90,0x10,0x44,0x54,0xD4,0x74,0x5F,0x54,0xD4,0x54,0x44,0x00,
0x04,0x03,0x00,0xFF,0x00,0x01,0x12,0x11,0x14,0x14,0xFF,0x14,0x14,0x11,0x12,0x00,


0x00,0xF8,0x0C,0x0B,0x08,0x08,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x43,0x80,0x40,0x3F,0x00,0x00,


0x10,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
0x80,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00,

0x10,0x60,0x02,0x8C,0x00,0xF0,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00,
0x04,0x04,0x7E,0x01,0x00,0xFF,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0xFF,0x00,0x00,

};
void shuru_1()
{uchar t;
for(t=0;t<8;t++)
{
temp1<<=1;
DATA1=CY;
CLCK1=1;
CLCK1=0;
}
}
void shuru_2()
{
uchar t;
for(t=0;t<8;t++)
{
temp2<<=1;
DATA2=CY;
CLCK2=1;
CLCK2=0;
}
}
void main(void)
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
void serve_led()interrupt 1 using 0
{ k=2;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
P2=0xff;
P2 = lie[num];
temp1=hang[num*2+zuo];
shuru_1();
P2 = lie[num];
temp2=hang[zuo+(num*2+1)];
shuru_2();
num++;
if(num==16)
{
num=0;
}
timecount++;
if(timecount==100)
{num=0;
timecount=0;
zuo=zuo+2;
if(zuo==272)
{
zuo=0;
}
}
}
75b1c773b64caa50.png
回复

使用道具 举报

ID:453993 发表于 2018-12-25 11:01 来自手机 | 显示全部楼层
angmall 发表于 2018-12-25 09:25
程序呢?线路图呢?什么都没有,人家想帮你也帮不上呀

我给你来个试试

#include <reg51.h>
unsigned char i;
sbit DATA1=P3^7;
sbit DATA2=P3^5;
sbit CLCK1=P3^6;
sbit CLCK2=P3^4;
#define uchar unsigned char
#define uint unsigned int
void shuru_1();
void shuru_2();
unsigned char num,k,temp1,temp2,zuo=0;
unsigned int timecount;
unsigned char code lie[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};/*74hc154显示代码从左到右16列依次选通*/
unsigned char code hang[288]={
0x00,0x00,0x00,0x00,0x1F,0xF8,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0xFF,0xFE,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1F,0xF9,0x00,0x01,0x00,0x0F,0x00,0x00,

0x02,0x02,0x0A,0xEA,0xAA,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0xEA,0x0A,0x02,0x02,0x00,
0x82,0x4A,0x2A,0x1E,0x0B,0x4A,0x8A,0x7A,0x02,0xFA,0x4B,0x4A,0x4A,0xFA,0x02,0x00,

0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,

0x00,0x00,0x00,0x7F,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x7F,0x00,0x00,0x00,0x00,
0x81,0x41,0x21,0x1D,0x21,0x41,0x81,0xFF,0x89,0x89,0x89,0x89,0x89,0x81,0x81,0x00,

0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00,
0x20,0x60,0x3F,0x25,0x15,0x15,0xFF,0x90,0x47,0x29,0x11,0x2D,0x43,0x80,0x80,0x00,

0x10,0x10,0xD0,0xFF,0x90,0x10,0x44,0x54,0xD4,0x74,0x5F,0x54,0xD4,0x54,0x44,0x00,
0x04,0x03,0x00,0xFF,0x00,0x01,0x12,0x11,0x14,0x14,0xFF,0x14,0x14,0x11,0x12,0x00,


0x00,0xF8,0x0C,0x0B,0x08,0x08,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x43,0x80,0x40,0x3F,0x00,0x00,


0x10,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
0x80,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00,

0x10,0x60,0x02,0x8C,0x00,0xF0,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00,
0x04,0x04,0x7E,0x01,0x00,0xFF,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0xFF,0x00,0x00,

};
void shuru_1()
{uchar t;
for(t=0;t<8;t++)
{
temp1<<=1;
DATA1=CY;
CLCK1=1;
CLCK1=0;
}
}
void shuru_2()
{
uchar t;
for(t=0;t<8;t++)
{
temp2<<=1;
DATA2=CY;
CLCK2=1;
CLCK2=0;
}
}
void main(void)
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
void serve_led()interrupt 1 using 0
{ k=2;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
P2=0xff;
P2 = lie[num];
temp1=hang[num*2+zuo];
shuru_1();
P2 = lie[num];
temp2=hang[zuo+(num*2+1)];
shuru_2();
num++;
if(num==16)
{
num=0;
}
timecount++;
if(timecount==100)
{num=0;
timecount=0;
zuo=zuo+2;
if(zuo==272)
{
zuo=0;
}
}
}
75b1c773b64caa50.png
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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