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; //上升沿将数据送到输出锁存器