带LCD1602液晶显示多功能数字时钟.docx
- 文档编号:7442118
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:11
- 大小:68.85KB
带LCD1602液晶显示多功能数字时钟.docx
《带LCD1602液晶显示多功能数字时钟.docx》由会员分享,可在线阅读,更多相关《带LCD1602液晶显示多功能数字时钟.docx(11页珍藏版)》请在冰点文库上搜索。
带LCD1602液晶显示多功能数字时钟
带LCD1602液晶显示多功能数字时钟
*******************************************************************************
*******************************
带LCD1602液晶显示的多功能数字时钟
设计者:
bluemanzyp(巨蟹座风云)
硬件载体:
EP2C8Q208Amy电子FPGA学习板
设计时间:
2009年4月1日,V1.0版
最后修改时间:
2009年8月23日,V3.0版
说明:
1.本设计全部采用数字电路和状态机的设计方法,没有采用任何CPU的IP核。
2.本设计的目的是为了练习状态机的设计技巧,以及方便生活^_^
3.有些EP2C8Q208Amy电子FPGA学习板上的蜂鸣器是电平型的,给高电平就响,给低电平就不响,这样可能造成振铃的音质很差并且声音太小。
建议将蜂鸣器换成脉冲型的,给什么频率的信号,响什么频率的声音。
另外,最好测试一下蜂鸣器在哪些频率下声音最大,选择这些音量大的频率工作。
4.如果要在其他型号的板子上用,请自己进行引脚锁定。
5.系统需要的最小资源:
占用1100个逻辑单元LC,8个按键,LCD1602液晶,3个拨码开关,3个发光二极管。
另外可以选配4×4小键盘,方便设置时钟。
*******************************************************************************
*******************************
多功能数字时钟的功能和特点:
1.上电1s复位功能,手动复位功能,复位会给出1s振铃信号;
2.基本时钟计时功能;
3.闹钟功能;
4.计数器倒计时功能;
5.整点报时功能;
6.闹钟具有懒人模式功能,如果启动懒人模式,闹钟振铃每隔一分钟就响一次,如果不启动懒人模式,闹钟振铃响一分钟就停止;
7.任意键关闭闹钟振铃功能(与懒人模式有关);
8.计数器自动装载功能,可实现00h:
00m:
15s---99h:
59m:
59s的循环定时振铃;
9.计数器手动启动功能;
10.一键启动或关闭闹钟或者计数器功能;
11.自动检验时钟、闹钟、和计数器设置数字的正确性,不正确的数字不能被输入系统;
12.液晶LCD1602显示,可同时查看时间和闹钟设置时间或者计数器时间;
13.菜单设置功能,人机界面友好;
14.30秒不操作,自动退出菜单功能;
15.8个基本按键:
“?
”、“?
”、“?
”、“?
”、“确定”、“取消”、“闹钟开关alarm_sw”和“计数器开关cntalm_sw”完成全部操作;
16.可以插上4×4小键盘进行快速操作;
17.键盘自动消抖;
18.4×4小键盘快捷键;
19.用4×4小键盘设置时间或闹钟或计数器数字时,正确设置一位数字后,自动移到下一位数字进行设置;
20.“?
”、“?
”键连击功能实现快速数字设定;
21.时钟后台计时功能,查看菜单不会影响时钟计时。
22.各种振铃声音不同,容易分辨,声音洪亮(要换成脉冲型的蜂鸣器)。
************************************************************************
多功能数字时钟的使用方法:
一、时钟的设定和显示:
1.正常显示时间的界面下,液晶上第一行显示当前时钟的时间,格式为:
“Time:
h1h0:
m1m0:
s1s0”,其中“:
”会0.5s亮0.5s灭。
第二行可以显示设定的闹钟时间、或当前的计数器计数值、或计数器的设定时间,可以通过接口板或者4×4小键盘上的“?
”、“?
”、“?
”、“?
”键来选择某一个来显示。
例如:
选择显示设定的闹钟时间,格式为:
“Alarm:
h1h0:
m1m0:
s1s0”,其中“:
”一直亮。
例如:
选择显示当前的计数器计数值,格式为:
“CntTim:
h1h0:
m1m0:
s1s0”,其中“:
”一直亮。
例如:
选择显示计数器的设定时间,格式为:
“CntBuf:
h1h0:
m1m0:
s1s0”,其中“:
”一直亮。
2.首先,在正常显示时间的界面下按“确定”键(接口板s6键或者4×4小键盘上的“确定”键)进入功能菜单,一共有三种功能菜单:
“SetClock”、“SetAlarm”、“SetCounter”,分别表示设置时钟、设置闹钟、设置计数器。
通过按接口板或者4×4小键盘上的“?
”、“?
”、“?
”、“?
”键来选择菜单,因为LCD1602只有两行,所以同时只能有2个功能菜单显示出来,其中最左边有一个“?
”符号的表示本菜单是选中的功能菜单。
然后再次按“确定”键进入这一选中的功能进行设置。
另外,4×4小键盘上的“1”、“2”、“3”键分别是“SetClock”功能、“SetAlarm”功能、“SetCounter”功能的快捷键。
在正常显示时间的界面下,也可以通过4×4小键盘上的“1”选择“SetClock”功能,“2”选择“SetAlarm”功能,“3”选择“SetCounter”功能,再次按“确定”键或者4×4小键盘上的“1”、“2”、“3”键就可以进入对应功能。
3.如果选择了“SetClock”菜单,按“确定”键进入设置时钟的功能进行设置,这时液晶上第一行显示“SetClockTime:
”,第二行显示“h1h0:
m1m0:
s1s0”,系统会自动装载当前显示的时间作为设置时间的基础。
其中需要设置的某一位数字处于闪烁状态,可以通过接口板或者4×4小键盘上的“?
”、“?
”键或者是4×4小键盘上的0-9的数字键来设置某一位数字的数值,通过接口板或者4×4小键盘上的“?
”、“?
”键来选择设置哪一位数字。
其中h1只能是0、1、2三个数字,根据h1的取值h0只能是0-9或者0-3,m1只能是0-5,m0只能是0-9,s1只能是0-5,s0只能是0-9。
数值的限定范围是自动进行的,比如设置h1时,当按下“?
”、“?
”键,就自动在0、1、2三个数字中循环,设置好以后,“?
”、“?
”键来选择下一位数字h0或者s0来设置。
按当按下4×4小键盘上的0-9的数字键,如果按的建不是0、1、2三个数字,按其他键是无效的。
当按下4×4小键盘上的有效数字键后,会自动进入设置h0的位置,同时h0开始闪烁。
4.当设置完毕时钟的时间后,可以按“确定”键保存当前时钟的设置,再按“取消”(接口板
s5键或者4×4小键盘上的“取消”键)退出菜单,回到正常显示时间的界面。
二、闹钟的操作:
1.首先,通过菜单设置好闹钟的时间,按“确定”保存当前闹钟的设置,再按“取消”退出菜单,回到正常显示时间的界面。
此时alarm_on(发光二极管D1)自动点亮,说明闹钟功能启动。
你也可以通过按alarm_sw键,关闭闹钟功能,此时alarm_on灭。
关闭后,如果不需要改动原来设置的闹钟时间,可以通过再次按alarm_sw键,开启闹钟功能,此时alarm_on亮。
2.如果关闭了懒人模式(SW7键,lazy_mode,拨在上边),当时钟到达设定的闹钟时间,就会开始振铃1分钟然后停止,到明天同一时间会再次响起。
闹铃过程中按下接口板上的s3-s8键或者4×4小键盘上的的任意键,就会关闭闹铃振铃,但不会关闭闹钟功能,alarm_on(发光二极管D1)不会受到影响,仍然亮。
3.如果启动了懒人模式(SW7键,lazy_mode,拨在下边),当时钟到达设定的闹钟时间,就会响1分钟,然后停1分钟,这样一直循环响下去。
直到按下alarm_sw键(s1键)关闭闹钟(注意:
关闭闹钟不会立刻关闭闹铃振铃,只不过明天、后天……闹钟就不会响了),或者关闭懒人模式为止(注意:
关闭懒人模式也不会立刻关闭闹铃振铃,闹铃振铃要响完这一分钟才会停)。
在懒人模式下,闹铃过程中按下接口板上的s3-s8键或者4×4小键盘上的的任意键,只能暂时关闭闹钟,一分钟后闹钟仍然会振铃。
4.闹钟设置过程中,液晶上第一行显示“SetAlarmTime:
”,第二行显示“h1h0:
m1m0:
s1s0”,系统会自动装载上次设置的闹钟时间作为设置闹钟的基础。
其中需要设置的某一位数字处于闪烁状态,可以通过接口板或者4×4小键盘上的“?
”、“?
”键或者是4×4小键盘上的0-9的数字键来设置某一位数字的数值,通过接口板或者4×4小键盘上的“?
”、“?
”键来选择设置哪一位数字。
其中h1只能是0、1、2三个数字,根据h1的取值h0只能是0-9或者0-3,m1只能是0-5,m0只能是0-9,s1只能是0-5,s0只能是0-9。
数值的限定范围也是自动进行的,作用跟时钟设置时的一样,不再举例。
三、计数器的操作:
1.首先,通过菜单设置好需要计数器的计数时间,按“确定”保存当前计数器的设置,再按“取消”退出菜单,回到正常显示时间的界面。
此时cntalm_on(发光二极管D2)自动点亮,说明计数器功能启动,同时计数器开始倒计数。
你也可以通过按cntalm_sw键,关闭计数器功能,此时cntalm_on灭。
关闭后,如果不需要改动原来设置的计数器时间,可以通过再次按cntalm_sw键,开启计数器功能,此时cntalm_on亮,同时计数器开始倒计数。
注意:
如果给计数器设置的计数值是0,则计数器自动关闭,cntalm_on熄灭,停止计数。
2.如果打开了自动装载计数器功能(SW6键,is_manual_auto_start,拨在下边),此时若cntalm_on(发光二极管D2)亮,则计数器会每过设定的计数时间就会启动计数闹钟响15秒,如果设定的计数时间小于15秒,则计数闹钟会一直响。
直到按下cntalm_sw(s2键)关闭计数器闹钟,此时cntalm_on灭,计数器闹钟振铃也停止。
每当振铃结束时,cntalm_on(发光二极管D2)保持点亮,自动保持计数器的开启。
3.如果关闭了自动装载计数器(SW6键,is_manual_auto_start,拨在上边),必须按下cntalm_sw(s2键),cntalm_on(发光二极管D2)亮,打开计数器才会倒计时,直到计数到1时,计数闹钟开始响,同时计数器停止计数,当振铃结束时,cntalm_on(发光二极管D2)灭,自动关闭计数器。
振铃的过程中可以通过按下cntalm_sw(s2键),来关闭计数器振铃,同时cntalm_on(发光二极管D2)灭。
当通过菜单设置了计数器的计数时间后,cntalm_on(发光二极管D2)也亮,计数器也会自动开始倒计数,计数到1时,开始振铃,当振铃结束时,cntalm_on(发光二极管D2)灭,自动关闭计数器。
4.计数器设置过程中,液晶上第一行显示“SetCountTime:
”,第二行显示“h1h0:
m1m0:
s1s0”,系统会自动装载上次设置的计数器时间作为设置计数器的基础。
其中需要设置的某一位数字处于闪烁状态,可以通过接口板或者4×4小键盘上的“?
”、“?
”键或者是4×4小键盘上的0-9的数字键来设置某一位数字的数值,通过接口板或者4×4小键盘上的“?
”、“?
”键来选择设置哪一位数字。
其中h1可以是0-9,h0也可以是0-9,m1只能是0-5,m0只能是0-9,s1只能是0-5,s0只能是0-9。
数值的限定范围也是自动进行的,作用跟时钟设置时的一样,不再举例。
四、整点报时功能:
将接口板上的SW8键,is_need_alarm,拨在下边(H)表示需要需要整点报时,拨在上边(L)表示不需要整点报时。
整点报时功能启用时,当时钟每到59分56秒、57秒、58秒、59秒、和00分的00秒就会连响5下,其中前四声频率低,最后一声频率高,表示整点。
五、其他注意事项:
1.进入任何一级菜单后,如果30s内不按键(接口板上的s3-s8键或者4×4小键盘上的任意按键),则自动退出菜单,进入正常显示时间的模式。
2.进入任何一级菜单后,时钟会在后台继续计时,如果没有重新设置时间,则时钟就不会受到任何影响,当前时间不会因为进入菜单而停止计时。
3.计数器闹铃优先级最高,普通闹铃优先级次之,整点报时闹铃优先级最低。
当计数器闹铃时,普通闹铃和整点报时闹铃被屏蔽,普通闹铃正在进行时,整点报时闹铃被屏蔽。
4.注意:
当s4键和s8键同时按下时,整个系统总清零,reset,所有的计数器和时间回到0。
当产生系统总清零时,会发出1s“嘀”的声音。
另外上电后,也会自动产生系统总清零信号,并会发出1s“嘀”的声音。
一、按键和发光二极管的编码:
1.接口板上左右两列共8个按键开关的编号如下:
从上到下,从左到右分别为:
s1-s8
2.接口板上从左到右共8个发光二极管的编号如下:
从左到右分别为:
D1-D8
3.接口板上从左到右共8个拨码开关的编号如下:
从左到右分别为:
SW1-SW8
4.发光二极管D1(又称为“alarm_on”)的亮灭表示有没有开启闹钟的功能,亮表示开启,灭表示关闭。
5.发光二极管D2(又称为“cntalm_on”)的亮灭表示有没有开启计数器闹钟的功能,亮表示开启,灭表示关闭。
6.发光二极管D8的亮灭表示有没有按下按键,按下接口板上的s3-s8键或者4×4小键盘的任意键,发光二极管D8点亮,松开按键,D8熄灭。
二、开发板红色拨码开关的作用(从左到右:
SW1-SW8):
1.SW8键,is_need_alarm,是否需要整点闹铃,
H(拨在下边)需要,L(拨在上边)不需要
2.SW7键,lazy_mode,是否启动懒人模式,
H(拨在下边)启动,L(拨在上边)不启动
3.SW6键,is_manual_auto_start,是否自动装载计数器的设置值,H(拨在下边)自动装载,L(拨在上边)不自动装载\
三、接口板左右两侧8个按键功能(从上到下、从左到右分别是s1键到s8键,s3、s4、s7、s8键有双功能):
(1)当正常显示时间时:
1.s1键,alarm_sw,控制着闹钟的开启和关闭,每按一次键,闹钟就打开或关闭,当打开闹钟时,alarm_on(发光二极管D1)亮,关闭闹钟时,alarm_on灭。
2.s2键,cntalm_sw,控制着计数器闹铃的开启和关闭,每按一次键,计数器闹钟就打开或关闭,当打开计数器闹钟时,cntalm_on(发光二极管D2)亮,关闭闹钟时,cntalm_on灭。
3.s5键,“取消”键,进入菜单后,如果不想保存当前的设置值,可以按“取消”,不保存当前设置,并推出本级菜单进入上一级菜单。
4.s6键,“确定”键,正常显示时间时,按下此键,则进入菜单。
可以通过“?
”、“?
”、“?
”、“?
”键来选择菜单,进入某一个菜单后,可以通过“?
”、“?
”键来增加或者减少某一位数字的数值,通过“?
”、“?
”键来选择设置哪一位数字。
如果想保存当前的设置值,可以按“确定”,保存当前设置后,退出本级菜单进入下一级菜单。
(2)当进入设置菜单时:
1.s7键,相当于“?
”键,在设置时间或闹铃或计数器时,用来加计数值,按键时间不超过0.5s时,按一下键,计数值就加一,当键时间超过0.5s时,计数值自动以每0.1秒加一。
2.s8键,相当于“?
”键,在设置时间或闹铃或计数器时,用来减计数值,按键时间不超过0.5s时,按一下键,计数值就减一,当键时间超过0.5s时,计数值自动以每0.1秒减一。
3.s3键,相当于“?
”键,用来选择前一个菜单,或者用来选择设置左侧时分秒的数据。
4.s4键,相当于“?
”键,用来选择后一个菜单,或者用来选择设置右侧的时分秒的数据。
(3)当时钟正常显示时间时:
1.s7键和s4键,相当于“?
”键和“?
”键,在液晶第二行循环切换显示“闹钟设定时间almbufin”?
“计数器当前计数值cnttimein”?
“计数器设定值cntbufin”。
2.s8键和s3键,相当于“?
”键和“?
”键,在液晶第二行循环切换显示“闹钟设定时间almbufin”?
“计数器设定值cntbufin”?
“计数器当前计数值cnttimein”。
注意:
当s4键和s8键同时按下时,整个系统总清零,reset,所有的计数器和时间回到0。
当产生系统总清零时,会发出1s“嘀”的声音。
四、4×4小键盘的作用:
当插上4×4小键盘时,可以方便地快速设置时间、闹钟和计数器。
4×4小键盘的行扫描row(3..0)从高位到分别接到接口板的P5双排插针的左下角4根线上,分别锁定引脚为40、43、45、47,列扫描col(3..0)接到接口板的P5双排插针的右下角4根线上,分别锁定引脚为41、44、46、48。
编码:
|----------------|
|123取消|
|456确定|
|789?
|
|0?
?
?
|
|----------------|
1.键盘编码0~9,用来快速设置时间或者闹钟或者计数器,每设置一个数字,自动向右动跳到一个数字进行设置。
2.“?
”和“?
”用来选择前一个或者后一个菜单,或者用来选择某一个时分秒的数据来
设置。
3.“?
”和“?
”在设置时间或闹铃或计数器时,用来加减计数值,按键时间不超过0.5s时,
按一下键,计数值就加一或减一,当按键时间超过0.5s时,计数值自动以每0.2秒的速度加1。
4.“取消”,进入菜单后,如果不想保存当前的设置值,可以按“取消”,不保存当前设
置,并推出本级菜单进入上一级菜单。
5.“确定”,正常显示时间时,按下此键,则进入菜单。
设置时间或闹钟或计数器后,
如果想保存当前的设置值,可以按“确定”保存当前设置,同时退出本级菜单进入下一级功能
选择菜单。
五、需要锁定的引脚:
1.4×4小键盘的行引脚row[3..0]和列引脚col[3..0],从行引脚输出键盘扫描的信号,
从列引脚读入键盘扫描的信号。
set_location_assignmentPIN_48-tocol[0]
set_location_assignmentPIN_46-tocol[1]
set_location_assignmentPIN_44-tocol[2]
set_location_assignmentPIN_41-tocol[3]
set_location_assignmentPIN_47-torow[0]
set_location_assignmentPIN_45-torow[1]
set_location_assignmentPIN_43-torow[2]
set_location_assignmentPIN_40-torow[3]
列引脚col[3..0]要设置弱的上拉电阻:
set_instance_assignment-nameWEAK_PULL_UP_RESISTORON-tocol[0]
set_instance_assignment-nameWEAK_PULL_UP_RESISTORON-to
col[1]
set_instance_assignment-nameWEAK_PULL_UP_RESISTORON-to
col[2]
set_instance_assignment-nameWEAK_PULL_UP_RESISTORON-to
col[3]
2.接口板上s3-s8,分别对应“?
”键、“?
”键、“取消”键、“确定”键、“?
”键、“?
”
键
set_location_assignmentPIN_84-tokey6[0]#“?
”键
set_location_assignmentPIN_87-tokey6[1]#“?
”键
set_location_assignmentPIN_145-tokey6[2]#“?
”键
set_location_assignmentPIN_143-tokey6[3]#“?
”键
set_location_assignmentPIN_146-tokey6[4]#“确定”键
set_location_assignmentPIN_144-tokey6[5]#“取消”键
3.液晶LCD1602的控制信号和数据信号
set_location_assignmentPIN_67-todout[0]
set_location_assignmentPIN_63-todout[1]
set_location_assignmentPIN_60-todout[2]
set_location_assignmentPIN_58-todout[3]
set_location_assignmentPIN_56-todout[4]
set_location_assignmentPIN_57-todout[5]
set_location_assignmentPIN_59-todout[6]
set_location_assignmentPIN_61-todout[7]
set_location_assignmentPIN_69-toen
set_location_assignmentPIN_75-tors
set_location_assignmentPIN_72-torw
4.其他引脚
set_location_assignmentPIN_23-toclk_50M#50MHz时钟。
set_location_assignmentPIN_74-toalarm_sw#开关闹钟的控制键。
set_location_assignmentPIN_86-tocntalm_sw#开关计数器的控制键。
set_location_assignmentPIN_137-tois_manual_auto_start#否需
要整点闹铃。
set_location_assignmentPIN_139-tolazy_mode#否需要懒人模式。
set_location_assignmentPIN_142-tois_need_alarm#否需要整点报时。
set_location_assignmentPIN_88-toalarm_on#发光二极管D1,亮表示开启闹钟,灭表示关闭闹钟。
set_location_assignmentPIN_90-tocntalm_on#发光二极管D2,亮表示开启计数器闹钟,灭表示关闭计数器闹钟。
set_location_assignmentPIN_112-tokey_pressed#发光二极管D8的亮灭表示有没有按下按键,亮表示按下按键,灭表示松开按键。
set_location_assignmentPIN_82-toalarm_out#送给蜂鸣器的信号。
set_location_assignmentPIN_80-toMAX232_R#关闭MAX232_R的发光二极管,也可以不锁定这个引脚。
set_location_assignmentPIN_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD1602 液晶显示 多功能 数字 时钟