电子跑表的设计

合集下载

电子跑表设计毕业设计

电子跑表设计毕业设计

电子跑表ABSTRACT:Because of its extremely high performance-price ratio, the single-chip computer (SCC) has been paid great attention to ever since it came out in 1970s of 20th Century, and has gained an extensive applicable field and fast development. Among all kinds of SCCs, 51 SCC is the most typical and representative one. This design, adopting 80C51 chip as the core part with some necessary peripheral circuits, is a simple electronic clock which uses 5V DC as the power supply. In hardware aspect, besides the CPU, four seven-segment LED digi-tubes are used for display, which work in a dynamically scanning display mode and driven by 74SL245 chip. The LEDs can accurately indicate hour and minute and two buttons can be used to adjust the time. While in the software aspect, the programming language is assembly language. The whole electronic clock system has functions of time display, adjustment, stopwatch and reset, etc. This design enables me to have greater insight into the basic circuit of SCC, and the basic methods of timer control and interruption programming, so that is a training of my ability of learning, designing and developing software and hardward.KEY WORDS:80C51 LED digi-tubes Electronic clock Stopwatch摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

fpga跑表课程设计

fpga跑表课程设计

fpga跑表课程设计一、课程目标知识目标:1. 理解FPGA的基本原理,掌握跑表设计的基础知识;2. 学会使用硬件描述语言(如VHDL/Verilog)进行FPGA设计;3. 掌握跑表设计的时序逻辑和组合逻辑,并能够运用到实际设计中;4. 了解FPGA设计中时钟信号的重要性,学会合理分配时钟资源。

技能目标:1. 能够运用所学知识,独立完成FPGA跑表的设计与仿真;2. 培养学生的实际操作能力,提高问题分析和解决能力;3. 学会使用相关软件工具(如Quartus、Vivado等)进行FPGA设计;4. 培养学生的团队协作能力,提高项目完成效率。

情感态度价值观目标:1. 培养学生对电子设计及FPGA技术的兴趣,激发创新意识;2. 培养学生严谨、认真的学习态度,养成良好的学术道德;3. 引导学生关注社会发展,认识到FPGA技术在现代科技中的重要性;4. 培养学生克服困难的意志,提高面对挑战的自信心。

本课程针对高年级学生,结合学科特点,注重理论与实践相结合。

通过本课程的学习,使学生能够掌握FPGA跑表设计的核心知识,提高实际操作能力,培养学生的创新意识和团队协作精神,为今后从事相关领域工作打下坚实基础。

二、教学内容1. FPGA基础知识:- FPGA原理与结构;- 硬件描述语言基础(VHDL/Verilog);- 常用FPGA开发工具介绍。

2. 跑表设计原理:- 跑表功能需求分析;- 时序逻辑与组合逻辑设计;- 时钟信号分配与设计。

3. FPGA跑表设计实践:- 设计流程与方法;- 代码编写与仿真;- FPGA配置与测试。

4. 教学大纲安排:- 第一周:FPGA原理与硬件描述语言基础;- 第二周:跑表设计原理与时序逻辑设计;- 第三周:组合逻辑设计及时钟信号分配;- 第四周:FPGA跑表设计实践与项目指导;- 第五周:项目验收与评价。

教学内容关联教材章节:- 第一章:FPGA原理与结构;- 第二章:硬件描述语言基础;- 第三章:数字电路设计;- 第四章:FPGA设计实例。

数字跑表设计eda课程设计

数字跑表设计eda课程设计

数字跑表设计eda课程设计摘要:一、引言1.课程背景介绍2.数字跑表设计意义二、数字跑表设计原理1.跑表系统架构2.数字跑表核心模块三、EDA工具介绍1.EDA工具的作用2.EDA工具的选择四、数字跑表设计流程1.设计输入2.设计仿真3.物理布局4.物理验证5.结果分析与优化五、数字跑表设计实践1.设计参数设定2.使用EDA工具进行设计3.设计验证与优化六、数字跑表设计成果与应用1.设计成果展示2.设计实用性分析3.设计前景展望七、总结与展望1.课程学习总结2.数字跑表设计发展趋势正文:一、引言随着科技的飞速发展,电子设计自动化(EDA)技术在电子设计领域中的应用越来越广泛。

数字跑表作为一种实用且具有较高技术含量的电子设备,其设计过程离不开EDA技术的支持。

本课程设计旨在让学生掌握数字跑表的设计方法,熟悉EDA工具的使用,提高实际动手能力和创新能力。

