ImageVerifierCode 换一换
格式:DOCX , 页数:58 ,大小:616.68KB ,
资源ID:27659157      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27659157.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(根据LCD1602的简单秒表的设计与实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

根据LCD1602的简单秒表的设计与实现.docx

1、根据LCD1602的简单秒表的设计与实现数字电路与逻辑设计实验报告学院:电子工程学院班级:2014211212姓名:学号:班内序号:亠、设计课题的任务要求简易秒表的设计与实现设计制作一个计时精度为百分之一秒的计时秒表基本要求:1.用LCD1602液晶屏显示计时;2.秒表计时长度为23小时59分59.99秒;3.用BTNOf乍为启动/停止开关;4.用BTN1作为复位开关,在任何情况下,只要按下复位开关,秒表都要无 条件执行清零操作。提高要求:1. 增加定时器功能,可根据用户设定的时间进行倒计时,时间到 0后蜂鸣器 报警提示;2.自拟其他功能。】、系统设计(设计思路、总体框图、分块设计)1.设计思

2、路:分别设计6进制计数器、10进制计数器和24进制计数器用于秒表计时部 分。具体来说:将两个10进制计数器级联分别作为秒表的十分秒位(最 小单位为0.1秒)和百分秒位(最小单位为0.01秒);将一个10进制计 数器和6进制计数器级联,分别作为秒表秒钟部分的个位(最小单位为1 秒)和十位(最小单位为10秒);再将一个10进制计数器和6进制计数 器级联,分别作为秒表分钟部分的个位(最小单位为1分钟)和十位(最 小单位为10分钟);将24进制计数器作为秒表小时部分,其中低位输出 作为秒表小时部分的个位(最小单位为1小时),高位输出作为秒表小时 部分的十位(最小单位为10小时)。最后把秒表百分秒、十分

3、秒部分、秒 钟部分、分钟部分、小时部分这四部分级联起来便构成了简易数字秒表 的计时部分。将各个计数器部分的输出信号通过译码模块,变成 LCD1602液晶屏能够读取并从而显示相关字符的8位二进制数据。再定义一个存储器 ram,存 储各个计数器部分的输出信号经过译码部分之后得到的数据,然后将这 个存储器ram代表的数据在LCD1602液晶屏上显示。考虑到秒表的最小计时长度为0.01秒(频率为100HZ),如果系统时钟设置 为50MHZ则需要500000分频;实验时发现LCD1602液晶屏的时钟在 1KHZ寸,显示效果较好,故需要在系统时钟为50MHZ勺基础上进行50000 分频。考虑到基本要求中需

4、要用 BTN0作为启动/停止开关,用BTN1作为复位开关,所以需要设计相应的按键防抖电路,这里我采用的是计数型防抖。2.总体框图:豎亠厂息图1系统结构框图3.分块设计:系统共通过9个模块实现,分别是: 500000分频模块 fpq50000分频模块 fpql6进制计数器模块 cnt610进制计数器模块 cnt1024进制计数器模块 cnt24译码模块 yimaLCD1602显示模块 LCD1602BTN0启动/停止开关消抖模块 xiaodouBTN1复位开关消抖模块 fuweixiaodou具体设计如下:500000分频模块fpq输入端口: clk : in std_logic; 输出端口:

5、clkout : out std_logic;生成符号: 一设计思路:利用计数法实现分频 主要代码:(完整代码请见源程序)signal clktmp : std_logic;sig nal tmp : in teger range 0 to 249999;begi nprocess (clk)begi nif clkevent and clk=1 thenif tmp=249999 then -500000 分频tmpv=O; clktmpv=not clktmp; elsetmpv=tmp+1;end if;end if;end process;clkout1-2-3-4-5-0-1;当计数

6、到5时,进位信号变为1否则状态自增, 进位信号保持在0主要代码:(完整代码请见源程序)SIGNAL qs :STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ca :STD_LOGIC;BEGINPROCESS(clk)beg inIF(reset=1)THEN qs=0000;ELSIF(clkEVENT AND clk=1)THENIF(e n=0) THENqs= 0000; ca=1;ELSE qs=qs+1; ca=0;END IF;END IF;END IF;END PROCESS;PROCESS(ca,e n)BEGINq=qs;carry=ca;END P

7、ROCESS;10进制计数器模块cnt10 :输入端口: reset,e n, clk:IN STD_LOGIC;输出端口: carry :OUT STD_LOGIC;q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);Mirryene! ! |j .inii.i.icgiin. II |II |.I 并 和斗討繆FJ和和和和曲=令-)k|-设计思路:正常的计数状态是;0-1-2-3-4-5-6-7-8-9-0-1 当计数到9时,进位信号变为1否则状态自增, 进位信号保持在0主要代码:(完整代码请见源程序)SIGNAL qs :STD_LOGIC_VECTOR(3 DOWN

8、TO 0);SIGNAL ca :STD_LOGIC;BEGINPROCESS(clk)beg inIF(reset=1)THEN qs=0000;ELSIF(clkEVENT AND clk=1)THENIF(e n=0) THENIF(qs=1001) THEN - 计数到 9qs= 0000;ca=1;ELSEqs=qs+1;ca=0;END IF;END IF;END IF;END PROCESS;PROCESS(ca)BEGINq=qs;carry1-2-3-4-5-6-7-8-9-0-1 高位qb状态变化:0-1-2-0-1 当低位qa计数到9时,qb自增,进位信号保持在 0 当低

