| 
初级会员 主题
回帖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);
 }
 }
 }
 
 
 | 
 |