AVR电动机智能启动器项目设计方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AVR电动机智能启动器
项目设计方案
1.1 背景介绍
随着科技的飞速发展和国民经济的稳步上升,电机设备得到了广泛的应用,数千台电动机同时运作的大企业已屡见不鲜,可以说我国已进入了高度工业化时期。

而且人们的日常生活如交通、运输也已离不开电动机。

然而由于我国自动化起步较晚,控制思想不如西方发达国家成熟和完善,在工农业生产中经常由于某些无法预知的因素,如三相电流严重不平衡、过电流、缺相、过载、堵转等使电动机发生故障,而电动机通常是企业内转动设备的主要动力,大量电动机的停运给企业造成很大经济损失及生产的混乱,特别是大型连续化生产要求非常高的危急企业,还可能引发其他设备及人身事故,损失更为严重。

因此携带保护功能的电动机智能启动器成了众多电机用户的首选。

它不仅具有普通保护功能而且还在经常被忽略的启动阶段对电动机进行监控保护。

近几年来对智能启动器的研究已进入白热化,从热继电保护启动到电子智能启动,市面上的启动保护装置已层出不穷。

但往往价格颇高,大型企业还是一如既往地选择国外进口产品,真正属于中低档用户的产品还是不多。

就是在这样一个背景下,我们采用了目前广为流行的8位AVR芯片ATmega16作控制核心,实现控制功能的进一步完善和成本的降低。

以前保护动作装置都以双金属片热继电器为主,它在保护电动机过载方面具有较好的效果,并且结构很简单,但在功能和动作特性上存在严重不足。

近年来电动机启动保护装置开始向智能化、微机化、数字化方向发展,但目前对电动机启动阶段的保护比较单一,一般都采用启动定时限保护。

该功能虽然可以基本满足启动时间较长电动机启动过程保护的需要,但对于启动时间较短或很大功率的电动机,采用该方法可能会引起电动机的损坏。

因此我们选择了运
用三个电磁继电器切换的方式来实现启动阶段与运行阶段的分别保护。

有别于46单片机的AVR芯片具有独立的模拟I/O口和内部AD转换器。

因此我们将它与功能强大的CH447L读写显示芯片配合,读写显示部分的处理单独由CH447L这个芯片来完成,毫无疑问减轻了AVR控制芯片的负担。

不仅实现了控制的简单模块化而且节约了控制芯片的内部资源。

1.2 毕业设计任务和要求
本课题主要是启动器的智能控制,其中包括电源设计、控制系统设计、继电器电路设计以及相关软件的编写。

要求熟悉AVR系统的开发流程,掌握电动机启动过程的保护要领,掌握工程开发的系统步骤与技巧。

智能启动器的设计分为模拟信号的采集,信号的分析处理和键盘显示三部分。

开始我们打算和其他同学一样采用软硬件分开的任务分工制,但在实施两周后,发现对于一个项目来说,把软硬件完全分开来设计是很不合理的,而且对个人知识的掌握也有局限性,所以我们打算软硬相结合,我在负责硬件的同时还涉及到基础软件模块驱动程序的设计。

另外,该课题我们采用了两种采样方式。

我负责直流采样的方案即在三相信号进入单片机之前,采用相关模拟电路先整流、滤波,将交流信号先转化为直流信号,再对直流信号进行处理,我认为这样做会比直接采用交流采样简单,不用考虑相位变化信息,相对而言对单片机的内部资源的占用也少得多,工作方面软硬件都涉及到了,具体内容包括电路原理图设计,电路板设计,软件功能(AD转换、数字滤波、采样、键盘、显示和部分保护方案)及调试等部分。

这样软硬结合的分工,能够使我们得到全方位的学习和锻炼。

1.3 论文结构和说明
本篇论文共分五章:第一章介绍了本课题的背景,引出了智能启动器的研究与开发;第二章介绍了本次设计的总体方案;第三章重点介绍了本设计中硬件部分的模块化设计以及PCB板的绘制过程;第四章主要介绍了系统软件部分的程序设计方案,软件功能模块等,第五章则是对本次设计的总结及其今后的展望。

