0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用MAX6951/MAX6950 LED显示驱动器与MAXQ2000微控制器通信

星星科技指导员 来源:ADI 作者:ADI 2023-02-20 10:16 次阅读

MAX6950和MAX6951为2000位和16位共阴极LED显示驱动器,通过高速SPI接口控制。这些器件采用独特的多路复用方案,以最大限度地减少 LED 驱动器和 LED 面板之间的连接。MAXQ2000为高性能6951位RISC微控制器,集成SPI模块,提供LED驱动器和微控制器之间的简单接口。本应用笔记给出了MAXQ®汇编语言的示例代码,演示了如何使用MAXQ6950 SPI模块试验MAX《》/MAX《》功能。

硬件和软件要求

为了进行本应用笔记中描述的接口实验,需要MAX6951评估板(EV kit)、MAXQ2000评估板(包括MAX-IDE软件)、+5V电源(最小容量为200mA)和一台带有可用串行端口的PC。

硬件设置

MAX6951评估板跳线设置

为了断开评估板上电平转换器芯片的/CS、DIN和SCLK信号,切断连接JU1、JU2和JU2引脚3和4的走线。

MAXQ2000评估板跳线和DIP开关设置

将开关SW3 1-8设置为关闭位置。

JU1:连接引脚 1 和 2 JU2:连接引脚 1 和 2 JU3:连接引脚 1 和 2 JU4:打开

JU10:打开

JU11:开启 (MAXQ2000评估板由JTAG接口板供电,由+5V电源供电)

连接两个评估板,如图1所示。

pYYBAGPy1_eANdwAAAAiXM20Kak325.gif

图1.MAX6951评估板与MAXQ2000评估板的连接原理图

固件说明

本示例项目的完整固件文件可从Maxim网站下载,并可使用Maxim的集成开发和调试环境MAX-IDE进行编译,用于MAXQ系列微控制器。

下载:完整固件(ZIP,18.8k)

主.asm 文件

此文件是此示例项目的主要演示循环。它调用不同的例程来演示向MAX6951寄存器正确写入数据。固件依次演示以下MAX6951功能:

MAX6951 SPI接口初始化

在十六进制解码模式下,将0、1、2、...、A、B、C、D、E、F和8位小数(即点亮所有LED段)写入并显示到MAX0上所有数字的P1平面和P6951平面。

在免解码模式下,使用自定义内置字体书写和显示上述字母和其他可识别的字母,如H,L,P,Q,Y等。

LED 调光回路。该环路显示如何写入MAX6951强度寄存器以测试数字亮度控制。

扫描限位循环。此循环显示具有相同强度设置的 1 到 8 位数字。
注意:监视该过程以确保在扫描限制增加时亮度降低。

闪烁循环,此循环将不同的数字写入平面 P0 和平面 P1 的每个数字。它还使用快速闪烁模式来演示可在多个LED驱动器之间同步的段闪烁控制。

滚动循环,此循环从左到右和从右到左滚动文本消息 HELLO。

弹跳环,此环路在两个 LED 边缘之间弹跳 HELLO。

计数循环。最后一个循环显示了在十六进制解码模式和无解码模式下,如何设计一个显示,以计算经过的毫秒数。

max2000ev_6951.asm 文件

该文件包含使用MAXQ6951微控制器与MAX2000评估板通信的所有实用程序功能。主要功能有:

max6951_init:该功能将MAXQ2000设置为正确的SPI模式,以便与MAX6951通信。它使能SPI并初始化MAX6951,使其在显示面板上显示0个1。清单 <> 详细显示了此函数。

清单 1.MAX6951初始化代码示例

