91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CW32模塊使用 MAX7219四合一點(diǎn)陣模塊

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2025-05-12 16:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

四合一點(diǎn)陣顯示模塊采用MAX7219作為控制,它是一種集成化的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個(gè)獨(dú)立的LED。其上包括一個(gè)片上的B型BCD編碼器、多路掃描回路,段字驅(qū)動(dòng)器,而且還有一個(gè)8*8的靜態(tài)RAM用來(lái)存儲(chǔ)每一個(gè)數(shù)據(jù)。只有一個(gè)外部寄存器用來(lái)設(shè)置各個(gè)LED的段電流。它可以連接所有通用的微處理器。每個(gè)數(shù)據(jù)可以尋址在更新時(shí)不需要改寫(xiě)所有的顯示。MAX7219同樣允許用戶(hù)對(duì)每一個(gè)數(shù)據(jù)選擇編碼或者不編碼。

整個(gè)設(shè)備包含一個(gè)150μA的低功耗關(guān)閉模式,模擬和數(shù)字亮度控制,一個(gè)掃描限制寄存器允許用戶(hù)顯示1-8位數(shù)據(jù),還有一個(gè)讓所有LED發(fā)光的檢測(cè)模式。

只需要3個(gè)IO口即可驅(qū)動(dòng)1個(gè)點(diǎn)陣!點(diǎn)陣顯示時(shí)無(wú)閃爍!支持級(jí)聯(lián)!

一、二、 模塊來(lái)源?

采購(gòu)鏈接
資料下載鏈接: https://pan.baidu.com/s/19WdOd8D2QlPi1Q_EWlb3fQ
資料提取碼:b822


產(chǎn)品實(shí)物展示

2、規(guī)格參數(shù)?

工作電壓:4-5.5V

工作電流:8-330MA

掃描速率:500-1300Hz

通信協(xié)議:串行通信

管腳數(shù)量:5 Pin(2.54mm間距排針

以上信息見(jiàn)廠家資料文件

三、移植過(guò)程?

我們的目標(biāo)是將例程移植至MSPM0G3507開(kāi)發(fā)板上。首先要獲取資料,查看數(shù)據(jù)手冊(cè)應(yīng)如何實(shí)現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。

3.1. 查看資料?

3.1.1. 時(shí)序講解?

wKgZO2ggZAiABQ1RAAErLW5wGls044.jpg

無(wú)論數(shù)據(jù)輸入或輸出CS端必須為低電平。然后數(shù)據(jù)在CS端的上升沿被載入數(shù)據(jù)寄存器或控制寄存器。CS端在第 16個(gè)時(shí)鐘的上升沿之后,下個(gè)時(shí)鐘上升沿之前變?yōu)楦唠娖?,否則數(shù)據(jù)將會(huì)丟失。

對(duì) MAX7219 來(lái)說(shuō),串行數(shù)據(jù)在 DIN 輸入 16 位數(shù)據(jù)包,在CLK的上升沿?cái)?shù)據(jù)均移入到內(nèi)部 16 位移位寄存器。即DIN不能在CLK的上升沿時(shí)進(jìn)行數(shù)據(jù)變換。

3.1.2. 數(shù)據(jù)位講解?

DIN傳輸?shù)?6位數(shù)據(jù)包說(shuō)明,見(jiàn)表格000。其中D8-D11 為寄存器地址位。D0-D7 為數(shù)據(jù)位。D12-D15 為無(wú)效位。

wKgZPGggZAiAbtIvAADtVxzl8Zw053.jpg

根據(jù)以上的時(shí)序說(shuō)明和傳輸格式,實(shí)現(xiàn)的數(shù)據(jù)傳輸代碼。

