加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SN74HC595应用之数码管

(2016-10-04 11:03:48)
分类: STC15
   595可以将串行数据扩展至并行数据,在点通数码管的时候,可以节约io端口。595的管脚图如下:
QA~QH为串行数据输出口,QH'为级连输出,与下一个595的SER管脚相连。如下图
http://s4/mw690/002cNJ3nzy75lOhNjGza3&690
为了选通数码管的位,可以先将数据通过U1的SER口输入。例如要选通G1、G2则先将数据0一位一位送入U1的SER口。然后再输入串行数据给U1,U1将先前送入的选通数据给U2,这样就实现了位选。然后再将段显数据送入U1,来实现数码管的显示。
        595要实现数据的输入过程是这样的:SRCLK在上升沿时将数据一位一位送入移位寄存器。RCLK在上升沿时将数据送入存储寄存器,在下降沿时保持数据不变。SRCLR为清零端,低电平有效,所以一般直接接高电平。
       要实现数据输入SER口,程序如下:
void SetOneBit(u8 b)
               {
  NUM_SCK=0; //下降沿不变 
NUM_SER=b; //串行输入  
NUM_SCK=1; //上升沿数据移位 
         }
位选信号先送入
        NUM_RCK=0; //上升沿移位寄存器数据进入数据存储器,下降沿不变
 SetOneBit(0);           //选通G1
 SetOneBit(0);           //选通G2
 SetOneBit(1);           //不选通G3
 SetOneBit(1);           //不选通G4
 NUM_RCK=1;              //移位寄存器的数据进入显示存储器

         段码信号送入
NUM_OE=1; 
         curDisplayNumCode=numCode[j]; //显示数字
         for(i=0;i<8;i++) 
 
  SetOneBit(curDisplayNumCode&0x80); //每一位移入74HC595的移位寄存器 curDisplayNumCode<<=1; 
 }
NUM_RCK=1; //移位寄存器的数据进入显示存储器
NUM_OE=0; //使能显示

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有