74hc595数码管C语言,74HC595 数码管程序
本帖最后由 芯圣电子官方QQ 于 2023-7-20 10:22 编辑摘要:
74HC595 数码管程序
#include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_();
#de
74HC595 数码管程序
#include //51芯片管脚定义头文件
#include //内部包含延时函数 _nop_();
#define uchar unsigned char
#define uintunsigned int uchar code DAT={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; //取显示数据
WR_595();
OUT_595();
delay(200);
}
}
}
74HC595的QA到QH引脚分别通过限流电阻连接到NPN三极管的基极,三极管的集电极连接到数码管的公共阴极,发射极接地。 可以节省不少io口 这是通过什么方式进行控制的数码管呢 为什么基本上所有操作数码管的语句都是这么的简单但是语句又那么多呢 外部引脚应该如何进行连接呢 需要加电阻吗
有没有专门用于控制数码管的芯片呢
能控制数码管的路数和什么有关系呢
为什么要使用这么多的短延时呢
temp变量是怎么送到ACC中的不明白
页:
[1]