二、数字跑表设计原理数字跑表设计主要包括系统架构设计和核心模块设计两部分。

系统架构设计要求明确整个跑表的组成,包括时钟模块、计数模块、显示模块、控制模块等。

核心模块设计则是针对各个功能模块提出具体的实现方案,如采用何种器件、电路拓扑结构等。

三、EDA工具介绍EDA工具在数字跑表设计过程中发挥着至关重要的作用。

它能帮助设计师快速完成电路设计、仿真、验证及优化等任务。

常见的EDA工具包括原理图编辑器、布图布线工具、仿真器、时序分析工具等。

本课程将使用某款EDA工具进行数字跑表的设计。

四、数字跑表设计流程1.设计输入:根据数字跑表的功能需求,编写设计说明书,明确各个模块的功能、性能参数及接口关系。

2.设计仿真:利用EDA工具进行电路仿真,验证电路的正确性。

3.物理布局:根据电路原理图,进行物理布局设计,考虑器件摆放、连线走向等因素。

4.物理验证:对物理布局进行验证,确保电路符合制程要求。

5.结果分析与优化:分析仿真结果,找出存在的问题,对设计进行优化。

五、数字跑表设计实践1.设计参数设定:根据数字跑表的实际需求,设定各项性能参数,如时钟频率、计数范围等。

电子实验数字跑表

电子实验数字跑表

电子科技大学基于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七段数码管显示读数。

数字跑表设计.

数字跑表设计.

学号:课程设计题目数字跑表设计学院自动化学院专业班级姓名指导教师年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 数字跑表设计初始条件:1.运用所学的模拟电路和数字电路等知识;2.用到的元件:实验板、电源、连接导线、74系列芯片、555芯片或微处理器等。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.设计一个具有、‘分’、‘秒’、‘1/100秒’的十进制数字显示的计时器。

2.要有外部开关,控制计数器的直接清零、启动和暂停/连续计时功能;3.严格按照课程设计说明书要求撰写课程设计说明书。

时间安排:第1天下达课程设计任务书,根据任务书查找资料;第2~4天进行方案论证,软件模拟仿真并确定设计方案;第5天提交电路图,经审查后领取元器件;第6~8天组装电路并调试,检查错误并提出问题;第9~11天结果分析整理,撰写课程设计报告,验收调试结果;第12~14天补充完成课程设计报告和答辩。

指导教师签名:年月日系主任(或责任教师)签名:年月日目录引言 (1)1设计意义及要求 (2)1.1设计意义 (2)1.2设计要求 (2)2方案设计 (3)2.1设计思路 (3)2.2 方案设计 (4)2.2.1设计方案一(个人方案)电路图 (4)2.2.2设计方案二(小组方案)电路图简单说明 (5)2.3方案比较 (6)3部分电路设计 (7)3.1计数单元 (7)3.2开始和暂停单元 (11)3.3清零功能单元 (12)3.4脉冲输出电路 (14)3.5译码及显示电路 (15)4调试与检测 (18)4.1调试中故障及解决办法 (18)4.2 调试与运行结果 (18)5仿真操作步骤及使用说明 (19)结束语 (20)参考文献 (21)附录1 (22)附录2 (23)本科生课程设计成绩评定表........................ 错误!未定义书签。

引言过去的三个世纪,我们经历了第一次工业革命,人类开始进入蒸气时代,第二次工业革命,人类开始进入电气时代并在信息革命资讯革命中达到顶峰。

eda数字跑表课程设计

eda数字跑表课程设计

eda数字跑表课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握数字跑表的工作原理;2. 学生能掌握数字跑表设计中所涉及的电子元件、电路图及编程知识;3. 学生能了解数字跑表在实际应用中的功能与作用。

技能目标:1. 学生能运用所学知识,设计并搭建简单的数字跑表电路;2. 学生能通过编程实现对数字跑表的调试与优化;3. 学生能运用团队协作、问题解决和创新能力,完成数字跑表的设计与制作。

情感态度价值观目标:1. 学生培养对电子科技的兴趣和热情,增强实践操作的信心;2. 学生培养团队协作精神,提高沟通与表达能力;3. 学生认识到科技对社会发展的作用,树立创新意识,增强社会责任感。

课程性质:本课程为实践性、综合性课程,结合理论知识与实际操作,培养学生的动手能力、创新能力和团队合作能力。

学生特点:六年级学生具有一定的电子知识基础和编程能力,对新鲜事物充满好奇心,善于合作与探究。

