打印
[国产单片机]

MAX7219的问题

[复制链接]
574|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cjy_JDxy|  楼主 | 2019-12-16 20:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我试图用申请的东软单片机驱动MAX7219,可是不成功。
请高手指教,附代码,谢谢!
define DIN_GPIO_PORT GPIOC
#define DIN_GPIO_PIN  MD_GPIO_PIN_13       
#define LOAD_GPIO_PORT GPIOC
#define LOAD_GPIO_PIN  MD_GPIO_PIN_7       
#define CLK_GPIO_PORT GPIOC
#define CLK_GPIO_PIN  MD_GPIO_PIN_6       



#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????(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;
                                                for(k=0;k<CONST;k++);
            CLK_0;
                                                for(k=0;k<CONST;k++);
            CLK_1;
                                                for(k=0;k<CONST;k++);
         }
         else
         {
            DIN_0;
                                                for(k=0;k<CONST;k++);
            CLK_0;
                                                for(k=0;k<CONST;k++);
            CLK_1;
                                                for(k=0;k<CONST;k++);
         }
    }
}
//**************?MAX7219???(16?)*****************************
void WriteWord (uchar addr,uchar num)
{
    LOAD_0;
    for(k=0;k<CONST;k++);
    SendChar(addr);
    for(k=0;k<CONST;k++);
    SendChar(num);
    for(k=0;k<CONST;k++);
    LOAD_1;                            // ????????
                for(k=0;k<CONST;k++);
}
//*********************** MAX7219??? ******************
void InitDisplay (void)
{
    WriteWord (ScanLimit,ScanDigit);         // ??????
    WriteWord (DecodeMode,DecodeDigit);      // ??????
    WriteWord (Intensity,IntensityGrade);    // ????
    WriteWord (ShutDown,NormalOperation);    // ?????????

}

/**
  * @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);
        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)
        {
                md_delay_1ms(1000);
               
                md_gpio_toggle_pin_output(LED2_GPIO_PORT, LED2_GPIO_PIN);

        }
}


使用特权

评论回复
评论
Cjy_JDxy 2019-12-17 13:11 回复TA
@rfgh896 :#丢了,实际上是有的 

相关帖子

沙发
airwill| | 2019-12-16 22:25 | 只看该作者
注释也看不到, 是不是编码的问题呢, 是 KEIL 编译器下吗

使用特权

评论回复
板凳
Cjy_JDxy|  楼主 | 2019-12-16 23:51 | 只看该作者
airwill 发表于 2019-12-16 22:25
注释也看不到, 是不是编码的问题呢, 是 KEIL 编译器下吗

可能是编码的问题。是keil

使用特权

评论回复
地板
airwill| | 2019-12-17 21:50 | 只看该作者
在   Edit ->Configuration 的 Encoding 改成中文, 就可以复制出中文注释来

使用特权

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

本版积分规则

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

553

主题

3530

帖子

19

粉丝