;*******************************************************************************
;* Function:  max6951_init
;*
;* Sets the correct SPI modes for talking to the MAX6951, enables SPI, and
;*
;* initializes the MAX6951 to display 8 0s.
;*
;* Input:     None.
;*
;* Output:    None.
;*
;* Destroys:  ACC, A[0] -- A[10], PSF
;*
;*******************************************************************************
MAX6951_INIT:
    ; SET SPI BAUD RATE
    MOVE    A[0], #2400H			; SYSTEM CLOCK IS 16,000,000 HZ
    MOVE    A[1], #00F4H
    MOVE    A[2], #4240H			; DESIRED BAUD RATE IS 1,000,000 HZ
    MOVE    A[3], #000FH
    CALL    SPI_SETBAUDRATE

    ; SET THE APPROPRIATE MODES FOR THE 6951
    MOVE    C, #SPI_IDLE_LOW		; IDLE = LOW
    CALL    SPI_SETCLOCKPOLARITY
    MOVE    C, #SPI_ACTIVE_EDGE		; ACTIVE = RISING EDGE
    CALL    SPI_SETCLOCKPHASE
    MOVE    C, #SPI_LENGTH_16		; ALWAYS TRANSFER 16 BITS
    CALL    SPI_SETCHARACTERLENGTH
    MOVE    C, #SPI_MASTER_MODE	; MAXQ2000 IS THE MASTER, MAX6951 IS THE SLAVE
    CALL    SPI_SETMODE

    ; ENABLE SPI
    MOVE    C, #1
    CALL    SPI_ENABLE

    ; SHUTDOWN MAX6951 DISPLAY FIRST
    CALL    MAX6951_SHUTDOWN

    ; SET MAX6951 IN HEXADECIMAL DECODE MODE
    MOVE    ACC, #MAX6951REG_DECODE
    SLA4
    SLA4
    OR      #0FFH				; HEXADECIMAL DECODE
    CALL    MAX6951_TRANSMIT

    ; SET DISPLAY INTENSITY = 16/16
    MOVE    ACC, #MAX6951REG_INTENSITY
    SLA4
    SLA4
    OR      #0FH				; INTENSITY = 16/16
    CALL    MAX6951_TRANSMIT

    ; SCAN LIMIT = 7
    MOVE    ACC, #MAX6951REG_SCANLIMIT
    SLA4
    SLA4
    OR      #07H				; SCAN LIMIT = 7
    CALL    MAX6951_TRANSMIT
    RET

max6951_transmit:该函数向Max16发送寄存器地址和数据字节(6951位)。

max6951_set_all_n:这些函数将数字寄存器的平面 P0 和平面 P1 都设置为数字“n”。所有函数都有十六进制解码版本,没有解码版本。

max6951_e_d_s_d:此功能使能MAX6951显示,然后延时半秒,关断显示,然后延时100ms。

max6951_screenshot:这些功能将 HELLO 置于 8 位 LED 面板上的八个不同位置。

max6951_scroll_R_to_L:通过以不同的顺序显示屏幕截图,此函数在无解码模式下从右向左滚动 HELLO。

max6951_scroll_L_to_R:通过以不同的顺序显示屏幕截图,此功能在无解码模式下从左向右滚动HELLO。

max6951_bouncing:此功能在两个 LED 边缘之间反弹 HELLO。

font_lookup:给定十六进制格式的数字值,此例程在标准 7 段 LED 上查找在非解码模式下显示相同字体的值。

max6951_counting:此功能计算并显示经过的毫秒数;分辨率为 10 毫秒。清单 2 详细显示了代码。

清单 2.MAX6951计数代码示例

;*******************************************************************************
;* Function:  max6951_counting
;*
;* This routine counts how many 10-milliseconds have elapsed and displays
;*
;* the value from 0000 to 9999 on LED digits 3-0(no way to blank leading digits).
;*
;  The routine displays the same value on LED digits 7-4(by using no decode
;*
;* mode, individual leading digits can be blanked).
;*
;* Input:     None
;*
;* Output:    None
;*
;* Destroys:  ACC, A[1] - A[4], A[9]
;*
;*******************************************************************************
MAX6951_COUNTING:
	CALL 	MAX6951_SHUTDOWN
	CALL	MAX6951_SET_ALL_0	; SET ALL BITS OF DATA REGISTERS TO 0
	MOVE   ACC, #010FH	; HEXDECIMAL DECODE DIGITS 3-0, NO DEOCDE DIGITS 7-4
	CALL	MAX6951_TRANSMIT
	; INITIALIZE THE COUNT TO 0
	MOVE	A[1], #0			; A[1] => DIGIT 0
	MOVE	A[2], #0			; A[2] => DIGIT 1
	MOVE	A[3], #0			; A[3] => DIGIT 2
	MOVE	A[4], #0			; A[4] => DIGIT 3