//向MAX7219寫(xiě)入字節(jié)
//dat寫(xiě)入的數(shù)據(jù)
void Write_Max7219_byte(uint8_t dat)
{
    uint8_t i;
    MAX7219_CS(0);//確認(rèn)CS拉低
    for(i=8;i>=1;i--)//傳輸8位
    {
        MAX7219_CLK(0);//拉低CLK
        //當(dāng)前數(shù)據(jù)位是否為1
        if( dat&0x80 )
        {
            MAX7219_DIN(1);
        }
        else
        {
            MAX7219_DIN(0);
        }
        dat=dat

//向MAX7219寫(xiě)入數(shù)據(jù)
//address寫(xiě)入地址  dat寫(xiě)入數(shù)據(jù)
void Write_Max7219(uint8_t address,uint8_t dat)
{
    //CS拉低
    MAX7219_CS(0);
    //傳輸高8位數(shù)據(jù)(寄存器地址)
    Write_Max7219_byte(address);
    //傳輸?shù)?位數(shù)據(jù)(數(shù)據(jù))
    Write_Max7219_byte(dat);
    //CS拉高
    MAX7219_CS(1);
}

3.1.3. 關(guān)鍵寄存器講解?

相關(guān)寄存器地址,見(jiàn)下表。這里先講解0X09譯碼方式寄存器。

wKgZO2ggZAmAHG8DAAEq2eAvk8Q438.jpg

我們發(fā)送的數(shù)據(jù)位是16位,而進(jìn)入譯碼方式寄存器只使用到了D15-D8數(shù)據(jù)位(0x09),還有D7到D0沒(méi)有設(shè)置。而根據(jù)數(shù)據(jù)手冊(cè)的說(shuō)明,關(guān)于譯碼方式寄存器的D7-D0的設(shè)置在數(shù)據(jù)手冊(cè)的表格4.

wKgZPGggZAqAQNaRAAD9kH7m84Q887.jpg

按照?qǐng)D中所示,如果要設(shè)置譯碼方式為全部數(shù)碼管都進(jìn)行譯碼,那么要發(fā)送:

//高8位=0x09(寄存器地址), 低8位=0x00(數(shù)據(jù))
Write_Max7219(0x09,0x00);

點(diǎn)陣是通過(guò)一個(gè)個(gè)像素點(diǎn)顯示,要在8x8點(diǎn)陣上顯示個(gè)字符,需要以下兩步:

占據(jù)屏幕上的一塊地方,大小由字體大小說(shuō)了算;

在占據(jù)的地方上依次控制每個(gè)像素點(diǎn)是否顯示。

比如一個(gè)8x8字體大小的字符,表示水平方向需要8個(gè)像素點(diǎn),垂直方向需要8個(gè)像素點(diǎn)。在這塊8x8的地盤(pán)上,每個(gè)像素點(diǎn)是否顯示由字模說(shuō)了算,字模中的每1位數(shù)據(jù)表示一個(gè)像素點(diǎn),如果該位為0則表示此處像素點(diǎn)不顯示、為1則表示顯示(陰碼規(guī)則)。 以下為 逐行式,順向(高位在前),陰碼格式輸出的字模數(shù)據(jù)。在程序中逐位讀取字模,如果該位為0則該點(diǎn)點(diǎn)亮,如果該位為1則滅。

wKgZO2ggZAqANMv6AAAN4J2OPJU589.jpg

字模例子

0x7C,第一行顯示 0111 1100
0x42,第二行顯示 0100 0010
0x02,第三行顯示 0000 0010
0x04,第四行顯示 0000 0100
0x08,第五行顯示 0000 1000
0x30,第六行顯示 0011 0000
0x42,第七行顯示 0100 0010
0x7E 第八行顯示 0111 1110
(一共8行)

如果想要第0行顯示一條直線,應(yīng)如何操作?

wKgZO2ggZAmAHG8DAAEq2eAvk8Q438.jpg

先在數(shù)據(jù)手冊(cè)中找到關(guān)于第0個(gè)行的寄存器地址。根據(jù)右圖顯示得知,第0個(gè)數(shù)碼管的地址是0X01知道地址后,根據(jù)數(shù)據(jù)手冊(cè)提示找到數(shù)據(jù)位設(shè)置表,因?yàn)槿繘](méi)有進(jìn)行譯碼,那么只需要發(fā)送:

//高8位=0x01(寄存器地址), 低8位=0xff(數(shù)據(jù))
Write_Max7219(0x01,0xff);//第0行顯示一條直線

wKgZPGggZAqAN104AACxdkB3hVU576.jpg

3.2. 引腳選擇?