教学要求:教师需引导学生掌握EDA数字跑表的基本知识,注重实践操作,鼓励学生创新与思考,提高学生的问题解决能力。

在教学过程中,关注学生的个体差异,给予个性化指导,确保课程目标的达成。

通过本课程的学习,使学生能够将所学知识应用于实际生活中,提高综合素质。

二、教学内容1. 电子设计自动化(EDA)基础理论:- EDA概念及其发展历程;- 数字跑表的基本原理与功能。

2. 数字跑表电路设计:- 常用电子元件的特性与选型;- 电路图绘制及仿真;- 数字跑表电路搭建与调试。

3. 编程与控制:- 编程环境及编程语言介绍;- 数字跑表程序设计;- 程序调试与优化。

4. 实践操作与团队协作:- 分组进行数字跑表设计与制作;- 团队合作、问题解决与创新能力培养;- 实践成果展示与评价。

教材章节关联:本教学内容与教材中“电子设计自动化”、“数字电路设计”和“编程控制”等章节相关。

具体内容包括:- 电子设计自动化:第1章;- 数字电路设计:第3章;- 编程控制:第5章。

数字跑表的设计与仿真

数字跑表的设计与仿真

EAST CHINA INSTITUTE OF TECHNOLOGY EDA设计与应用课程设计:数字跑表的设计与仿真学院:机械与电子工程学院专业:电子科学与技术班级:1221402学号:201220140223姓名:杨卡2014年11月一、实验目的:1)进一步学习更复杂的EDA项目设计,更熟练地掌握VHDL语言设计。

2)学习动态数码管的VHDL编程。

3)更加熟练计时显示、进位和校时的编程方法。

二、实验要求:1)设计一个具有、‘分'、‘秒'、‘ 1/100 秒'的十进制数字显示的数字跑表。

2)要有外部开关,控制计数器的直接清零、启动和暂停/ 连续计时功能。

三、实验内容:1)数字跑表功能:计时精度10ms,计时范围为59分59.99秒。

设置两种模式,模式一:对单个人计数,能实现暂停、显示及清零功能,并在数码管上实时显示;模式2:实现对多个人的同时计时,在数码管上实时显示,并能在液晶显示屏上回显出 6 个时间,可控制显示。

2)数字跑表分模块设计:数字跑表设置如下的子模块。

分频模块;模式 1 控制模块;模式 2 控制模块;计时模块;数码管译码模块;液晶译码模块;液晶显示模块。

百分秒、秒和分等信号即采用BCD译码计数方式,根据上述设计要求,用Verilog 对数字跑表的描述如下。

仍然采用引脚属性定义语句进行引脚的锁定。

四、设计程序(此处只写出与课本中不同的部分)为了便于显示,百分秒、秒和分钟信号皆采用BCD码计数方式,并直接输出到6 个数码管显示出来。

根据上述设计要求,用Verilog HDL 语言对数字跑表描述如下。

/* 信号定义:CLK: CLR: PAUSE: MSH,MSL:时钟信号;异步复位信号;暂停信号;百分秒的高位和低位;SH,SL :秒的高位和低位;MH,ML:分钟的高位和低位。

*/module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML); input CLK,CLR,PAUSE; output[3:0] MSH,MSL,SH,SL,MH,ML; reg[3:0] MSH,MSL,SH,SL,MH,ML;reg cn1,cn2; //cn1 为百分秒向秒进位,cn2 为秒向分进位//**************** 百分秒计数进程,每计满100,cn1 产生一个进位*******always @(posedge CLK or posedge CLR)begin if(CLR) begin {MSH,MSL}<=8'h00; cn1<=0;end // 异步复位else if(!PAUSE) //PAUSE 为0 时正常计数,为1 时暂停计数begin if (MSL==9) begin MSL<=0;if (MSH==9) begin MSH<=0;cn1<=1;endelse MSH<=MSH+1;endelse begin MSL<=MSL+1;cn1<=0;endendend秒计数进程,每计满60,cn2 产生一个进位********* always @(posedge cn1 or posedge CLR)begin if(CLR) begin {SH,SL}<=8'h00;cn2<=0; end // 异步复位else if(SL==9)begin SL<=0;if (SH==5) begin SH<=0;cn2<=1; end else SH<=SH+1;endelse begin SL<=SL+1;cn2<=0;end end //****************** 分钟计数进程,每计满60,系统自动清零********* always @(posedge cn2 or posedge CLR) begin if(CLR) begin {MH,ML}<=8'h00;end // 异步复位else if (ML==9) begin ML<=0;if(MH==5) MH<=0;else MH<=MH+1;endelse ML<=ML+1;endendmodule五、心得体会:此次课程设计,从程序设计到仿真,我经历了一个困难重重,愈挫愈勇的过程。

