<th id="alkcr"><pre id="alkcr"></pre></th>

  • 打印

    [綜合信息] 【HC32L136 demo板】+MAX7219

    [復制鏈接]
    292|37
    跳轉到指定樓層
    樓主
    今晚又寫了一個MAX7219的小程序,開發環境是KEIL。代碼:
    #include "gpio.h"

    /******************************************************************************
    * Local pre-processor symbols/macros ('#define')
    ******************************************************************************/

    /******************************************************************************
    * Global variable definitions (declared in header file with 'extern')
    ******************************************************************************/
    #define uchar unsigned char
    #define uint unsigned int
    /******************************************************************************
    * Local type definitions ('typedef')
    ******************************************************************************/

    /******************************************************************************
    * Local function prototypes ('static')
    ******************************************************************************/

    /******************************************************************************
    * Local variable definitions ('static')                                      *
    ******************************************************************************/

    /******************************************************************************
    * Local pre-processor symbols/macros ('#define')
    ******************************************************************************/


    #define CLK_0           Gpio_ClrIO(GpioPortB, GpioPin5)
    #define CLK_1           Gpio_SetIO(GpioPortB, GpioPin5)
    #define LOAD_0           Gpio_ClrIO(GpioPortB, GpioPin7)
    #define LOAD_1           Gpio_SetIO(GpioPortB, GpioPin7)
    #define DIN_0           Gpio_ClrIO(GpioPortB, GpioPin8)
    #define DIN_1           Gpio_SetIO(GpioPortB, GpioPin8)

    #define NoOp   0x00           //空操作寄存器
    #define Digit0 0x01           // 數碼管1寄存器
    #define Digit1 0x02           // 數碼管2寄存器
    #define Digit2 0x03           // 數碼管3寄存器
    #define Digit3 0x04           // 數碼管4寄存器
    #define Digit4 0x05           // 數碼管5寄存器
    #define Digit5 0x06           // 數碼管6寄存器
    #define Digit6 0x07           // 數碼管7寄存器
    #define Digit7 0x08           // 數碼管8寄存器

    #define DecodeMode 0x09       // 譯碼模式寄存器
    #define Intensity 0x0a        // 亮度寄存器
    #define ScanLimit 0x0b        // 掃描位數寄存器
    #define ShutDown 0x0c         // 低功耗模式寄存器

    #define DisplayTest 0x0f      // 顯示測試寄存器
    #define ShutdownMode 0x00     // 低功耗方式
    #define NormalOperation 0x01  // 正常操作方式
    #define ScanDigit 0x07        // 掃描位數設置,顯示8位數碼管
    #define DecodeDigit 0xff      // 譯碼設置,8位均為BCD碼
    #define IntensityGrade 0x0a   // 亮度級別設置
    #define TestMode 0x01         // 顯示測試模式
    #define TextEnd 0x00          // 顯示測試結束,恢復正常工作模式

    /*****************************************************************************
    * Function implementation - global ('extern') and local ('static')
    ******************************************************************************/
    uchar DisBuffer[8]={0,0,0,0,0,0,0,0};    // 顯示緩存區
    //******************延時t毫秒**************************************
    void delay(uint t)
    {
           uint i;
           while(t--)
           {
                  /* 對于12M時鐘,約延時1ms */
                  for (i=0;i<125;i++)
                  {}
           }
    }
    //*************向MAX7219寫入字節(8位)********************
    void SendChar (uchar ch)
    {
        uchar i,temp;
        delay(1);
        for (i=0;i<8;i++)
        {
             temp=ch&0x80;
             ch=ch<<1;
             if(temp)
             {
                DIN_1;
                CLK_0;
                CLK_1;
             }
             else
             {
                DIN_0;
                CLK_0;
                CLK_1;
             }
        }
    }
    //**************向MAX7219寫入字(16位)*****************************
    void WriteWord (uchar addr,uchar num)
    {
        LOAD_0;
        delay(1);
        SendChar(addr);
        delay(1);
        SendChar(num);
        delay(1);
        LOAD_1;                            // 鎖存進相應寄存器
    }
    //*********************** MAX7219初始化 ******************
    void InitDisplay (void)
    {
        WriteWord (ScanLimit,ScanDigit);         // 設置掃描界限
        WriteWord (DecodeMode,DecodeDigit);      // 設置譯碼模式
        WriteWord (Intensity,IntensityGrade);    // 設置亮度
        WriteWord (ShutDown,NormalOperation);    // 設置為正常工作模式

    }




    /**
    ******************************************************************************
    ** \brief  Main function of project
    **
    ** \return uint32_t return value, if needed
    **
    ** This sample
    **
    ******************************************************************************/
    int32_t main(void)
    {
        stc_gpio_config_t pstcGpioCfg;

        ///< 打開GPIO外設時鐘門控
        Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

        ///< 端口方向配置->輸出
        pstcGpioCfg.enDir = GpioDirOut;
        ///< 端口驅動能力配置->高驅動能力
        pstcGpioCfg.enDrv = GpioDrvH;
        ///< 端口上下拉配置->無上下拉
        pstcGpioCfg.enPuPd = GpioNoPuPd;
        ///< 端口開漏輸出配置->開漏輸出關閉
        pstcGpioCfg.enOD = GpioOdDisable;
        ///< 端口輸入/輸出值寄存器總線控制模式配置->AHB
        pstcGpioCfg.enCtrlMode = GpioAHB;

        ///< GPIO IO PD05初始化(PD05在STK上外接LED)
        Gpio_Init(GpioPortD, GpioPin5, &pstcGpioCfg);
        Gpio_Init(GpioPortB, GpioPin5, &pstcGpioCfg);
                    Gpio_Init(GpioPortB, GpioPin7, &pstcGpioCfg);
        Gpio_Init(GpioPortB, GpioPin8, &pstcGpioCfg);
                    InitDisplay (); // MAX7219初始化
        WriteWord(DisplayTest,TestMode);  // 開始顯示測試,點亮所有LED
        delay(1500);                      // 延時約1.5s
        WriteWord (DisplayTest,TextEnd);  // 退出顯示測試模式
        WriteWord (Digit0,0);
        WriteWord (Digit1,1);
        WriteWord (Digit2,2);
        WriteWord (Digit3,3);
        while(1)
        {
    。。。。。。。。。。。。。。。。。。。。。。。。。。
    效果圖:

    另,這個MAX7219小板子是我自己做著玩的。
    原理圖如下:





    使用特權

    評論回復
    沙發
    | 2019-9-26 09:17 | 只看該作者
    厲害了小哥哥

    使用特權

    評論回復
    板凳
     樓主 | 2019-9-26 10:33 | 只看該作者

    不厲害,我是個小菜鳥

    使用特權

    評論回復
    地板
    | 2019-9-27 09:24 | 只看該作者
    Cjy_JDxy 發表于 2019-9-26 10:33
    不厲害,我是個小菜鳥

    頭像不錯~

    使用特權

    評論回復
    5
    | 2019-9-27 14:33 | 只看該作者
    你棒哦 為你點贊

    使用特權

    評論回復
    6
     樓主 | 2019-9-27 14:42 | 只看該作者

    謝謝!

    使用特權

    評論回復
    7
    | 2019-10-3 10:37 | 只看該作者
    謝謝分享!

    使用特權

    評論回復
    8
    | 2019-10-6 17:14 | 只看該作者
    HC32L136 性能怎么樣呢     

    使用特權

    評論回復
    9
    | 2019-10-6 17:14 | 只看該作者
    多位LED 顯示驅動器?         

    使用特權

    評論回復
    10
    | 2019-10-6 17:14 | 只看該作者
    max7219與74hc595區別 是什么?   

    使用特權

    評論回復
    11
    | 2019-10-6 17:15 | 只看該作者
    謝謝樓主的資料了。   

    使用特權

    評論回復
    12
    | 2019-10-6 17:15 | 只看該作者
    這個確實厲害了。   

    使用特權

    評論回復
    13
    | 2019-10-6 17:15 | 只看該作者
    還有其他的分享嗎?   

    使用特權

    評論回復
    14
    | 2019-10-6 17:16 | 只看該作者
    三極管一樣驅動吧   

    使用特權

    評論回復
    15
    | 2019-10-6 17:16 | 只看該作者
    謝謝樓主的分享。      

    使用特權

    評論回復
    16
    | 2019-10-6 17:16 | 只看該作者
    HC32L136 demo  

    使用特權

    評論回復
    17
    | 2019-10-6 17:17 | 只看該作者
    MAX7219的小程序   

    使用特權

    評論回復
    18
    | 2019-10-6 17:17 | 只看該作者
    串行接口傳送數據吧   

    使用特權

    評論回復
    19
    | 2019-10-6 17:17 | 只看該作者
    這個讀取的速度快嗎?   

    使用特權

    評論回復
    20
    | 2019-10-6 17:17 | 只看該作者
    IAR可以開發嗎?   

    使用特權

    評論回復
    掃描二維碼,隨時隨地手機跟帖
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則

    我要發帖 投訴建議 創建版塊 申請版主

    快速回復

    您需要登錄后才可以回帖
    登錄 | 注冊
    高級模式

    論壇熱帖

    在線客服 快速回復 返回頂部 返回列表
    成人短片线上看