系统功能及操作
CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。
系统上电时复位,时钟显示为0时0分0秒,按下“时间”设置键设定时间,数字钟开始工作,数码管显示当前时间;按下“开启电器编号”设置键,再按下要定时开启的电器编号,对应发光二极管亮,表示设置有效;按下“电器开启时间”设置按键;再依次输入4位十进制的小时和分钟,作为开启时间;按下“电器关闭时间”设置按键,再依次输入4位十进制的小时和分钟,作为关闭时间。至此定时开关设置完成,对于电饭锅等具有保持功能的电器,则不用设置定时关闭。使用 Verilog HDL编写CPLD程序,理论上可同时设置多个电器的定时自动开启,本设计可同时设置3个电器。
硬件设计
硬件设计采用Altera公司的CPLDEPM7128SLC84-6,简化了外围电路,稳定性和可靠性高,成本低。220 V、50 Hz工频电源经变压器、电桥整流后通过三端稳压器,提供工作电压,其电源电路如图1所示。
外接4×4键盘,使用较少的I/O端口线就可实现对较多按键的控制。当有键按下时,kb为低电平,CPLD的按键扫描部分采用动态扫描方式进行识别。设置 14个按键,分别为0~9十个数字键和设定时间、开启电器编号、电器开启时间、电器关闭时间4个功能键,其余两个留作功能扩展。4×4键盘电路如图2所示。
图2 4x4键盘电路
本系统设计使用6个数码管显示时间,3个发光二极管标志是否定时。电器开启信号经三极管放大后接继电器,通过继电器吸合导通电源线,开启电器。
数字键的判断和处理
先根据键值判断是哪一个数字键,再根据功能标志寄存器fun判断进行哪项设置。若正在进行的是时间设置,则将时间寄存器左移4位,将数字值存入低位;若为设定需要开启电器的编号状态,则电器编号数组num对应位置“1”,并通过电阻使相应发光二极管点亮,否则为“0”;若为设定电器开启时间状态,相应电器的开启时间寄存器timeon左移4位,将数字值存入低位;若为设定电器关闭时间状态,相应电器的关闭时间寄存器timeoff左移4位,将数字值存人低位。若为无效按键,则不进行任何操作。
显示
对应不同的状态,数码管显示不同值。时钟设置状态,显示当前时间;开启电器编号设置状态,显示欲开启的电器编号;电器开启时间设置状态,屁示电器应开启的时间;电器关闭时间设置状态,显示电器应关闭的时间。具体实现时,由系统时钟控制,分时点亮各个数码管,可节约能源。由于时间很快,而人眼存在视觉暂留,看上去6个数码管均同时显示。在CPLD中编程实现数码管的七段译码,可节省外同电路。
本设备设定开启、关闭时间为一天之内的任意时间,满足一般使用要求,亦可作为数字时钟使用。由晶体振荡器提供时钟,计时精准,使用常见器件设计,实现方便,成本低,耗电少,体积小,重量轻,工作可靠。可用于定时开启家用电器,如通过提前设置,下班回家时电饭锅已经把饭做熟。空调已经开启,饮水机已经烧好开水,热水器已经烧好洗澡水等。也可用于办公楼里上下班自动响铃装置,工厂里需要定时开关的设备,以及一些手动操作开关不安全的地方,具有实用价值。