EDA数字跑表课程设计代码

EDA数字跑表课程设计代码

EDA数字跑表课程设计代码一、课程目标知识目标:1. 理解EDA工具的基本原理和使用方法;2. 掌握数字跑表的基本功能及其设计原理;3. 学会使用硬件描述语言(如Verilog)编写简单的数字跑表代码;4. 了解数字电路设计中时序逻辑的应用。

技能目标:1. 能够运用EDA工具进行数字跑表的原理图绘制与仿真;2. 能够独立编写并进行数字跑表的代码调试;3. 培养学生动手实践能力,提高问题解决和团队合作能力;4. 学会查阅相关资料,提高自主学习能力。

情感态度价值观目标:1. 培养学生对电子设计自动化(EDA)技术的兴趣和热情;2. 培养学生严谨的科学态度,注重实验数据和实验结果的准确性;3. 增强学生的团队协作意识,培养良好的沟通与表达能力;4. 培养学生面对挑战时的自信心和积极心态,激发创新意识。

本课程针对高年级学生,结合课程性质、学生特点和教学要求,明确以上课程目标。

通过本课程的学习,学生将掌握EDA数字跑表的设计方法,提高实践操作能力,培养良好的学习态度和团队协作精神,为后续相关课程学习打下坚实基础。

1. EDA工具简介:介绍EDA工具的基本概念、发展历程和作用;- 教材章节:第1章 EDA技术概述2. 数字跑表设计原理:- 教材章节:第2章 数字电路设计基础- 内容:时钟信号、计数器、译码器等基本组成部分及其工作原理;3. 硬件描述语言Verilog基础:- 教材章节:第3章 硬件描述语言Verilog HDL- 内容:Verilog语法、数据类型、运算符、模块结构及常用语句;4. 数字跑表代码编写与调试:- 教材章节:第4章 数字电路设计实例- 内容:根据设计原理编写数字跑表代码,利用EDA工具进行仿真与调试;5. 数字跑表综合应用:- 教材章节:第5章 数字电路系统设计- 内容:将所学知识应用于实际项目中,进行数字跑表的原理图绘制、代码编写、仿真验证及硬件测试。

教学进度安排:1. EDA工具简介(1课时)2. 数字跑表设计原理(2课时)3. 硬件描述语言Verilog基础(3课时)4. 数字跑表代码编写与调试(4课时)5. 数字跑表综合应用(2课时)1. 讲授法:- 在EDA工具简介、数字跑表设计原理等理论知识点,采用讲授法进行教学,为学生提供清晰的知识框架和理论指导。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

等级:成绩□优□良□中□及格□不及格课程设计课程名称单片机原理与应用课程设计课题名称电子跑表设计专业电子信息工程班级1501学号03姓名谭青权指导老师肖锋2015年6月*日报告撰写要求(此页不打印)课程设计报告是体现课程设计成果的载体,具体要求如下:1、课程设计报告的基本格式(1)说明书统一使用word文档打印,A4纸张,页边距设置为:上2cm,下2cm,左2.54cm,右2cm。

(2)正文采用宋体小四,字间距20磅;1级标题采用黑体小三,2级标题采用黑体四号,3级标题采用黑体小四;1和2级标题段落间距为上下0.5行。

(3)图表需统一编号,图标标题采用黑体五号;图标题在图片下方,表格标题在表格上方。

(4)装订顺序为:封面、任务书、报告正文、评分表。

2、课程设计报告的撰写要求(1)设计报告正文内容为5-6页为宜,主要内容为自己的设计思路、设计步骤、关键性步骤的记录、重要结果的记录以及自己本次课程设计的总结。

报告撰写要求思路清晰、结构合理、层次清晰,报告简洁但又要能体现设计过程。

(2)报告中图表要求清晰、规范,图表的尺寸大小适当。

(3)课程设计报告内容(仅供参考):电气信息学院课程设计任务书课题名称电子跑表的设计姓名谭青权专业电子信息工程班级1501 学号03指导老师肖锋课程设计时间2017/12/11-2017/12/22一、任务及要求设计任务:利用单片机为核心设计一个多功能电子表,具有电时钟和跑表功能。