該模塊有10個(gè)引腳,其中有5個(gè)是接入下一個(gè)級(jí)聯(lián)的點(diǎn)陣。如果不接入下一個(gè)級(jí)聯(lián)的點(diǎn)陣,則只要接5個(gè)引腳,具體引腳連接見(jiàn)下表。

數(shù)碼管模塊 開(kāi)發(fā)板
VCC 5V
GND GND
DIN PB10
CS PB13
CLK PB15

3.3. 移植至工程?

我們新建兩個(gè)文件分別是 bsp_DotMatrix.cbsp_DotMatrix.h ,然后將C文件添加至工程中,將h文件路徑添加到工程中。

wKgZO2ggZAuADzXsAAA3TH20HLs472.jpg

在文件bsp_DotMatrix.c中,編寫(xiě)如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-18     LCKFB-LP    first version
 */
#include "bsp_DotMatrix.h"
#include "stdio.h"

/******************************************************************
 * 函 數(shù) 名 稱(chēng):MAX7219_GPIO_Init
 * 函 數(shù) 說(shuō) 明:初始化MAX7219引腳
 * 函 數(shù) 形 參:無(wú)
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:無(wú)
******************************************************************/
void MAX7219_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結(jié)構(gòu)體

    RCC_MAX7219_ENABLE();        // 使能GPIO時(shí)鐘

    GPIO_InitStruct.Pins =  GPIO_MAX7219_CLK|        // GPIO引腳
                            GPIO_MAX7219_DIN|
                            GPIO_MAX7219_CS;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;      // 推挽輸出
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;         // 輸出速度高
    GPIO_Init(PORT_MAX7219, &GPIO_InitStruct);       // 初始化
}

