首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
74HC595 数码管程序
来源:本站整理  作者:佚名  2011-02-05 21:44:04



74HC595 数码管程序

#include <reg51.h>       //51芯片管脚定义头文件
#include <intrins.h>     //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint  unsigned int

uchar code DAT[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管显示码


sbit HC595_SRCLR=P1^0;  // 清空移位寄存器
sbit HC595_sRCLK=P1^1;  // 寄存器输出时钟
sbit HC595_RCLK =P1^2;  // 移位时钟
sbit HC595_OE   =P1^3;  // 并行输出使能
sbit HC595_sER  =P1^4;  // 串行数据


uchar temp;             

/********************************************************/
/*                                                                                                        
/* 延时子程序                                                             
/*                                                                                                     
/*******************************************************/

void delay(int ms)
{                           
   int k;
   while(ms--)
   {
     for(k=0; k<250; k++)
     {
      _nop_();
      _nop_();
      _nop_();
      _nop_();
     }
   }
}

/********************************************************/
/*                                                                                                            */
/*将显示数据送入74HC595内部移位寄存器                                  */
/*                                                                                                            */
/********************************************************/

void WR_595(void)
{
     uchar j;
      for (j=0;j<8;j++)
     {
      temp=temp<<1 ; 
      HC595_sER=CY;
      HC595_sRCLK=1;                     //上升沿发生移位
       _nop_();
       _nop_();
      HC595_sRCLK=0;
     }        
}

/********************************************************/
/*                                                                                                            */
/*将移位寄存器内的数据锁存到输出寄存器并显示                              */
/*                                                                                                            */
/********************************************************/

void OUT_595(void)
{
    HC595_RCLK=0; 
    _nop_();
    _nop_();
    HC595_RCLK=1;                     //上升沿将数据送到输出锁存器
    _nop_();
    _nop_(); 
    _nop_();
    HC595_RCLK=0;
}

/********************************************************
*                                                                                                              *
*  主程序                                                                  *
*                                                                                                              *
*********************************************************/

main()
{ //////////////////////////////////////////////////
   //以下为输出位初始化

  HC595_OE=1;      //并行输出为高阻状态
  
   _nop_();
   _nop_();

  HC595_sRCLR=0; //清空移位寄存器
  
   _nop_();

  HC595_sER=0;  //清零
  
   _nop_();
   _nop_();

 HC595_RCLK=0;  //移位时钟初始为低
 
   _nop_();

   HC595_sRCLK=0; //寄存器时钟初始为低
  
   _nop_();

   HC595_OE=0;  //允许并行输出
  
   _nop_();

   HC595_sRCLR=1; //结束复位状态 
 ////////////////////////////////////////////////
 
 
 //循环显示 0--9

   while(1)             
    {
      uchar i;
      for (i=0; i<10; i++)
       {
        temp=DAT[i];               //取显示数据
   WR_595();
        OUT_595();
  delay(200);
        }
  
        
    }
}             

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:265,695.30000 毫秒