標(biāo)題: 如何用單片機(jī)點(diǎn)亮一個74HC595控制的二極管 [打印本頁]

作者: 夢起白沙    時間: 2018-12-15 00:01
標(biāo)題: 如何用單片機(jī)點(diǎn)亮一個74HC595控制的二極管
誰能告訴我,這個LED如何點(diǎn)亮?
有了74HC595控制我就不會了,麻煩講一下,這個的工作原理。




作者: HC6800-ES-V2.0    時間: 2018-12-15 00:01
哈哈哈,你發(fā)的問題,正是我有的板子,程序也有啊。
#include<reg51.h>
#include<intrins.h>

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
void Hc595SendByte(unsigned char dat);
void Delay10ms(unsigned int ) ;
void main()
{
        unsigned char ledNum;
        ledNum=0xfe;
        while(1)
        {
                Hc595SendByte(ledNum);
                ledNum=_cror_(ledNum,1);
                Delay10ms(50);
        }       
}
/*******************************************************************************
* 函數(shù)名         : Hc595SendByte(unsigned char dat)
* 函數(shù)功能                   : 想74H595發(fā)送一個字節(jié)的數(shù)據(jù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
void Hc595SendByte(unsigned char dat)
{
        unsigned char a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {
                SER=dat>>7;
                dat<<=1;

                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;       
        }

        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}
/*******************************************************************************
* 函數(shù)名         : Delay10ms
* 函數(shù)功能                   : 延時函數(shù),延時10ms
* 輸入           : c
* 輸出                  : 無
*******************************************************************************/
void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

注意:需要將JOE跳線帽J13接GND,595模塊的JP595跳線帽J14接上,595的LED才會亮!!
作者: jefelee    時間: 2018-12-15 08:22
單片機(jī)控制74hc595輸出進(jìn)而控制發(fā)光二極管點(diǎn)亮:74hc595是一個反極性驅(qū)動,也就是說如果用的是共陽數(shù)碼管,段選端本應(yīng)低電平點(diǎn)亮,如果在單片機(jī)的p口送個高電平,但是經(jīng)過74hc595后你的高電平就變成低電平了,所以要在單片機(jī)那面往595送低電平,共陽相反,然后在將位選選通,如果想固定顯示某個數(shù)或者循環(huán)顯示某幾個數(shù)的話,就直接只一個表這個表就是八字碼,然后通過查表就可以了,如果不是的話就能麻煩點(diǎn),需要將待顯示的數(shù)據(jù)轉(zhuǎn)成十進(jìn)制然后經(jīng)過處理后再查表送顯示。
作者: 1xiaosun    時間: 2018-12-15 08:34
1. 打開百度
2. 搜對應(yīng)的數(shù)據(jù)手冊
3. 仔細(xì)看數(shù)據(jù)手冊
4. 可以開始畫流程圖了
5. 寫程序
6. 測試

適用所有外圍電路
作者: weiweimao1    時間: 2018-12-15 09:23
看一下這段程序
void led(u16 dat)
{
        u8 a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {
                SER=dat>>7;
                dat<<=1;
               
                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;
        }
        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}
作者: 夢起白沙    時間: 2018-12-15 09:30
jefelee 發(fā)表于 2018-12-15 08:22
單片機(jī)控制74hc595輸出進(jìn)而控制發(fā)光二極管點(diǎn)亮:74hc595是一個反極性驅(qū)動,也就是說如果用的是共陽數(shù)碼管, ...

能給我寫段程序看看嗎?就點(diǎn)亮兩個燈就可以
作者: gh001    時間: 2018-12-15 09:44
74hc595是串入并出的芯片,利用51單片機(jī)模擬串行接口使用,簡單使用如下

sbit data_595 = P3^4;
sbit clk_595 = P3^6;
sbit LATCH_595 = P3^5;

void wr_bits(uchar num)
{
        uchar i;
        for(i=0;i<8;i++)
        {
                if(num&0x80)         //′ó¸ßλËí
                        data_595 =1;
                else
                        data_595 =0;       
                clk_595 =0;
                _nop_();
                clk_595 =1; //½«êy¾YD′èë595  
                num<<=1;                //Ïò×óòƶˉò»Î»               
        }
        LATCH_595=0;
        _nop_();
        LATCH_595=1;//éÏéyÑØËø′æ
}
void main()
{
    while(1)
                wr_bits(0xfe);
}
作者: gh001    時間: 2018-12-15 09:57
file:///C:/Users/Administrator/Desktop/595-2-seg.gif

595-2-seg.gif (63.98 KB, 下載次數(shù): 93)

595-2-seg.gif

4個按鍵功能.rar

48.24 KB, 下載次數(shù): 17


作者: 夢起白沙    時間: 2018-12-24 13:32
HC6800-ES-V2.0 發(fā)表于 2018-12-15 00:01
哈哈哈,你發(fā)的問題,正是我有的板子,程序也有啊。
#include
#include

你有這個板子的電子鐘(C語言)的程序沒有?只要求能調(diào)節(jié)時間就可以




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1