第二章总体方案
本课题我主要采用模块化的设计方案,先对三相交流信号(电压、电流)进行整流和滤波,再由单片机的模拟I/O口输入单片机,在单片机内部进行A/D 转换、数字滤波、比较、保护判断等,最后将信息输出给继电器模块使其响应动作。

总体主要分硬件设计和软件设计两部分。

硬件部分采用的高速的AVR ATmega16单片机进行全局控制;人机界面则运用了CH447L读写显示芯片专门用于控制数码管的驱动和键盘的扫描,真正实现了模块化控制;模拟电路部分用来对输入的电信号进行预处理(整流、滤波),实现交流到直流的转换,当然这时的直流还会有许多纹波,不是真正意义上的直流,所以还要经过软件部分的数字滤波才能消除部分纹波,减少误差。

继电器的驱动电路模块用来实现继电器的开通和关断。

而减压启动和保护部分分别用三个继电器的通断来实现。

电源设计要求提供12V和+5V两个电压。

它只需要硬件电路,没有软件方面的要求,通过简单的参数计算过程就可以画出相应原理图。

软件部分主要采用分层和功能模块化设计,第一层是基础层包括:继电器、键盘、显示、A/D以及硬件滤波等;第二层主要是中断,包括外部中断和定时中断,前者用于键盘功能模块,后者用于计时、启动和保护;第三层是保护算法用于实现各种保护功能(过流、过压、过载、堵转、断相、三相不平衡等)。

虽然软硬件分开设计,但是在一个项目的运行中,硬件和软件是始终分不开的,它们是相辅相成的。

没有硬件,软件无法运行,没有软件,硬件则无法实现其功能。

在本设计中,我软硬件结合,相互交叉进行,使得自己在软硬件方面都得到了很好的学习和提高。

另外本课题我采用了直流采样的信号处理方式,这也是本设计中我和同组同学的最大差异之处,相对交流采样而言,直流采样相对简单些,涉及计算少,占用系统资源少。

但其也有相应的缺点,如无法对零序电流进行处理,无法计
算功率等。

每一个方案都有其优缺点,由于以前没有独立设计一个大项目的经验,我选择了相对简单的直流采样,但对我来说这也是第一次尝试,我希望自己能够尽力去做好。

第三章基于AVR电动机智能启动器的硬件设计
3.1 硬件设计方案
基于AVR的智能启动器的硬件设计分电源模块、单片机系统模块、继电器驱动控制电路模块和读写显示芯片控制电路模块。

三相模拟信号的预处理(包括整流,电平匹配)用自搭电路的形式完成。

因单片机和CH447L均需5V直流电源驱动,而继电器需12V直流电源驱动,故电源模块提供两路电源信号。

单片机系统电路模块包括AVR芯片与电源、外部晶振、下载接口ISP和仿真接口JTAG的连接;继电器驱动控制电路模块包括三个继电器动作的逻辑控制电路、信号放大驱动电路和抗干扰电路等;读写显示芯片(CH447L)控制电路模块包括LED显示、键盘以及CH447L芯片与各模块元件的连接。

3.2 芯片选型及相关介绍
本设计以单片机为应用核心,通过单片机控制各种外围芯片及电路。

重点是单片机ATmega16及键盘显示芯片CH447L、继电器驱动电路、键盘电路和数码显示电路的应用。

电信号经过模拟电路整流滤波处理后由AVR的模拟输入口输入单片机内部经过分析处理。

如果存在危险,由继电器驱动电路来驱动一号继电器进行保护动作,同时将控制信号传入CH447L来驱动LED的故障显示;如果没有危险,继电器不动作。

我们还可以通过键盘对显示和时间等进行设置,最终实现电动机启动的智能控制和实时保护。

3.2.1 AVR单片机ATmega16
AVR 单片机是ATMEL公司推出的精简指令集单片机系列,它内核具有丰富的指令集和32个通用工作寄存器。

所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。

这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10倍的数据吞吐率。

另外它的程序存储器是片内Flash,可以修改上千次,对新产品
的开发以及升级都十分方便。

我所选用的ATmega16是AVR众多子系列中的一种。

1. ATmega16的优点
相对于其他芯片,ATmega16中具有 16K字节的系统内可编程Flash(具有同时读写的能力),462字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。

另外片内ISP Flash 允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。

