标题: 单片机萌新一枚,在调试双色点阵的时候发现问题 [打印本页]

作者: 提问选手    时间: 2023-2-2 18:18
标题: 单片机萌新一枚,在调试双色点阵的时候发现问题
目前的状态就是:
1.只能确定显示在哪一行,但是显示在哪一行给的数据无论多少那行都会全部点亮
2.想要显示图形的时候,点阵会全部点亮

单片机源程序如下:

  1. #include<reg52.h>   
  2. #include <intrins.h>

  3. unsigned char  Line[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //8行,一到八行
  4. unsigned char code tab[]={0x83,0x43,0x24,0x18,0x18,0x24,0x43,0x83};


  5. /*------------------------------------------------
  6.                 硬件端口定义
  7. ------------------------------------------------*/

  8. /*sbit LATCH = P1^0; //RCLK
  9. sbit SRCLK = P1^1;
  10. sbit SER  = P1^2;


  11. sbit LATCH_B = P2^2;//RCLK
  12. sbit SRCLK_B = P2^1;
  13. sbit SER_B = P2^0;*/


  14. sbit LATCH = P1^3; //RCLK,锁存端
  15. sbit SRCLK = P1^4;
  16. sbit SER  = P1^5;


  17. sbit LATCH_B = P2^5;//RCLK
  18. sbit SRCLK_B = P2^4;
  19. sbit SER_B = P2^3;



  20. void DelayUs2x(unsigned char t)
  21. {   
  22. while(--t);
  23. }

  24. void DelayMs(unsigned char t)
  25. {

  26. while(t--)
  27. {
  28.      //大致延时1mS
  29.      DelayUs2x(245);
  30.          DelayUs2x(245);
  31. }
  32. }
  33. /*------------------------------------------------
  34.                 发送字节程序
  35. ------------------------------------------------*/
  36. void SendByte(unsigned char dat)
  37. {   
  38.   unsigned char i;

  39.    for(i=0;i<8;i++)
  40.         {
  41.                                  SER=dat&0x80;
  42.          dat<<=1;
  43.          SRCLK=0;
  44.          SRCLK=1;

  45.          }

  46. }
  47. /*------------------------------------------------
  48.                 发送双字节程序
  49. ------------------------------------------------*/
  50. void Send2Byte(unsigned char dat1,unsigned char dat2)
  51. {   
  52.    SendByte(dat1);
  53.    SendByte(dat2);      
  54. }
  55. /*------------------------------------------------
  56.                    595锁存程序
  57.                   595级联发送数据后,锁存有效
  58. ------------------------------------------------*/
  59. void Out595(void)
  60. {
  61.         LATCH=0;
  62.         _nop_();
  63.         LATCH=1;
  64. }

  65. /*------------------------------------------------
  66.                 发送位码字节程序
  67.                使用另外一片单独595
  68. ------------------------------------------------*/
  69. void SendCol(unsigned char dat)
  70. {   
  71. unsigned char i;

  72.    for(i=0;i<8;i++)  //发送字节
  73.         {
  74.          SER_B=dat&0x80;
  75.          dat<<=1;
  76.          SRCLK_B=0;
  77.                                  SRCLK_B=1;
  78.          }
  79.       LATCH_B=0;    //锁存
  80.       _nop_();
  81.       LATCH_B=1;


  82. }
  83. /*------------------------------------------------
  84.                    主程序
  85. ------------------------------------------------*/
  86. void main()
  87. {
  88.                                         unsigned char i,j;
  89.                                         while(1)
  90.                                                 {
  91.                            for(j=0;j<60;j++)
  92.               for(i=0;i<8;i++) //8列显示
  93.                   {
  94.                      SendCol(Line[i]);
  95.                                                                                  Send2Byte(tab[i],0xff);
  96.                                                                                  Out595();
  97.                                                                                  DelayMs(1);
  98.                                                                                  Send2Byte(0xff,0xff);//delay(10); //防止重影
  99.                                                                                  Out595();
  100.                   }
  101.                           /*for(j=0;j<60;j++)
  102.               for(i=0;i<8;i++) //8列显示
  103.                   {
  104.                      SendCol(Line[7-i]); //反向显示同样图形
  105.                                                                                  Send2Byte(0x00,tab[i]);
  106.                                                                                  Out595();
  107.                                                                                  DelayMs(1);
  108.                                                                                  Send2Byte(0xff,0xff);//delay(10); //防止重影
  109.                                                                                  Out595()
  110.                   }*/

  111.                                                         }
  112. }
复制代码

0ed6d9e56e8ff628f76afd491e1a4d2.png (380.41 KB, 下载次数: 87)

立创画的,我现在手上也没有文件了

立创画的,我现在手上也没有文件了

MVIMG_20230202_175252.jpg (2.35 MB, 下载次数: 86)

只能确定显示再哪一行

只能确定显示再哪一行

屏幕截图 2023-02-02 180752.png (213.05 KB, 下载次数: 96)

想要测试显示的图形

想要测试显示的图形

屏幕截图 2023-02-02 180714.png (387.63 KB, 下载次数: 91)

用的双色点阵

用的双色点阵

MVIMG_20230202_175845.jpg (2.62 MB, 下载次数: 92)

想要显示图形时却全部点亮

想要显示图形时却全部点亮

双色.rar

19.59 KB, 下载次数: 3


作者: 提问选手    时间: 2023-2-2 18:26
原理图那里我放了排母当做点阵,然后发现对应的接线和我买的这块点阵不匹配,但是对应的实物我用杜邦线接到实物点阵上了,排除点阵接线问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1