回答

收藏

[求助] 74HC595驱动,时序问题?

51单片机 51单片机 2746 人阅读 | 0 人回复 | 2012-12-31

我的硬件连接:

DS 在 P3.0
SH_CP 在 P3.1
L_CLK 在 P3.2
595输出0-7对应BCD的a-h

源码:
  1. #include <reg51.h>
  2. #include <intrins.h>

  3. code unsigned char BCD[]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90}; /* 0-9 */

  4. sbit L_DS = P3^0;
  5. sbit L_CP = P3^1;
  6. sbit L_CLK = P3^2;

  7. void Input(unsigned char BCD_N){
  8.         unsigned char tmp;
  9.         tmp = BCD_N;
  10.         for(tmp=0;tmp<8;tmp++){
  11.                 tmp <<= 1;
  12.                 if((BCD_N |= 0x01) == 0x01){
  13.                  L_DS = 1;
  14.                 }else{
  15.                  L_DS = 0;
  16.                 }
  17.                 L_CLK = 1;
  18.                 _nop_();
  19.                 _nop_();
  20.                 L_CLK = 0;
  21.         }
  22. }

  23. void Output(){
  24.         L_CP = 0;
  25.         _nop_();
  26.         _nop_();
  27.         L_CP = 1;
  28.         _nop_();
  29.         _nop_();
  30.         L_CP = 0;
  31. }

  32. void Init(){
  33.         L_CLK = 0;
  34.         L_CP = 1;
  35. }
  36. void main(){
  37.   Init();
  38.   Input(BCD[0]);
  39.   while(1){
  40.      Output();
  41.   }
  42. }
  43. l
复制代码
结果是:

BCD不亮,复位后也不亮,按一下电路接一个测试电路发现:

VCC-LED-接口(分别测试0-7输出)

接所有输出都亮,是不是我写的时序有问题呢,我看到别人的程序以后自己重写了一个.
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条