作者共發了6篇帖子。 內容轉換:不轉換▼
 
點擊 回復
672 5
【图解】74HC595驱动8x8点阵
一派護法 十九級
1樓 發表于:2016-7-28 19:00
一派護法 十九級
2樓 發表于:2016-7-28 19:06

【程序范例】

void SerIn(unsigned char dat)
{
    unsigned char i;
    for (i = 0; i < 8; i++)
    {
        SHCLK = 0;
        if (dat & 0x80)
            SDAT = 1;
        else
            SDAT = 0;
        dat <<= 1;
        SHCLK = 1;
    }
}

 

void ParOut(void)
{
    STCLK = 0;
    STCLK = 1;
}

 

int main(void)
{
    SerIn(0xfe); // 选中第1列
    SerIn(0xf1); // 第一列的内容
    ParOut();

 

    SerIn(~BIT(1));
    SerIn(0xf2);
    delay(1000); // 等待1秒
    ParOut(); // 输出

 

    while (1);
}

 

可见,虽然SerIn输入了数据,但是如果不执行ParOut,数据就一直缓存在芯片中不输出。

一派護法 十九級
3樓 發表于:2016-7-28 19:19
一派護法 十九級
4樓 發表于:2016-7-28 19:26

为了解决单片机烧写、开机时芯片输出混乱的问题,可以将OE引脚接到单片机上。

当OE=1时,芯片的输出为高阻态;当OE=0时,芯片正常输出。因此在单片机开机后可在main函数中将OE设为0,使能输出。而单片机在烧写、开机时,OE(所接的单片机I/O口)默认为高电平或高阻态,就禁用了输出。

一派護法 十九級
5樓 發表于:2016-7-28 19:28
SHCLK和STCLK两个时钟线,都是高电平时空闲,上升沿时执行命令。
一派護法 十九級
6樓 發表于:2016-7-28 19:30
回復4樓 @巨大八爪鱼 的內容:
为了解决单片机烧写、开机时芯片输出混乱的问题,可以将OE引脚接到单片机上。
当OE=1时,芯片的输出为高阻态;当OE=0时,芯片正常输出。因此在单片机开机后可在main函数中将O...
所有HC595芯片的OE端都可以共用这一个I/O使能引脚,以节约单片机I/O口资源。

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:672 回複數:5
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-7-28 19:30
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。