参考文献
有关文件及软件,请浏览:
//www.xmece.com/亚博电竞菠菜products/greenpak
下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。
yabo国际娱乐Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。
- GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductoryabo国际娱乐
- AN-1179多路复用4位LED驱动器和4x4键盘扫描仪.GP,GreenPak设计文件,对话半导体yabo国际娱乐
- GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体yabo国际娱乐
- GreenPAK应用笔记,GreenPak应用笔记网页,对话框半导体yabo国际娱乐
- SLG46538对话框数据表,半导体yabo国际娱乐
作者:伊万Hnoievyi
介绍
这个应用说明演示了一个实用的解决方案,四位数7段LED显示控制和一个4x4键盘扫描仪。它还将演示使用一个GreenPAK™IC通过I2C总线发送和接收数据。
为了将四位数字LED显示器和一个4x4键盘连接到微控制器(MCU),通常需要20个I/O引脚。然而,使用GreenPAKSLG46538VIC只使用三个I/O引脚就可以节省MCU的硬件资源。设计中使用的主要组件有异步状态机(ASM)、双向I/O引脚、I2C串行通信模块和组合功能宏单元。
操作理论
本应用笔记的基本思想是使用SLG46538V IC的双向引脚,这样就可以同时使用相同的端口连接数字LED显示屏的阴极和16个按键,这些按键排列在四排四列。在多路复用模式下,LED显示控制和键盘扫描控制发生在不同的时间。基本方案如图1所示,图2为多路复用模式的时序图。
在LED显示控制模式下,显示屏上的四位数字一个接一个地亮起来,每个数字亮起来大约需要2毫秒。然后,在接下来的~2毫秒,按键在键盘扫描模式下被扫描。整个周期持续约9.7毫秒,之后重复该过程。Q1-Q4晶体管应为PNP型,集电极电流至少为200ma(如PMBT5401)。
应该在数字显示器上显示的数据和通过扫描键盘得到的数据通过I2C总线传输。当扫描键盘时,如果按下任何键,GreenPAK IC将产生一个中断。当芯片产生中断时,通过扫描获得的数据会定期更新。
一个标准的7段LED显示器可以显示从0到9的数字,一些字母的字母表,和一个小数点。显示器上的每个数字都有一个共同的阳极。为了点亮任何段,逻辑低电平信号必须传送到其阴极。
实现- LED显示电路
在本设计中,为了实现多路显示模式,我们使用了GreenPAK的ASM(异步状态机)模块。输出信号来自RC振荡器块,频率为:
RC OSC FREQ(25 kHz)/ 24≈1042Hz
的管延迟把频率分成两半。的模式发生器(PGEN)和DFF0- - - - - -DFF2块从这个信号同步。这些块提供一个信号来转换ASM转换为另一种状态,并在低逻辑级别切换为PIN6,PIN17,PIN15和PIN12(连接到晶体管Q1-Q4),在显示器上显示相应的数字。的ASM块有8个输出连接到内部矩阵。每八个输出的逻辑水平是基于ASM块的当前状态,并由连接矩阵输出RAM定义。这8个输出通过内部矩阵连接到以下引脚:PIN13(赛格。一个),PIN16(赛格。b),PIN18(赛格。c),PIN19(赛格。d),PIN3(赛格。e),平快(SEG。G)和PIN10(赛格。DP)。
微控制器通过2线总线I2C串行通信模块与芯片进行通信。MCU使用以下命令序列开始数据交换:
开始位→控制字节' 0x00 '(写)→地址字节→数据字节→…→停止位
为了在显示器上显示数据,它必须被写入连接矩阵输出RAM的以下寄存器中:
数字
|
地址字节十六进制
|
注册位
|
信号功能
|
数字1(常见阳极1) |
0 xd1 |
reg < 1679:1672 > |
RAM 8输出为ASM- Digit_1输出 |
数字2(普通阳极2) |
0 xd2 |
reg < 1687:1680 > |
RAM 8输出为ASM- Digit_2输出 |
数字3(共阳极3) |
0 xd3 |
丽笙王<1695:1688> |
RAM 8输出为ASM- Digit_3输出 |
数字4(共阳极4) |
0 xd4 |
reg < 1703:1696 > |
RAM 8输出为ASM- Digit_4输出 |
这些数据存储在寄存器中并显示,直到它们再次通过I2C被覆盖,或者IC被重新启动。在后一种情况下,这些寄存器将恢复默认值(' 0xFF ',存储在NVM中)。
图6显示了通过I2C总线传输的示例数据,并将其输出到LED显示屏。
在LED显示控制模式下,SLG46538V IC的所有输出(除了通过I2C总线提供数据交换)的输出配置为数字推挽输出。
实现-键盘扫描
完成LED显示控制模式后,IC进入键盘扫描模式。的DFF0触发器输出设置为逻辑高电平,ASM进入“Scan column 1”状态。在扫描模式下,转换ASM从一个州到另一个州是由OSC0,边缘DET0和边缘DET1macro-cells。这些边缘探测器在边缘下降处形成一个短脉冲OSC0信号输出,并且在这种模式下机器状态之间的过渡频率比在显示模式下大4倍。在键盘扫描模式下4比特LUT1将输出设置为逻辑低电平,交换PIN3,平快,PIN7,PIN10引脚进入数字输入模式。这些引脚配置了10个kΩ上拉电阻。
ASM在每个引脚(PIN13, PIN16, PIN18, PIN19)之间交替发送逻辑低电平脉冲。这些引脚连接到键盘的四列。其他四个引脚(PIN3,平快,PIN7,PIN10)连接到键盘的四行。当在扫描过程中按下任何键盘按钮时,输出引脚的逻辑低电平被转移到相应的输入引脚。这时,4比特LUT0输出得到一个逻辑高级别。
这种设计允许代码只确定一个按钮按下。每个按钮都有一个独特的4位代码(见图1),由3位lut (LUT4-LUT9)。然后将其存储在的输出中DFF3-DFF6直到下一个扫描模式周期。该代码可由单片机通过I2C总线获得,该总线应读取以下数据寄存器:
键盘代码
|
地址字节十六进制
|
注册位
|
寄存器位定义
|
D0 |
0 xf1 |
reg < 1932 > |
LUT3_0 / DFF3输出 |
D1 |
0 xf1 |
reg < 1933 > |
LUT3_1 / DFF4输出 |
D3 |
0 xf1 |
reg < 1934 > |
LUT3_2 / DFF5输出 |
D4 |
0 xf1 |
reg <1935> |
LUT3_3 / DFF6输出 |
为了做到这一点,MCU必须通过I2C总线启动数据传输:
开始位→控制字节' 0x00 '(写)→开始位→控制字节' 0x01 '(读)→地址字节' 0xF1 '→数据字节→停止位。
中断信号来自PIN4当键盘扫描周期处于活动状态并按下任意按钮时,将输入单片机。MCU接收中断并读取按钮代码(' 0xF1 '字节中四个最重要的位)。
按钮按下分析的算法必须在控制器的程序中实现,连同去弹滤波器。
显示扫描模式的总时间约为9.7 ms,但如果有必要,可以增加或减少。为了做到这一点,“时钟”predivider价值和“OUT0”第二个分压器的值OSC0宏单元必须通过I2C更改:
地址字节
|
注册位
|
信号功能
|
寄存器位定义
|
A7 |
REG <1340:1339> |
OSC时钟预分频器25kHz/2MHz |
00: Div1
01: Div2
10: Div4
11: Div8 |
A8 |
reg < 1349:1347 > |
内部OSC 25kHz/2MHz分频器控制矩阵输入<27> (OUT0) |
000: OSC / 1
001: OSC / 2
010: OSC / 3
011: OSC / 4
100: OSC / 8
101: OSC / 12
110:OSC / 24
111: OSC / 64 |
请记住,重新启动IC后,所有设置和数据寄存器返回到它们的默认值。
结论
使用SLG46538V GreenPAK IC和它的资源(I2C, ASM,双向引脚等),它很容易构建一个设备显示数据在4个7段LED显示屏上,4 × 4键盘扫描仪只使用3个MCU I/O引脚。这对于大批量生产简单产品尤其有效,因为MCU的空闲I/O引脚可以用于其他任务。亚博电竞菠菜
该解决方案可用于开发电子代码门锁、信令设备、简单可编程电源或时钟和计时器等设备。此外,该设备可以实现为Arduino或其他平台的“屏蔽”板。