正是基于ATmega16以上众多优点我选择了该芯片,而且它价格合理,功能强大,极其符合我们设计中低档智能启动器的设计理念。

2.引脚的配置
图3-1.ATmega16的引脚
如图3-1所示,端口A(PA0-PA7)做为A/D转换器的模拟输入端,亦可作为
8位双向I/O口,具有可编程的内部上拉电阻。

其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。

作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。

在复位过程中,即使系统时钟还未起振,端口A 也处于高阻状态。

端口B(PA0-PA7)、端口C(PA0-PA7)和端口D(PA0-PA7)与A口类似,不同之处在于它们的第二功能。

RESET——复位输入引脚。

持续时间超过最小门限时间的低电平将引起系统复位。

持续时间小于门限间的脉冲不能保证可靠复位。

AVCC——端口A与A/D转换器的电源。

不使用ADC时,该引脚应直接与VCC 连接。

使用ADC时应通过一个低通滤波器与VCC连接。

XTAL1——反向振荡放大器与片内时钟操作电路的输入端。

XTAL2——反向振荡放大器的输出端。

AREF ——A/D的模拟基准输入引脚。

VCC ——数字电路的电源。

GND ——地。

3.ATmega16的内部资源
(1)AVR CPU 内核
AVR CPU 的主要任务是保证程序的正确执行,它能够访问存储器、执行运算、控制外设以及处理中断。

它包含了ALU- 算术逻辑单元、状态寄存器、通用寄存器(X、Y、Z)、堆栈指针、指针执行时序、复位与中断处理等。

(2)AVR ATmega16的存储器
AVR有两个主要的存储器空间:数据存储器空间和程序存储器空间。

此外,ATmega16 还有EEPROM存储器用来保存数据。

这三个存储器空间都为线性的平面结构。

另外16K字节的在线编程Flash,用于存放程序指令代码。

(3)系统时钟
AVR ATmega16 的系统时钟有CPU时钟、I/O时钟、异步定时器时钟和ADC
时钟。

时钟源分为两种:外部时钟和内部时钟。

该课题所选择的是外部时钟(外部晶体振荡器)。

XTAL1与XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如图3-2所示。

熔丝位CKOPT用来选择放大器模式,当CKOPT被编程时振荡器在输出引脚产生满幅度的振荡。

这种模式适合于噪声环境,而且这种模式的频率范围比较宽。

当保持CKOPT为未编程状态时,振荡器的输出信号幅度比较小。

大大降低了功耗,但是频率范围比较窄,不能驱动其他时钟缓冲器。

图3-2 晶体振荡器连接图
晶振参数的设定:在本设计中我选用了7.3728Hz的晶振,因为该频率不仅可以提供标准触发信号而且可以降低功耗节约单片机内部资源及产生标准串行波特率。

(4)系统复位
ATmega16 有5个复位源:上电复位、外部复位、看门狗复位、掉电检测复位和JTAG AVR复位。

本设计主要采用了上电复位(开关机时)和看门狗复位(单片机故障时)。

(5)I/O端口
每个端口都有三个I/O存储器地址:数据寄存器——PORTx、数据方向寄存器——DDRx和端口输入引脚——PINx。

每个端口引脚都具有三个寄存器
位:DDxn、PORTxn和PINxn分别位于相应的寄存器。

(6)计数器
本设计只需采用一个定时中断计数器即T1,并采用了快速PWM模式。

T/C
可以由内部同步时钟或外部异步时钟驱动,如果没有时钟源T/C 就不工作。

CPU 只能间接访问TCNT1H 寄存器,读取TCNT1L 时,临时寄存器的内容更新为TCNT1H 的数值;执行写操作时,TCNT1H 被临时寄存器的内容所更新。

计数器的计数序列取决于寄存器TCCR1A 和TCCR1B 中标志位WGM13:0的设置。

(7)AD 转换器
内置AD 转换器既是本单片机重要特点之一也是本设计的重点。

它是一个10位的逐次逼近型ADC ,与一个8通道的模拟多路复用器连接,能对来自端口A 的8路单端输入电压进行采样。

并且包含一个采样保持电路,以确保在转换过程中的电压恒定。

ADC 由AVCC 引脚单独提供电源。

AVCC 与VCC 之间的偏差不能超过±0.3V。

器件内含2.56V 的基准电压和AVCC 。

