找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

8X8LED點(diǎn)陣點(diǎn)亮第一個(gè)點(diǎn)(親測(cè),完全可移植)

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

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

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

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


/*******************************************************************************
* 函數(shù)名         : Hc595SendByte(u8 dat)
* 函數(shù)功能                   : 向74HC595發(fā)送一個(gè)字節(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ù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

這樣改我測(cè)試著也不行。
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表