COUNT_LOOP:
INCREASE_DIGIT3:
	MOVE	ACC, A[4]			; PROCESS DIGIT 3
	SUB	#9
	JUMP	Z, INCREASE_DIGIT2		; DIGIT 3 = 9, THERE IS CARRY OVER
	MOVE	ACC, A[4]			; DIGIT 3 < 9, CONTINUE
	ADD	#1
	MOVE	A[4], ACC
	CALL	FONT_LOOKUP			; LOOK UP THE VALUE FOR THIS FONT
						; STORE IT IN A[9], KEEP ACC UNCHANGED
	OR	#6300H
	CALL	MAX6951_TRANSMIT 		; NO CARRY OVER, WRITE DIGIT 3 NEW VALUE
	MOVE	ACC, A[9]			; WRITE THE NO DECODE VALUE TO DIGIT 7
	OR     #6700H
	CALL	MAX6951_TRANSMIT
	JUMP	DISPLAY_NUMBER

INCREASE_DIGIT2:
	OR	#6300H
	CALL	MAX6951_TRANSMIT		; WRITE 0 TO DIGIT 3 REGISTER FIRST
	MOVE	A[4], #0			; SET DIGIT 3 BACK TO 0
	MOVE	ACC, #677EH			; NO DECODE VALUE FOR FONT '0' IS "7EH"
	CALL 	MAX6951_TRANSMIT 		; WRITE 7EH TO DIGIT 7 REGISTER

	MOVE	ACC, A[3]			; PROCESS DIGIT 2
	SUB	#9
	JUMP	Z, INCREASE_DIGIT1		; DIGIT 2 = 9, THERE IS CARRY OVER
	MOVE	ACC, A[3]			; DIGIT 2 < 9, CONTINUE
	ADD	#1
	MOVE	A[3], ACC
	CALL	FONT_LOOKUP			; LOOK UP THE VALUE FOR THIS FONT
						; STORE IT IN A[9], KEEP ACC UNCHANGED
	OR	#6200H
	CALL	MAX6951_TRANSMIT		; NO CARRY OVER, WRITE DIGIT 2 NEW VALUE
	MOVE	ACC, A[9]			; WRITE THE NO DECODE VALUE TO DIGIT 6
	OR     #6600H
	CALL	MAX6951_TRANSMIT
	JUMP	DISPLAY_NUMBER

INCREASE_DIGIT1:
	OR	#6200H
	CALL	MAX6951_TRANSMIT		; WRITE 0 TO DIGIT 2 REGISTER FIRST
	MOVE	A[3], #0			; SET DIGIT 2 BACK TO 0
	MOVE	ACC, #667EH			; NO DECODE VALUE FOR FONT '0' IS "7EH"
	CALL 	MAX6951_TRANSMIT 		; WRITE 7EH TO DIGIT 6 REGISTER

	MOVE	ACC, A[2]			; PROCESS DIGIT 1
	SUB	#9
	JUMP	Z, INCREASE_DIGIT0		; DIGIT 1 = 9, THERE IS CARRY OVER
	MOVE	ACC, A[2]			; DIGIT 1 < 9, CONTINUE
	ADD	#1
	MOVE	A[2], ACC
	CALL	FONT_LOOKUP			; LOOK UP THE VALUE FOR THIS FONT
						; STORE IT IN A[9], KEEP ACC UNCHANGED
	OR	#6100H
	CALL	MAX6951_TRANSMIT		; NO CARRY OVER, WRITE DIGIT 1 NEW VALUE
	MOVE	ACC, A[9]			; WRITE THE NO DECODE VALUE TO DIGIT 5
	OR     #6500H
	CALL	MAX6951_TRANSMIT
	JUMP	DISPLAY_NUMBER