数模转换过程:在ADEN 为1的情况下,再把ADC 启动位ADSC 写逻辑1,转换将在ADC 时钟脉冲(ADC Clock )的下一个上升沿时启动。

真正的采样保持操作在转换启动后的1.5个ADC 时钟周期处开始。

在转换过程中,ADSC 位保持1;转换完成时,它将被硬件自动清0。

ADC 开放后第一次A/D 转换,将有一个使ADC 初始化的转换作为先导。

这次转换与通常转换差别就是要多12个ADC 时钟周期。

ADC 时钟脉冲可以接受的频率范围为50~200kHz 。

时钟频率过高会降低转换精度。

它有系统时钟信号和一个可设定分频比的分频器提供频率。

ADC 转换结束后(ADIF=1),转换结果被放入ADC 结果寄存器(ADCL,ADCH )。

单次转换的结果计算式如下:
式中,IN V 为被选中的引脚的输入电压,REF V 为参考电压。

3.2.2 CH447L 读写控制芯片
本设计采用了功能强大的CH447L 读写芯片,它用于数码管显示驱动和键盘
REF
IN V V ADC 1024⋅=
扫描控制,并且内置时钟振荡电路,可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位、段位寻址、光柱译码等功能;同时还可以进行64键的键盘扫描;CH447L通过可以级联的4线串行接口或者2线串行接口与单片机等交换数据;可以对单片机提供上电复位信号。

它具有如下优点:显示驱动:
内置电流驱动级,段电流不小于15mA,字电流不小于80mA。

动态显示扫描控制,直接驱动8位数码管、64位发光管LED或者64级光柱。

可选数码管的段与数据位相对应的译码方式或者BCD译码方式。

BCD译码支持一个自定义的BCD码,用于显示一个特殊字符。

数码管的数据左移、右移、左循环、右循环。

各数码管的数字独立闪烁控制,可选快慢两种闪烁速度。

任意段位寻址,独立控制各个LED或者各数码管的各个段的亮与灭。

64级光柱译码,通过64个LED组成的光柱显示光柱值。

扫描极限控制,支持1到8个数码管,只为有效数码管分配扫描时间。

可以选择字驱动输出极性,便于外部扩展驱动电压和电流。

键盘控制:
芯片内置64键键盘控制器,本设计选择4×2矩阵键盘扫描。

内置按键状态输入的下拉电阻,内置去抖动电路。

键盘中断,可以选择低电平有效输出或者低电平脉冲输出。

提供按键释放标志位,可供查询按键按下与释放。

支持按键唤醒,处于低功耗节电状态中的CH447L可以被部分按键唤醒。

外部接口:
同一芯片,可选高速的4线串行接口或者经济的2线串行接口。

本设计采用了4线串行接口,它支持多个芯片级联,时钟速度从0到2MHz,DIN和DCLK信号线可以与其它接口电路共用,节约引脚。

内置上电复位,可以为单片机提供高电平有效和低电平有效复位输出。

3.3 硬件功能模块的设计
3.3.1 三相模拟信号的预处理模块
本模块主要处理的是将输入的原始信号进行硬件滤波和整流。

其电路原理图如下:
◆电压部分:
◆电流部分
图 3-3. 硬件整流和滤波电路
电流要先进电流互感器,将电流量转化为相应的电压量,因为单片机内部是对电压量进行分析处理的。

经过互感器后再经一个整流桥图中D4、D5、D6等,将交流电转化为有纹波的直流,然后经过模拟滤波电路(由电阻、二级管、电容等组成)处理,电路图如图3-3所示。

电压部分和电流部分原理一样,不同之处在于电压部分是经过电压互感器(变压)后在进行整流、滤波处理。

3.3.2 AVR单片机系统模块
图3-4 ATmega16系统模块
(1)I/O 端口
如图3-4所示在本设计中PA0~PA3分别为IA、IB、IC、IABC的模拟输入口,其中IABC为零序电流。

由于设计时考虑到芯片的模拟I/O口有限,在节省资源的情况下电压信号的输入我通过了一个多路选择开关再与PA4相连,这样可以节省两个端口,以备其他未考虑信号的输入。

图3-5 多路选择开关
除了通用数字I/O功能之外,大多数端口引脚都具有第二功能。

