初级会员
主题
回帖0
积分165
阅读权限10
注册时间2012-12-3
最后登录1970-1-1
在线时间 小时
|
学习74HC595是如何驱动数码管,就简单用面包板来实验。
#include<reg51.h>
#include<intrins.h>
sbit SER=P1^0; //串行数据输入
sbit RCLK=P1^2; //存储寄存器时钟
sbit SRCLK=P1^1; //移位寄存器时钟
void Send595(unsigned char dat)
{
unsigned char i;
RCLK=0;
for(i=0;i<8;i++)
{
if(dat&0x01) //从最低位开始发送1位数据,一个字节共循环8次
SER=1;
else
SER=0;
SRCLK=0; //先拉低
_nop_();
SRCLK=1; //再拉高,上升沿数据移位
dat>>=1; //高位右移1位,准备下次发送
}
RCLK=1; //数据保存
}
void Delay(unsigned int dt)
{
while(dt--);
}
void main()
{
unsigned int i;
unsigned char code segcode[]={0xfc,0x0c,0x0da,0xf2};
unsigned char code bitdrv[]={0x7f,0xbf,0xdf,0xef};
while(1)
{
for(i=0;i<4;i++)
{
Send595(segcode[i]); //发送段码
Send595(bitdrv[i]); //发送位码
Delay(500);
}
}
}
|
|