微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大家帮忙看看改怎么用74hc595,附程序

大家帮忙看看改怎么用74hc595,附程序

时间:10-02 整理:3721RD 点击:
一张是直接用io口驱动ULN2803,一张是用74HC595+ULN2803,是无法驱动还是程序问题,大家帮忙看看
用了74HC595后的程序:
#include<reg52.h>
#include <intrins.h>      //内部包含延时函数 _nop_();
#define uint  unsigned int
#define uchar unsigned char
//------8拍-----
uchar code zz1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};                        //正转
sbit  SH_CP =P2^0;   //移位时钟脉冲      
sbit  DS =P2^1;   //串行数据输入   
sbit  ST_CP =P2^2;   //输出锁存器控制脉冲
uchar temp;
/*****************************************************************************************
                                    延时子程序
*****************************************************************************************/
void delay(uint ms)
{
        uint t;
        while(ms--)
                for(t=0;t<120;t++);                                             
}
/*****************************************************************************************
                                    初始化74HC595
*****************************************************************************************/
void HC595_Init(void)   
{
   uchar j;
   for (j=0;j<8;j++)
    {
      temp=temp<<1 ;    //会把最高位元移入CY内
      DS=CY;     //把CY的值给P2^0,也就是准备好资料(0或1)给595
      SH_CP=1;          //上升沿发生移位
       _nop_();
       _nop_();
      SH_CP=0;
    }
ST_CP=0;
    _nop_();
    _nop_();
    ST_CP=1;      
}
/*****************************************************************************************
                                    定义各脉冲输出
*****************************************************************************************/
void temp_zz1(uint n)
{
        uint i,j;
        for(i=0;i<5*n;i++)
        {
                for(j=0;j<8;j++)
                {
                        if(P0==0xef)
                                break;
                        temp=zz1[j];
                        delay(20);                                               
                }
        }
}

/*****************************************************************************************
                                    主函数
*****************************************************************************************/
void main()
{   
        uint N=361;          //转动圈速
    SH_CP =0;
    ST_CP =1;
           while(1)
        {
          P0=0xff;
            if(P0==0xfe)
           {
            while(P0==0xfe);
        temp_zz1(N);            
        HC595_Init();
        delay(20);            
                if(P0==0xef)
                break;   
        }
}



程序都是在现成的基础上改的= =单片机初学者,求教

·····

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top