9、位qa为3且高位qb为2时,进位信号变为 1, 同时qa变为0、qb变为0主要代码:(完整代码请见源程序)SIGNAL ca :STD_LOGIC;BEGINprocess(clk,Reset,e n)variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0); variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0); begi nIf Reset = 1 then tma:=0000; tmb:=0000; elseif clkevent and clk=1 thenIF(e n=0) THEN-当BTN0键没有第一次按下时,正常计数i

10、f tma=1001 then tma:=0000;tmb:=tmb+1;elsif tmb=0010 and tma=0011 then- 计数到23tma:=0000;tmb:=0000;ca=1;else tma:=tma+1;end if;end if;end if;end if;qa=tma;qb=tmb;carry=ca;end process;译码模块yima:输入端口: carry: in STD_LOGIC;data: in stdo gic_vector(3 dow nto 0);输出端口:dataout: out stdogic_vector(7 downto 0);生成

11、符号:打殆甘拝起耕拜蒲f和暑f *釋聲押 聲幷和理f抨,. y y _carry daCaL.4l设计思路:根据输入信号的不同,使用case语句进行不同的译码 操作即可。具体来说:0(四位二二进制)译为30(八位二二进制)1(四位二二进制)译为31(八位二二进制)2(四位二二进制)译为32(八位二二进制)3(四位二二进制)译为33(八位二二进制)4(四位二二进制)译为34(八位二二进制)5(四位二二进制)译为35(八位二二进制)6(四位二二进制)译为36(八位二二进制)7(四位二二进制)译为37(八位二二进制)8(四位二二进制)译为38(八位二二进制)9(四位二二进制)译为39(八位二二进制)

12、其他译为20(八位二进制)主要代码:(完整代码请见源程序)signal dis:stdogic_vector(7 downto 0); begi nprocess(data)beg inif(carry=1) the ndisdisdisdisdisdisdisdisdisdisdisdis=00100000;-其他译为20end case;end if;end process;dataoutA87. 0 纟 4 IHA_OA7A7P. 0 :纟 Y1UA_D*7AS(7.耳设计思路:将各个计数器部分的输出信号通过译码模块,变成 LCD1602液晶屏能够读取并从而显示相关字符的 8位二进制数据

13、。再定义一个存储器ram,存储各个计数器 部分的输出信号经过译码部分之后得到的数据,然后 将这个存储器ram代表的数据在LCD1602液晶屏上显 示。主要代码:(完整代码请见源程序)ram1(8)v=x2e; ram1(9)v=YIMA_DATA2;- ram1(10)v=YIMA_DATA1;-显示小数点.译码数据信号2,秒表十分秒位译码数据信号1,秒表百分秒位process(LCD_Clk) variable ent :in teger range 0 to 37;beg inif LCD_Clkevent and LCD_Clk = 1then if ent =37 the n ent

14、:=0;else ent :=e nt +1;end if;end if;ease ent is Init LCD1602 初始化部分 whe n 0 =LCD_RS=0;lcd_dataLCD_RS=0;led_dataLCD_RS=0;led_dataLCD_RS=0;lcd_dataLCD_RS=0;lcd_dataLCD_RSv=1;lcd_dataLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RSLCD_RS=1;lcd_dataLCD_RS=1;led_dataLCD_RS=1;led

15、_dataLCD_RS=1;led_dataLCD_RSLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RS=1;led_dataLCD_RS=0;lcd_dataLCD_RS=1;led_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_data

16、LCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_dataLCD_RS=1;lcd_data=10100000;- 空格end case;end process;BTN0启动/停止开关消抖模块xiaodou :输入端口: clk :in std_logic;key_en:in std_logic;输出端口 : en_out:out stdogic 生成符号:一 一- - UB-LR-n-kr-o-设计思路:采用计数型防抖当key_en第一次为1时,en_out延迟一段时间后变为1,

17、并且en_out就此保持在高电平1;直到key_en第二次为1时,en_out延迟一段时间后变为0。主要代码:(完整代码请见源程序)signal cnt:integer range 0 to 3; -采用计数型防抖signal en, en_tmp:stdo gic;begi np0:process(clk) begi nif clkevent and clk =1 thenif key_e n =1 the nif ent = 3 the n en=1;else cn t=c nt+1;e n=0;end if;else cn t=0;e n=0;end if;end if;end proc

18、ess p0;p1:process(e n)begi nif en eve nt and en=1 the nen _tmp=not en _tmp;end if;en _out il!.- rB - B h R b F设计思路:采用计数型防抖当fuwei为1时,fuwei_out延迟一段时间后变为1, 然后fuwei_out又重新回到低电平0。主要代码:(完整代码请见源程序)signal cnt:integer range 0 to 3; -采用计数型防抖signal en:std_logic;beginprocess(clk)beginif clkevent and clk =1 thenif fuwei =1 the nif ent = 3 the n en=1; else en t=e nt+1;e n=0; end if;else en t=0;e n=0;end if;end if;end process;fuwei_out -u.ci iLT finQ m. ao :m. e也 卩 p i:i n :ab p 32a.pB tn_nL_r-L_rnriTT_TT_ri_n_rL_nL_nL_rT_r_rL_nL_nL0L输入端口 输出端口 仿真波形clk : in std_logic; clkout : out std_logi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1