用做时钟时,在显示器上显示时、分、秒,用做跑表时,显示范围00时00分00秒-23时59分59秒并具有跑表启动和跑表复位功能键。

当按下启动按钮跑表开始计时,按下停止按停止计时,当按下复位按钮跑表回零。

设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)应用系统的硬件和软件的调试。

二、进度安排第一周:周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。

周二~周三:完成硬件设计和电路连接周四~周日:完成软件设计第二周:周一~周三:程序调试周四~周五:设计报告撰写。

周五进行答辩和设计结果检查。

三、参考资料1、王迎旭等.单片机原理及及应用[M]. 2版.机械工业出版社,20122、胡汉才.单片机原理及其接口技术[M].3版.清华大学出版社,2010.3、戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学出版社,201目录第1章、总体方案设计 (2)1.1、设计任务及要求 (2)1.2、设计原理或者设计思路 (2)第2章、硬件电路设计 (4)2.1、主控制器单片机的选择 (4)2.2、时钟电路 (4)2.3、显示接口电路 (5)2.4、键盘接口电路 (6)第3章、软件设计 (7)3.1、设计说明 (7)3.2、主程序设计 (7)3.3、时间处理模块 (8)3.4、键盘扫描模块 (10)3.5记数回调模块 (12)第4章、调试 (13)第5章、总结 (15)附录 (16)第1章总体方案设计1.1、设计任务及要求设计任务:利用单片机为核心设计一个多功能电子表,具有电时钟和跑表功能。

用做时钟时,在显示器上显示时、分、秒,用做跑表时,显示范围00时00分00秒-23时59分59秒并具有跑表启动和跑表复位功能键。

当按下启动按钮跑表开始计时,按下停止按停止计时,当按下复位按钮跑表回零。

跑表能记下10个数,记数完毕能回调显示设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)应用系统的硬件和软件的调试。

1.2、设计原理或者设计思路1.设计思路1)计时单元由单片机内部的定时器/记数器来实现。

2)时间显示功能通过LED数码管动态扫描来实现。

利用单片机内部4的8位并行I/O 端口来实现外部按键的信号输入,由于数码管要显示时钟,还要显示跑表,因此,我分别用TR1,TR0定时器来分别定时跑表和时钟,分别写出跑表和时钟的子程序,定义一控制变量Numb并赋其初值0,当Numb=0时调用时钟子程序,当Numb=1时调用跑表子程序,达到跑表显示与时钟显示互不影响。

3)跑表的切换,启动,停止,清零功能由软件来实现,分别由P1.0,P1.1,P1.2,P1.3外接按键,跑表的记数,回调显示,分别由P1.6,P1.7外接按键,在分别编写两段不同的子程序来实现所需要的功能1.3、总体设计方案本系统采用AT89C51单片机、6位LDE数码管显示、一个排阻、6个调节按钮、2个电容与1个晶体振荡器共同构成本的单片机电子跑表的硬件。

时钟模块与计时模块则分别由单片机内部的定时器/记数器T0与T1来实现。

时间显示功能通过LED数码管动态扫描来实现。

电子跑表的启动/暂停/清零功能由软件来实现。

P1.0实现时钟与秒表的切换功能,P1.1接开始计时键,P1.2接计时暂停键,P1.3接计时重新计时键,P1.6接计时记数键,P1.7接计时回显键。

本系统软件部分则采用C51编写,功能模块结构化强,共利用了7个功能函数,2个中断服务函数和1个主函数构成了本次电子跑表的软件部分。

图2.1为本系统方框图。

图2.1第2章硬件电路设计2.1、主控制器单片机的选择本次设计采用AT89C51单片机,以下为其标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

MCS51的管脚图如图2.1图2.1 89c51芯片管脚图2.2、时钟电路单片机工作的时间基准是由时钟电路提供的。

在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路,如图3.2所示。

电路中,电容器C1和C2对振荡频率有微调作用,本次设计中电容器取值为20pF,石英晶体选择12MHz,故单片机的机器周期为1us,图2.2为单片机内部时钟电路图2.2内部时钟电路2.3、显示接口电路本次设计中使用了6位共阴数码显示管,显示控制采用动态显示,即数据的显示是由段和位选信号共同配合完成的。

为了实现显示器的动态扫描,我们需要对显示器进行段控和位控,因此在显示器接口电路中需要有两个输出口,其中一个用于输出8条段控线;另一个用于输出位控线,位控线的数目等于显示器的位数。