下面对本设计用到的端口第二功能介绍如下:
端口B的第二功能
PB7 SCK (SPI总线的串行时钟)
PB6 MISO (SPI总线的主机输入/从机输出信号)
PB5 MOSI (SPI总线的主机输出/从机输入信号)
PB4 SS (SPI从机选择引脚)
PB3 AIN1 (模拟比较负输入);OC0 (T/C0输出比较匹配输出)
PB2 AIN0 (模拟比较正输入);INT2 (外部中断2输入)
PB1 T1 (T/C1外部计数器输入)
PB0 T0 (T/C0外部计数器输入);XCK (USART外部时钟输入/输出)
端口C的第二功能
PC7 TOSC2 (定时振荡器引脚2)
PC6 TOSC1 (定时振荡器引脚1)
PC5 TDI (JTAG测试数据输入)
PC4 TDO (JTAG测试数据输出)
PC3 TMS (JTAG测试模式选择)
PC2 TCK (JTAG测试时钟)
PC1 SDA (两线串行总线数据输入/输出)
PC0 SCL (两线串行总线时钟线)
端口D的第二功能
PD7 OC2 (T/C2输出比较匹配输出)
PD6 ICP1 (T/C1输入捕捉引脚)
PD5 OC1A (T/C1输出比较A匹配输出)
PD4 OC1B (T/C1输出比较B匹配输出)
PD3 INT1 (外部中断1的输入)
PD2 INT0 (外部中断0的输入)
PD1 TXD (USART输出引脚)
PD0 RXD (USART输入引脚
(2)片内基准电压
ATmega16具有片内能隙基准源,用于掉电检测,或者是作为模拟比较器或ADC的输入。

AREF给单片机提供基准电压,它有两种情况加上电阻R27时为5V,去掉R27时可以是5V,也可以是2.56V,AVCC为模拟电压(5V)。

图3-6 电压
注:图3-6中的电感、电容用来滤波
3.3.3 继电器驱动模块
本设计采用了三个继电器(K1、K2、K3),它们都采用的是常开触点。

其中K1用来保护动作,K2、K3用于启动,分别表示降压启动和启动完成后全压运行的两个状态。

图3-7 三继电器的驱动电路
如图3-7所示继电器的驱动电压为12V,采用三极管的目的是为了放大电流信号以驱动继电器。

信号在进入三极管之前还必须由光耦消除干扰信号,相关电路如图3-8所示:
图3-8 光耦抗干扰电路
当电机启动时,继电器K2闭合,电机进入降压启动过程;当电流平稳后,继电器K3闭合,K2断开,表示进入了全压运行阶段;当电机遇到危险时,继电器K1会根据保护延迟时间闭合,进行保护动作。

另外为了避免K2、K3两个继电器同时合的情况,我们加入了一个逻辑互锁
电路来避免这种情况的冲突,真正实现保护、启动和运行的分时控制。

由于市面上恰好有相关功能的芯片,因此为了节约时间,我直接采用了74HC00这个芯片。

其内部逻辑电路如图3-9所示:
图3-9 互锁逻辑电路
真值表如下:(1表示开、0表示合)
PB1 PB2 KK2 KK3
0 0 1 1
0 1 0 1
1 0 1 0
1 1 1 1
3.3.4 读写显示功能模块
读写显示功能模块是本设计硬件设计的重点,数码管驱动及键盘的控制采用芯片CH447L来提高运作效率,使设计模块化。

它可通过4线或2线串行接口与单片机等交换数据,并且可以对单片机提供上电复位信号。

CH447L与单片机以及数码管和键盘的硬件连接如图3-10所示。

图3-10 CH447L与单片机及数码管和键盘的连接
因为CH447L的4线串行接口是由硬件实现的,单片机可以频繁地通过串行接口进行高速操作,不降低CH447L的工作效率;而2线串行接口是由软件与硬件共同实现的,不适合不间断地频繁操作,所以我采用了4线接口。

由图3-10可知单片机通过串行接口控制CH447L芯片,CH447L的数码管显示驱动与键盘扫描控制之间相互独立,单片机可以通过操作命令分别启用、关闭、设定这两个功能。

(1)显示驱动
CH447L对数码管和发光管采用动态扫描驱动,顺序为DIG0至DIG7,内部具有电流驱动级,可以直接驱动共阴极数码管。

段驱动引脚SEG6~SEG0分别对应数码管的段G~段A,引脚SEG7对应数码管的小数点;字驱动引脚DIG7~DIG0分别连接8个数码管的阴极。

CH447L也可以连接8×8矩阵的发光二级管LED阵列或者64个独立发光管二极管或者64级光柱。

CH447L支持扫描极限控制,并且只为有效数码管分配扫描时间,降低扫描极限可以提高数码管的显示亮度。

CH447L内部的8个8位的数据寄存器用于保存8个字数据,分别对应于所驱动的8个数码管或者8组发光二极管。

它不仅支持数据寄存器中的字数据左移、右移、左循环、右循环和各数码管的独立闪烁控制,而且还支持任意段位寻址,可以用于独立控制发光管LED,本设计正运用了该特性。

默认情况下,CH447L工作于不译码方式,此时8个数据寄存器中字数据的
位7~位0分别对应8个数码管的小数点和段G~段A,当数据位为1时,对应的数码管的段就会点亮;当数据位为0时,则对应的数码管的段就会熄灭。

通过设定,CH447L还可以工作于BCD译码方式,该方式主要应用于数码管驱动,单片机只要给出二进制数BCD码,由CH447L将其译码后直接驱动数码管显示对应的字符。

如图3-11所示CH447L驱动4个数码管和一组LED光二极管(共八个)。

所有数码管的相同段引脚(段A~段G以及小数点)并联后通过串接的限流电阻R连接CH447L的段驱动引脚SEG0~SEG7,串接限流电阻的阻值越大段驱动电流越小,数码管的显示亮度越低,R的阻值一般在100Ω至1KΩ之间,为降低芯片本身的功耗应选择较大的阻值。

各数码管的阴极分别由CH447L的DIG0~DIG7引脚进行驱动并串接上二极管防止数码管反向漏电。

图3-11 CH447L与数码管的连接
(2) 键盘扫描
CH447L具有64键的键盘扫描功能,我们可以在8×8矩阵中任意去掉不用的按键。

我所设计的键盘采用了8*1的键盘方式,为了防止键被按下后在SEG信号线与DIG信号线之间形成短路而影响显示,要在CH447L的DIG0~DIG7引脚与键盘矩阵之间串接限流电阻,其阻值可以从1KΩ至10KΩ。

在键盘扫描期间,DIG7~DIG0引脚按照DIG0至DIG7的顺序依次输出高电平,其余7个引脚输出低电平;SEG7~SEG0引脚的输出被禁止,当没有键被按
下时,SEG7~SEG0都被下拉为低电平;当有键被按下时,例如连接DIG3与SEG4的键被按下,则当DIG3输出高电平时SEG4检测到高电平;为了防止因为按键抖动或者外界干扰而产生误码,CH447L实行两次扫描,只有当两次键盘扫描的结果相同时,按键才会被确认有效。

如果CH447L检测到有效的按键,则记录下该按键代码,并通过4线串行接口中的DOUT引脚产生低电平有效的键盘中断,此时单片机可以通过串行接口读取按键代码;在没有检测到新的有效按键之前,CH447L不再产生任何键盘中断。

CH447L不支持组合键,也就是说,同一时刻,不能有两个或者更多的键被按下;如果多个键同时按下,那么按键代码较小的按键优先。

CH447L所提供的按键代码为7位,位2~位0是列扫描码,位5~位3是行扫描码,位6是状态码(键按下为1,键释放为0)。

单片机可以在任何时候读取按键代码,但一般在CH447L检测到有效按键而产生键盘中断时读取按键代码,此时按键代码的位6总是1,另外,如果需要了解按键何时释放,单片机可以通过查询方式定期读取按键代码,直到按键代码的位6为0。

图3-12 键盘芯片连接图
(3)四线串行接口
CH447L具有硬件实现的高速4线串行接口,包括4个信号线:串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。

其中,DIN、DCLK、LOAD是带上拉的输入信号线,默认是高电平。

DOUT在未启用键盘扫描功能时作为串行数据输出线,在启用键盘扫描功能后作为键盘中断和数据输出线,默认是高电平。

相关文档
最新文档