打印
[国产单片机]

【东软载波ESF0654 PDS开发板活动】+ MAX7219

[复制链接]
695|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cjy_JDxy|  楼主 | 2019-12-17 19:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
今晚又捣鼓了一下MAX7219,终于好啦。
代码:
#include "main.h"

/** @addtogroup Projects_Examples_MD
  * @{
  */

/** @addtogroup Examples
  * @{
  */
#define uchar unsigned char
#define uint  unsigned int
       
#define CONST 2

#define CLK_0           md_gpio_set_pin_low(CLK_GPIO_PORT,CLK_GPIO_PIN)
#define CLK_1           md_gpio_set_pin_high(CLK_GPIO_PORT,CLK_GPIO_PIN)
#define LOAD_0          md_gpio_set_pin_low(LOAD_GPIO_PORT,LOAD_GPIO_PIN)
#define LOAD_1          md_gpio_set_pin_high(LOAD_GPIO_PORT,LOAD_GPIO_PIN)
#define DIN_0           md_gpio_set_pin_low(DIN_GPIO_PORT,DIN_GPIO_PIN)
#define DIN_1           md_gpio_set_pin_high(DIN_GPIO_PORT,DIN_GPIO_PIN)

#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};    // ?????
uchar k;
//******************??t??**************************************
void delay(uint t)
{
       uint i;
       while(t--)
       {
              /* ??12M??,???1ms */
              for (i=0;i<125;i++)
              {}
       }
}
//--------------------------------------------
//??:?MAX7219(U3)????
//????:DATA
//????:?
//??:
void Write_Max7219_byte(uchar DATA)         
{
            uchar i;   
                        LOAD_0;               
            for(i=8;i>=1;i--)
                        {                  
                                CLK_0;
                                if(DATA&0x80)
                                        DIN_1;
                                else
                                        DIN_0;
                                DATA=DATA<<1;
                                CLK_1;
                         }                                 
}
//-------------------------------------------
//??:?MAX7219????
//????:address?dat
//????:?
//??:
void Write_Max7219(uchar address,uchar dat)
{
     LOAD_0;
                        Write_Max7219_byte(address);           //????,??????
     Write_Max7219_byte(dat);               //????,????????
                        LOAD_1;                        
}

void Init_MAX7219(void)
{
Write_Max7219(0x09, 0xff);       //????:BCD?
Write_Max7219(0x0a, 0x03);       //ÁÁ¶È
Write_Max7219(0x0b, 0x07);       //4¸öÊýÂë¹ÜÏÔʾ
Write_Max7219(0x0c, 0x01);       //ÆÕͨģʽ
Write_Max7219(0x0f, 0x00);       //ÏÔʾ²âÊÔ:1;²âÊÔģʽ,0:±ê×¼²Ù×÷
}
/**
  * @brief  This function configures GPIO
  * @param  None
  * @retval None
  */
void config_gpio(void)
{
        md_gpio_set_pin_function(DIN_GPIO_PORT, DIN_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(DIN_GPIO_PORT, DIN_GPIO_PIN);
        md_gpio_set_pin_mode_output(DIN_GPIO_PORT, DIN_GPIO_PIN);
       
        md_gpio_set_pin_function(LOAD_GPIO_PORT, LOAD_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(LOAD_GPIO_PORT, LOAD_GPIO_PIN);
        md_gpio_set_pin_mode_output(LOAD_GPIO_PORT, LOAD_GPIO_PIN);
       
        md_gpio_set_pin_function(CLK_GPIO_PORT, CLK_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(CLK_GPIO_PORT, CLK_GPIO_PIN);
        md_gpio_set_pin_mode_output(CLK_GPIO_PORT, CLK_GPIO_PIN);
       
        md_gpio_set_pin_function(LED2_GPIO_PORT, LED2_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(LED2_GPIO_PORT, LED2_GPIO_PIN);
        md_gpio_set_pin_mode_output(LED2_GPIO_PORT, LED2_GPIO_PIN);
}

/**
  * @brief  Test main function
  * @retval Status.
  */
int main()
{
        md_init_1ms_tick();
        config_gpio();
        delay(1000);
        Init_MAX7219();
        Write_Max7219(0x01, 0x00);       //????:BCD?
         Write_Max7219(0x02, 0x03);       //??
         Write_Max7219(0x03, 0x07);       //????;8??????
         Write_Max7219(0x04, 0x01);       //????:0,????:1
        while (1)
        {
                md_delay_1ms(1000);
               
                md_gpio_toggle_pin_output(LED2_GPIO_PORT, LED2_GPIO_PIN);

        }
}

效果图:

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

19

粉丝