/******************************************************************
 * 函 數(shù) 名 稱(chēng):Write_Max7219_byte
 * 函 數(shù) 說(shuō) 明:向MAX7219寫(xiě)入字節(jié)
 * 函 數(shù) 形 參:dat寫(xiě)入的數(shù)據(jù)
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:無(wú)
******************************************************************/
void Write_Max7219_byte(uint8_t dat)
{
    uint8_t i;
    MAX7219_CS(0);
    for(i=8;i>=1;i--)
    {
        MAX7219_CLK(0);
        if( dat&0x80 )
        {
            MAX7219_DIN(1);
        }
        else
        {
            MAX7219_DIN(0);
        }
        dat=dat

在文件bsp_DotMatrix.h中,編寫(xiě)如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-18     LCKFB-LP    first version
 */
#ifndef _BSP_DOTMATRIX_H_
#define _BSP_DOTMATRIX_H_

#include "board.h"


#define RCC_MAX7219_ENABLE()    __RCC_GPIOB_CLK_ENABLE()

#define PORT_MAX7219            CW_GPIOB

#define GPIO_MAX7219_CLK        GPIO_PIN_15
#define GPIO_MAX7219_DIN        GPIO_PIN_10
#define GPIO_MAX7219_CS         GPIO_PIN_13


#define MAX7219_CLK(X) GPIO_WritePin(PORT_MAX7219, GPIO_MAX7219_CLK, X?GPIO_Pin_SET:GPIO_Pin_RESET)
#define MAX7219_DIN(X) GPIO_WritePin(PORT_MAX7219, GPIO_MAX7219_DIN, X?GPIO_Pin_SET:GPIO_Pin_RESET)
#define MAX7219_CS(X)  GPIO_WritePin(PORT_MAX7219, GPIO_MAX7219_CS,  X?GPIO_Pin_SET:GPIO_Pin_RESET)



void Write_Max7219(uint8_t address,uint8_t dat);
void Write_Max7219_2(unsigned char address,unsigned char dat);
void Write_Max7219_AllOff(void);
void MAX7219_Init(void);
void Max7219_display(uint8_t* show1, uint8_t* show2, uint8_t* show3, uint8_t* show4);
#endi

四、移植驗(yàn)證?

在自己工程中的main主函數(shù)中,編寫(xiě)如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-18     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_DotMatrix.h"

unsigned char disp1[12][8]={//一共12行

{0x3C,0x42,0x42,0x42,0x42,0x42,0x66,0x38},/*"0",0*/

{0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x18},/*"1",1*/

{0x7C,0x42,0x02,0x04,0x08,0x30,0x42,0x7E},/*"2",2*/

{0x7C,0x46,0x04,0x18,0x06,0x02,0x42,0x3C},/*"3",3*/

{0x0C,0x14,0x14,0x24,0x44,0x3C,0x04,0x0C},/*"4",4*/

{0x3E,0x40,0x58,0x64,0x02,0x02,0x42,0x3C},/*"5",5*/

{0x3E,0x40,0x48,0x76,0x42,0x42,0x42,0x3C},/*"6",6*/

{0x7E,0x04,0x04,0x08,0x10,0x10,0x10,0x10},/*"7",7*/

{0x7C,0x42,0x62,0x3C,0x44,0x42,0x42,0x3C},/*"8",8*/

{0x7C,0x42,0x42,0x46,0x3A,0x02,0x44,0x38},/*"9",9*/

{0x3A,0x04,0x04,0x24,0x24,0x18,0x08,0x7E},/*"立",10*/

{0x52,0x4E,0x76,0xD6,0x56,0x76,0x4A,0x4E},/*"創(chuàng)",11*/
};


int main(void)
{

    board_init();

    uart1_init(115200);

    MAX7219_Init();
    Write_Max7219_AllOff();
    printf("MAX7219 demo startrn");


    while(1)
    {
        //第一個(gè)點(diǎn)陣顯示disp1數(shù)組的第10行內(nèi)容
        //第二個(gè)點(diǎn)陣顯示disp1數(shù)組的第11行內(nèi)容
        //第三個(gè)點(diǎn)陣顯示disp1數(shù)組的第7行內(nèi)容
        //第四個(gè)點(diǎn)陣顯示disp1數(shù)組的第6行內(nèi)容
        Max7219_display(disp1[10],disp1[11], disp1[7], disp1[6]);
        delay_ms(1000);
    }

}

上電效果:顯示“立創(chuàng)76”

wKgZPGggZAyAJmhTAAYznPsceYo888.jpg

移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1xXCdgOcDR8lY7poyH9vayA?pwd=LCKF 提取碼:LCKF

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5608

    瀏覽量

    129972
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

    1846
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MAX7219:串行接口8位LED顯示驅(qū)動(dòng)器的深度解析

    驅(qū)動(dòng)器,在眾多應(yīng)用場(chǎng)景中發(fā)揮著重要作用。本文將對(duì)這兩款驅(qū)動(dòng)器進(jìn)行詳細(xì)介紹,幫助電子工程師更好地理解和應(yīng)用它們。 文件下載: MAX7219.pdf 、器件概述 功能特性 MAX7219
    的頭像 發(fā)表于 02-03 15:45 ?334次閱讀

    請(qǐng)問(wèn)CW32中的CW是啥意思?

    CW32中的CW是啥意思?
    發(fā)表于 02-02 07:10

    請(qǐng)問(wèn)CW32芯片有哪些功能模塊?

    CW32芯片有哪些功能模塊?
    發(fā)表于 12-26 08:11

    請(qǐng)問(wèn)CW32系列微控制器是否有擴(kuò)展模塊或外設(shè)板卡可供選擇?

    CW32系列微控制器是否有擴(kuò)展模塊或外設(shè)板卡可供選擇?
    發(fā)表于 12-16 07:24

    CW32單片機(jī)如何讓生活更便捷

    這是種全新的生活方式,它通過(guò)接收并處理傳感器的數(shù)據(jù),以控制智能馬桶的所有功能。感謝CW32單片機(jī),我們可以在日常生活中無(wú)縫地融入這種新的科技。 決定我們?nèi)绾紊畹?,已?jīng)不再只是我們的選擇,更是我們
    發(fā)表于 12-11 06:11

    CW32單片機(jī)在智能馬桶的應(yīng)用

    1.溫度感應(yīng)與控制 智能馬桶內(nèi)設(shè)有溫度傳感器,通過(guò)CW32單片機(jī)的處理,可以實(shí)時(shí)感知到用戶(hù)所需的座圈溫度并根據(jù)用戶(hù)的設(shè)定進(jìn)行調(diào)節(jié)。當(dāng)溫度過(guò)高或過(guò)低時(shí),單片機(jī)將發(fā)出信號(hào),通過(guò)控制模塊對(duì)座圈的加熱或制冷
    發(fā)表于 12-04 08:01

    CW32 MCU溫度監(jiān)測(cè)應(yīng)用

    最近,我在項(xiàng)目中使用CW32 MCU,來(lái)實(shí)現(xiàn)個(gè)簡(jiǎn)單的溫度監(jiān)測(cè)系統(tǒng)。CW32的靈活性和性能讓我在這個(gè)應(yīng)用中得心應(yīng)手。以下是我的實(shí)現(xiàn)過(guò)程和代碼示例。 應(yīng)用簡(jiǎn)介本項(xiàng)目通過(guò)連接個(gè)溫度傳感器
    發(fā)表于 12-03 08:03

    基于芯源CW32 MCU智能家居照明控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    為了實(shí)現(xiàn)遠(yuǎn)程控制,我們使用了ESP8266 Wi-Fi模塊CW32 MCU進(jìn)行通信。通過(guò)該模塊,CW32能夠連接到局域網(wǎng)或互聯(lián)網(wǎng),用戶(hù)可以通過(guò)手機(jī)應(yīng)用發(fā)送控制指令,系統(tǒng)根據(jù)指令進(jìn)行相
    發(fā)表于 12-03 06:06

    cw32 systick怎么用?

    cw32 systick怎么用
    發(fā)表于 12-01 08:10

    使用芯源CW32CW32L012開(kāi)發(fā)評(píng)估板做了spi屏幕驅(qū)動(dòng)

    CW32生態(tài)社區(qū)以極高的性?xún)r(jià)比入手了這塊CW32L012開(kāi)發(fā)評(píng)估板,開(kāi)發(fā)板以底板、核心板、1.77寸TFT顯示屏構(gòu)成,所有的IO口都引出了排針,這點(diǎn)好評(píng),使用杜邦線可以非常方便的連接其他模塊。引腳
    的頭像 發(fā)表于 11-21 11:34 ?611次閱讀
    使用芯源<b class='flag-5'>CW32</b>的<b class='flag-5'>CW</b>32L012開(kāi)發(fā)評(píng)估板做了spi屏幕驅(qū)動(dòng)

    CW32 MCU用什么IDE開(kāi)發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開(kāi)發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
    發(fā)表于 11-12 07:52

    錦浪科技四合一混合儲(chǔ)能逆變器助力迎峰度夏

    面對(duì)高溫高負(fù)荷挑戰(zhàn),儲(chǔ)能技術(shù)已成為構(gòu)建穩(wěn)定、高效、低碳電力系統(tǒng)的關(guān)鍵支撐。錦浪四合一混合儲(chǔ)能逆變器以三大核心優(yōu)勢(shì)助力迎峰度夏。
    的頭像 發(fā)表于 07-17 15:42 ?1831次閱讀

    用Wi-Fi藍(lán)牙模組Ai-M62-CBS做個(gè)電子沙漏

    制作個(gè)大小合適的外形。另外搭配鋰電池和充放電模塊,實(shí)現(xiàn)便攜不插線的使用。 2. 硬件說(shuō)明 硬件上主要使用了Ai-M62-CBS開(kāi)發(fā)板,兩個(gè)Max7219點(diǎn)陣
    的頭像 發(fā)表于 07-08 10:32 ?819次閱讀
    用Wi-Fi藍(lán)牙模組Ai-M62-CBS做<b class='flag-5'>一</b>個(gè)電子沙漏

    CW32模塊使用 0.91寸彩屏

    、模塊來(lái)源 產(chǎn)品實(shí)物展示: ? 資料下載鏈接:https://pan.baidu.com/s/1fKmD5lr4bA0WB54ukonI-A 資料提取碼: 1111 二、規(guī)格參數(shù) 以下信息見(jiàn)廠家
    的頭像 發(fā)表于 07-01 15:20 ?739次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 0.91寸彩屏

    5050 RGBW 四合一全彩 LED 燈珠

    20mA*4 功能性5050 RGBW 四合一全彩 LED 燈珠是種集成了紅(Red)、綠(Green)、藍(lán)(Blue)和白(White)種顏色 LED 芯片的照明元件。這種燈珠因其多功能性和高靈活性,在現(xiàn)代照明領(lǐng)域 產(chǎn)品特
    發(fā)表于 06-27 10:02