杜熬—电子实验报告—跑表
单片机实现电子计时跑表的设计实验报告
一、设计要求: 1、 能显示分、秒、1/100 秒,显示器用七段数码管(也可选
LCD) 2、 具有清零、计时、冻结功能,功能转换用一位非锁紧按
键开关。 3、 CPU 选用 89C51/MSP430,定时器芯片自选,也可用 CPU
内部的定时器。 4、 先写设计报告(要有仿真结果) 5、 编程语言可用 51 汇编/51C。 6、 焊接、调试、做出实物(也可制作 PCB) 7、 调试,误差分析,并补充到设计报告中。 二、方案设计:
D
1 0 1 1 1 1 0 5EH
A1H
E
1 1 1 1 0 0 1 79H
86H
F
1 1 1 0 0 0 1 71H
8EH
(4) 单片机的选择
根据初步设计方案的分析,设计这样一个简单的应用系 统,可以选择带有 EPROM 的单片机,应用程序直接存储 在片内,不用在外部扩展程序存储器,电路可以简化。 本系统选用 AT89C51 单片机。该芯片的功能与 MCS-51 系列单片机完全兼容。
INIT: CLR 00H MOV P3,#0FFH MOV P2,#00H MOV P0,#3FH MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0F0H SETB EA SETB ET0 SETB TR0 MOV DPTR,#TAB MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H RET ;/////////////显示子程序
仿真图:
是
秒位增 1
增到 60?
是
分位增 1
增到 100?
电子表实验报告
电子表实验报告电子表实验报告引言:电子表是一种常见的电子设备,广泛应用于日常生活中。
通过对电子表的实验研究,可以更好地理解其工作原理和结构,进一步提升对电子技术的理解和应用能力。
本实验报告旨在介绍电子表的基本原理、实验过程以及实验结果的分析和总结。
一、实验目的本次实验的主要目的是掌握电子表的工作原理,了解其基本结构和电路组成。
通过实际操作,培养学生的动手能力和实验观察能力,加深对电子技术的理解。
二、实验材料和仪器1. 电子表主板2. 数码管3. 按键开关4. 电源5. 连接线等三、实验步骤1. 将电子表主板与数码管、按键开关等连接好,确保电路连接正确。
2. 接通电源,观察数码管上显示的数字。
3. 按下按键开关,观察数码管上数字的变化。
4. 反复操作按键开关,观察数码管的显示效果。
四、实验原理电子表的主要原理是通过数码管来显示时间或其他信息。
数码管由多个发光二极管组成,每个发光二极管对应一个数字或符号。
电子表通过控制不同的发光二极管点亮或熄灭,从而显示出不同的数字或符号。
在本次实验中,按键开关的作用是改变电子表的显示模式。
通过按下不同的按键,可以切换显示时间、日期等不同的信息。
电子表主板中的电路会根据按键的信号进行相应的处理,控制数码管的显示。
五、实验结果与分析通过实验操作,我们可以观察到数码管上显示的数字会随着按键的改变而变化。
当按下不同的按键时,数码管上会显示不同的数字或符号。
这表明电子表的电路在接收到按键信号后,能够正确地控制数码管的显示。
实验结果的分析表明,电子表的工作是通过按键开关来控制的。
当我们按下不同的按键时,电子表主板会接收到不同的信号,然后根据这些信号来改变数码管的显示。
这种按键控制的方式使得电子表具有了更多的功能和灵活性。
六、实验总结通过本次实验,我们对电子表的工作原理和结构有了更深入的了解。
电子表的主要原理是通过数码管来显示信息,而按键开关的作用是改变电子表的显示模式。
实验结果的分析表明,电子表的工作是通过按键开关来控制的,这种方式使得电子表具有了更多的功能和灵活性。
跑表-《现代电子技术综合实验》实验报告
电子科技大学《现代电子技术综合实验》实验报告实验题目基于FPGA的数字跑表设计姓名xxx学号xx学院通信与信息工程学院专业通信工程指导老师陈学英指标1、跑表精度为0.01秒2、跑表计时范围为:1小时3、设置开始计时/停止计时、复位两个按钮4、显示工作方式:用六位BCD 七段数码管显示读数。
显示格式:扩展功能:按键消抖选手分时显示要求(1) 设计出符合设计要求的解决方案(2) 设计出单元电路(3) 利用EDA 软件对各单元电路及整体电路进 行仿真(4) 在开发板上实现设计(5) 撰写设计报告分 秒 0.01秒设计方框图单元电路划分计数器分频器使能控制器(开关,复位等以设置到计数器中,没有单独设计模块,特此说明下)扫描显示控制器各单元电路设计计数器程序中本应该采用写一个六进制和十进制的计数器,然后采用画图的方法实现总计数器的设计(即采用两个六进制计数器和四个十进制计数器),本实验中采用了直接对总的计数器进行总体描述来实现(因为编写相对简单,不易处错误)。
用了一个特别长的一大串if内嵌套if进行处理。
同时,里面直接写了开始和复位的功能,相当于把使能模块并入其中。
削抖原理在按键按下一次时会有如下的毛刺信号,这个毛刺信号持续时间虽然只有1-3ms,但是这对于硬件来说,还是很长的,最关键的是,会产生很多个下降沿和电平触发。
所以必须对其进行处理,否则在按键按下一次后,run/stop 会反转多次。
消抖方法分为硬件消抖和软件延时消抖。
在FPGA 中可以定义三个D 触发器,进行硬件3ms 消抖(时间可以根据实际情况而定)。
代码如下:module myroad(i nput clk100,//100hz时钟input clk1000,//1000hz时钟input reset,//复位键input key,//开始停止按键output reg [3:0] num0,//跑表的最低位output reg [3:0] num1,//跑表的第2位output reg [3:0] num2,//跑表的最3位output reg [3:0] num3,//跑表的最4位output reg [3:0] num4,//跑表的最5位output reg [3:0] num5//跑表的最6位);reg keyout,run;//key的衍生内部信号reg clr,dout1,dout2,dout3,do1,do2,do3;//reset的内部衍生信号,以及6个消抖的内部变量initial beginnum0<=0;num1<=0;num2<=0;num3<=0;num4<=0;num5<=0;run<=1;clr<=1;dout1<=1;dout2<=1;dout3<=1;do1<=1;do2<= 1;do3<=1;keyout<=1;End//赋初值,居然是被允许的,还是ISE比quarters要宽松一些。
数字跑表实验设计
数字跑表 设计报告设计任务:在掌握了VHDL 硬件编程语言和了解了基本的FPGA 设计步骤后,设计出一个符合设计指标的数字跑表,并下载到实验板上通过验证。
设计指标:1、跑表精度为0.01秒2、跑表计时范围为:1小时3、设置开始计时/停止计时、复位两个按钮4、显示工作方式:用六位BCD 七段数码管显示读数。
显示格式:设计步骤:(1) 设计出符合设计要求的解决方案。
(2) 设计出单元电路。
(3) 利用EDA 软件对各单元电路及整体电路进行仿真。
(4) 利用EDA 软件在ELB 电子课程设计实验箱上实现设计。
(5) 撰写设计报告。
设计思路:首先,分析一个完整的数字跑表的具有哪些功能:1、计时功能 2、相应的控制按钮 3、显示计数结果的功能模块;接下来就开始考虑如何应用电路实现上述的三个模块: 1、计时模块应包括稳定、准确的时钟输入和计数模块,考虑到设计指标要求跑表精度为0.01秒,那么计数脉冲的时钟输入就应该是频率为100HZ 的脉冲,而实验板上提供的晶振是32MHZ ,所以先要设计一个320000分频器,分频器的输出才可作计数器的输入;其次计数模块设计应综合考虑跑表的计时范围(1小时)和显示输出(6位输出),6位输出中有两位是六进制输出,其余四位是十进制输出,所以可通过设计4个模10计数器和2个模6分 秒 0.01秒计数器来实现,其中较低位的进位输出就是高位的计数输入端。
2、根据设计指标的要求,控制模块应包括开始计时/停止计时、复位两个按钮,即电路设计经常用到的史能端和清零端,这两个控制端口直接接到计数器的清零和史能端即可实现、复位、开始计时/停止计时;但是外围史能输入需要经过史能转换电路后,才可变为计数器可用的史能控制信号。
3、显示计数结果的模块实现较为简单,只需将六位计数结果通过七段译码电路接到输出即可点亮数码管,无需时序控制,直接用组合逻辑电路就可以实现。
数码管显示可以采用扫描显示,用一个频率1KHz的信号扫描一个多路选择器,实现对六位已经锁存的计数结果的扫描输出。
现代电子技术综合实验报告
现代电子技术综合实验实验报告数字跑表综合设计数字跑表综合设计摘要:本文基于VHDL语言进行了带有计时、存贮功能数字跑表的设计。
文章对组成系统的各模块进行了详细的阐述,完成了验证效果的仿真实验,并成功在XILINX 学生EDA 实验开发平台上运行跑表。
关键词:VHDL,数字跑表第1章引言1.1 项目研究现状数字跑表作为一个简易的数字集成电路的应用,在很多地方起到非常重要的作用。
例如:我们上体育用的记时停表,实验用的电子停表以及我们自己用电子表就是它的应用的典型例子。
数字跑表使用简单,携带方便,广泛应用与各个领域中。
1.2 本文研究的主要内容及关键技术本文将研究以FPGA为基础的数字跑表的制作,其主要内容包括介绍,系统框架设计、各模块设计原理及方案、仿真实验等。
研究领域涉及数字电路设计、VHDL程序设计、ISE硬件设计平台的使用,Spartan-3A芯片的具体使用。
第2章实验项目方案设计2.1 项目设计要求本文设计的数字跑表将包括以下内容:基础功能:1、跑表精度为0.01秒;2、跑表计时范围为:1小时;3、设置开始计时/停止计时、复位两个按钮;4、显示工作方式:用六位BCD七段数码管显示读数。
扩展功能:1、按键消抖;2、分别存储三组及以上选手时间并分时回放显示。
2.2 项目系统设计方案及模块组成本文设计的数字跑表的系统框架如下:现在将对各部分进行说明。
分频器:将开发板中晶体振动器产生的高频信号分频为计数和显示需要的低频信号。
消抖器:消除实际按钮器件在使用时的抖动信号,保证输入信号能正常进入系统。
控制器:根据按键输入信号的不同,产生不同的控制信号,实现不同功能。
计数器:基于一个6段同步计数器产生分、秒、毫秒的计数数据,根据系统状态需要暂停计数、清空数据。
储存器:储存当前计数器的数据,在特定的控制信号下读取和输出数据。
信号选择器:根据特定的控制信号选择计数器的数据或存储器的数据输出。
显示器:将输入的分、秒、毫秒数据显示在数码管上。
跑表报告
基于FPGA的数字跑表设计摘要数字跑表是人们日常生活中比较常见的计时工具,应用也比较广泛。
本课题的主要内容是用FPGA为核心,配备7段数码显示模块等功能模块设计一款数字跑表,要求用数码管可以显示百分秒、秒、分,具有暂停\启动\复位功能以及锁存功能。
本文的核心主要有硬件模块编程,软件仿真以及下载实现三个大的方面。
硬件模块编程和软件仿真主要包括分频器、六进制和十进制计数器、译码器、按键消抖电路、控制电路、数据选择器、锁存器等几部分。
软件编程用VHDL语言来实现。
程序编译可用ISE软件实现,电路功能仿真用ISM软件实现。
第1章引言1.1 项目研究现状随着人们各方面素质的提高,不仅科学领域得到了飞速的发展,在当今世界,体育领域也在飞快的发展,运动员们都朝着“更快,更远,更强”的目标努力,特别是一些短跑比赛,要求计时器要足够的精确。
这就出现了本课题研究的电子跑表,用以测量完成某项体育运动所需时间,有秒表、电子计时仪和终点摄像系统等。
用于径赛、游泳、自行车、赛马、滑雪和划船等项目中。
这类钟表要求计时精确,一般分辨力为百分之一秒。
以石英振荡器为时间基准的计时仪可分辨出千分之一秒,并可将数据储存、打印。
电子跑表有起动、停止、复位以及锁存的功能,有的还增设有侧按钮,表的最小精确值为0.01秒。
1.2 本文研究的主要内容及关键技术本文研究的主要内容是在能掌握使用VHDL语言的设计思想,熟悉ISE软件的使用以及了解XILINX学生EDA实验板的基础上,设计出一具有如下指标的数字跑表:1、跑表精度为0.01秒;2、跑表计时范围为:1小时;3、具有开始计时/停止计时、复位、锁存功能;4、显示工作方式:用六位BCD七段数码管显示读数。
其中,分频器的实现原理,计数器的级联,使能控制,显示控制以及锁存原理是本文研究的重点,也是构成一个具有实用价值的数字跑步所必不可少的关键技术,本文将对这些关键技术进行详细分析。
第2章实验项目方案设计2.1 项目系统设计原理石英振荡器产生48Mhz的时钟频率送入分频器,产生1kHz与100Hz的信号,1kHz的信号为扫描显示控制模块的时钟信号,100Hz的信号为计数模块的时钟输入。
电子速度表-课设实验报告
目录一、设计指标与技术要求----------------------------------------------------2设计题目-----------------------------------------------------------------2设计任务----------------------------------------------------------------2.设计参考方案------------------------------------------------------------2设计要求----------------------------------------------------------------3发挥部分----------------------------------------------------------------3参考元器件--------------------------------------------------------------3<二、设计方案及原理--------------------------------------------------------------------------------------4速度脉冲检测电路--------------------------------------------------------5门控电路----------------------------------------------------------------6计数译码显示电路--------------------------------------------------------8仿真电路---------------------------------------------------------------13\TTL和COMS电路比较-----------------------------------------------------14三、实验与调试------------------------------------------------------------16实验器材---------------------------------------------------------------16数据计算---------------------------------------------------------------18}电路调试及故障排查-----------------------------------------------------18四、心得体会---------------------------------------------------------------21五、其它-----------------------------------------------------------22…参考书目------------------------------------------------------------------22参考网站------------------------------------------------------------------22附录1 ----------------------------------------------------------------------23附录2 ----------------------------------------------------------------------24、一、设计指标与技术要求—设计题目:电子速度表(自行车、电动车、摩托车用)设计任务:根据车轮周长、辐条数和车轮转数等参数设计、调试完成一个进行车用速度表,要求具有根据不同车型随时进行调整的功能,以保证速度表显示的正确。
跑步实验成果报告表格
跑步实验成果报告表格实验目的:探究不同跑步速度对身体耗氧量的影响。
实验设备与材料:1. 心率监测仪2. 血氧饱和度监测仪3. 测试使用的跑步机4. 实验参与者5. 计时器实验步骤:1. 将跑步机设置为不同速度档位,分别记为A、B、C。
2. 为每位参与者提供心率监测仪和血氧饱和度监测仪,确保能够实时监测参与者的心率和血氧水平。
3. 让参与者逐个进行跑步实验,他们可以根据自己的舒适程度选择使用的速度档位。
每次跑步时间均为10分钟。
4. 在实验进行期间,记录每位参与者的心率和血氧水平。
实验结果:实验参与者1:速度档位: A跑步时长: 10分钟心率(bpm): 160血氧饱和度(%): 95实验参与者2:速度档位: B跑步时长: 10分钟心率(bpm): 150血氧饱和度(%): 96实验参与者3:速度档位: C跑步时长: 10分钟心率(bpm): 140血氧饱和度(%): 97实验分析与讨论:根据实验结果,我们可以得出以下结论:1. 较高速度档位的跑步速度会导致心率增加,说明身体需要更多的氧气供应来满足运动需要。
2. 血氧饱和度随着跑步速度的增加而略微增加,这可能是由于更快的呼吸速度和更强的肺部换气能力导致的。
3. 跑步速度与身体的耗氧量之间存在一定的正相关关系,即速度越高,身体所需的氧气量越大。
总结:本实验的目的是研究不同的跑步速度对身体耗氧量的影响。
通过测试实验参与者的心率和血氧水平,我们发现了速度和身体耗氧量之间的正相关关系。
这一研究结果对于制定科学的跑步训练计划和提高跑步效果具有重要意义。
单片机电子跑表课程设计
单片机电子跑表课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其编程方法。
2. 学生能掌握电子跑表的工作原理,了解各部分功能及其相互关系。
3. 学生能运用所学知识设计并实现一个简单的单片机电子跑表。
技能目标:1. 学生能够运用C语言或汇编语言进行单片机编程,实现电子跑表的基本功能。
2. 学生能够运用电路设计软件绘制电子跑表的原理图和PCB图。
3. 学生能够运用调试工具对单片机程序进行调试,解决常见问题。
情感态度价值观目标:1. 学生培养对电子制作的兴趣,激发创新意识和动手能力。
2. 学生在团队协作中,学会沟通与交流,培养合作精神。
3. 学生能够关注单片机技术在生活中的应用,认识到科技发展对生活的影响。
课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,培养学生动手能力。
学生特点:学生具备一定的电子基础知识,对单片机有一定了解,但编程和实际操作经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生解决问题的能力。
在教学过程中,关注学生的个体差异,提供个性化指导。
通过课程学习,使学生能够独立完成单片机电子跑表的设计与制作。
二、教学内容1. 单片机原理与编程基础- 单片机结构及工作原理- C语言或汇编语言基础- 单片机编程环境搭建2. 电子跑表原理与设计- 电子跑表功能需求分析- 电路设计原理及元件选择- 原理图和PCB图绘制方法3. 单片机与外围电路接口技术- 按键输入接口设计- 数码管显示接口设计- 定时器/计数器应用4. 程序设计与调试- 程序框架设计- 功能模块编写- 程序调试与优化5. 实践操作- 电子跑表组装与调试- 故障分析与排除- 课程项目展示与评价教学内容安排和进度:第一周:单片机原理与编程基础第二周:电子跑表原理与设计第三周:单片机与外围电路接口技术第四周:程序设计与调试第五周:实践操作(含课程项目展示与评价)教学内容与教材关联性:本教学内容紧密结合教材,按照教材章节逐步展开,使学生能够循序渐进地掌握单片机电子跑表的设计与制作。
电子跑表课程设计
电子跑表课程设计一、课程目标知识目标:1. 学生能理解电子跑表的基本结构、工作原理及使用方法。
2. 学生能掌握电子跑表计时、数据显示等相关知识点。
3. 学生了解电子跑表在体育运动、科研实验等领域的应用。
技能目标:1. 学生能够熟练操作电子跑表,进行简单的计时和数据记录。
2. 学生能够运用电子跑表进行实际场景的测量,如短跑、长跑等运动项目的计时。
3. 学生能够分析电子跑表测量数据,提高实验结果的准确性。
情感态度价值观目标:1. 学生培养对电子跑表及计时测量工作的兴趣,增强探索精神。
2. 学生通过实际操作,培养团队协作、严谨求实的科学态度。
3. 学生认识到电子跑表在现实生活中的重要作用,增强对科技创新的认识。
课程性质:本课程为实践性课程,结合理论知识与实际操作,让学生在动手实践中掌握电子跑表的使用。
学生特点:本年级学生具备一定的物理知识和动手能力,对新鲜事物充满好奇,喜欢探索和实践。
教学要求:教师应注重理论与实践相结合,关注学生个体差异,提供充分的时间和机会让学生动手操作,提高学生的实践能力和创新能力。
通过课程目标的实现,培养学生具备实际应用电子跑表的能力,为今后的学习和工作打下基础。
二、教学内容1. 电子跑表的基本原理:讲解电子跑表的工作原理,包括内部电路、传感器、计时器等组成部分,对应教材第3章“电子计时器的原理与应用”。
2. 电子跑表的操作方法:详细介绍电子跑表的按键功能、操作步骤和注意事项,对应教材第4章“电子跑表的使用与维护”。
3. 实践操作:组织学生进行电子跑表的实践操作,包括短跑、长跑等运动项目的计时,以及数据分析,对应教材第5章“电子跑表在实际运动中的运用”。
4. 教学内容的安排与进度:- 课时1:电子跑表的基本原理及结构介绍;- 课时2:电子跑表的操作方法和注意事项讲解;- 课时3:学生进行电子跑表实践操作,教师指导;- 课时4:学生分组进行实际运动项目计时,分析数据,总结经验。
教学内容注重科学性和系统性,以教材为依据,结合课程目标,制定详细的教学大纲。
最新数字跑表实验报告(电子科技大学)
数字跑表设计报告学院:物理电子学院学号:2014040206029姓名:刘明哲班级:电子六班一系统总体设计设计要求设计一个数字秒表,有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,系统主要由显示译码器、分频器、十进制计数器和六进制计数器组成。
整个秒表还需有一个启动/停止信号和一个复位信号,以便秒表能随意停止及启动。
要求:(1)秒表计时范围为:1小时;(2)秒表精度为0.01秒;(3)具有开始计时、停止计时控制功能,且开始计时、停止计时为一个复用按键;(4)在正常计时显示过程中,能够在存储按键作用下存储某一计时时间;存储的时间组数为确定值或1至任意值;(5)在读取按键作用下存储的时间能够回放显示;回放显示时,秒表计时可停止或在后台正常进行;回放显示可手动或自动依次显示;(6)具有复位功能;(7)用六位数码管显示时间读数。
系统工作原理数字跑表通过系统将48MHz时钟进行分频得到100Hz的秒表时钟,之后通过对时钟信号进行计数得到具体的跑表显示数值,跑表数值作为显示单元电路的输入,显示单元控制数码管动态扫描显示计数因此,系统主要划分为:分频器,计数器,显示控制,开始\停在使能控制,清零控制,存储读取功能,按键消抖。
原理图如下:二单元电路设计1.分频器设计思路:输入信号48MHz,将其48000分频可得1KHz信号,再将1KHz信号10分频可得100Hz信号。
1KHz用于显示LED扫描,100Hz用于计数器时钟。
源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity pp isPORT(CLKIN:IN STD_LOGIC;CLKOUT1K:OUT STD_LOGIC;CLKOUT100:OUT STD_LOGIC);end ENTITY pp;architecture Behavioral of pp isSIGNAL CNTER0:INTEGER RANGE 0 TO 23999 :=0; SIGNAL CNTER1:INTEGER RANGE 0 TO 4 :=0;SIGNAL CLKOUT1K_TMP,CLKOUT100_TMP: STD_LOGIC:='0'; beginPROCESS(CLKIN) ISBEGINIF CLKIN'EVENT AND CLKIN ='1' THENIF CNTER0=23999 THENCNTER0 <=0;CLKOUT1K_TMP <= NOT CLKOUT1K_TMP;ELSECNTER0 <= CNTER0 + 1 ;END IF;END IF;END PROCESS;CLKOUT1K <= CLKOUT1K_TMP;PROCESS(CLKOUT1K_TMP) ISBEGINIF CLKOUT1K_TMP'EVENT AND CLKOUT1K_TMP='1' THEN IF CNTER1 =4 THENCNTER1 <=0;CLKOUT100_TMP <= NOT CLKOUT100_TMP;ELSE CNTER1 <= CNTER1 + 1;END IF;END IF;END PROCESS;CLKOUT100<=CLKOUT100_TMP;end Behavioral;2.计数器以及清零装置实验需要用到2个六进制计数器和4个十进制计数器,并且将六个计数器级联十进制计数器的源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity COUNTER isPORT(RST,CLK:IN STD_LOGIC;CARRY_IN:IN STD_LOGIC;CARRY_OUT:OUT STD_LOGIC;COUNT_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end COUNTER;architecture Behavioral of COUNTER isSIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";beginPROCESS(RST,CLK)BEGINIF RST='1' THENCOUNT<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF CARRY_IN='1' THENIF COUNT< "1001" THENCOUNT <= COUNT + 1;ELSECOUNT<="0000";END IF;ELSE NULL;END IF;END IF;END PROCESS;COUNT_OUT<=COUNT;CARRY_OUT<='1' WHEN CARRY_IN='1' AND COUNT="1001"ELSE'0'; end Behavioral;仿真结果:六进制计数器的源程序为:library IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity COUNTER2 isPORT(RST,CLK:IN STD_LOGIC;CARRY_IN:IN STD_LOGIC;CARRY_OUT:OUT STD_LOGIC;COUNT_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); end COUNTER2;architecture Behavioral of COUNTER2 isSIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; beginPROCESS(RST,CLK)BEGINIF RST='1' THENCOUNT<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF CARRY_IN='1' THENIF COUNT< "0101" THENCOUNT <= COUNT + 1;ELSECOUNT<="0000";END IF;ELSE NULL;END IF;END IF;END PROCESS;COUNT_OUT<=COUNT;CARRY_OUT<='1' WHEN CARRY_IN='1' AND COUNT="0101"ELSE'0';end Behavioral;仿真结果:级联的源程序如下:entity COUNTER6 isPORT(CSIGNAL:IN STD_LOGIC;CLEAR: IN STD_LOGIC;COUNT_EN:IN STD_LOGIC;RESULT1 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);RESULT2 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);RESULT3 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);RESULT4 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);RESULT5 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);RESULT6 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end COUNTER6;architecture Behavioral of COUNTER6 isCOMPONENT COUNTER ISPORT(RST,CLK: IN STD_LOGIC;CARRY_IN: IN STD_LOGIC;CARRY_OUT: OUT STD_LOGIC;COUNT_OUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT COUNTER;COMPONENT COUNTER2 ISPORT(RST,CLK: IN STD_LOGIC;CARRY_IN: IN STD_LOGIC;CARRY_OUT: OUT STD_LOGIC;COUNT_OUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT COUNTER2;SIGNAL CARRY1,CARRY2,CARRY3,CARRY4,CARRY5,CARRY6:STD_LOGIC;beginU1:COUNTER PORT MAP(RST => CLEAR,CLK => CSIGNAL,CARRY_IN => COUNT_EN,CARRY_OUT => CARRY1,COUNT_OUT => RESULT1);U2:COUNTER PORT MAP(RST => CLEAR,CLK => CSIGNAL,CARRY_IN => CARRY1,CARRY_OUT => CARRY2,COUNT_OUT => RESULT2);U3:COUNTER PORT MAP(RST => CLEAR,CLK => CSIGNAL,CARRY_IN => CARRY2,CARRY_OUT => CARRY3,COUNT_OUT => RESULT3);U4:COUNTER2 PORT MAP(RST => CLEAR,CLK => CSIGNAL,CARRY_IN => CARRY3,CARRY_OUT => CARRY4,COUNT_OUT => RESULT4);U5:COUNTER PORT MAP(RST => CLEAR,CLK => CSIGNAL,CARRY_IN => CARRY4,CARRY_OUT => CARRY5,COUNT_OUT => RESULT5);U6:COUNTER2 PORT MAP(RST => CLEAR,CLK => CSIGNAL,CARRY_IN => CARRY5,CARRY_OUT => CARRY6,COUNT_OUT => RESULT6);end Behavioral;3.使能控制按一下使能控制键,跑表开始计时,再次按下,跑表暂停计时,且计数器使能端高电平有效。
电子实验数字跑表
电子科技大学基于FPGA的数字系统设计——数字跑表的设计学生姓名:学号:指导教师:摘要本文利用XILINX-ISE开发软件和XILINX EDA教学实验开发板实现数字跑表的开始、暂停以及复位等功能。
ISE工程利用VHDL语言编写,单模块包含时钟分频进程、始能及清零进程、时钟数据产生进程、位码产生进程和显示进程;分模块设计包含时钟分频模块、控制模块、计数器模块、显示模块。
计时区间00’00’’00到59’59’’99。
课余设计的单模块源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity paobiao isPort ( clkin : in STD_LOGIC;enable : in STD_LOGIC;clear : in STD_LOGIC;seg : out STD_LOGIC_VECTOR (7 downto 0);wei : out STD_LOGIC_VECTOR (2 downto 0);enout : out STD_LOGIC);end paobiao;architecture Behavioral of paobiao issignal cnt100: integer range 1 to 240000;signal cnt1k: integer range 1 to 24000;signal clk100: std_logic:='0';signal clk1k : std_logic:='0';signal en: std_logic:='0';signal d1: integer range 0 to 5:=0;signal d2: integer range 0 to 9:=0;signal d3: integer range 0 to 5:=0;signal d4: integer range 0 to 9:=0;signal d5: integer range 0 to 9:=0;signal d6: integer range 0 to 9:=0;signal num: integer range 1 to 6:=1;beginenout<='0';process(clkin)beginif clkin'event and clkin='1' thenif cnt100=240000 thencnt100<=1;clk100<=not clk100;elsecnt100<=cnt100+1;end if;if cnt1k=24000 thencnt1k<=1;clk1k<=not clk1k;elsecnt1k<=cnt1k+1;end if;end if;end process;process(enable,clear)beginif clear='0' thenen<='0';elseif enable'event and enable='1' thenen<=not en;end if;end if;end process;process(clear,d1,d2,d3,d4,d5,d6)beginif clear='0' thend1<=0;d2<=0;d3<=0;d4<=0;d5<=0;d6<=0;-- en<=0;elseif en='1' and clk100'event and clk100='1' then if d6=9 thend6<=0;if d5=9 thend5<=0;if d4=9 thend4<=0;if d3=5 thend3<=0;if d2=9 thend2<=0;if d1=5 thend1<=0;elsed1<=d1+1;end if;elsed2<=d2+1;end if;elsed3<=d3+1;end if;elsed4<=d4+1;end if;elsed5<=d5+1;end if;elsed6<=d6+1;end if;end if;end if;end process;process(num)beginif clk1k'event and clk1k='1' thenif num=6 thennum<=1;elsenum<=num+1;end if;end if;end process;process(num)variable data: integer range 0 to 9;begincase num iswhen 1 => wei<="111";data:=d1;when 2 => wei<="110";data:=d2;when 3 => wei<="100";data:=d3;when 4 => wei<="011";data:=d4;when 5 => wei<="001";data:=d5;when 6 => wei<="000";data:=d6;end case;case data iswhen 0 => seg<="00000011";when 1 => seg<="10011111";when 2 => seg<="00100101";when 3 => seg<="00001101";when 4 => seg<="10011001";when 5 => seg<="01001001";when 6 => seg<="01000001";when 7 => seg<="00011111";when 8 => seg<="00000001";when 9 => seg<="00001001";end case;end process;end Behavioral;管脚分配NET "clkin" LOC = T8;NET "enout" LOC = D7;NET "seg<0>" LOC = C11;NET "seg<1>" LOC = A11;NET "seg<2>" LOC = B12;NET "seg<3>" LOC = A12;NET "seg<4>" LOC = C12;NET "seg<5>" LOC = C13;NET "seg<6>" LOC = A13;NET "seg<7>" LOC = B14;NET "wei<0>" LOC = F8;NET "wei<1>" LOC = D8;NET "wei<2>" LOC = E7;NET "clear" LOC = E4;NET "enable" LOC = G6;课时设计一、系统总体设计指标:1、跑表精度为0.01秒2、跑表计时范围为:1小时3、设置开始计时/停止计时、复位两个按钮4、显示工作方式:用六位BCD七段数码管显示读数。
数字跑表实验报告
数字跑表实验报告实验目的本次实验的目的是通过使用数字跑表来计时,观察和记录不同跑步速度下所用的时间,并分析结果,以便更好地了解跑步速度与所需时间之间的关系。
实验设备和材料•数字跑表•计时器•记事本和笔实验步骤步骤一:准备实验设备和材料在实验开始之前,我们需要确保所有实验设备和材料都准备好。
首先,确保数字跑表的电池已经装好并且能正常运行。
检查计时器是否正常工作,并确保记事本和笔可用以记录实验结果。
步骤二:设定实验参数在进行实验之前,我们需要设定实验参数。
首先,确定跑步的起点和终点,并测量两点之间的距离。
然后,选择不同的跑步速度,例如慢跑、中速跑和快跑。
最后,确定每个速度下的跑步时间,例如跑步5分钟或10分钟。
步骤三:进行实验在完成设定实验参数之后,我们可以开始实验了。
首先,将数字跑表复位,确保计时器显示为零。
然后,根据设定的跑步速度进行跑步,并同时启动计时器。
在到达终点后,立即停止计时器,并记录所用的时间。
步骤四:分析实验结果完成实验后,我们需要分析实验结果以得出结论。
首先,将记录的时间转换为分钟或秒。
然后,根据跑步速度和所用时间的关系,绘制速度与时间之间的关系图。
通过观察图表,我们可以看到跑步速度与所需时间之间的趋势和规律。
步骤五:总结实验结果最后,根据分析的实验结果,我们可以总结实验的结论。
根据观察到的趋势和规律,我们可以得出跑步速度越快,所需时间越短的结论。
此外,我们还可以根据实验结果提出一些改进的建议,例如如何提高跑步速度或减少所需时间。
实验注意事项•在进行实验时,确保跑道的条件和环境一致,以减少外界因素对实验结果的影响。
•在进行不同速度的跑步时,确保每次跑步的起点和终点位置相同。
•在记录实验结果时,要准确记录所用的时间,并避免人为误差。
结论通过本次实验,我们使用数字跑表进行了跑步计时实验,并观察和记录了不同跑步速度下所用的时间。
通过分析实验结果,我们得出了跑步速度与所需时间之间的关系。
实验结果表明,跑步速度越快,所需时间越短。
数字跑表实验报告
数字跑表实验报告数字跑表实验报告一、引言数字跑表是一种用于测量时间的仪器,广泛应用于各个领域,包括运动训练、科学研究等。
本实验旨在通过使用数字跑表,探究其测量精度和使用方法,并对其优缺点进行评估。
二、实验步骤1. 实验准备在实验开始前,我们首先确认数字跑表的电池是否充足,并检查其屏幕是否清晰可见。
同时,我们还准备了一个标准的计时器作为对照组,以便比较两者的测量结果。
2. 测量准确性为了评估数字跑表的测量准确性,我们进行了多组实验。
首先,我们使用数字跑表测量了一个已知时间长度的事件,例如一个钟摆的周期。
然后,我们将数字跑表的测量结果与标准计时器的结果进行比较,计算它们之间的误差。
3. 使用方法在实验中,我们还研究了数字跑表的使用方法。
我们通过阅读说明书和观察其他人的实验过程,学习如何正确地启动和停止数字跑表,并掌握其它功能,如计次和计时。
4. 优缺点评估在实验结束后,我们对数字跑表的优缺点进行了评估。
其中,数字跑表的优点包括测量精度高、操作简便、功能多样等。
然而,它也存在一些缺点,如对电池的依赖性、容易受到外界干扰等。
三、实验结果通过多组实验,我们得出了以下结论:1. 数字跑表的测量准确性较高,与标准计时器的误差在可接受范围内。
2. 使用数字跑表的方法相对简单,只需按下启动和停止按钮即可完成计时操作。
计次和计时功能也易于掌握。
3. 数字跑表的优点包括测量精度高、操作简便、功能多样等。
这使得它在运动训练、科学研究等领域得到广泛应用。
4. 然而,数字跑表也存在一些缺点。
首先,它对电池的依赖性较高,电池电量不足时会影响正常使用。
其次,数字跑表容易受到外界干扰,如电磁波等,可能导致测量结果的误差。
四、讨论与改进在实验过程中,我们也发现了一些问题,并提出了改进的建议:1. 电池寿命:为了减少对电池的依赖性,我们建议增加数字跑表的电池容量,或者提供可充电电池选项。
2. 抗干扰能力:为了提高数字跑表的抗干扰能力,我们建议在设计中加入屏蔽措施,以减少外界干扰对测量结果的影响。
数字跑表实验报告
成绩指导教师日期2011-4-8 XXX 大学实验报告实验课程名称:电子系统EDA院系名称:信息学院专业名称:通信工程实验项目名称:实验二数字跑表班级:XXX 学号:XXXX报告人:XXXXX实验二数字跑表一、实验目的:1、学会利用quartusⅡ的宏单元和所学的数字电路的知识,搭建复杂一点的数字电路或系统;2、学会使用EDA实验箱,下载验证所设计电路。
二、实验原理:跑表的原理图及简要说明(分层次进行说明,如顶层设计和底层设计分开说明)图一:数字跑表输入输出示意图输入有三个信号,CLR=1时清零,CLR=0时跑表从零开始计数;时钟信号CLK,周期为0.01秒;当PAUSE=0时跑表暂停计数,PAUSE=1时跑表从当前值继续计数。
输出分别为分钟、秒钟、百分秒的BCD码,各用数码管显示。
三、原理图图二:总体原理图A(左半部分)图三:总体原理图B(右半部分)原理图主要由3个计数器各自连接其译码器构成。
其中两个模60的分别输出分钟、秒钟,还有一个模100的输出百分秒。
全原理图采用串行接法,外加一个总体清零端,另一个时钟信号使能端作为PAUSE信号输入。
这个原理图缺陷上还没有接分频器。
模60计数器采用串行进位,部分异步清零接法。
图五:模100计数器模100计数器采用串行进位,不需要清零接法。
四、设计的仿真结果以下均采用功能仿真。
图六:数字跑表波形仿真A(分级图)图七:数字跑表波形仿真B(秒级图)图八:数字跑表波形仿真C(百分秒级图)五、设计心得1、掌握了计数器的设计方法后,只要将计数级联或者是并联就可以实现跑表的计数。
2、如果要显示计数数字,必须接上显示译码器和数码管。
3、一个与门可以实现暂停功能。
4、特别注意所选用的计数器芯片是同步清零还是异步清零,是同步置数还是异步置数,各自有对应的方法。
5、用参数化宏单元实现更简单。
6、分层设计使原理图更加简洁明了。
六、思考题1、什么是同步清零和异步清零?答:同步清零需要时钟沿的配合,当敏感信号为有效信号时还需要等待时钟沿的到来才能清零计数。
大学电工电子课程设计数字跑表设计
课程设计任务书学生姓名:专业班级:指导教师:邓坚李波工作单位:自动化学院题目: 数字跑表设计初始条件:1.运用所学的模拟电路和数字电路等知识;2.用到的元件:实验板、电源、连接导线、74系列芯片、555芯片或微处理器等。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.设计一个具有、‘分’、‘秒’、‘1/100秒’的十进制数字显示的计时器。
2.要有外部开关,控制计数器的直接清零、启动和暂停/连续计时功能;3.严格按照课程设计说明书要求撰写课程设计说明书。
时间安排:第1天下达课程设计任务书,根据任务书查找资料;第2~4天进行方案论证,软件模拟仿真并确定设计方案;第5天提交电路图,经审查后领取元器件;第6~8天组装电路并调试,检查错误并提出问题;第9~11天结果分析整理,撰写课程设计报告,验收调试结果;第12~14天补充完成课程设计报告和答辩。
指导教师签名: 2011年 6月26日系主任(或责任教师)签名: 2011年 6月26日目录引言 (1)1设计意义及要求 (2)1.1设计意义 (2)1.2设计要求 (2)2方案设计 (3)2.1设计思路 (3)2.2设计方案 (3)2.2.1设计方案一电路图 (3)2.2.2设计方案二电路图 (3)2.3方案比较 (4)图2-2 设计方案二 (5)3部分电路设计 (6)3.1脉冲输出电路 (6)3.2 74LS192计数电路 (7)4调试与检测 (10)4.1调试中故障及解决方案 (10)4.2调试与运行结果 (11)数字跑表的仿真操作步骤及使用说明 (13)结束语 (14)参考文献 (15)附录: (16)引言在当今随着各个领域的高科技快速发展,社会生产力的发展个社会信息化程度的提高,人们各方面综合素质的提高,世界更新换代的节奏与人们生活的步伐也越来越快,在这告诉发展的当今世界,时间对人们来说无疑是极其宝贵的,时间就是金钱。
课程设计--电子跑表
电子跑表的设计与实现一、设计内容:设计与实现用微机控制的电子跑表的功能。
二、设计要求:1、利用开发箱中的8255以及8254芯片完成功能。
用8254实现计时。
2、显示格式:分秒1/10秒3、定义PC机上的键盘或实验箱上的小键盘控制计时开始、停止和清零。
二、实验器材:PC机一台,实验箱一个三、实验结果1.显示格式:分、秒、1/10秒,用四个LED显示。
中间两个显示秒。
2.定义实验箱上几个开关控制计时开始、停止和清零。
三、实验流程图:8254接线图总线接口8255接线图MY8255_A EQU 0E460HMY8255_B EQU 0E461HMY8255_C EQU 0E462HMY8255_MODE EQU 0E463HMY8254CT0 EQU 0E440HMY8254MD EQU 0E443HSTACK1 SEGMENT STACKDW 64 DUP(?)STACK1 ENDSDATA SEGMENT ;数据段定义TABLE1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH BUFFER DB 6 DUP(0)count DW 0000HSE DB 00HSEC DB 00HMIN1 DB 00HSEC1 DB 00HMIN22 DB 00HMIN21 DB 00HSEC21 DB 00HSEC22 DB 00HSECOND DB 60HMINUTE DB 60HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV BX,OFFSET TABLE1MOV DI,OFFSET BUFFERMOV SI,OFFSET SECONDINIT8255: MOV AL,82H ;向8255写入控制字,PA,PC口作输出,PB口作输入MOV DX,MY8255_MODEOUT DX,ALINIT8254: MOV AL,34H ;8254采用通道0,方式2MOV DX,MY8254MD ;向8254写入控制字OUT DX,ALMOV AX,003CH ;写入计数初值MOV DX,MY8254CT0OUT DX,ALMOV AL,AHOUT DX,ALA3: MOV CX,0004HA4: call display1 ;该死循环用于循环监测PB口的输入,以便进行相应的跳转MOV DX,MY8255_BIN Al,DXCMP AL,01H ;START启动JZ A6CMP AL,02H ;RET复位JZ KEY15CMP AL,03H ;STOP停止JZ A5JMP A4A5: MOV AL,SECONDMOV DX,MY8255_AOUT DX,Aljmp a4A6: CALL DISPLAY1CMP AX,0FFHJZ A4LOOP A4;MOV AL,SECOND ;秒加1MOV AX,countADD AX,0001HMOV count,AXJNZ ND_HOUDAAND_HOU:CALL DISPLAY1JMP A3KEY15: CALL CLEARMOV SECOND,00Hmov minute,00hMOV COUNT,0000HMOV MINUTE,00HJMP a4EXIT1: RETDISPLAY1 PROC ;显示子程序PUSH DSPUSH AXPUSH BXPUSH DXMOV AX,DATAMOV DS,AXMOV AX,countMOV BL,10DIV BLMOV SEC,AHMOV SE,ALMOV AL,SEMOV AH,0MOV BL,60DIV BLMOV MIN1,ALMOV SEC1,AHMOV AL,MIN1MOV AH,0MOV BL,10DIV BLMOV MIN21,ALMOV MIN22,AHMOV AL,SEC1MOV AH,0MOV BL,10DIV BLMOV SEC21,ALMOV SEC22,AHYY: MOV DX,MY8255_C ;选中一个数码管MOV AL,0FEHOUT DX,ALMOV AL,MIN22MOV BX,OFFSET TABLE1XLATMOV DX,MY8255_A ;输出该数码管对应的显示码OUT DX,ALCALL DELLYMOV DX,MY8255_C ;选中一个数码管MOV AL,0FDHOUT DX,ALMOV AL,SEC21MOV BX,OFFSET TABLE1XLATMOV DX,MY8255_A ;输出该数码管对应的显示码OUT DX,ALCALL DELLYMOV DX,MY8255_C ;选中一个数码管MOV AL,0FBHOUT DX,ALMOV AL,SEC22MOV BX,OFFSET TABLE1XLATMOV DX,MY8255_A ;输出该数码管对应的显示码OUT DX,ALCALL DELLYMOV DX,MY8255_C ;选中一个数码管MOV AL,0F7HOUT DX,ALMOV AL,SECMOV BX,OFFSET TABLE1XLATMOV DX,MY8255_A ;输出该数码管对应的显示码OUT DX,ALPOP DXPOP BXPOP AXPOP DSCALL DELLYRETDISPLAY1 ENDPDELLY PROC ;延时子程序PUSH AXPUSH CXMOV CX , 002FHBB: MOV AX , 0FFFFHAA: DEC AXJNZ AALOOP BBPOP CXPOP AXRETDELLY ENDPCLEAR: PUSH AX ;清零复位MOV AL,3FHMOV BUFFER,ALMOV BUFFER+1,ALMOV BUFFER+2,ALMOV BUFFER+3,ALMOV BUFFER+4,ALMOV BUFFER+5,ALPOP AXRETCODE ENDSEND START六、实验结果:正常运行后,数码管显示全零,按动实验板上的启动键开始计时,四只数码管从高到低位分别显示分、秒、1/10秒。
实验五数字跑表的设计与实现
实验五数字跑表的设计与实现一.实验目的1.设计数字跑表,实现对单人的精确计时。
2. 设计数字跑表,实现对多人的精确计时。
二.实验内容1.数字跑表功能:计时精度为10ms,计时范围为59分59.99秒。
设置一下两种模式。
模式1:对单人计时,能实现暂停、显示及清零功能,并在数码管上实时显示;模式2:实现多人的同时计时,在数码管上实时显示,并能在数码管上回显出6个时间,可控制显示。
模式1中设置了两个按键,即启动/暂停键和清零键,由其产生计数允许/保持和清零信号。
启动/暂停键是多用途按键,在“按下、松开、再按下、松开”的过程中,所起的作用分别是“计数、暂停、置数(置到59分59秒)、继续计数”。
状态转换图如下图1示。
图1模式2也设置了两个按键,分别为清零键RST和取时键K2,产生清零信号和实时中断取时信号。
取时信号能够对当前时间进行显示中断却不会中断后台的继续计时,取时键在“按下、松开”的一个过程中实现对时间的实时显示。
也就是说K2每按一次实现对一个人的计时,计时的结果通过调用RAM来依次保存,当RAM的WREN信号为高电平时,写入数据,当WREN信号为低电平时,读出数据。
状态转换图如图2所示。
图中s0和s3记录实时时间,而s1和s2保持。
状态转换表如表1所示。
图2表1三.实验步骤1. 建立工程2. 建立顶层文件3. 建立引脚约束文件4. 硬件下载四.实验结论(一)模式1:对单人计数,能实现暂停、显示及清零功能。
1. 顶层文件2. 主要控制模块的Verilog代码3. 引脚约束文件4. 硬件下载结果(二)模式2:实现对多人的同时计时,在数码管上实时显示,并能回显至少4人的时间,可控制显示。
1. 顶层文件2. 主要控制模块的Verilog代码3. 引脚约束文件4. 硬件下载结果。
课程设计数字跑表 (1)解析
《数字逻辑》课程设计实验报告设计题目:数字跑表组员:陈从圳黎文杰刘强黎振锋指导老师:麦山日期:2014/12/281设计意义及要求1.1设计意义在本次数字跑表课程设计中,我们将用到自己所学的数字电子技术方面的知识,通过思考设计出符合要求的电路。
将理论与实践相结合,加深自对所学知识的理解,并提高应用能力。
本设计需要我们选择合适的芯片和元件并正确使用来实现数字跑表的功能。
这就要求我们牢固掌握计数器的功能和各种进制的转换、译码器和数码管的使用、门电路的控制作用以及时序脉冲的产生方法等。
各种电路的组合需要经过精密的计算和思考,整合各个功能电路,使之到道数字跑表的基本要求。
这对我们熟悉各种芯片的功能用途很有帮助,可以开阔我们的眼界,使我们去接触一些在课堂上并不常使用的元件。
在探究问题的最优解决方案时,我们将学会从各个方面考察探究和比较各个方法,并学会发散性的思考问题,不局限与已学的方法和他人的经验,力求创造性的解决问题,找到最优的方案。
在本次设计中,我们不但可以加深对课本知识的理解,并且在实践能够提高自己的分析能力、设计能力、团结合作能力以及抗挫折的心理调节能力。
通过此次设计,我们对于电子技术的兴趣将大大提高,使我们以更加严谨认真的态度去对待在未来的学习。
1.2设计要求的计时器。
2)具有开始计时/暂停/继续的功能;用6个数码管分别显示百分秒、秒和分钟。
2方案设计2.1设计思路数字跑表包括时序脉冲产生模块 计时模块 显示模块 控制模块。
1).时序脉冲产生模块是利用555计时器构成能产生特定脉冲的多谢振荡器 产生100Hz的脉冲信号 满足数字跑表的脉冲需求2) .计时模块是用多功能计数器产生一百进制和六十进制 实现数字跑表的计数功能3)利用各种逻辑门电路对计数器进行控制,实现数字跑表的启动、暂停和清零。
4)利用译码器和数码管实现译码及显示功能。
5)考虑到电路存在的各种延时及干扰等实际因素,在理论的基础上添加一下元器件,减少延时和干扰。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字跑表实验报告报告人:杜熬学院:资源与环境学院学号:2907201005指导教师:李颖总体设计框图单元电路划分(1)计数器(2)分频器(3)使能控制器(4)扫描显示控制器各单元电路设计计数器程序中可以采用写一个六进制和十进制的计数器,然后采用画图的方法实现总计数器的设计(即采用两个六进制计数器和四个十进制计数器),但是本实验中采用了直接对总的计数器进行总体描述来实现,采用了异步计数的原理(即将一个计数器的进位端口和高位计数器的clk脉冲输入端而不是使能端相连),下面来看程序设计:------------------------------------------------------------------------------------ Company:-- Engineer:---- Create Date: 19:25:11 08/21/2011-- Design Name:-- Module Name: counter6 - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity counter isPort ( clk : in STD_LOGIC;clear : in STD_LOGIC;count_en : in STD_LOGIC;counter_1 : out STD_LOGIC_VECTOR (3 downto 0);counter_2 : out STD_LOGIC_VECTOR (3 downto 0);counter_3 : out STD_LOGIC_VECTOR (3 downto 0);counter_4 : out STD_LOGIC_VECTOR (3 downto 0);counter_5 : out STD_LOGIC_VECTOR (3 downto 0);counter_6 : out STD_LOGIC_VECTOR (3 downto 0));end counter;architecture Behavioral of counter issignal count_temp1:std_logic_vector(3 downto 0):="0000"; signal count_temp2:std_logic_vector(3 downto 0):="0000"; signal count_temp3:std_logic_vector(3 downto 0):="0000"; signal count_temp4:std_logic_vector(3 downto 0):="0000"; signal count_temp5:std_logic_vector(3 downto 0):="0000"; signal count_temp6:std_logic_vector(3 downto 0):="0000"; signal carry1:std_logic;signal carry2:std_logic;signal carry3:std_logic;signal carry4:std_logic;signal carry5:std_logic;beginprocess(clk,count_en,clear)beginif(clear='0')thencount_temp1<="0000";else if(count_en='1')thenif clk'event and clk='1' thenif count_temp1="1001" thencount_temp1<="0000";carry1<='1';elsecount_temp1<= count_temp1+1;carry1<='0';end if;else count_temp1<= count_temp1;end if;end if;end if;end process;counter_1<= count_temp1;process(carry1,clear)beginif(clear='0')thencount_temp2<="0000";else if carry1'event and carry1='1' thenif count_temp2="1001" thencount_temp2<="0000";carry2<='1';elsecount_temp2<= count_temp2+1;carry2<='0';end if;else count_temp2<= count_temp2;end if;end if;end process;counter_2<= count_temp2;process(carry2,clear)beginif(clear='0')thencount_temp3<="0000";else if carry2'event and carry2='1' thenif count_temp3="1001" thencount_temp3<="0000";carry3<='1';elsecount_temp3<= count_temp3+1;carry3<='0';end if;else count_temp3<= count_temp3;end if;end if;end process;counter_3<= count_temp3;process(carry3,clear)beginif(clear='0')thencount_temp4<="0000";else if carry3'event and carry3='1' thenif count_temp4="0101" thencount_temp4<="0000";carry4<='1';elsecount_temp4<=count_temp4+1;carry4<='0';end if;else count_temp4<=count_temp4;end if;end if;end process;counter_4<=count_temp4;process(carry4,clear)beginif(clear='0')thencount_temp5<="0000";else if carry4'event and carry4='1'thenif count_temp5="1001" thencount_temp5<="0000";carry5<='1';elsecount_temp5<=count_temp5+1;carry5<='0';end if;else count_temp5<=count_temp5;end if;end if;end process;counter_5<=count_temp5;process(carry5,clear)beginif(clear='0')thencount_temp6<="0000";else if carry5'event and carry5='1' thenif count_temp6="0101" thencount_temp6<="0000";elsecount_temp6<=count_temp6+1;end if;else count_temp6<=count_temp6;end if;end if;end process;counter_6<=count_temp6;end Behavioral;仿真文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY counter_test_vhd ISEND counter_test_vhd;ARCHITECTURE behavior OF counter_test_vhd IS-- Component Declaration for the Unit Under Test (UUT) COMPONENT counterPORT(clk : IN std_logic;clear : IN std_logic;count_en : IN std_logic;counter_1 : OUT std_logic_vector(3 downto 0);counter_2 : OUT std_logic_vector(3 downto 0);counter_3 : OUT std_logic_vector(3 downto 0);counter_4 : OUT std_logic_vector(3 downto 0);counter_5 : OUT std_logic_vector(3 downto 0);counter_6 : OUT std_logic_vector(3 downto 0));END COMPONENT;--InputsSIGNAL clk : std_logic := '0';SIGNAL clear : std_logic := '1';SIGNAL count_en : std_logic := '1';--OutputsSIGNAL counter_1 : std_logic_vector(3 downto 0);SIGNAL counter_2 : std_logic_vector(3 downto 0);SIGNAL counter_3 : std_logic_vector(3 downto 0);SIGNAL counter_4 : std_logic_vector(3 downto 0);SIGNAL counter_5 : std_logic_vector(3 downto 0);SIGNAL counter_6 : std_logic_vector(3 downto 0); BEGIN-- Instantiate the Unit Under Test (UUT)uut: counter PORT MAP(clk => clk,clear => clear,count_en => count_en,counter_1 => counter_1,counter_2 => counter_2,counter_3 => counter_3,counter_4 => counter_4,counter_5 => counter_5,counter_6 => counter_6);tb : PROCESSBEGINclk<='0';wait for 100 ns;clk<='1';wait for 100 ns;END PROCESS;END;仿真结果:分频器将原来48MHZ的频率分为100HZ和1000HZ,程序设计中采用了两个中间变量,通过控制中间变量来实现分频的目的,100HZ的中间变量的范围设置为240000,1000HZ的中间变量的范围设置为24000,下面请看程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity frequency isPort ( clkin: in STD_LOGIC;clk1k: out STD_LOGIC ;clk100 : out STD_LOGIC );end frequency;architecture Behavioral of frequency issignal count_temp1:integer range 1 to 240000:=1;signal count_temp2:integer range 1 to 24000:=1;signal a:STD_LOGIC:='0';signal b:STD_LOGIC:='0';beginprocess(clkin)beginif clkin'event and clkin = '1' thenif count_temp1 = 240000 thencount_temp1<= 1;a <= not a;elsecount_temp1<= count_temp1 + 1;end if;end if;if clkin'event and clkin = '1' thenif count_temp2= 24000 thencount_temp2<= 1;b<= not b;elsecount_temp2<=count_temp2 + 1;end if;end if;end process;clk100<=a;clk1K<=b;end Behavioral;测试文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY fenpin_test_vhd ISEND fenpin_test_vhd;ARCHITECTURE behavior OF fenpin_test_vhd IS-- Component Declaration for the Unit Under Test (UUT) COMPONENT frequencyPORT(clkin : IN std_logic;clk1k : OUT std_logic;clk100 : OUT std_logic);END COMPONENT;--InputsSIGNAL clkin : std_logic := '0';--OutputsSIGNAL clk1k : std_logic;SIGNAL clk100 : std_logic;BEGIN-- Instantiate the Unit Under Test (UUT)uut: frequency PORT MAP(clkin => clkin,clk1k => clk1k,clk100 => clk100);tb : PROCESSBEGINclkin<='0';wait for 100 ns;clkin<='1';wait for 100 ns;END PROCESS;END;测试结果:使能控制器设置一个中间变量,当一个下降沿来时,变量翻转一下,实现暂停开始的控制,下面来看程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity en isPort ( en_in : in STD_LOGIC;en_out : out STD_LOGIC);end en;architecture Behavioral of en issignal en_temp:STD_LOGIC:='0';beginprocess(en_in)beginif en_in'event and en_in='0' thenen_temp<=not en_temp;end if;end process;en_out<=en_temp;end Behavioral;测试文件LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY en_test_vhd ISEND en_test_vhd;ARCHITECTURE behavior OF en_test_vhd IS-- Component Declaration for the Unit Under Test (UUT) COMPONENT enPORT(en_in : IN std_logic;en_out : OUT std_logic);END COMPONENT;--InputsSIGNAL en_in : std_logic ;--OutputsSIGNAL en_out : std_logic;BEGIN-- Instantiate the Unit Under Test (UUT)uut: en PORT MAP(en_in => en_in,en_out => en_out);tb : PROCESSBEGINen_in<='0';wait for 100 ns;en_in<='1';wait for 100 ns;END PROCESS;END;测试结果显示控制器通过1kz动态扫描输出,请看程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity multi isPort ( clk : in STD_LOGIC;counter1 : in STD_LOGIC_VECTOR (3 downto 0);counter2: in STD_LOGIC_VECTOR (3 downto 0);counter3: in STD_LOGIC_VECTOR (3 downto 0);counter4: in STD_LOGIC_VECTOR (3 downto 0);counter5: in STD_LOGIC_VECTOR (3 downto 0);counter6: in STD_LOGIC_VECTOR (3 downto 0);di: out STD_LOGIC;sel : out STD_LOGIC_VECTOR (2 downto 0);duanxuan : out STD_LOGIC_VECTOR (7 downto 0)); end multi;architecture Behavioral of multi issignal data_temp :STD_LOGIC_VECTOR (3 downto 0);signal seg:STD_LOGIC_VECTOR (7 downto 0);signal count:STD_LOGIC_VECTOR (2 downto 0):="000";beginprocess(clk)beginif clk'event and clk='1' thendi<='0';if count="101" thencount<="000";elsecount<=count+1;end if;end if;end process;sel<=count;process(count)begincase count iswhen "000"=>data_temp<=counter1;when "001"=>data_temp<=counter2;when "010"=>data_temp<=counter3;when "011"=>data_temp<=counter4;when "100"=>data_temp<=counter5;when "101"=>data_temp<=counter6;when others=>data_temp<="1111"; end case;end process;process(data_temp)begincase data_temp iswhen "0000"=>seg<="11000000";when "0001"=>seg<="11111001";when "0010"=>seg<="10100100";when "0011"=>seg<="10110000";when "0100"=>seg<="10011001";when "0101"=>seg<="10010010";when "0110"=>seg<="10000010";when "0111"=>seg<="11111000";when "1000"=>seg<="10000000";when "1001"=>seg<="10010000";when others=>seg<="11111111";end case;end process;duanxuan<=seg;end Behavioral;测试文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY multi_test_vhd ISEND multi_test_vhd;ARCHITECTURE behavior OF multi_test_vhd IS-- Component Declaration for the Unit Under Test (UUT)COMPONENT multiPORT(clk : IN std_logic;counter1 : IN std_logic_vector(3 downto 0);counter2 : IN std_logic_vector(3 downto 0);counter3 : IN std_logic_vector(3 downto 0);counter4 : IN std_logic_vector(3 downto 0);counter5 : IN std_logic_vector(3 downto 0);counter6 : IN std_logic_vector(3 downto 0);di : OUT std_logic;sel : OUT std_logic_vector(2 downto 0);duanxuan : OUT std_logic_vector(7 downto 0));END COMPONENT;--InputsSIGNAL clk : std_logic := '0';SIGNAL counter1 : std_logic_vector(3 downto 0) := "0000";SIGNAL counter2 : std_logic_vector(3 downto 0) := "0001";SIGNAL counter3 : std_logic_vector(3 downto 0) := "0010";SIGNAL counter4 : std_logic_vector(3 downto 0) := "0011";SIGNAL counter5 : std_logic_vector(3 downto 0) := "0100";SIGNAL counter6 : std_logic_vector(3 downto 0) := "1001";--OutputsSIGNAL di : std_logic;SIGNAL sel : std_logic_vector(2 downto 0);SIGNAL duanxuan : std_logic_vector(7 downto 0); BEGIN-- Instantiate the Unit Under Test (UUT)uut: multi PORT MAP(clk => clk,counter1 => counter1,counter2 => counter2,counter3 => counter3,counter4 => counter4,counter5 => counter5,counter6 => counter6,di => di,sel => sel,duanxuan => duanxuan );tb : PROCESSBEGINclk<='0';wait for 100 ps;clk<='1';wait for 100 ps;END PROCESS;END;测试结果:整体电路图:测试文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.numeric_std.ALL;LIBRARY UNISIM;USE UNISIM.Vcomponents.ALL;ENTITY paobiao_schemtic_paobiao_schemtic_sch_tb ISEND paobiao_schemtic_paobiao_schemtic_sch_tb;ARCHITECTURE behavioral OF paobiao_schemtic_paobiao_schemtic_sch_tb IS COMPONENT paobiao_schemticPORT( clear : IN STD_LOGIC;clk : IN STD_LOGIC;enable : IN STD_LOGIC;jiedi : OUT STD_LOGIC;weixuan : OUT STD_LOGIC_VECTOR (2 DOWNTO 0);duanxuan : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END COMPONENT;SIGNAL clear : STD_LOGIC:='1';SIGNAL clk : STD_LOGIC;SIGNAL enable : STD_LOGIC:='1';SIGNAL jiedi : STD_LOGIC;SIGNAL weixuan : STD_LOGIC_VECTOR (2 DOWNTO 0);SIGNAL duanxuan :STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINUUT: paobiao_schemtic PORT MAP(clear => clear,clk => clk,enable => enable,jiedi => jiedi,weixuan => weixuan,duanxuan => duanxuan);-- *** Test Bench - User Defined Section ***tb : PROCESSBEGINclk<='0';wait for 10 ns;clk<='1';wait for 10 ns;END PROCESS;-- *** End Test Bench - User Defined Section ***END;仿真结果图:结果分析首先对数字跑表进行了分析,将其分成了几个模块,然后对每个模块进行单独设计,仿真,由以上仿真结果可以看出,对应的每个模块都能实现其功能。