找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10178|回復: 8
打印 上一主題 下一主題
收起左側(cè)

8X8LED點陣點亮第一個點(親測,完全可移植)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:264442 發(fā)表于 2017-12-21 19:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/**************************************************************************************
*                              8*8LED點陣———點亮一個點實驗                                                                                                  *
實現(xiàn)現(xiàn)象:下載程序后點陣左上角第一個點點亮
                       
注意事項:一定要將74HC595模塊上的JP595短接片短接,并且將JOE短接片短接到GND端。                                                                                                                                                                  
***************************************************************************************/

#include "reg51.h"                         //此文件中定義了單片機的一些特殊功能寄存器
#include<intrins.h>

typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;


/*******************************************************************************
* 函數(shù)名         : Hc595SendByte(u8 dat)
* 函數(shù)功能                   : 向74HC595發(fā)送一個字節(jié)的數(shù)據(jù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
void Hc595SendByte(u8 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;
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{               
        Hc595SendByte(0x80);
        P0=0x7f;
        while(1);               
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:349594 發(fā)表于 2018-6-12 13:47 | 只看該作者
你這個代碼邏輯上好像沒錯,但是程序下載之后第一個燈沒亮的,本人親測過。
具體猜測如下:
主函數(shù)中P34和P0讀取數(shù)據(jù)很快,就馬上執(zhí)行while語句;
所以燈不亮或者只能看到瞬間亮了一下馬上就熄了。
解決方案:
主函數(shù)改為:
while (1)
{
        Hc595SendByte(0x80);
        P0=0x7f;
}
回復

使用道具 舉報

板凳
ID:568261 發(fā)表于 2019-6-20 20:00 | 只看該作者
Embedded_Geek 發(fā)表于 2018-6-12 13:47
你這個代碼邏輯上好像沒錯,但是程序下載之后第一個燈沒亮的,本人親測過。
具體猜測如下:
主函數(shù)中P34 ...

這樣改我測試著也不行。
回復

使用道具 舉報

地板
ID:425846 發(fā)表于 2019-6-22 10:49 | 只看該作者
Embedded_Geek 發(fā)表于 2018-6-12 13:47
你這個代碼邏輯上好像沒錯,但是程序下載之后第一個燈沒亮的,本人親測過。
具體猜測如下:
主函數(shù)中P34 ...

595是移位寄存器,他自己會循環(huán)
回復

使用道具 舉報

5#
ID:908694 發(fā)表于 2021-7-31 19:12 | 只看該作者
我用的也是這個程序 但第一列全部點亮 求解!
回復

使用道具 舉報

6#
ID:957563 發(fā)表于 2021-8-1 11:47 來自手機 | 只看該作者
like1234456 發(fā)表于 2021-7-31 19:12
我用的也是這個程序 但第一列全部點亮 求解!

在定義函數(shù)下加入
u8 ledduan[]={0x80};
u8 ledwei[]={0x7f};
回復

使用道具 舉報

7#
ID:957563 發(fā)表于 2021-8-1 11:50 來自手機 | 只看該作者
發(fā)奮蝸牛 發(fā)表于 2019-6-20 20:00
這樣改我測試著也不行。

在定義函數(shù)下加入延時函數(shù)
void  delay  (u16 i)
{
while(i––);
}
回復

使用道具 舉報

8#
ID:957563 發(fā)表于 2021-8-1 11:55 來自手機 | 只看該作者
修改如下可參考
回復

使用道具 舉報

9#
ID:957563 發(fā)表于 2021-8-1 11:55 來自手機 | 只看該作者
#include "reg51.h"                         //此文件中定義了單片機的一些特殊功能寄存器#include<intrins.h>typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義typedef unsigned char u8; sbit SRCLK=P3^6; sbit RCLK=P3^5; sbit SER=P3^4;/******************************************************************************** 函數(shù)名         : Hc595SendByte(u8 dat)* 函數(shù)功能                   : 向74HC595發(fā)送一個字節(jié)的數(shù)據(jù)* 輸入           : 無* 輸出                  : 無*******************************************************************************/void Hc595SendByte(u8 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; }/******************************************************************************** 函 數(shù) 名       : main* 函數(shù)功能                 : 主函數(shù)* 輸    入       : 無* 輸    出             : 無***/ void main() {                         Hc595SendByte(0x80);         P0=0x7f; While(1); }
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表