打印
[综合信息]

【HC32L136 demo板】+MAX7219

[复制链接]
2172|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cjy_JDxy|  楼主 | 2019-9-25 20:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今晚又写了一个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小板子是我自己做着玩的。
原理图如下:





使用特权

评论回复
沙发
caizhiwei| | 2019-9-26 09:17 | 只看该作者
厉害了小哥哥

使用特权

评论回复
板凳
Cjy_JDxy|  楼主 | 2019-9-26 10:33 | 只看该作者

不厉害,我是个小菜鸟

使用特权

评论回复
地板
caizhiwei| | 2019-9-27 09:24 | 只看该作者
Cjy_JDxy 发表于 2019-9-26 10:33
不厉害,我是个小菜鸟

头像不错~

使用特权

评论回复
5
guitianxia| | 2019-9-27 14:33 | 只看该作者
你棒哦 为你点赞

使用特权

评论回复
6
Cjy_JDxy|  楼主 | 2019-9-27 14:42 | 只看该作者

谢谢!

使用特权

评论回复
7
zlmin| | 2019-10-3 10:37 | 只看该作者
谢谢分享!

使用特权

评论回复
8
gygp| | 2019-10-6 17:14 | 只看该作者
HC32L136 性能怎么样呢     

使用特权

评论回复
9
chenci2013| | 2019-10-6 17:14 | 只看该作者
多位LED 显示驱动器?         

使用特权

评论回复
10
biechedan| | 2019-10-6 17:14 | 只看该作者
max7219与74hc595区别 是什么?   

使用特权

评论回复
11
wangdezhi| | 2019-10-6 17:15 | 只看该作者
谢谢楼主的资料了。   

使用特权

评论回复
12
isseed| | 2019-10-6 17:15 | 只看该作者
这个确实厉害了。   

使用特权

评论回复
13
xietingfeng| | 2019-10-6 17:15 | 只看该作者
还有其他的分享吗?   

使用特权

评论回复
14
suzhanhua| | 2019-10-6 17:16 | 只看该作者
三极管一样驱动吧   

使用特权

评论回复
15
mituzu| | 2019-10-6 17:16 | 只看该作者
谢谢楼主的分享。      

使用特权

评论回复
16
uiint| | 2019-10-6 17:16 | 只看该作者
HC32L136 demo  

使用特权

评论回复
17
uiint| | 2019-10-6 17:17 | 只看该作者
MAX7219的小程序   

使用特权

评论回复
18
chenci2013| | 2019-10-6 17:17 | 只看该作者
串行接口传送数据吧   

使用特权

评论回复
19
gygp| | 2019-10-6 17:17 | 只看该作者
这个读取的速度快吗?   

使用特权

评论回复
20
uiint| | 2019-10-6 17:17 | 只看该作者
IAR可以开发吗?   

使用特权

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

本版积分规则

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

553

主题

3530

帖子

19

粉丝