




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-LCD1602数字钟-Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity clock isPort( rst,clk : in std_logic; rs,en,rst_out,sec_out: out std_logic; rw : out std_logic; data_out : out std_logic_vector(7 downto 0); RD,WR : IN STD_LOGIC;-读写控制 DATA_O ,CONT_O : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-数据输出 DATA_I,CONT_I : IN STD_LOGIC_VECTOR(7 DOWNTO 0);-数据和地址输入 SCLK : OUT STD_LOGIC; IO : INOUT STD_LOGIC; IOB : OUT STD_LOGIC ; k1,k2 : IN STD_LOGIC); End clock;Architecture fwm of clock is TYPE states IS(hold,func_set,dis_on,mode_set,write_char1,write_char2,write_char3,write_char4,write_char5,write_char6, write_char7,write_char8,write_char9,write_char10,return_home,toggle_e,rst1,rst2,rst3,dis_off,dis_clr); SIGNAL state,n_state:states; SIGNAL s0,s1,m0,m1,h0,h1,t: std_logic_vector(3 downto 0); SIGNAL clk_400Hz,clk_10Hz,clk_40Hz: std_logic; SIGNAL DATA_TEMP : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CONT_TEMP : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SECOND : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL MINUTE : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL HOUR : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL DAY : STD_LOGIC_VECTOR(7 DOWNTO 0); CONSTANT PROCECT : STD_LOGIC_VECTOR:=10001110;-保护位 CONSTANT SECOND_WRITE: STD_LOGIC_VECTOR:=10000000;CONSTANT SECOND_READ : STD_LOGIC_VECTOR:=10000001;CONSTANT MINUTE_WRITE: STD_LOGIC_VECTOR:=10000010;CONSTANT MINUTE_READ : STD_LOGIC_VECTOR:=10000011;CONSTANT HOUR_WRITE : STD_LOGIC_VECTOR:=10000100;CONSTANT HOUR_READ : STD_LOGIC_VECTOR:=10000101;CONSTANT DAY_WRITE : STD_LOGIC_VECTOR:=10000110;CONSTANT DAY_READ : STD_LOGIC_VECTOR:=10000111;-CONSTANT MONTH_WRITE : STD_LOGIC_VECTOR:=10001000;-CONSTANT MONTH_READ : STD_LOGIC_VECTOR:=10001001;-CONSTANT YEAR_WRITE : STD_LOGIC_VECTOR:=10001100;-CONSTANT YEAR_READ : STD_LOGIC_VECTOR:=10001101;Begin rst_out=NOT rst; sec_out=s0(0); Process(clk,rst) -50MHz分频到400Hz variable cnt1: integer range 0 to 62500;begin if rst=0 then cnt1:=0;clk_400Hz=0; elsif clkEVENT and clk=1then if cnt162500 then cnt1:=cnt1+1; else cnt1:=0;clk_400HZ= not clk_400Hz;end if; end if;end process;process(clk_400HZ,rst)variable cnt2: integer range 0 to 199;begin if rst=0 then state=rst1;data_out=X38;n_state=rst2;en=1;rs=0;rw=0; elsif clkEVENT and clk=1 then if cnt219 then cnt2:=cnt2+1; else cnt2:=0;clk_400Hzen=1;rs=0;rw=0;data_out=X38;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X38;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X38;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X38;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X08;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X01;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X0c;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X06;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & h1;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & h0;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3a;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & m1;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & m0;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3a;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & s1;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & s0;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X2e;state=toggle_e;n_stateen=1;rs=1;rw=0;data_out=X3 & t;state=toggle_e;n_stateen=1;rs=0;rw=0;data_out=X80;state=toggle_e;n_state en =0; statestate =n_state; -保持 end case; end if;end process;PROCESS(clk_40Hz)VARIABLE COUNT1 : INTEGER RANGE 0 TO 7 ;VARIABLE COUNT2 : STD_LOGIC_VECTOR (1 DOWNTO 0);VARIABLE COUNT3 : STD_LOGIC_VECTOR (1 DOWNTO 0);variable cnt3: integer range 0 to 19;VARIABLE COUNT4 : STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE COUNT5 : STD_LOGIC_VECTOR(2 DOWNTO 0); VARIABLE COUNT6 : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN if rst=0 then cnt3:=0;clk_40Hz=0; elsif clk_400HzEVENT and clk_400HZ=1 then if cnt319 then cnt3:=cnt3+1; else cnt3:=0;clk_40HZCASE COUNT2 ISWHEN 00 = CONT_TEMP=CONT_I; SCLK=0; IO=CONT_I(COUNT1); COUNT2:=01; -写地址rst SCLK SCLK=0; IO SCLK=1; COUNT2:=00; COUNT3:=01; IOBCASE COUNT2 ISWHEN 00 = SCLK=0; COUNT2:=01; COUNT1:=0;IO SCLK=1; DATA_TEMP(COUNT1) SCLK=0; COUNT1:=COUNT1+1;IO DATA_TEMP(COUNT1)=IO; COUNT3:=10; COUNT2:=00; DATA_O= DATA_TEMP; IOB DATA_O= DATA_TEMP; COUNT1:=0; IOB =0;- rst NULL;END CASE;END IF;IF WR =1AND RD =0 THEN -写数据CASE COUNT3 ISWHEN 00 =CASE COUNT2 ISWHEN 00 = CONT_TEMP=CONT_I; DATA_TEMP=DATA_I;SCLK=0; IO=CONT_I(0); COUNT2:=01; COUNT1:=0;- RST SCLK SCLK=0; IO SCLKCASE COUNT2 ISWHEN 00 = SCLK=0; IO SCLK SCLK=0; IO SCLK=1; COUNT2:=00; COUNT3:=10; COUNT1:=0; IOB COUNT1:=0; IOB=0; -RST NULL;END CASE;END IF;IF RD =0 AND WR =0 THEN SCLK=0; COUNT1:=0; COUNT3:=00; COUNT2:=00; DATA_O=ZZZZZZZZ; END IF;END IF;h1= X0;h0= X0;m1= X0;m0= X0;s1= X0;s0= X0;IF k1 =1 THENIF COUNT5 CONT_O=SECOND_WRITE; DATA_O COUNT5:=010; WHEN 010 = CONT_O=MINUTE_WRITE; DATA_O COUNT5:=100; WHEN 100 = CONT_O=HOUR_WRITE; DATA_O COUNT5:=110; WHEN 110 = CONT_O=DAY_WRITE; DATA_ONULL;END CASE;END IF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术特色写生课程设计
- 2025年事业单位工勤技能-湖南-湖南土建施工人员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖南-湖南保育员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北政务服务办事员五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北房管员三级(高级工)历年参考题库含答案解析
- 特殊教育师资培养模式与职业发展研究报告
- 2025年事业单位工勤技能-浙江-浙江电工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江有线广播电视机务员一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江信号工-机车信号设备维修三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河南-河南计量检定工四级(中级工)历年参考题库典型考点含答案解析
- 2025-2026秋季学年第一学期学生国旗下演讲稿(20周):第一周 新程启航礼润心田-开学典礼
- KET教学课件新版
- 《人类行为与社会环境》课件
- 头位难产识别和处理
- (完整版)文献调研报告模板
- 《透视灵魂看人生》-曾仕强
- 浅谈新课标下的高中英语教学
- 金沙县网约车从业资格考试模拟试卷
- T∕ACSC 01-2022 辅助生殖医学中心建设标准(高清最新版)
- 中医内科学专业高级职称考试大纲―正高级
- QFP器件引脚成形参数理解和计算方法
评论
0/150
提交评论