clockLCD1602.docx
《clockLCD1602.docx》由会员分享,可在线阅读,更多相关《clockLCD1602.docx(121页珍藏版)》请在冰豆网上搜索。
![clockLCD1602.docx](https://file1.bdocx.com/fileroot1/2023-1/22/08bf96b8-c6ce-4d8d-9376-d1e77786edb1/08bf96b8-c6ce-4d8d-9376-d1e77786edb11.gif)
clockLCD1602
------------------------------------------------------
--设计者:
bluemanzyp(巨蟹座风云)--
--硬件载体:
EP2C8Q208Amy电子FPGA学习板--
--设计时间:
2009年4月1日,V1.0版--
--最后修改时间:
2009年8月23日,V3.0版--
------------------------------------------------------
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_Arith.ALL;
USEIEEE.STD_LOGIC_Unsigned.ALL;
ENTITYalarm_radioIS
PORT
(
clk:
INstd_logic;
en_5ms:
INstd_logic;
is_need_alarm:
INSTD_LOGIC;--是否需要整点闹铃
alarmin:
INSTD_LOGIC;
cnt_alarmin:
INSTD_LOGIC;
timein:
INSTD_LOGIC_VECTOR(15DOWNTO0);
reset:
INSTD_LOGIC;
--经过实验得知,对10kHz进行22分频和40分频蜂鸣器声音最大,故采用这两种声音
tone_H:
INSTD_LOGIC;--4545Hz(22)or4762Hz(21)
tone_L:
INSTD_LOGIC;--2500Hz(40)or2778Hz(36)
clk_1Hz:
INSTD_LOGIC;
alarm_out:
outSTD_LOGIC
);
ENDalarm_radio;
ARCHITECTUREoneOFalarm_radioIS
SIGNALfreq:
STD_LOGIC;
SIGNALbeep5:
STD_LOGIC;
SIGNALcnt_beep4:
integerrange0to4;
SIGNALbeep4,beep2:
STD_LOGIC;
SIGNALcnt10Hz:
integerrange0to19;
SIGNALclk_10Hz:
STD_LOGIC;
SIGNALclk_5Hz:
STD_LOGIC;
SIGNALreset_delay:
STD_LOGIC;
SIGNALreset_cnt:
integerrange0to5;
begin
process(clk,reset)
begin
if(clk'eventandclk='1')then
if(en_5ms='1')then
if(cnt10Hz<19)then
cnt10Hz<=cnt10Hz+1;
else
cnt10Hz<=0;
clk_5Hz<=notclk_5Hz;
endif;
if(cnt10Hz<10)then
clk_10Hz<='1';
else
clk_10Hz<='0';
endif;
endif;
endif;
endprocess;
process(clk_10Hz,reset)
begin
if(reset='0')then
reset_cnt<=0;
reset_delay<='0';
elsif(clk_10Hz'eventandclk_10Hz='1')then
if(reset_cnt<5)then
reset_cnt<=reset_cnt+1;
reset_delay<='0';
else
reset_cnt<=reset_cnt;
reset_delay<='1';
endif;
endif;
endprocess;
process(clk_5Hz,reset,cnt_alarmin,alarmin,cnt_beep4)
begin
if(reset='0'or(cnt_alarmin='0'andalarmin='0'))then
cnt_beep4<=0;
beep4<='0';
elsif(clk_5Hz'eventandclk_5Hz='1')then
if(cnt_beep4<4)then
cnt_beep4<=cnt_beep4+1;
else
cnt_beep4<=0;
endif;
endif;
casecnt_beep4is
when1=>beep4<='1';beep2<='1';
when2=>beep4<='1';beep2<='0';
when3=>beep4<='1';beep2<='1';
when4=>beep4<='1';beep2<='0';
whenothers=>beep4<='0';beep2<='0';
endcase;
endprocess;
process(timein)
begin
casetimeinis
whenX"59_59"|X"59_56"|X"59_57"|X"59_58"=>freq<='0';beep5<='1';--500Hz
whenX"00_00"=>freq<='1';beep5<='1';--1kHz
whenothers=>freq<='0';beep5<='0';--不响
endcase;
endprocess;
--计数器闹铃优先级最高,时间闹铃优先级次之,整点报时闹铃优先级最低。
--当计数器时间到闹铃时,时间闹铃和整点报时闹铃被屏蔽,
--当时间闹铃正在进行时,整点报时闹铃被屏蔽。
alarm_out<=(
(notreset)andtone_H--全局清零的时候响
)
or
(
reset_delay
and
(
((notcnt_alarmin)and(notalarmin)andis_need_alarmandbeep5and(clk_1Hz)and(((notfreq)andtone_L)or(freqandtone_H)))--整点报时
or
((notcnt_alarmin)andalarminandtone_Landclk_10Hzandbeep4)--普通闹铃
or
(cnt_alarminandtone_Landbeep2)--计数器闹铃
)
);
endARCHITECTURE;
------------------------------------------------------
--设计者:
bluemanzyp(巨蟹座风云)--
--硬件载体:
EP2C8Q208Amy电子FPGA学习板--
--设计时间:
2009年4月1日,V1.0版--
--最后修改时间:
2009年8月23日,V3.0版--
------------------------------------------------------
libraryIEEE;
useIEEE.STD_LOGIC_1164.all;
packageascii_tableis
constantsp:
std_logic_vector(7downto0):
=x"20";--空格
constantgantanhao:
std_logic_vector(7downto0):
=x"21";--感叹号!
constantshuangyinhao:
std_logic_vector(7downto0):
=x"22";--双引号"
constantjinghao:
std_logic_vector(7downto0):
=x"23";--井号#
constantdollar:
std_logic_vector(7downto0):
=x"24";--美元符号$
constantbaifenhao:
std_logic_vector(7downto0):
=x"25";--百分号%
constantdizhi:
std_logic_vector(7downto0):
=x"26";--地址符号&
constantyoudanyinhao:
std_logic_vector(7downto0):
=x"27";--右单引号‘
constantzuokuohao:
std_logic_vector(7downto0):
=x"28";--左括号(
constantyoukuohao:
std_logic_vector(7downto0):
=x"29";--右括号)
constantchenghao:
std_logic_vector(7downto0):
=x"2a";--乘号*
constantjiahao:
std_logic_vector(7downto0):
=x"2b";--加号+
constantdouhao:
std_logic_vector(7downto0):
=x"2c";--逗号,
constantjianhao:
std_logic_vector(7downto0):
=x"2d";--减号-
constantxiaoshudian:
std_logic_vector(7downto0):
=x"2e";--小数点.
constantfanxiegang:
std_logic_vector(7downto0):
=x"2f";--反斜杠/
constantn0:
std_logic_vector(7downto0):
=x"30";--数字0
constantn1:
std_logic_vector(7downto0):
=x"31";--数字1
constantn2:
std_logic_vector(7downto0):
=x"32";--数字2
constantn3:
std_logic_vector(7downto0):
=x"33";--数字3
constantn4:
std_logic_vector(7downto0):
=x"34";--数字4
constantn5:
std_logic_vector(7downto0):
=x"35";--数字5
constantn6:
std_logic_vector(7downto0):
=x"36";--数字6
constantn7:
std_logic_vector(7downto0):
=x"37";--数字7
constantn8:
std_logic_vector(7downto0):
=x"38";--数字8
constantn9:
std_logic_vector(7downto0):
=x"39";--数字9
constantmaohao:
std_logic_vector(7downto0):
=x"3a";--冒号:
constantfenhao:
std_logic_vector(7downto0):
=x"3b";--分号;
constantxiaoyuhao:
std_logic_vector(7downto0):
=x"3c";--小于号<
constantdenghao:
std_logic_vector(7downto0):
=x"3d";--等号=
constantdayuhao:
std_logic_vector(7downto0):
=x"3e";--大于号>
constantwenhao:
std_logic_vector(7downto0):
=x"3f";--问号?
constanthuaa:
std_logic_vector(7downto0):
=x"40";--花a@
constantuA:
std_logic_vector(7downto0):
=x"41";--大写A
constantuB:
std_logic_vector(7downto0):
=x"42";--大写B
constantuC:
std_logic_vector(7downto0):
=x"43";--大写C
constantuD:
std_logic_vector(7downto0):
=x"44";--大写D
constantuE:
std_logic_vector(7downto0):
=x"45";--大写E
constantuF:
std_logic_vector(7downto0):
=x"46";--大写F
constantuG:
std_logic_vector(7downto0):
=x"47";--大写G
constantuH:
std_logic_vector(7downto0):
=x"48";--大写H
constantuI:
std_logic_vector(7downto0):
=x"49";--大写I
constantuJ:
std_logic_vector(7downto0):
=x"4a";--大写J
constantuK:
std_logic_vector(7downto0):
=x"4b";--大写K
constantuL:
std_logic_vector(7downto0):
=x"4c";--大写L
constantuM:
std_logic_vector(7downto0):
=x"4d";--大写M
constantuN:
std_logic_vector(7downto0):
=x"4e";--大写N
constantuO:
std_logic_vector(7downto0):
=x"4f";--大写O
constantuP:
std_logic_vector(7downto0):
=x"50";--大写P
constantuQ:
std_logic_vector(7downto0):
=x"51";--大写Q
constantuR:
std_logic_vector(7downto0):
=x"52";--大写R
constantuSS:
std_logic_vector(7downto0):
=x"53";--大写S
constantuT:
std_logic_vector(7downto0):
=x"54";--大写T
constantuU:
std_logic_vector(7downto0):
=x"55";--大写U
constantuV:
std_logic_vector(7downto0):
=x"56";--大写V
constantuW:
std_logic_vector(7downto0):
=x"57";--大写W
constantuX:
std_logic_vector(7downto0):
=x"58";--大写X
constantuY:
std_logic_vector(7downto0):
=x"59";--大写Y
constantuZ:
std_logic_vector(7downto0):
=x"5a";--大写Z
constantzuozhongkuohao:
std_logic_vector(7downto0):
=x"5b";--左中括号[
constantrenminbi:
std_logic_vector(7downto0):
=x"5c";--人民币¥
constantyouzhongkuohao:
std_logic_vector(7downto0):
=x"5d";--右中括号]
constantshangjianhao:
std_logic_vector(7downto0):
=x"5e";--上尖号^
constantxiahuaxian:
std_logic_vector(7downto0):
=x"5f";--下划线_
constantzuodanyinhao:
std_logic_vector(7downto0):
=x"60";--左单引号’
constantaa:
std_logic_vector(7downto0):
=x"61";--小写a
constantb:
std_logic_vector(7downto0):
=x"62";--小写b
constantc:
std_logic_vector(7downto0):
=x"63";--小写c
constantd:
std_logic_vector(7downto0):
=x"64";--小写d
constante:
std_logic_vector(7downto0):
=x"65";--小写e
constantf:
std_logic_vector(7downto0):
=x"66";--小写f
constantg:
std_logic_vector(7downto0):
=x"67";--小写g
constanth:
std_logic_vector(7downto0):
=x"68";--小写h
constanti:
std_logic_vector(7downto0):
=x"69";--小写i
constantj:
std_logic_vector(7downto0):
=x"6a";--小写j
constantk:
std_logic_vector(7downto0):
=x"6b";--小写k
constantl:
std_logic_vector(7downto0):
=x"6c";--小写l
constantm:
std_logic_vector(7downto0):
=x"6d";--小写m
constantn:
std_logic_vector(7downto0):
=x"6e";--小写n
constanto:
std_logic_vector(7downto0):
=x"6f";--小写o
constantp:
std_logic_vector(7downto0):
=x"70";--小写p
constantq:
std_logic_vector(7downto0):
=x"71";--小写q
constantr:
std_logic_vector(7downto0):
=x"72";--小写r
constants:
std_logic_vector(7downto0):
=x"73";--小写s
constantt:
std_logic_vector(7downto0):
=x"74";--小写t
constantu:
std_logic_vector(7downto0):
=x"75";--小写u
constantv:
std_logic_vector(7downto0):
=x"76";--小写v
constantw:
std_logic_vector(7downto0):
=x"77";--小写w
constantx:
std_logic_vector(7downto0):
=x"78";--小写x
constanty:
std_logic_vector(7downto0):
=x"79";--小写y
constantz:
std_logic_vector(7downto0):
=x"7a";--小写z
constantzuodakuo