[FPGA] Verilog 燃气灶控制器的设计与实现

您所在的位置:网站首页 控制模块点火关闭计时器性能 [FPGA] Verilog 燃气灶控制器的设计与实现

[FPGA] Verilog 燃气灶控制器的设计与实现

2024-05-29 19:54| 来源: 网络整理| 查看: 265

燃气灶控制器的设计与实现 一、引述

本次实验所用可编程器件型号为MAXII EPM1270T144C5(其引脚表见本人另一博文:可编程实验板EPM1270T144C5使用说明),通过可编程实验板实现一个基本的模拟燃气灶。

二、设计课题的基本要求

1、 燃气灶的控制按键有三个:点火/关闭按键 BTN7、火力调节按键 BTN6(火力增大) 和 BTN5(火力减小)

2、 用 8×8 双色点阵模拟显示燃气灶的灶眼,用如图 1 所示的四个点阵显示状态分别表示火力的四个档位,从左到右依次为微火、小火、中火和大火,点阵没有任何显示表示熄火状态

 

3、 燃气灶上电时灶眼应处于熄火状态,在熄火状态下按一下按键 BTN7 点燃燃气灶进入燃烧状态,在燃烧状态下按一下按键 BTN7 则熄灭燃气灶进入熄灭状态

4、 燃气灶在熄灭状态下,按一下按键 BTN7 进入燃烧状态时的初始火力为小火

5、 在燃烧状态下用按键 BTN6(火力增大)和 BTN5(火力减小)改变火力的大小, 每按一次按键火力增大或减小一档(对应的点阵显示改变一档);在大火状态下按键BTN6 不起效,在微火状态下按键 BTN5 不起效,而且在大火状态下按 BTN6 或微火状态下按 BTN5 要有报警声,提示火力已到极限

三、系统设计

1、设计思路:1)点阵的图案显示通过快速扫描达到人眼能够定格看到稳定的图案

             2)点阵显示图案的转换通过状态机实现

             3)蜂鸣器声音的产生通过按下按键产生一个方波脉冲实现,声音的频率则需根据自定义的音调换算成频率

             4)为贴近生活,引入计数器功能,实现倒计时结束,燃气灶自动关闭的效果

             5)为方便使用者明了的知道使用时燃气灶火焰的大小状态,引入 LCD 液晶屏功能,在不同的火焰状态下对应显示不同的英文显示

2、总体框图

3、分块设计:1)状态机:状态转移情况的罗列

          2)点阵显示

         3)产生方波脉冲控制蜂鸣器

         4)数码管显示

         5)倒计时器

         6)LCD1602液晶屏显示

四、功能说明

1、燃气灶上电时灶眼应处于熄火状态,在熄火状态下按一下按键 BTN7 点燃燃气灶进入燃烧状态,在燃烧状态下按一下按键 BTN7 则熄灭燃气灶进入熄灭状态;燃气灶在熄灭状态下,按一下按键 BTN7 进入燃烧状态时的初始火力为小火;在燃烧状态下用按键 BTN6(火力增大)和 BTN5(火力减小)改变火力的大小, 每按一次按键火力增大或减小一档(对应的点阵显示改变一档),顺序为从微火、小火、中火、大火依次增大;在大火状态下按键BTN6 不起效,在微火状态下按键 BTN5 不起效,而且在大火状态下按 BTN6 或微火状态下按 BTN5 有报警声,提示火力已到极限。

2、倒计时器设定的计时时间为20s到0s,按下BTN3倒计时器开始倒计时,倒计时过程中,再按一下BTN3实现计时暂停,再按一下BTN3则会又开始倒计时;任意时候按下复位键(BTN2)会立马复位到初始设定的20s;当倒计时到0时,无论燃气灶处于何种燃烧状态,都会立马自动熄灭。

3、燃气灶上电后向上拨动拨码开关sw7,在LCD1602液晶屏上会出现“Welcome to use The Gas stove”的英文提示;在不同的燃烧状态下会对应显示不同的提示语,微火、小火、中火、大火分别对应“Fire Level Micro Fire”、“Fire Level Little Fire”、“Fire Level Medium Fire ”、“Fire Level Big Fire”。

 

 五、模块代码

1、LCD1602液晶屏

这里要郑重感谢一下方清欢大佬的技术与理论支持,关于这部分的解释详见方清欢大佬的博文:[FPGA]浅谈LCD1602字符型液晶显示器(Verilog)

下面就来看一下在燃气灶不同的火焰状态下对应液晶屏显示不同文字的效果图吧!

   1)熄灭状态显示欢迎使用提示语

   2)微火状态

   3)小火状态

   4)中火状态

  

   5)大火状态

 

2、状态机中的内容显示(包含点阵显示、蜂鸣器的方波脉冲产生和液晶屏显示内容的赋值)

蜂鸣器的音调可调,从低音到中音到高音,每个音段里包含do ri mi fa so la xi do这7个音调可供选择

(各音调的不同频率参见本人另一博文:可编程实验板EPM1270T144C5蜂鸣器音调频率选择 ,共包含了21个标准音调,读者们也可修改这21个标准音调之外的值)

always@(posedge clk) //状态机内容的显示 begin case(sc) s0: //不显示,关机状态 begin row_1(TIME_500HZ-1'b1)/2)?1'b0:1'b1; //使能端,每个工作周期一次下降沿,执行一次命令 wire write_flag=(cnt_500hz==TIME_500HZ-1'b1)?1'b1:1'b0; //每到一个工作周期,write_flag置高一周期 always@(posedge clk or negedge _RST) begin if(!_RST) c_state1-1,第一行第一位 //将输入的row_1以每8-bit拆分,分配给对应的显示位 ROW1_0:LCD_DATA


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3