本次设计中用P1口与显示器的8条段控线相接,用P2.2~P2.7与显示器的6条位控线相接。

如图2.3所示。

图2.3 显示接口电路2.4、键盘接口电路本设计的键盘接口电路中使用了4个按键分别与单片机的P1.1~P1.3口相连如图3.3所示,分别实现时钟/秒表切换、开始计时、暂停计时、重新计时的功能。

按键的开关状态通过一定的电路转换为高、低电平状态。

按键闭合过程在相应的I/O端口形成一个负脉冲。

闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。

抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms 之间。

为了避免键的一次处理闭合,应采CPU多次按用措施消除抖动。

图2.4为键盘接口电路图2.4 键盘接口电路第3章软件设计3.1、设计说明在进行应用软件设计时应采用模块化结构设计,其优点是:每个模块的程序结构简单,任务明确,易于编写,调试和修改,程序可读性好,对程序的修改可局部进行,其他部分可以保持不变,便于功能扩充和版本升级,是便于多个模块的调用和分工合作。

因此为了达到功能结构模块化,易读,简单,易移植的特点,故本次设计采用C51编写。

系统编写时可分为键盘扫描程序模块,时间处理模块,显示模块。

如图4.1所示。

将这些事先划分好的模块用C51编成不同的子函数,再将它们有机的结合起来从而达到系统的整体功能。

图3.1为软件设计总体模块图3.1 软件设计模块3.2、主程序设计本程序可分为4个模块,共定义了7个子函数,其中键盘扫描模块包括键盘扫描函数,数码管显示模块包括时钟显示函数、秒表显示函数,时间处理模块包括时钟系时间处理函数、秒表系时间处理函数、延迟函数,,另本程序还利用了两个定时/计数器分别为T0、T1,故还需定义两个中断函数T0中断服务函数和T1中断服务程序。

本程序中由于涉及时钟与秒表互切问题,故定义了一控制变量Numb并赋其初值0,若在仿真过中切到秒表则Numb取反为1,切到时钟则Numb重新为0。

因此在程序运行过程中便可控制各按键功能及屏蔽在时钟模式或秒表模式下不相干功能键的影响。

图3.2为主程序流程图。

图3.2 主程序流程图3.3、时间处理模块时钟处理函数用定时器T0定时10ms ,其计数初值为12*2tfosc X M -=,由于T0选用工作方式1,故M 为162即65536,fosc 为晶振频率为12MHZ ,t 为定时时间10ms ,所以X 的值为64536,将该值的高八位值赋给TH0,低八位并赋给TL0,这样便完成了T0的初始化工作,因为定时器T0工作在方式1下,故每次定时器T0溢出都需再给T0赋初值。

由于T0定时10ms ,所以要得到1s 的时间需T0溢出100次,由此引入计数变量Count 。

每当T0溢出,Count 便自动加1,直至计满100,便使秒变量Seconds 自动加1并初始化Count 重新开始计数,直到Seconds 为60,初始化Seconds 并使分变量Minutes 自动加1,同理到时变量Hour 为24时,初始化Hours ,由此无限循环下去直到关闭电源。

图3.3为程序流程图图3.3 T0中断函数及时钟处理函数流程秒表时间处理函数用的是定时器T1与T0相同,定时10ms ,高八位TH1赋值为()2561000065536-,低八位TL1赋值为()256%1000065536-。

T1的启动由按键扫描函数控制,当开启T1后,每次T1溢出,Decisec 自动加1,直至Decisec 到100,秒Sec 自动加1,直至分Mint 为10,初始化Mint 计时复位。

图3.4为其程序流程图。

图3.4 秒表处理函数及T1中断服务函数流程3.4、键盘扫描模块时钟与秒表切换键程序:CHANGE 键为时钟秒表切换键,当按下CHANGE 键时,会产生按键抖动,本程序中利用delay (5)产生5ms 延迟使得按键状态稳定后重新确认是否按下了CHANGE 键即CHANGE 为低电平,此时还需判断控制变量Numb 是否为0(Numb 为0即奇数次按下CHANGE 键显示秒表,Numb 为1则为偶数次按下CHANGE 键显示时钟),在CHANGE 为0且Numb 为0的情况下,执行数码管显示秒表函数并对Numb 取反为再次按下CHANGE键做准备,此后程序进入确认结束按键循环,若松开CHANGE,则非CHANGE为0,循环结束回到开始处等待按键电平;若一直按着CHANGE,则一直执行数码管显示秒表函数。

相关文档
最新文档