标题: 8X8点阵点亮左上角第一个点,JP595短接了,JOE也接GND了,但就是没有显示 [打印本页]

作者: Embedded_Geek    时间: 2018-6-11 16:37
标题: 8X8点阵点亮左上角第一个点,JP595短接了,JOE也接GND了,但就是没有显示
  1. #include "reg51.h"
  2. #include<intrins.h>

  3. typedef unsigned int u16;
  4. typedef unsigned char u8;

  5. sbit SRCLK=P3^6;
  6. sbit RCLK=P3^5;
  7. sbit SER=P3^4;


  8. void Hc595SendByte(u8 dat)
  9. {
  10.         u8 a;
  11.         SRCLK=0;
  12.         RCLK=0;
  13.         for(a=0;a<8;a++)
  14.         {
  15.                 SER=dat>>7;
  16.                 dat<<=1;

  17.                 SRCLK=1;
  18.                 _nop_();
  19.                 _nop_();
  20.                 SRCLK=0;       
  21.         }

  22.         RCLK=1;
  23.         _nop_();
  24.         _nop_();
  25.         RCLK=0;
  26. }

  27. void main()
  28. {               
  29.         Hc595SendByte(0x80);
  30.         P0=0x7f;
  31.         while(1);               
  32. }
复制代码



作者: Embedded_Geek    时间: 2018-6-11 21:58
求大伙帮忙看看,感激
作者: Embedded_Geek    时间: 2018-6-11 22:01
希望路过的帮忙看看我这问题
作者: HC6800-ES-V2.0    时间: 2018-6-12 07:31
程序没问题,但——所有的教程都没说这个——595必须先发送一次0x00进行初始化,以后才能正常工作。
所以,你的程序中,主函数第一句加上:Hc595SendByte(0x00);保证就好了。我已经在我的板子上试验通过。
作者: Embedded_Geek    时间: 2018-6-12 14:08
HC6800-ES-V2.0 发表于 2018-6-12 07:31
程序没问题,但——所有的教程都没说这个——595必须先发送一次0x00进行初始化,以后才能正常工作。
所以 ...

好的呢,谢谢你。不过我发现只要去掉while(1)也能点亮,这个是什么原因?
作者: 一厅雪花闯天涯    时间: 2018-7-16 07:20
楼主 JOE如何接地啊 我找了半天没找到,还有你那单片机上如何接线的,这问题一直没搞懂 头晕晕的




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