INCREASE_DIGIT0:
	OR	#6100H
	CALL	MAX6951_TRANSMIT		; WRITE 0 TO DIGIT 1 REGISTER FIRST
	MOVE	A[2], #0			; SET DIGIT 1 BACK TO 0
	MOVE	ACC, #657EH			; NO DECODE VALUE FOR FONT '0' IS "7EH"
	CALL 	MAX6951_TRANSMIT 		; WIRTE 7EH TO DIGIT 5 REGISTER

	MOVE	ACC, A[1]			; PROCESS DIGIT 0
	SUB	#9
	JUMP	Z, COUNT_COMPLETE		; DIGIT 0 = 9, COUNTING IS OVER
	MOVE	ACC, A[1]			; DIGIT 0 < 9, CONTINUE
	ADD	#1
	MOVE	A[1], ACC
	CALL	FONT_LOOKUP			; LOOK UP THE VALUE FOR THIS FONT
						; STORE IT IN A[9], KEEP ACC UNCHANGED
	OR	#6000H
	CALL	MAX6951_TRANSMIT		; NO CARRY OVER, WRITE DIGIT 0 NEW VALUE
	MOVE	ACC, A[9]			; WRITE THE NO DECODE VALUE TO DIGIT 4
	OR     #6400H
	CALL	MAX6951_TRANSMIT

DISPLAY_NUMBER:		; DISPLAY DIGIT 3-0 IN HEXADECIMAL DECODE MODE
				; DIEPLAY DIGIT 7-4 IN NO DECODE MODE
	CALL	MAX6951_ENABLE
	CALL	MAX6951_10MS_DELAY
	JUMP 	COUNT_LOOP

COUNT_COMPLETE:
	RET

maxq2000_spi.asm文件:该文件是配置和使用MAXQ2000的SPI模块的实用程序。该文件集成在MAX-IDE中;用户无需修改即可使用它。

divide32.asm 文件:这是 MAX-IDE 软件中提供的 32/32 位除法例程。

maxq2000.inc、maxq2000_spi.inc和max2000ev_6951.inc文件:包括MAXQ2000引脚定义和MAX6951寄存器定义的文件。

结论

MAX6951/MAX6950 SPI LED驱动器是易于使用的共阴极显示驱动器,通过SPI串行接口与微控制器接口。MAXQ系列微控制器提供了一个方便的集成SPI模块,通过SPI接口与LED驱动器通信。此处给出的示例代码可帮助用户了解如何使用MAX6951 LED特性。示例代码也可用于类似的基于MAXQ2000的应用开发。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7549

    浏览量

    151378
  • led
    led
    +关注

    关注

    242

    文章

    23264

    浏览量

    660696
  • 驱动器
    +关注

    关注

    52

    文章

    8234

    浏览量

    146311
