多功能数字表的设计
单片机数字万用表设计
单片机数字万用表设计一、引言单片机数字万用表是一种多功能仪器,可以用于测量电压、电流、电阻等电气参数,广泛应用于电子工程、通信工程、无线电工程等领域。
本文旨在设计一款单片机数字万用表,结合单片机技术和模拟电路设计,实现功能齐全、精准度高、便携性强的数字万用表。
二、设计原理单片机数字万用表的核心部分是其测量模块,该模块能够接收被测电路的输入信号,并通过ADC(模数转换器)将模拟信号转换为数字信号,然后经过单片机处理和显示模块的处理,最终将结果显示在液晶显示屏上。
整个设计流程主要包括以下几个方面:1.信号输入:设计合适的信号输入接口,能够接收被测电路的电压、电流、电阻等信号,并将其传输给ADC。
2.模数转换:通过ADC将模拟电信号转换为数字信号,通常选择12位或16位的ADC,以保证高精度的测量结果。
3.单片机处理:单片机接收ADC传输的数字信号,并进行处理计算,以得出测量结果。
4.显示模块:将测量结果显示在LCD液晶显示屏上,包括数值显示、单位显示等。
5.供电模块:提供适当的电源供电,保证仪器的正常工作。
基于以上设计原理,我们可以开始具体的设计工作。
三、电路设计1.信号输入接口信号输入接口是单片机数字万用表的核心部分之一,它需要能够接收不同类型的信号,包括电压、电流、电阻等。
为了实现这一功能,我们需要设计相应的信号接收电路,可以通过选择不同的接收电阻和放大电路,使之能够适应不同的输入信号。
对于电压信号的输入,可以设计一个简单的分压电路,将被测电路的电压信号转换为适合ADC输入的电压范围。
同时,为了避免输入电阻对被测电路的影响,可以选择高输入阻抗的运放作为信号接收器。
对于电流信号的输入,可以设计一个电流-电压转换电路,将电流信号转换为相应的电压信号,再进行ADC采集。
对于电阻信号的输入,可以设计一个简单的电桥电路,测量电阻值并将其转换为电压信号,再通过ADC进行采集。
2.模数转换模数转换部分选择12位或16位的ADC芯片,可以根据精度需求做适当选择。
数字万用表的研究与设计
ANYANG INSTITUTE OF TECHNOLOGY 本科毕业设计数字万用表的研究与设计The Design of Digital Multimeter系(院)名称:电子信息与电气工程学院QQ 号:309810851目录中文摘要、关键词 (Ⅰ)英文摘要、关键词 (Ⅱ)引言 (1)第一章课题的研究背景 (2)1.1数字万用表研究的目的和意义 (2)1.2国内外的研究动态及发展趋势 (3)1.2.1国内研究概况 (3)1.2.2国外研究概况 (4)1.3数字万用表设计重点解决的问题 (4)第二章数字万用表的总体设计方案 (5)2.1课题设计的基本思路 (5)2.2数字万用表的测量原理及电路平台 (5)2.3数字万用表的硬件系统总体设计框图 (10)2.4硬件电路设计方案及选用芯片介绍 (11)2.4.1 AT89S52芯片功能特性描述 (12)2.4.2模数转换模块介绍 (13)2.4.3显示模块介绍 (15)2.4.4电源模块介绍 (15)2.5数字万用表的硬件设计 (16)第三章系统软件及流程图及仿真过程 (22)3.1软件设计整体思路 (22)3.2系统总流程图 (23)3.3物理采集流程图 (24)3.4系统仿真过程 (24)结论 (26)致谢 (27)参考文献 (28)附录A (29)附录B (33)数字万用表的研究与设计摘要:本次设计用单片机芯片AT89S52设计一个数字万用表,能够测量交、直流电压值、直流电流、直流电阻以及电容,四位数码显示。
此系统由分流电阻、分压电阻、基准电阻、电容测试芯片电路、单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。
为使系统更加稳定,使系统整体精度得以保障,本电路使用了AD0809数据转换芯片,单片机系统设计采用AT89S52单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,显示芯片用TEC612驱动8位数码管显示。
毕业设计数字多用表设计演讲PPT课件
1 2 3 4
1 11
3 4 7 8 13 14 17 18
C3 22p X1
CRYSTAL
C2 22p
R1 10k C1
10u
U1
19 XTAL1 18 XTAL2
9 RST
29 30 31
PSEN ALE EA
测电阻 测电压 测电流
测量转换 1
2 3 4
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2/ECI P1.3/CEX0 P1.4/CEX1 P1.5/CEX2 P1.6/CEX3 P1.7/CEX4
它具有价格低、寿命长且电压电流的 要求低并容易实现而得到广泛应用
74L374为具有三态输出的八 D 边沿触发器, 74LS374 的输出端 O0~O7 可直接与 总线相连。当三态允许控制端 OE 为低电平时, O0~O7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,O0~O7 呈 高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 当时钟端 CP 脉冲上升沿的作用下,O 随数据 D 而变。 由于 CP 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。 引出端符号: D0~D7 数据输入端 OE 三态允许控制端(低电平有效) CP 时钟输入端 O0~O7 输出端
22 23 24 25
IN7 IN6 IN5 IN4 IN3 IN2 IN1 IN0
5 4 பைடு நூலகம் 2 1 28 27 26
U4:A
3
1
+5V
2
74LS02
U4:B
6 4
5
74LS02
+5V
多功能数字时钟设计报告
多功能数字时钟设计报告目录一.设计任务和要求 (2)二.设计的方案的选择与论证 (2)三.电路的设计计算与分析 (4)四.总结及心得 (12)五.附录 (14)六.参考文献 (15)一设计任务和要求:实现24小时的时钟显示、校准、整点报时、闹铃等功能。
具体要求:(1)显示功能:具有“时”、“分”、“秒”的数字显示(“时”从0~23,分0~60,秒0~60)。
(2)校时功能:当刚接通电源或数字时钟走时有偏差,能动手对“时”、“分”、“秒”进行校时。
(3)整点报时:当时钟计时到整点时,能进行整点报时。
(4)闹铃功能:在24小时之内,可以设定定时时间,当数字时钟到定时时间时能进行.二设计的方案的选择与论证2.1.总体设计方案与思路系统用十进制的计数器分别构成一个二十四、两个六十进制的计数器,串联连接计数器、并加秒脉冲,使“秒”、“分”、“时”进位,从而数字时钟的显示显示功能;系统应用校时电路实现时钟的校时功能;系统应用译码电路将整点识别出来,同时进行报时;系统用寄存器先把闹铃响的时间存储起来,再用数值比较器,将寄存器存储的时间与实际时间点比较,如果相等,则闹铃工作,从而实现了时钟的闹铃功能。
多功能数字时钟的电路原理结构图如下图所示:图1.多功能数字时钟的电路原理结构图上图中:开关S2的作用,当S2置于左侧时数字时钟正常显示时间,当置于右侧时,数字时钟进行调时,此时若寄存电路的开关合闭则进行设置闹铃时间.2.2.方案的具体实现由于本电路的复杂性,电路图多的特点,本方案采用了子电路与主电路相结合的方案,这样易于调试和修改。
另外采用了总线的电路连线方式使电路图简洁美观。
1.总体电路的设计总体电路如图所示:DCD_HEX_BLUE DCD_HEX_BLUE DCD_HEX_BLUE DCD_HEX_BLUE DCD_HEX_BLUE DCD_HEX_BLUESONALERT600 Hz总体电路是由小时计时电路、分钟计时电路、秒钟计时电路、校时选择电路、整点译码电路、闹钟的寄存与比较电路、和由555定时器构成的秒脉冲电路等七个子电路模块连接在一起,和外接开关和数码管构成。
多功能数字电能表的设计
摘要随着我国经济的飞速发展,电能消耗日益增加,电能成为现代社会国民经济和人民生活的重要保障。
单相电子式电能表以其计量程度高、成本低等优势在我国开始逐步推广使用。
文章概述单相电子式电能表的发展与需求,介绍单相电子式电能表的原理与优点,提出单相电子式电能表的设计方案。
该系统主要由显示模块、键盘模块、时钟模块、存储模块、通讯模块、CPU 模块、CS5460电能表计量芯片模块和前端电路调理模块八部分组成。
前端电路调理模块采用2mA/2mA 的电流互感器和5A/2.5mA 电流互感器和精密电阻实现对市电的转换,并采用RC 滤波网络滤波,然后采用由美国CRYSTAL公司的新型电能计量芯片CS5460 芯片实现对电流、电压和电能的测量与转换;时钟模块采用DS1302 时钟芯片为系统提供时钟基准,存储模块采用AT24C16,为系统提供数据存储;显示模块用OCMJ4X8CM 液晶,通信模块采用Max232 芯片,并利用AT89S52 组成的CPU模块控制所有芯片的工作、测量、计算电能,送往显示模块和存储模块进行实时显示和存储,并通过标准RS-232 接口送往PC上位机进行同步显示,并且本电能表还设有GPIB 地址,以便于电能管理系统对电能的管理。
关键词CS5460;AT89S52;MAX232通讯;OCMJ4X8CM-I-AbstractAlong with the rapid development of China's economy, power consumption, increasing power becomes the modern society of national economy and people's life important guarantee. Because the degree of the single-phase watt-hour meter measure is high, low cost advantage in China began to gradually spread the use of it. Developed so far, the measurement circuit technology already from the analog circuit improve on time-multiplier for digital multiplier another one circuit, the market share has amounted to more than 60%. In the international market, China's production of single-phase watt-hour meter with strong competitiveness and wide prospect of market.This article summarizes the development of single-phase watt-hour meter and demand; this paper introduces the principle of single-phase watt-hour meter and advantages, and puts forward the design scheme of single-phase watt-hour meter.This system is mainly revealed the module, keyboard module, clock module, store module, communicate module, CPU module, CS5460 electric energy meter chip module and front circuit look after the part of the module to make up. The front circuit recuperates the module and adopts electric current mutual inductor and 5A/2.5mA electric current mutual inductor and accurate resistance of 2mA/2mA to realize the conversion of the city electricity, and adopt RC to strain the wave network and strain the wave, then adopt measure chip, CS5460 of chip, realize to electric current, voltage, measurement and conversion of electric energy by new electric energy of Company, CRYSTAL of U.S.A.; The clock module adopts DLS1302 clock chip to offer the clock basis for system, stores the module and adopts AT24C16, offer the data for system tostore; Reveal the module uses OCMJ4X8CM liquid crystal, the communication module adopts Max232 chip, and utilize CPU module that AT89S52 makes up to control the work of all chips; Measure, calculate electric energy, send to is shown the module and stores the module and pays revealing and storing in real time, send PC to location plane go on reveal and this electric energy meter have GPIB address also synchronously through standard RS-232 interface, so that the control over electric energy of administrative system of electric energy.Keywords CS5460; AT89S52; 232communication; OCMJ4X8CM- II -目录摘要 (I)Abstract (II)第 1 章绪论 (1)1.1 课题背景 (1)1.2 研究目的与意义 (2)1.3 电子式电能表的发展及技术优势 (3)1.4 论文研究内容 (4)第 2 章总体方案设计 (5)2.1 单相电子式电能表的工作原理 (5)2.2 设计功能要求 (5)2.3 系统的整体设计方案 (5)2.3.1 电能计量部分 (6)2.3.2 前端调理电路部分 (10)2.3.3 主控芯片 (11)2.3.4 显示部分 (11)2.3.5 通信模块 (13)2.3.6 时钟模块 (13)2.3.7 存储部分 (15)2.4 本章小结 (16)第 3 章系统硬件设计与实现 (18)3.1 直流稳压电源的设计 (18)3.2 前端电路调理模块的设计 (18)3.2.1 电压调理部分 (18)3.2.2 电流调理部分 (18)3.3 电能测量模块的设计 (19)3.4 通讯模块的设计 (20)3.5 液晶显示的设计 (20)3.6 键盘的设计...................................................................................................... .21 3.7 本章小结 (21)第 4 章系统软件流程图的设计 (23)4.1 主流程图 (23)4.2 系统初始化 (23)4.3 系统初始化 (23)4.3.1 系统参数自校正模块 (24)4.3.2 电量测量功能模块 (25)4.3.3 电能鉴定功能模块 (25)4.4 系统初始化 (25)4.5 本章小结 (26)第 5 章系统的硬件调试及误差改进措施 (27)5.1 硬件调试 (27)5.2 功能测试 (27)5.3 误差的定性分析及改进措施 (29)5.3.1 空间电磁场的抗干扰设计 (29)5.3.2 模拟通道与数字通道之间抗干扰设计 (29)5.3.3 电源和接地系统的抗干扰设计 (31)5.3.4 印刷电路板抗干扰设计 (32)5.4 本章小结 (32)结论 (33)致谢 (34)参考文献 (35)附录B (41)第1章绪论1.1 课题背景电能是社会生产和人民生活必需的重要能源,随着国家的发展和人民生活水平的不断提高我国对电力的需求急剧上升,电力供应出现了相对不足,一些地区和一些企业能耗非常高,一些省份和地区出现电力短缺问题,这不但阻碍国民经济的发展,也妨碍了人民的生活,所以电能的节约与电能的有效利用具有非常重要的意义。
多功能数字秒表设计
目录1 Protues简介12 多功能数字秒表方案设计与论证33多功能数字秒表总体设计44多功能数字秒表的工作原理44.1脉冲源电路44.2总清零控制电路94.3时间计数单元104.4分频器电路124.5 码驱动及显示单元164.6多功能数字秒表电路的组合175 电路的调试215.1 时钟发生器的测试215.2 计数、译码、显示单元的测试215.3 整体测试225.4 电子秒表准确度的测试236.硬件设计237.课程设计心得248.参考文献26本科生课程设计成绩评定表27初始条件利用集成译码器、计数器、定时器、脉冲发生器和必要的门电路等器件设计实现数字秒表的功能。
用数码管显示时间计数值。
也可以用单片机系统实现要求完成的主要任务: 包括课程设计工作量及其技术要求以及说明书撰写等具体要求1、课程设计工作量1周完成对数字秒表的设计、仿真、装配与调试。
2、技术要求①设计一个能测量8名运动员短跑成绩的数字秒表。
要求用四位数码管显示时间格式为0000s。
②秒表设置9个开关输入清零开关1个和记录开关8个。
按下“记录”开关则将当前计数时间暂存并显示在数码管上。
③确定设计方案按功能模块的划分选择元、器件和中小规模集成电路设计分电路画出总体电路原理图阐述基本原理。
参考文献[1] 伍时和.《数字电子技术基础第1版》.清华大学2009年4月[2] 康华光.《数字电子技术基础第5版》高等教育2006年1月[3] 王建校《51系列单片机及C51程序设计》科学2002.4时间安排1、2011 年6 月27~28 日查阅相关资料学习设计原理。
2、2011 年6 月28~29 日方案选择和电路设计仿真。
3、2011 年6 月30~7月1 日电路调试和设计说明书撰写。
4、2011 年7 月 2 日上交课程设计成果及报告同时进行答辩。
指导教师签名年月日系主任或责任教师签名年月日1 Protues简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。
VHDL数字系统设计_多功能手表的设计(时钟,秒表,闹钟)
一、多功能手表的主模块设计:1、设计思想:由两大模块组成,按键控制模块(control)和时钟模块(clock),按键控制模块主要通过B1,B2 ,B3 三个按键的输入来控制时间的调整,闹钟时间的调整,以及打开闹钟,关闭闹钟的功能,时钟模块主要通过:一是输入的时钟信号clk 触发,clk运行一定的周期,秒就加一,秒有进位时,分加一,分有进位时,依次类推,进行时间的运行;当时间运行到与闹钟时间相同,闹铃信号ring变为1,持续30秒,变为零。
二是来自按键控制模块的时间增信号,inc_hrs,inc_min,inc_sec等信号,进行时间的调整,闹钟响的时候关闭闹钟。
以及其他功能。
2、输入、输出及中间信号说明:输入信号clk 时钟信号rst 复位信号B1 按键1B2 按键2B3 按键3输出信号hours 时间模式的小时minutes 时间模式的分钟seconds 时间模式的秒ahours 闹钟模式的小时aminutes 闹钟模式的分ring 闹钟响铃信号am_pm 时间模式的a.m 或者p.m指示(为0时表示a.m,为1时表示p.m)aam_pm 闹钟模式的a.m 或者p.m指示(为0时表示a.m,为1时表示p.m)disp_time1 显示时间模式的时、分、秒标志,为1时显示,为零时不显示disp_alarm 显示闹钟模式的时、分标志,为1时显示,为零时不显示中间信号:inc_hrs 时间模式的小时加1inc_min 时间模式的分钟加1inc_sec 时间模式的秒加1inc_ahrs 闹钟模式的小时加1inc_amin 闹钟模式的分钟加1alarm_off 时间模式下如果闹钟响,关闹钟信号set_alarm 闹钟模式下,开启关闭闹钟信号alarm_set 闹钟模式下设置闹钟信号S_hours 时间模式的小时hours寄存信号S_minutes 时间模式的分钟minutes寄存信号S_seconds 时间模式的秒seconds寄存信号S_ahours 闹钟模式的小时ahours寄存信号S_aminutes 闹钟模式的分钟aminutes寄存信号S_ring 闹钟模式的闹钟响铃ring寄存信号S_am_pm 时间模式的am_pm寄存信号S_aam_pm 闹钟模式的aam_pm寄存信号3、主程序代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.numeric_bit.bit;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity main isport(B1,B2,B3,clk,rst:in std_logic;hours,minutes,seconds,ahours,aminutes:out std_logic_vector(7 downto 0);ring,am_pm,aam_pm,disp_time1,disp_alarm:out std_logic);end main;architecture Behavioral of main iscomponent clock is ----时钟模块port(clk,rst,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,set_alarm,alarm_off:in std_logic;hours,ahours,minutes,aminutes,seconds: inout std_logic_vector(7 downto 0);am_pm,aam_pm,ring,alarm_set:inout std_logic);end component;component control is -----按键控制模块port(B1,B2,B3,clk,rst:in std_logic;alarm_off,set_alarm:inout std_logic;disp_time1,disp_alarm,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin:out std_logic);end component;signal inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,alarm_off,set_alarm,alarm_set:std_logic;signal S_hours,S_minutes,S_seconds,S_ahours,S_aminutes: std_logic_vector(7 downto 0); signal S_ring,S_am_pm,S_aam_pm:std_logic;begin-----按键控制,时钟运行模块,以及最后输出模块使用并发语句设计controllor: control port map(B1,B2,B3,clk,rst, alarm_off,set_alarm,disp_time1,disp_alarm,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin);clock1: clock port map(clk,rst,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,set_alarm,alarm_off,S_hours,S_ahours,S_minutes,S_aminutes,S_seconds,S_am_pm,S_aam_pm,S_ring,alarm_set);hours<=S_hours;minutes<=S_minutes;seconds<=S_seconds;ahours<=S_ahours;aminutes<=S_aminutes;am_pm<=S_am_pm;aam_pm<=S_aam_pm;ring<=S_ring;end Behavioral;(1)综合电路图:5、按键控制模块说明:(1)状态转移图:(2)ASM图(3)信号说明:与前面重复的这里不再赘述present_state 当前状态next_state 下一个状态七个状态说明:time1 时间显示模式set_sec 调整时间的秒模式set_min, 调整时间的分钟模式set_hrs, 调整时间的小时模式alarm, 闹钟模式set_alarm_hrs, 调整闹钟的小时模式set_alarm_min 调整闹钟的分钟模式(4)程序代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;--use ieee.numeric_bit.bit;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity control isport(B1,B2,B3,clk,rst:in std_logic;alarm_off,set_alarm:inout std_logic;disp_time1,disp_alarm,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin:out std_logic); end control;architecture Behavioral of control istype state is(time1,set_sec,set_min,set_hrs,alarm,set_alarm_hrs,set_alarm_min);signal present_state,next_state :state;beginprocess(clk,rst)beginif rst='1' then ------异步复位present_state<=time1;elsif(clk'event and clk='1')then ------采用时钟边沿触发present_state<=next_state;end if;end process;process(B1,B2,B3,present_state,rst) -----由按键控制的状态转换进程beginif rst ='1' then ---------------异步复位alarm_off<='0';set_alarm<='0';elsecase present_state iswhen time1=> ---------------时间显示----------inc_hrs<='0';inc_min<='0';inc_sec<='0';inc_ahrs<='0';inc_amin<='0';disp_time1<='1';disp_alarm<='0'; ----状态输出if B1='1' then next_state<=alarm;elsif B2='1' then next_state<=set_hrs;elsif B3='1' then alarm_off<=not alarm_off;next_state<=time1;else next_state<=time1;end if;when set_hrs=> --------------------------设置时间inc_min<='0';inc_hrs<='0';inc_sec<='0';inc_ahrs<='0';inc_amin<='0';disp_time1<='1';disp_alarm<='0';if B2='1' then next_state<=set_min;elsif B3='1' then inc_hrs<='1';next_state<=set_hrs;else next_state<=set_hrs;end if;when set_min=> -------------------设置分钟inc_hrs<='0';inc_min<='0';inc_sec<='0';inc_ahrs<='0';inc_amin<='0';disp_time1<='1';disp_alarm<='0';if B2='1' then next_state<=set_sec;elsif B3='1' then inc_min<='1';next_state<=set_min;else next_state<=set_min;end if;when set_sec=> -------------------------设置秒inc_hrs<='0';inc_min<='0';inc_sec<='0';inc_ahrs<='0';inc_amin<='0';disp_time1<='1';disp_alarm<='0';if B2='1' then next_state<=time1;elsif B3='1' then inc_sec<='1';next_state<=set_sec;else next_state<=set_sec;end if;when alarm => -----------------闹钟显示inc_hrs<='0';inc_min<='0';inc_sec<='0';inc_ahrs<='0';inc_amin<='0';disp_time1<='0';disp_alarm<='1';if B1='1' then next_state<=time1;elsif B2='1' then next_state<=set_alarm_hrs;elsif B3='1' then set_alarm<=not set_alarm;next_state<=alarm;else next_state<=alarm;end if;when set_alarm_hrs=> ---------------调整闹钟的小时inc_hrs<='0';inc_min<='0';inc_sec<='0';inc_amin<='0';inc_ahrs<='0';disp_time1<='0';disp_alarm<='1';if B2='1' then next_state<=set_alarm_min;elsif B3='1' then inc_ahrs<='1'; next_state<=set_alarm_hrs;else next_state<=set_alarm_hrs;end if;when set_alarm_min=> -------------------------调整闹钟的分钟inc_hrs<='0';inc_min<='0';inc_sec<='0';inc_ahrs<='0';inc_amin<='0';disp_time1<='0';disp_alarm<='1';if B2='1' then next_state<=alarm;elsif B3='1' then inc_amin<='1';next_state<=set_alarm_min;else next_state<=set_alarm_min;end if;end case;end if;end process;end Behavioral;6、时钟模块说明:信号说明:与前面重复的这里不再赘述,s59 秒有进位的标志信号(由59变为0时,s59<=’1’,否则为‘0’)m59 分钟有进位的标志信号(由59变为0时,s59<=’1’,否则为‘0’)inchrs 时间的小时加1的寄存信号incmin 时间的分钟加1的寄存信号incsec 时间的秒加1的寄存信号c99 时钟过了1s,自动发出的秒加1 的信号程序代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.numeric_bit.bit;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clock isport(clk,rst,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,set_alarm,alarm_off:in std_logic;hours,ahours,minutes,aminutes,seconds: inout std_logic_vector(7 downto 0);am_pm,aam_pm,ring,alarm_set:inout std_logic);end clock;architecture Behavioral of clock iscomponent CTR_59 is -------模60计数器模块port(clk,inc,rst:in std_logic;dout :out std_logic_vector(7 downto 0);t59:out std_logic);end component;component CTR_12 is ----------模12计数器模块port(clk,inc,rst:in std_logic;dout :out std_logic_vector(7 downto 0);am_pm:inout std_logic);end component;signal s59,m59,inchrs,incmin,incsec,c99:std_logic :='0';signal alarm_ring_time:integer range 0 to 50;signal div100:integer range 0 to 100;beginsec1:CTR_59 port map(clk,incsec,rst,seconds,s59);min1:CTR_59 port map(clk,incmin,rst,minutes,m59);hrs1:CTR_12 port map(clk,inchrs,rst,hours,am_pm);incmin<=(s59 and c99)or inc_min;inchrs<=(m59 and s59 and c99)or inc_hrs;incsec<=c99 or inc_sec;alarm_min:CTR_59 port map(clk,inc_amin,rst,aminutes,open);alarm_hrs:CTR_12 port map(clk,in_ahrs,rst,ahours,aam_pm);c99<='1' when div100=199 else '0';-----clk频率为200Hz,一个周期为5ms,所以200个周期为1s process(clk,rst)beginif rst='1' thenring<='0';alarm_ring_time<=0;alarm_set<='0';div100<=0;elsif clk'event and clk ='1' thenif c99='1' then div100<=0;else div100<=div100+1;end if;if set_alarm='1' thenalarm_set<= not alarm_set;end if;if((minutes=aminutes)and (hours=ahours)and (am_pm=aam_pm))and andseconds=”00000000” and alarm_set='1' thenring<='1';end if;if ring='1' and c99='1' thenalarm_ring_time<=alarm_ring_time+1;end if;if alarm_ring_time=30 or alarm_off='1' then---闹钟响了30s或者手动关闭,则闹钟关ring<='0';alarm_ring_time<=0;end if;end if;end process;end Behavioral;(1)模60计数器模块entity CTR_59 isport(clk,inc,rst:in std_logic;dout :out std_logic_vector(7 downto 0);t59:out std_logic);-------t59,计数到60的进位信号end CTR_59;architecture Behavioral of CTR_59 issignal dig0,dig1:std_logic_vector(3 downto 0);-----dig0表示个位数字,dig1表示十位数字beginprocess(clk)beginif clk'event and clk ='1' thenif rst='1' then dig0<="0000";dig1<="0000";elseif inc='1' thenif dig0="1001" then dig0<="0000";if dig1="0101" then dig1<="0000";else dig1<=dig1+1;end if;else dig0<=dig0+1;end if;end if;end if;end if;end process;t59<='1' when (dig1="0101" and dig0="1001")else '0';dout<=dig1 & dig0;end Behavioral;(2)模12计数器模块entity CTR_12 isport(clk,inc,rst:in std_logic;dout :out std_logic_vector(7 downto 0);am_pm:inout std_logic);end CTR_12;architecture Behavioral of CTR_12 issignal dig0:std_logic_vector(3 downto 0);-----个位数字signal dig1:std_logic; ----------十位数字beginprocess(clk)beginif rst ='1' thendig1<='0';dig0<="0000";am_pm<='0';elsif clk'event and clk ='1' thenif inc='1' thenif dig1='1' and dig0="0010" thendig1<='0';dig0<="0001";elseif dig0="1001" thendig0<="0000";dig1<='1';else dig0<=dig0+1;end if;if dig1='1' and dig0="0001" then am_pm<= not am_pm;end if;end if;end if;end if;e nd process;d out<="000" & dig1 & dig0;end Behavioral;二、仿真测试:1、按键控制模块的测试:复位之后,当前状态为time1 ,disp_time1=’1’,disp_alarm=’0’,此时显示时间,不显示闹钟,按一下B1进入alarm状态按两次B3,第一次set_alarm=‘1’,闹钟开启,第二次set_alarm=‘0’闹钟关闭第一次按下B2进入set_alarm_hrs,闹钟小时设置状态,按三次B3inc_ahrs三次变为1,表示加了3次第二次按下B2进入set_alarm_min,闹钟分钟设置状态,按两次B3Inc_amin两次变为1,表示加了2次第三次按下B2进入alarm闹钟显示状态,再按下B3表示闹钟开启和关闭第二次按下B1 进入time1,时间状态,按一下B3,alarm_off为‘1’第一次按下B2进入set_hrs,设置小时,按三次B3,小时加三次第二次按下B2进入set_min,设置分钟,按一次B3,分钟加一次第三次按下B2进入set_sec,设置秒,按一次B3,秒加一次第四次按下B2 进入time1,时间显示,此时按下B3,alarm_off=’0’由上述测试内容可以看出,设计达到了预期要求2、手表完整功能的测试(1)测试代码:LIBRARY ieee;USE ieee.std_logic_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--USE ieee.numeric_std.ALL;ENTITY mian_tb ISEND mian_tb;ARCHITECTURE behavior OF mian_tb IS-- Component Declaration for the Unit Under Test (UUT)COMPONENT mainPORT(B1 : IN std_logic;B2 : IN std_logic;B3 : IN std_logic;clk : IN std_logic;rst : IN std_logic;hours : OUT std_logic_vector(7 downto 0);minutes : OUT std_logic_vector(7 downto 0);seconds : OUT std_logic_vector(7 downto 0);ahours : OUT std_logic_vector(7 downto 0);aminutes : OUT std_logic_vector(7 downto 0);ring : OUT std_logic;am_pm : OUT std_logic;aam_pm : OUT std_logic;disp_time1: OUT std_logic;disp_alarm: OUT std_logic);END COMPONENT;--Inputssignal B1 : std_logic := '0';signal B2 : std_logic := '0';signal B3 : std_logic := '0';signal clk : std_logic := '0';signal rst : std_logic := '0';--Outputssignal hours : std_logic_vector(7 downto 0);signal minutes : std_logic_vector(7 downto 0);signal seconds : std_logic_vector(7 downto 0);signal ahours : std_logic_vector(7 downto 0);signal aminutes : std_logic_vector(7 downto 0);signal ring : std_logic;signal am_pm : std_logic;signal aam_pm : std_logic;signal disp_time1 : std_logic;signal disp_alarm : std_logic;-- Clock period definitionsconstant clk_period : time := 5 ms;-----------设置时钟周期为5ms,即时钟为200 Hz BEGIN-- Instantiate the Unit Under Test (UUT)uut: main PORT MAP (B1 => B1,B2 => B2,B3 => B3,clk => clk,rst => rst,hours => hours,minutes => minutes,seconds => seconds,ahours => ahours,aminutes => aminutes,ring => ring,am_pm => am_pm,aam_pm => aam_pm,disp_time1 =>disp_time1,disp_alarm =>disp_alarm);-- Clock process definitionsclk_process :processbeginclk <= '0';wait for clk_period/2;clk <= '1';wait for clk_period/2;end process;-- Stimulus processstim_proc: processprocedure wait1(N1 :in integer) is -----------------时钟延时过程(延时N1个周期)variable count:integer;begincount:=N1;while count/=0 loopwait until clk'event and clk ='1' ;count:=count-1;wait until clk'event and clk='0';end loop;end procedure wait1;procedure push(signal button:out std_logic; N :in integer)is -----按键过程beginfor i in 1 to N loopbutton<='1';wait1(1); -----控制按键在一个时钟周期内为1button<='0';wait1(100); ------然后延时0.5send loop;end procedure push;begin-----测试数据是通过时钟延时过程和按键过程的调用来实现push(rst,1); ----按一次复位键rst 复位,进入时间显示模式push(B2,1); ------按一次B2 ,调整显示时间的小时push(B3,11); ---------按十一次B3,把小时数调到11;push(B2,1); -----------按一次B2 ,调整显示时间的分钟push(B3,56); ----------按56次B3 ,把分钟调整为56push(B2,1); ----------按一次B2 ,调整显示时间的秒push(B3,55); ---------按55次B3 ,调整显示时间的秒为55 push(B2,1);------按一次B2 ,推出调整时间,重新进入到显示时间的模式,push(B1,1);----------------按一次B1 ,进入到闹钟模式push(B2,1); ------------按一次B2 ,调整闹钟时间的小时push(B3,11); ----------按11次B3,把闹钟的小时调为11 push(B2,1); ------按一次B2,调整闹钟时间的分钟push(B3,59); -----------按59次B3,把闹钟的分钟调为59push(B2,1);------按一次B2,退出闹钟调整,重新进入到闹钟显示模式push(B3,1); -------按一次B3 ,打开闹钟push(B1,1);---------按一次B1 ,退出闹钟模式,重新进入到时间显示模式--------下面的代码如果没有,则闹钟响30s后自动关闭wait until ring'event and ring='1'; -------等待闹钟响wait for 10000 ms; ------闹钟响了之后,在等待十秒push (B3,1); ------------按一次B3 ,关闭闹钟wait;end process;END;(2)仿真波形:复位后,可以看到disp_time=’1’,disp_alarm=’0’;表示屏幕上显示的是时间模式的时间,按一次B1 进入闹钟模式,可以看出disp_time=’0’,disp_alarm=’1’;表示屏幕上显示的是时间模式的时间。
多功能数字表课程设计
多功能数字表课程设计一、课程目标知识目标:1. 学生能理解多功能数字表的基本结构、功能及工作原理;2. 学生能掌握多功能数字表的各个按键操作及功能切换;3. 学生了解并掌握多功能数字表在不同场景下的应用。
技能目标:1. 学生能够熟练操作多功能数字表,进行基本的数据测量;2. 学生能够运用多功能数字表解决实际问题,如计算时间、距离等;3. 学生能够通过多功能数字表进行简单的数据分析和处理。
情感态度价值观目标:1. 培养学生对多功能数字表的兴趣和好奇心,激发他们学习科学技术的热情;2. 培养学生严谨、细致的学习态度,提高他们分析问题、解决问题的能力;3. 培养学生的团队合作意识,使他们学会在团队中分享经验、共同成长。
课程性质:本课程为实践性较强的学科课程,结合理论知识与实际操作,旨在提高学生的动手能力和解决问题的能力。
学生特点:学生处于好奇心强、求知欲旺盛的年级,对新鲜事物有较高的接受能力,但需要引导和激发。
教学要求:教师应注重理论与实践相结合,关注学生的个体差异,提供有针对性的指导,确保学生在课程中取得具体的学习成果。
同时,注重培养学生的情感态度价值观,使他们在学习过程中形成正确的价值观和积极的学习态度。
二、教学内容1. 多功能数字表的基本原理:介绍多功能数字表的工作原理、电路构成及其功能特点,使学生了解其内部结构和操作原理。
教学内容关联教材章节:第一章《数字仪表的基本原理》2. 多功能数字表的操作方法:详细讲解多功能数字表的按键功能、操作步骤及功能切换方法,让学生掌握实际操作技巧。
教学内容关联教材章节:第二章《数字仪表的操作与使用》3. 多功能数字表的应用案例:通过实际案例,展示多功能数字表在不同场景下的应用,如测量时间、距离、温度等,培养学生解决实际问题的能力。
教学内容关联教材章节:第三章《数字仪表在实际应用中的案例分析》4. 数据处理与分析:教授学生如何使用多功能数字表进行数据收集、处理和分析,提高学生的数据分析能力。
实验十 多功能数字电表和万用表的设计(部分
12级电科专业《专业实验》安排表(2015下半年)说明:14周3(上课时间为第103每一时间段实验为4学时,下午上课时间:14:30-17:30每次实验上课前需认真预习相关实验内容并写好预习报告每位学生准备8张16开实验报告纸,8张32开原始记录纸。
讲义份数:导热系数?份,电源特性?份,声光电路?份。
所开设实验的房间管理由各位老师自己承担。
理学院物理实验室2015.09.06实验十多功能数字电表和万用表的设计数字电表以它显示直观、准确度高、分辨率强、功能完善、性能稳定、体积小易于携带等特点在科学研究、工业现场和生产生活中得到了广泛应用。
数字电表工作原理简单,完全可以让同学们理解并利用这一工具来设计对电流、电压、电阻、压力、温度等物理量的测量,从而提高大家的动手能力和解决问题能力。
【实验目的】1、了解数字电表的基本原理及常用双积分模数转换芯片外围参数的选取原则、电表的校准原则以及测量误差来源。
2、了解万用表的特性、组成和工作原理。
3、掌握分压、分流电路的原理以及设计对电压、电流和电阻的多量程测量。
4、了解交流电压、三极管和二极管相关参数的测量。
5、通过数字电表原理的学习,能够在传感器设计中灵活应用数字电表。
【实验仪器】1、DH6505数字电表原理及万用表设计实验仪。
2、四位半通用数字万用表。
(自备)3、示波器。
(自备)4、ZX25a电阻箱。
(自备)【实验原理】一、数字电表原理常见的物理量都是幅值大小连续变化的所谓模拟量,指针式仪表可以直接对模拟电压和电流进行显示。
而对数字式仪表,需要把模拟电信号(通常是电压信号)转换成数字信号,再进行显示和处理。
数字信号与模拟信号不同,其幅值大小是不连续的,就是说数字信号的大小只能是某些分立的数值,所以需要进行量化处理。
若最小量化单位为∆,则数字信号的大小是∆的整数倍,该整数可以用二进制码表示。
设∆=0.1mV ,我们把被测电压U 与∆比较,看U 是∆的多少倍,并把结果四舍五入取为整数N (二进制)。
多功能数字钟的设计报告
多功能数字钟的设计报告
一、简介
本项目为一款多功能数字钟,考虑到时代的发展,利用计算机技术和
电子工艺,设计出一款全新的数字钟,它可以满足日常生活中的不同需求。
二、功能
1、设置时间和日期的功能。
2、支持闹钟功能,可以设置多个闹钟,每天自动响铃提醒。
3、支持倒计时功能,用户可以设置倒计时的时间,可以实现计时功能。
4、支持自定义界面功能,用户可以根据自己的喜好来设置数字钟的
界面和背景图案。
5、钟表外观强大,具有耐用、耐磨、耐高温等特点,能够满足不同
应用环境的要求。
三、硬件系统
本项目采用先进的微控制芯片技术,设计制造的多功能数字钟由主控
单元、传感器、触摸控制板、显示屏、外壳等组成。
1、主控单元:采用先进的微控制器进行控制,并结合定时器、中断
处理模块进行时间控制,主控单元负责接收传感器信号,控制显示屏信息,实现时钟的功能。
2、传感器:采用光电传感器、按键传感器等,可以有效地接收外部
信号,实现对外部信号的检测。
3、触控板:采用触摸传感技术,可以有效地实现用户对时钟的操作,例如调节时间、设置闹钟等。
多功能直流电压表的设计与实现
多功能直流电压表的设计与实现多功能直流电压表是一种广泛应用于电子制造业和科技研究领域
的实用工具。
它具有数字化显示、高精度测量、自动换量等多种功能,可用于测试各种电路的输出电压,检测电源的稳定性和准确性,以及
测量电池的电压和维护状态等。
首先,多功能直流电压表的设计需要选用高精度芯片、精良的模
拟电路和先进的数字电路,以确保测量的准确性与可靠性。
其次,它
还应该采用便捷的人机交互方式和清晰的显示接口,以方便用户进行
各种测量操作并及时获取测试结果。
此外,为了实现多种测量功能,
如自动换量、补偿、过载保护等,还需要加入一些特殊的电路设计和
控制程序。
对于具体的实现方案,可以考虑采用数字电压计芯片作为核心测
量模块,并通过模拟滤波、增益调节和校准电路来提高测量的精确度
和稳定性。
同时,利用微处理器控制数字显示和各项功能,可以实现
快速响应、自动换量和数据存储等多种功能,并且可以通过外部接口
与其他设备进行数据通讯和控制。
而在外观设计方面,可以考虑采用
人体工学原理设计外壳,以达到美观、舒适、耐用等多重目的。
总而言之,多功能直流电压表的设计需要考虑精度、可靠性、便
捷性和多功能性等多重因素,才能更好地满足用户的需要。
而随着科
技不断进步,我们相信未来一定会有更多更先进的多功能电压表问世。
多功能电子表设计说明书
目录1 多功能电子表设计目的及意义2多功能电子表设计内容(1)总体设计方案简介(2)单元电路设计(3)总电路图(4)软件设计,编程思路,给出流程图,程序清单(附注释)(5)仿真结果3 结果分析4 设计总结5设计心得参考文献附录1.多功能电子表设计目的及意义1.1多功能电子表设计目的:目的:学生通过自己动手设计制作,将电子技术相关理论知识与制作实践相结合,提高学生的动手能力,加深对电子技术原理的理解,增加学习电子技术的兴趣,为今后投入电子技术的开发应用打好基础。
1.2多功能电子表设计意义:意义:2.多功能电子表的设计内容2.1总体设计方案简介1.功能简介及摘要多功能电子表是一种用数字显示秒﹑分﹑时的记时装置,与传统的机械钟相比,他具有走时准确﹑显示直观﹑无机械传动装置等优点,因而得到了广泛的应用:小到人们的日常生活中的电子手表,大到车站﹑码头﹑机场等公共场所的大型数显电子钟。
本课程设计要用通过简单的逻辑芯片实现数字电子钟。
要点在于用555芯片连接输出为一秒的多谐振荡器用于时钟的秒脉冲,用74LS160(10进制计数器)74LS00(与非门芯片)等连接成60和24进制的计数器,再通过七段数码管显示,构成了简单数字电子钟。
2.设计流程多功能电子表一般由振荡器、分频器、译码器、显示器等部分组成。
这些都是数字电路中应用最广泛的基本电路。
多功能电子表的基本计流程框图如下所示;图1 结构框图3.各部分功能说明1、振荡器振荡器是多功能电子表的核心,它的作用是产生一个频率标准,即时间标准信号,然后再由分频器分成秒脉冲,即“秒”时间脉冲。
因此正当其频率的精度与稳定度基本决定了多功能电子表的质量。
为了产生稳定的时间标准信号,一般采用石英晶体振荡器。
从多功能电子表的精度考虑,晶体振荡频率越高,秒针的时间精度越高。
但这会使振荡器的耗电量增大,分频器的级数也要增多,所以在确定频率时,应当天考虑这两方面因素,然后再选用石英晶体振荡器型。
多功能数字万用表设计与制作
多功能数字万用表设计与制作1、摘要随着科技的日新月异,电子产品发展也非常之快,在电子电路测试、家用电气设备的维修、电子仪器检修、电子元器件测量中,万用表是最普及、最常用的的测量仪表。
由于它操作简单、功能齐全、便于携带、一表多用等特点,深受电工、电子专业工作者及广大无线电爱好者的喜爱。
事实证明,万用表不仅能检测电工、电子元器件的性能优劣,查找电子、电气线路的故障,估测某些电气参数,有时还能代替专业测试仪器,获得比较准确的结果,基本上可以满足电工、电子专业人员和业余无线电爱好者的需要。
因此,推广万用表的应用技术,实现一表多用,既符合节约精神,又可以在一定程度上克服专用仪器的困难。
多功能数字万用表是在电子方面的学习、开发以及生产方面应用相当广发的一种仪器工具,整机电路设计以大规模的集成模拟和数字电路组合,采用STM32F103RBT6为核心,高精度的运算放大器,低功耗高效率的开端电源转换器,全电子调校技术赋予仪表高可靠性,高精度。
仪表可用于测量交直流电压、交直流电流、电阻、电感、电容,RS232C接口技术的应用使其和计算机构成可靠多种的双向通讯。
仪表采用独特的外观设计,采用OLED3.1液晶显示器,仪表采用220V交流供电使之成为性能更优越的高精度电工仪表。
目录1摘要 (2)2项目概述与功能需求 (5)3项目论证 (6)3.1 总体方案论证 (6)3.1.1 设计目标 (6)3.1.2 总体设计方案 (6)3.2 小模块方案设计 (9)3.3 项目设计 (12)4项目设计 (12)4.1 系统硬件设计 (12)4.1.1 测直流电流模块 (12)4.1.2 测直流电压模块 (14)4.3.3 侧交流电压模块 ......... 错误!未定义书签。
4.1.4测电阻模块 .................. 错误!未定义书签。
7 4.1.5 测电容模块 ................. 错误!未定义书签。
六位半数字多功能万用表设计
六位半数字多功能万用表设计白雨微1,薛巨峰1,鲁志军2(1.东北林业大学,黑龙江哈尔滨150040;黑龙江省计量科学研究院,黑龙江哈尔滨150036)摘要:研究并设计一种高精度的数字式万用表,该表采用单片机系统对信号进行采集和控制。
其方法是利用模拟电路对各种电信号进行数据采集,经AD7711放大和滤波后再进行A/D 转换,转换后的数字值送进单片机进行数据处理,数据经锁存选择后送8279显示出来。
8279支持键盘选择测量物理量,并与单片机共同选择被测物理量的档程进行测量,测量精度达到6位半。
该6位半数字多用表成本低,准确度高,直流电压准确度是0.002%。
关键词:数字万用表;单片机;A/D 转换与控制中图分类号:TP 273文献标识码:A文章编号:1001-4462(2010)12-0041-03Six Half Digital Versatile Multi-metersBAI Yu-wei 1,XUE Ju-feng 1,LU Zhi-jun 2(1.Northeast Forestry University,Harbin Heilongjiang 150040,China;2.Heilongjiang Institute of Metrology,Harbin Heilongjiang 150036,China )Abstract :A hig hly a ccura te dig ita l vers a tile m e te r is res ea rche d a nd de s ig ne d a nd it us e sa S C M s ys temto co lle ct a nd co ntro l s ig nalsby ado pting a n a na lo gcircuit toco nduct da ta co lle ctio n o f variouse le ctric s ig na ls ,which a rethe n a m plifie d a nd filtered by AD7711,fo llo w ed by A/D co nve rs ion,after w hich the dig ita l va lue is tra ns m itte d to a S C M fo r da ta pro ces s a nd then tra ns m itte d to 8279a fte r la tch cho ice fo r dis pla y.8279a llo w s the keyboa rd to s e le ct a nd m e a s ure phys ica l qua ntity a nd s e le ct the filepro ce s sof thes e le cte d phys ica l qua ntity in co lla bo ra tio n w ith a S C M fo r m e a s urem e nt ,w ith m e a s urem e nt a ccura cy up tos ix ha lf.The s ix ha lf dig ita l vers a tilem ulti-m e ter fea ture slo w co s t,hig h a ccura cy and 0.002%DCvoltag ea ccura cy.Key words :dig ita l vers a tilem ulti-m eter;S CM;A/D co nve rs io n a nd co ntro l1数字万用表的工作原理数字万用表的最基本功能是测量交直流电压、交直流电流及电阻,其基本组成见图1。
本科毕业设计论文--eda课程设计报告多功能数字钟设计
湖北大学物电学院EDA课程设计报告(论文)题目:多功能数字钟设计专业班级: 14微电子科学与工程*名:**时间:2016年12月20日指导教师:万美琳卢仕完成日期:2015年12月20日多功能数字钟设计任务书1.设计目的与要求了解多功能数字钟的工作原理,加深利用EDA技术实现数字系统的理解2.设计内容1,能正常走时,时分秒各占2个数码管,时分秒之间用小时个位和分钟个位所在数码管的小数点隔开;2,能用按键调时调分;3,能整点报时,到达整点时,蜂鸣器响一秒;4,拓展功能:秒表,闹钟,闹钟可调3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩在规定时间内,完成叙述并回答问题。
目录(四号仿宋_GB2312加粗居中)(空一行)1 引言 (1)2 总体设计方案 (1)2.1 设计思路 (1)2.2总体设计框图 (2)3设计原理分析 (3)3.1分频器 (4)3.2计时器和时间调节 (4)3.3秒表模块 (5)3.4状态机模块 (6)3.5数码管显示模块 (7)3.6顶层模块 (8)3.7管脚绑定和顶层原理图 (9)4 总结与体会 (11)多功能电子表摘要:本EDA课程主要利用QuartusII软件Verilog语言的基本运用设计一个多功能数字钟,进行试验设计和软件仿真调试,分别实现时分秒计时,闹钟闹铃,时分手动较时,时分秒清零,时间保持和整点报时等多种基本功能关键词:Verilog语言,多功能数字钟,数码管显示;1 引言QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程,解决了传统硬件电路连线麻烦,出错率高且不易修改,很难控制成本的缺点。
利用软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然2 总体设计方案2.1 设计思路根据系统设计的要求,系统设计采用自顶层向下的设计方法,由时钟分频部分,计时部分,按键调时部分,数码管显示部分,蜂鸣器四部分组成。
多功能数字秒表
摘要近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。
本文阐述了基于单片机的数字电子秒表设计。
本设计主要特点是计时精度达到0.01s,具有多组数据记录功能,一键实现开始、暂停、清零功能。
解决了传统的由于计时精度不够造成的误差和不能记录多组数据局限性。
是各种体育竞赛的必备设备之一。
本设计的数字电子秒表系统采用AT89S52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部控制电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够实现六位LED显示,显示时间为0~59分59秒99毫秒,计时精度为0.01秒,能正确地进行计时,同时能记录10组时间,并能用上下翻动键对计时时间进行查询。
其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,延时程序等,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键词:单片机;数字电子秒表;仿真;LCDABSTRACTIn recent years, with the rapid development of science and technology, the application of SCM is unceasingly to the deep. This article elaborated the digital electronic stopwatch design based on single chip microcomputer. This design main characteristic is timing accuracy reached 0.01 s, has the function of multiple data record, a key to realize the start, pause, reset function. Solve the traditional due to timing error caused by the precision is not enough and can't record of data limitations. Is one of the necessary equipment of various sports competitions.The design of digital electronic stopwatch system USES AT89S52 single chip processor as the center, use the timer/counter timing and the principle of representation, combinedwith the display circuit, LED digital tube and external control circuit to design the timer. The software and hardware organically, enables the system to realize the six LED display, show time for 0 ~ 59 minutes 59 seconds 99 milliseconds, timing accuracy of 0.01 seconds, can correctly on time, at the same time can record 10 groups of time, and can turn up and down keys to inquires the clock time. Software using C language program, including display program, timer interrupt service, time delay procedures, hardware systems use PROTEUS powerful functions, simple and easy to observe, can be observed in the simulation of the actual working condition.Key words SCM; Digital electronic stopwatch; The simulation; LCD目录一、概述 (4)1、意义: (4)2、功能 (4)二、硬件电路设计及描述 (4)1、方案及设计要求: (4)2、仿真图、PCB板图、成品图 (6)3、芯片资料: (9)4、元件清单: (9)三、软件设计流程及描述 (10)1、程序流程图 (10)2、源程序代码 (10)四、测试 (22)五、总结 (23)参考文献 (23)致谢 (24)一、概述1、意义:时间是日常生活、体育竞技、工业、医学、航天等领域最常遇到的一个物理量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郑州轻工业学院课程设计说明书题目:多功能数字表的设计姓名:院(系):电气信息工程学院专业班级:电子信息工程学号:指导教师:耿鑫成绩:时间:2014年6月16日至2014年6月20日郑州轻工业学院课程设计任务书题目多功能数字表的设计专业、班级学号姓名主要内容、基本要求、主要参考资料等:基于钟表设计的常识,给出时、分、秒的设计思路,并利用硬件编程语言VHDL或者Verilog-HDL来实现。
要求具有基本功能如调整时间对表、闹铃、计时器等,给出完成控制电路所需要的设计模块;给出硬件编程语言的实现,并进行仿真;给出下载电路的设计,设计为2种下载方法,其中一种必须为JTAG;同时设计者报告不允许雷同。
参考资料:1、潘松、黄继业《EDA技术及其应用》(第四版)科学出版社 20092、樊昌信《通信原理》电子出版社完成期限:指导教师签名:课程负责人签名:年月日现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDA技术,作为其现代电子设计技术的核心,人们也越来越重视这方面的研究。
在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动完成文件编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试。
本实验中我们运用EDA课程中所学的知识,设计了一个拥有时间校正和闹钟功能的24小时制多功能数字时钟。
通过本实验,我们初步了解EDA的设计过程;初步掌握用VHDL语言的设计方法和设计思想;初步熟悉Max+Plus II软件平台的编程和仿真,并通过AEDK-EDA实验板下载模拟实现初步了解了硬件实现的方法。
关键词数字时钟/VHDL/FPGA/Max+PlusII1绪论 (1)2工作原理 (3)2.1 设计思想 (3)2.2 原理分析 (3)3 各子模块具体分析 (6)3.1时分秒程序介绍 (6)3.1.1时模块 (6)3.1.2分模块 (7)3.1.3秒模块 (8)3.2计时模块 (9)3.2.1秒计时 (9)3.2.2分计时 (11)3.2.3小时计时 (12)3.3 闹钟模块 (14)3.3.1闹钟分计时 (14)3.3.1闹钟小时计时 (15)3.4报时模块 (17)3.5下载电路 (19)3.5.1方式一 (19)3.5.2 方式二 (20)结束语 (21)致谢 (22)参考文献 (23)1绪论EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
EDA技术在进入21世纪后,得到了进一步的发展。
嵌入式处理器软核的成熟,使得SOPC步入大规模应用阶段。
电子技术领域开始全方位融入EDA技术,传统的电路系统除了日渐完善的数字技术外都发生了重大的改变。
同时,EDA 技术使得电子领域各学科间的界限更加模糊,更加互为包容。
这些都更加利于EDA设计人员对电子系统的设计,如FPGA/CPLD的开发和全定制和半定制ASIC的设计等。
EDA技术相对于传统数字电路系统有很大的不同,它运用HDL对数字系统进行抽象的行为和功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证了设计过程的正确性,可以大幅度的降低设计成本和设计周期。
又因为有各类库的支持,能够完成各种自动设计过程,极大的简化了设计文档的管理,逻辑仿真测试功能也在应设计的需要而日益强大。
在EDA的程序编写中,一般采用MAX+plusII进行编写。
MAX+plusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大的可编程逻辑器件供应商之一。
MAX+plusII界面友好,实用便捷,是我这样的初学者最好的学习和实验工具。
它提供了一种与结构无关的设计环境,使我这样的的初学者也能方便地进行设计输入,快速处理和器件编程,使得我的学习更加的方便。
在EDA的技术开发中还存在一个地位十分重要的东西,它就是IP。
IP就是知识产权核或知识产权模块的意思。
著名的美国Dataquest咨询公司将半导体产业的IP定义为用于ASIC或FPGA/CPLD中预先设计好电路功能模块。
IP中还存在分类,一般分为软IP、固IP和硬IP。
软IP是用VHDL等硬件描述语言描述的功能模块,但不涉及具体电路元件,固IP始完成了综合的功能模块,硬IP提供设计最终阶段产品:掩模。
目前的数字集成电路的设计都比较模块化(参见集成电路设计、设计收敛(Design closure)和设计流(Design flow (EDA)))。
半导体器件制造工艺需要标准化的设计描述,高抽象级的描述将被编译为信息单元(cell)的形式。
设计人员在进行逻辑设计时无需考虑信息单元的具体硬件工艺。
利用特定的集成电路制造工艺来实现硬件电路,信息单元就会实施预定义的逻辑或其他电子功能。
半导体硬件厂商大多会为它们制造的元件提供“元件库”,并提供相应的标准化仿真模型。
相比数字的电子设计自动化工具,模拟系统的电子设计自动化工具大多并非模块化的,这是因为模拟电路的功能更加复杂,而且不同部分的相互影响较强,而且作用规律复杂,电子元件大多没有那么理想。
Verilog AMS就是一种用于模拟电子设计的硬件描述语言。
此外,设计人员可以使用硬件验证语言来完成项目的验证工作目前最新的发展趋势是将集描述语言、验证语言集成为一体,典型的例子有SystemVerilog。
随着集成电路规模的扩大、半导体技术的发展,电子设计自动化的重要性急剧增加。
这些工具的使用者包括半导体器件制造中心的硬件技术人员,他们的工作是操作半导体器件制造设备并管理整个工作车间。
一些以设计为主要业务的公司,也会使用电子设计自动化软件来评估制造部门是否能够适应新的设计任务。
电子设计自动化工具还被用来将设计的功能导入到类似现场可编程逻辑门阵列的半定制可编程逻辑器件,或者生产全定制的专用集成电路。
2工作原理2.1 设计思想(1)“小时”校准状态:在“小时”校准状态下,显示“小时”的数码管以2Hz 闪烁,并以2Hz的频率递增计数。
(2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以2Hz闪烁,并以2Hz的频率递增计数。
(3)“秒”校准状态:在“秒复零”状态下,显示“秒”的数码管以2Hz闪烁,并以1Hz的频率递增计数。
(4)闹钟“小时”校准状态:在闹钟“小时”校准状态下,显示“小时”的数码管以2Hz闪烁,并以2Hz的频率递增计数。
(5)闹钟“分”校准状态:在闹钟“分”校准状态下,显示“分”的数码管以2Hz闪烁,并以2Hz的频率递增计数。
2.2 原理分析数字计时器是由计时电路、译码显示电路、脉冲发生电路和控制电路等几部分组成的,控制电路按要求可由校分校时电路、清零电路和保持电路组成。
其中,脉冲发生电路将试验箱提供的48Mhz的频率分成电路所需要的频率;计时电路与动态显示电路相连,将时间与星期显示在七段数码管上,并且驱动蜂鸣器整点报时;校时校分电路对时、分、星期提供快速校时;清零电路作用时,系统的分秒时同时归零;保持电路作用时,系统停止计时并保持时间不变。
其原理框图如图所示:电路总图如下(电路进行了封装):图2 电路总图首先由分频器把原来的48MHZ的脉冲用进行分频得到1Khz、500hz、2hz、1hz的脉冲。
1hz的脉冲送到时钟计时电路秒位的clk输入口;秒位的进位信号和2hz脉冲通过开关的选择输送到分位电路的时钟输入口,前者用于正常计时,后者由于校分时;分位的进位信号和2hz脉冲通过开关的选择输送到时位电路的时钟输入口,前者用于正常计时,后者由于校时。
把三个计数器的输出输送给一个24选4的数据选择器,六组分别为秒个位、秒十位、分个位、分十位、时个位、时十位。
数据选择器输入信号由一个模八的计数器提供,这个模八的计数器的输出同时送给一74138译码器。
数据选择器的输出送入7447段译码器的输入口,74138的的输出由于选择显示器的位,7447的输出用于段的显示,这样就实现了动态显示。
至于整点报时电路我们把要蜂鸣器响的时间通过卡诺图化简,得到最简的逻辑函数式,再把逻辑函数式通过电路实现,满足要求才把脉冲信号输送给蜂鸣器。
闹钟电路:首先通过选择是否向分位和十位电路送脉冲来设定时间,当两个电路都无脉冲则电路保持当前的数字,输出端上的电平不在改变,把这个电平信号与时钟计时电路中的对应位输送到一个双输入的同或门,再把14个与门的输出与起来,在与1khz的脉冲与其来送入蜂鸣器。
闹表各位的动态显示原理与上面相同。
万年历电路:其正常状态的脉冲是由时钟计数器时位的进位信号提供的,在调整日期时,时钟信号是通过开关选择一个2hz脉冲输送到各个电路时钟端的。
清零开关的输入信号输送到各个计数器的清零端即可。
万年历各位的动态显示原理与上面相同。
最后由于有三组输出信号要显示,我们通过显示模式控制开关选择要显示的状态信号。
以上的各种状态下的控制键通过模式的选择进行了复用。
模式状态切换的连个按键的输入同时输送到两个LED灯,通过观察灯的状态我们就可以判断当前的模式。
3 各子模块具体分析3.1时分秒程序介绍3.1.1时模块LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour ISPORT(clk,reset:IN STD_LOGIC;daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINdaout<=count;PROCESS(clk,reset)BEGINIF(reset='0')THEN count<="000000"; --若reset=0,则异步清零ELSIF(clk'event and clk='1')THEN --否则,若clk上升沿到IF(count(3 DOWNTO 0)="1001")THEN --若个位计时恰好到"1001"即9IF(count<16#23#)THEN --23进制count<=count+7; --若到23D则elsecount<="000000"; --复0END IF;ELSIF (count<16#23#)THEN --若未到23D,则count进1count<=count+1;ELSE --否则清零count<="000000";END IF; --END IF(count(3 DOWNTO 0)="1001")END IF; --END IF(reset='0')END PROCESS;END fun;3.1.2分模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute ISPORT(clk,clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY minute ;ARCHITECTURE fun OF minute ISSIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC; --enmin_1为59分时的进位信号BEGIN --enmin_2由clk调制后的手动调时脉号串daout<=count;enhour_2<= (sethour and clk1); --sethour为手动调时控制信号,高电平有效enhour<= (enhour_1 or enhour_2);PROCESS(clk,reset,sethour)BEGINIF(reset='0') THEN --若reset为0,则异步清零count<="0000000";ELSIF(clk'event and clk='1')THEN --否则,若clk上升沿到IF(count (3 DOWNTO 0) ="1001")THEN--若个位计时恰好到"1001"即9IF(count <16#60#) THEN --又若count小于16#60#,即60IF(count="1011001") THEN--又若已到59Denhour_1<='1'; --则置进位为1count<="0000000"; --count复0ELSEcount<=count+7; --若count未到59D,则加7,即作"加6校正"END IF; --使前面的16#60#的个位转变为8421BCD的容量ELSEcount<="0000000";--count复0(有此句,则对无效状态电路可自动)END IF; --END IF(count<16#60#)ELSIF (count <16#60#) THENcount<=count+1; --若count<16#60#则count加1enhour_1<='0' after 100 ns; --没有发生进位ELSEcount<="0000000"; --否则,若count不小于16#60# count复0END IF; --END IF(count(3 DOWNTO 0)="1001")END IF; --END IF(reset='0')END process;END fun;3.1.3秒模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC;enmin:OUT STD_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC; --enmin_1为59秒时的进位信号BEGIN --enmin_2由clk调制后的手动调分脉冲信号串daout<=count;enmin_2<=(setmin and clk); --setmin为手动调分控制信号,高电平有效enmin<=(enmin_1 or enmin_2); --enmin为向分进位信号PROCESS(clk,reset,setmin)BEGINIF(reset='0')THEN count<="0000000"; --若reset为0,则异步清零ELSIF(clk 'event and clk='1')then --否则,若clk上升沿到IF(count(3 downto 0)="1001")then --若个位计时恰好到"1001"即9IF(count<16#60#)then --又若count小于16#60#,即60HIF(count="1011001")then --又若已到59Denmin_1<='1';count<="0000000";--则置进位为1及count复0 ELSE --未到59Dcount<=count+7; --则加7,而+7=+1+6,即作"加6校正"END IF;ELSE --若count不小于16#60#(即count等于或大于16#60#)count<="0000000"; --count复0END IF; --END IF(count<16#60#)ELSIF(count<16#60#)then --若个位计数未到"1001"则转此句再判count<=count+1; --若count<16#60#则count加1enmin_1<='0'after 100 ns; --没有发生进位ELSE --否则,若count不小于16#60#count<="0000000"; --则count复0END IF; --END IF(count(3 DOWNTO 0)="1001")END IF; --END IF(reset='0')END PROCESS;END fun;3.2计时模块3.2.1秒计时(1)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;entity cnts60 isport(sld0:buffer std_logic_vector(3 downto 0);sld1:buffer std_logic_vector(7 downto 4);co: out std_logic;rest:in std_logic;clk :in std_logic);end cnts60;architecture rtl of cnts60 isbeginprocess(clk,rest)beginif rest='1' then sld1<="0000"; sld0<="0000";elsif (clk'event and clk='1') thenif (sld1="0101"and sld0="1001")thensld1<="0000"; sld0<="0000";co<='1';elsif sld0="1001" thensld0<="0000";sld1<=sld1+1;co<='0';else sld0<=sld0+1;co<='0';end if;end if;end process;end rtl;(2)仿真波形图:(3)模块图:3.2.2分计时(1)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;entity cnt60 isport(sld0:buffer std_logic_vector(3 downto 0);sld1:buffer std_logic_vector(7 downto 4);co: out std_logic;clk :in std_logic);end cnt60;architecture rtl of cnt60 isbeginprocess(clk)beginif (clk'event and clk='1') thenif (sld1="0101"and sld0="1001")thensld1<="0000"; sld0<="0000";co<='1';elsif sld0="1001" thensld0<="0000";sld1<=sld1+1;co<='0';else sld0<=sld0+1;co<='0';end if;end if;end process;end rtl;(2)仿真波形图:(3)模块图:3.2.3小时计时(1)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;entity cnt24 isport(sld0:buffer std_logic_vector(3 downto 0);sld1:buffer std_logic_vector(7 downto 4);clk :in std_logic);end cnt24;architecture rtl of cnt24 issignal s:std_logic_vector(7 downto 0);beginprocess(clk)begins<=sld1&sld0;if (clk'event and clk='1') thenif s="00100011"thensld1<="0000";sld0<="0000";elsif sld0="1001" thensld0<="0000";sld1<=sld1+1;else sld0<=sld0+1;end if;end if;end process;end rtl;(2)仿真波形图:(3)模块图:3.3 闹钟模块3.3.1闹钟分计时(1)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;entity cntm60b isport(sld0:buffer std_logic_vector(3 downto 0);sld1:buffer std_logic_vector(7 downto 4);en:in std_logic;clk :in std_logic);end cntm60b;architecture rtl of cntm60b isbeginprocess(clk)beginif (clk'event and clk='1') thenif en='1' thenif (sld1="0101"and sld0="1001")thensld1<="0000"; sld0<="0000";elsif sld0="1001" thensld0<="0000";sld1<=sld1+1;else sld0<=sld0+1;end if;end if;end if;end process;end rtl;(2)仿真波形图:(3)模块图:3.3.1闹钟小时计时(1)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;entity cnth24b isport(sld0:buffer std_logic_vector(3 downto 0);sld1:buffer std_logic_vector(7 downto 4);en:in std_logic;clk :in std_logic);end cnth24b;architecture rtl of cnth24b issignal s:std_logic_vector(7 downto 0);beginprocess(clk,en,sld1,sld0)begins<=sld1&sld0;if (clk'event and clk='1') thenif en='1' thenif s="00100011"thensld1<="0000";sld0<="0000";elsif sld0="1001" thensld0<="0000";sld1<=sld1+1;else sld0<=sld0+1;end if;end if;end if;end process;end rtl;(2)仿真波形图:3.4报时模块(1)模块说明:该模块既实现了整点报时的功能,又实现了闹铃的功能,蜂鸣器通过所选频率的不同,而发出不同的声音。