標題: 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. }
復(fù)制代碼



作者: Embedded_Geek    時間: 2018-6-11 21:58
求大伙幫忙看看,感激
作者: Embedded_Geek    時間: 2018-6-11 22:01
希望路過的幫忙看看我這問題
作者: HC6800-ES-V2.0    時間: 2018-6-12 07:31
程序沒問題,但——所有的教程都沒說這個——595必須先發(fā)送一次0x00進行初始化,以后才能正常工作。
所以,你的程序中,主函數(shù)第一句加上:Hc595SendByte(0x00);保證就好了。我已經(jīng)在我的板子上試驗通過。
作者: Embedded_Geek    時間: 2018-6-12 14:08
HC6800-ES-V2.0 發(fā)表于 2018-6-12 07:31
程序沒問題,但——所有的教程都沒說這個——595必須先發(fā)送一次0x00進行初始化,以后才能正常工作。
所以 ...

好的呢,謝謝你。不過我發(fā)現(xiàn)只要去掉while(1)也能點亮,這個是什么原因?
作者: 一廳雪花闖天涯    時間: 2018-7-16 07:20
樓主 JOE如何接地啊 我找了半天沒找到,還有你那單片機上如何接線的,這問題一直沒搞懂 頭暈暈的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1