收藏 人收藏

    评论

    相关推荐

    MAXQ2000 SPI模块与MAX6951/MAX6950怎么配合使用?

    本应用笔记提供了MAXQ®汇编程序范例,说明MAXQ2000 SPI模块与MAX6951/MAX6950的配合使用。
    发表于 05-31 06:08

    MAXQ2000微控制器MAX4397是如何连接的?

    MAX4397是什么?MAXQ2000微控制器MAX4397是如何连接的?
    发表于 06-04 06:15

    MAX6950-MAX6951中文资料pdf

    MAX6950/MAX6951是紧凑的共阴极显示驱动器,通过SPITM、QSPITM、MICROWIRETM兼容的串行接口,连接微处理和独
    发表于 05-06 17:14 150次下载

    MAX6951型串行接口LED驱动器及其应用

       MAX6950/6951是Maxim公司推出的串行接口LED显示驱动器,内部集成16进制译码
    发表于 12-03 16:32 47次下载

    MAX6951/MAX6950 LED显示驱动器MAXQ2

    摘要:本应用笔记说明MAX6951/MAX6950 LED驱动器MAXQ2000的SPI外设通信
    发表于 04-23 16:42 595次阅读
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950</b> <b class='flag-5'>LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>与<b class='flag-5'>MAXQ</b>2

    MAX6951/MAX6950 LED显示驱动器MAXQ2

    摘要:本应用笔记说明MAX6951/MAX6950 LED驱动器MAXQ2000的SPI外设通信
    发表于 04-26 16:28 671次阅读
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950</b> <b class='flag-5'>LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>与<b class='flag-5'>MAXQ</b>2

    MAX6951/MAX6950LED显示驱动器MAXQ20

    摘要:本应用笔记说明MAX6951/MAX6950 LED驱动器MAXQ2000的SPI外设通信
    发表于 04-26 17:17 677次阅读
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>与<b class='flag-5'>MAXQ</b>20

    使用MAX6950MAX6951LED显示驱动器的多重双数

    Abstract: This application note discusses how to connect the MAX6950 (5 digit) and MAX6951 (8 digit
    发表于 04-27 09:34 1107次阅读
    使用<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>的多重双数

    从PC中试验MAX6950MAX6951 LED显示驱动器

    , evaluation, font design with MAX6950 and MAX6951 7-segment LED display drivers. The MAX6950
    发表于 04-27 09:44 959次阅读
    从PC中试验<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951</b> <b class='flag-5'>LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>

    采用MAXQ2000微控制器MAX6970 LED驱动器

    采用MAXQ2000微控制器MAX6970 LED驱动器显示不同的
    发表于 07-25 21:07 864次阅读

    在PC上试验MAX6950MAX6951 SPI LED显示驱动器

    MAX6950MAX6951为5位和8位共阴极LED显示驱动器,通过高速SPI串行接口控制。本
    的头像 发表于 01-12 13:59 1046次阅读
    在PC上试验<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951</b> SPI <b class='flag-5'>LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>

    MAX7219和MAX7221迁移到MAX6950MAX6951 LED驱动器

    本应用笔记讨论了较旧的MAX7219和MAX7221 LED显示驱动器与较新的MAX6950
    的头像 发表于 06-08 16:14 1364次阅读

    使用MAX6950MAX6951 LED显示驱动器,带多路复用双位数显示器

    MAX6950MAX6951为5位和8位共阴极LED显示驱动器,采用不寻常的多路复用方案。这种多路复用方案最大限度地减少了
    的头像 发表于 06-08 16:20 1191次阅读
    使用<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951</b> <b class='flag-5'>LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>,带多路复用双位数<b class='flag-5'>显示器</b>

    采用MAXQ2000微控制器MAX6970 LED驱动器显示不同的LED排序

    MAX6970为8端口、36V恒流LED驱动器,采用4线串口。利用本应用笔记提供的信息,MAX6970配合MAXQ2000 16位RISC
    的头像 发表于 06-12 16:10 549次阅读
    采用<b class='flag-5'>MAXQ2000</b><b class='flag-5'>微控制器</b>和<b class='flag-5'>MAX</b>6970 <b class='flag-5'>LED</b><b class='flag-5'>驱动器</b><b class='flag-5'>显示</b>不同的<b class='flag-5'>LED</b>排序

    MAX6951/MAX6950 LED显示驱动器MAXQ2000微控制器通信

    MAX6951/MAX6950 SPI LED驱动器简单易用的共阴极显示器驱动器,通过SPI串行
    的头像 发表于 06-16 15:34 929次阅读
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950</b> <b class='flag-5'>LED</b><b class='flag-5'>显示</b><b class='flag-5'>驱动器</b>与<b class='flag-5'>MAXQ2000</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>通信</b>