基于单片机的秒表设计
基于单片机的秒表的实现设计报告

目录一、课程设计目的 (1)二、课程设计要求 (1)三、总体设计方案 (1)3.1、项目概述 (1)3.2、系统模块化设计及整体原理框图 (1)3.2.1、系统各模块简介 (1)3.2.2、系统整体连线图 (4)3.2.3、设计流程 (4)四、系统组成模块功能实现 (4)4.1、数码管参数的配置 (4)4.2设置定时计数器 (4)4.3暂停与复位 (5)4.4秒表的初始化操作 (6)五、系统功能整合及测试结果展示图 (7)六、未实现部分功能及展望 (7)6.1、未实现功能及期末期望 (7)6.2智能秒表的未来 (8)七、课程设计总结收获与致谢 (8)八、参考文献 (8)一、课程设计目的1、结合学习过的STC15单片机的相关基础知识,通过课程设计的实现,进一步了解该单片机的更深次的功能特性及相关操作。
2、通过项目实践了解AT89C51单片机系统各部分实现的基本思路和原理,完成各功能模块在单片机控制下的协调工作。
3、以个人为单位,独立完成课程设计,从需求分析到模块化功能实现、系统功能整合再到系统测试和最终实现,进一步培养工程模块化操作方法。
二、课程设计要求本系统使用7SEG-MPX6-CC数码管、搭载AT89C51型号的开发板以及排阻RESPACK-8模块、LED显示灯模块、按钮模块实现以下功能:1、数码管上显示已经开始的时间。
2、当秒表未开始时,LED-RED亮起,LED-GREEN不亮,显示屏亮起,显示数字为0;点击开始按钮,LED-RED不亮,LED-GREEN亮起,显示屏显示已经过的秒数;3、点击暂停按钮,LED-RED亮起,LED-GREEN不亮,显示屏处于暂停状态,不再记录秒数;点击复位按钮,LED-RED亮起,LED-GREEN不亮,显示屏显示数字为0三、总体设计方案3.1、项目概述数字秒表是采用数字电路制成的实现对时间的测量,数字秒表是通信设备、视频等科研生产领域并不可少的测量仪器。
基于51单片机秒表的程序的设计[1]
![基于51单片机秒表的程序的设计[1]](https://img.taocdn.com/s3/m/2ebe8c8eed630b1c59eeb5fc.png)
基于51单片机秒表的程序设计1.设计目的:(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。
(2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。
(3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。
(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。
2.设计步骤与要求(1)要求:以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。
以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。
(2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。
用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。
(3)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。
二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的准确性和LED动态显示的稳定性。
秒定时采用定时器T0中断方式进行,60秒计数由定时器1采用方式3完成,中断及计数的开启与关闭受控于按键处理程序。
由上述设计思路可设计出软件流程图如图1.1所示。
(5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则跳回按键查询状态。
基于单片机的秒表设计

题目:基于单片机的秒表设计姓名:学号:专业班级:指导老师:所在学院:年月日摘要本设计是一个利用单片机控制的多功能秒表系统,它是基于51系列的单片机进行的系统设计。
它采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够实现四位LED显示,最大显示时间为9分59.9秒,每毫秒自动加1,一个开始暂停按键、一个复位按键。
其突出的优点:体积小、场外作业、功耗最低、宜用电池作为电源、硬件结构紧凑、简单和软件设计灵活.当今时代,是一个新技术层出不穷的时代。
在电子领域,尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
单片机的出现是现代科技发展的一个重要的里程碑。
由于单片机的集成度高、功能强,通用性好,特别是它具有体积下、重量轻、能耗低、价格便宜等优点,使单片机迅速得到推广应用,目前已成为测量控制应用系统中的优选机种和新电子产品的关键部件。
目录1 概述 (4)1.1设计任务 (4)1.2设计要求 (4)2 系统总体方案及硬件设计 (5)2.1系统总体方案 (5)2.2硬件电路设计 (6)3 软件设计 (10)3.1软件设计概述 (10)3.2程序流程图 (10)3.3子程序模块设计 (12)4 Proteus软件真 (13)4.1软件功能简介 (13)4.2 Proteus运行流程 (14)5课程设计会 (16)参考文献 (16)附1:源程序代码 (17)附2:系统原理图 (20)-3 -1 概述1.1 设计任务设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。
单片机课程设计_基于单片机的数字秒表设计

单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
基于单片机的秒表设计

基于单片机的秒表设计基于单片机的秒表设计引言在现代生活中,计时设备已经成为了我们日常生活中的必需品。
无论是体育比赛、工程控制还是交通调度,都需要精确的计时功能。
传统的机械秒表虽然精度高,但操作复杂,不易携带。
为了解决这一问题,基于单片机的秒表设计应运而生。
本文将详细介绍秒表的设计原理、实现方案以及实验验证。
原理分析单片机内部有一个高精度振荡器,通过晶振和电容等元件构成的电路,产生具有一定频率的方波信号。
该信号送入单片机内的计数器,计数器对单位时间内方波的个数进行计数,从而得到时间信息。
单片机将这些时间信息进行处理和存储,并通过输出设备展示给用户。
设计方案基于单片机的秒表设计主要包括以下几个部分:1、电路连接:通过单片机内部的计数器和外部的晶振、电容等元件构成计时电路。
2、程序编写:编写程序实现计时、暂停、清零等功能。
3、输出显示:通过液晶显示屏等设备将计时的结果展示给用户。
实验验证为了验证基于单片机的秒表的准确性和稳定性,我们进行了一系列实验。
实验结果表明,该秒表在各种环境条件下均能保持较高的精度和稳定性。
对比其他方案相比于传统的机械秒表,基于单片机的秒表具有更高的精度和稳定性。
同时,基于单片机的秒表可以通过程序实现复杂的功能,如计时、暂停、清零等,更加方便实用。
结论基于单片机的秒表设计具有高精度、多功能、易操作等优点,在实际生活中具有广泛的应用价值。
通过单片机内部的高精度振荡器和外部的晶振、电容等元件构成的计时电路,实现了秒表的计时功能。
通过程序编写实现了计时、暂停、清零等功能,并通过液晶显示屏等设备将计时的结果展示给用户。
实验结果表明,该秒表在各种环境条件下均能保持较高的精度和稳定性。
基于单片机的秒表相比于传统的机械秒表具有更高的精度和稳定性,同时可以通过程序实现复杂的功能,更加方便实用。
单片机秒表课程设计 (3)

单片机秒表课程设计1. 引言秒表是一种常用的计时工具,可以用来测量时间的精确度。
在本课程设计中,我们将使用单片机来设计一个简单的秒表。
本文档将详细介绍该秒表的设计思路、硬件和软件实现以及测试结果。
2. 设计思路我们的设计目标是实现一个简单的秒表,包括计时、暂停和复位功能。
我们将采用基于单片机的设计,使用定时器和中断来实现计时。
具体的设计思路如下:•使用微控制器作为核心控制单元,我们选择XXXX型号的单片机。
•使用定时器模块来计时,通过设置定时器的计数频率来控制计时的精确度。
•使用外部中断按钮来控制计时的开始、暂停和复位操作。
•使用LED显示屏来显示计时结果。
3. 硬件设计3.1 硬件连接在硬件设计方面,我们需要将单片机与其他外部设备进行连接。
具体的连接方式如下:•将定时器模块的输出引脚连接到单片机的计时输入引脚。
•将外部中断按钮连接到单片机的中断输入引脚。
•将LED显示屏的控制引脚连接到单片机的输出引脚。
3.2 硬件组成本设计所需要的硬件组成如下:•单片机:XXXX型号微控制器•定时器模块•外部中断按钮•LED显示屏4. 软件设计4.1 主程序框架主程序的框架如下:#include <reg51.h>// 定义全局变量和标志位// 定时器中断函数// 外部中断中断函数// 主程序入口void main() {// 初始化定时器和中断// 循环检测按钮状态,并执行相应操作}4.2 定时器中断函数定时器中断函数用于实现计时功能,其主要逻辑如下:1.获取当前的计数值,并进行相关处理。
2.更新LED显示屏上的计时数据。
4.3 外部中断函数外部中断函数用于响应按钮的按压操作,其主要逻辑如下:1.判断按钮的按下类型,根据不同的按压类型执行相应的操作(开始、暂停或复位)。
2.根据操作类型更新相应的标志位。
4.4 功能函数除了定时器中断函数和外部中断函数之外,还可以编写一些功能函数来实现计时、暂停和复位等功能。
基于单片机的简易秒表设计

• 207•ELECTRONICS WORLD ・技术交流1 前言生活中常见的定时有很多,如电视机定时关机、空调定时开关、微波炉定时加热等等。
单片机中的计数器除了可以作为计数之用外,还可以用作时钟,只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。
基于单片机定时器的简易秒表结构简单,使用方便。
2 电路设计简易秒表电路采用单片机的定时/计数器产生1s 信号,设计一个简易秒表,最大显示60。
2个LED 显示器段选段并联在一起,与单片机的P0口连接;P2口与2个PNP 型三极管的基极连接,驱动LED 显示器的位选端。
LED 为共阳极数码管,显示方式为动态显示。
具体如图1所示。
图1 硬件电路图3 程序设计软件整体设计思路是以动态显示作为主程序,定时器定时时间为50ms ,定时器50ms 溢出一次,溢出20次后秒值加1,中断服务程序流程图如图2所示。
(1)程序1的运行结果是:数码管显示00~59,每1s 变化一次,显示效果直观而且时间较为准确。
(2)注意定时器预置数后,在中断服务程序中还要再次重装定时器初值。
(3)程序的编制过程中,在主程序中用到的寄存器,若在中断服务程序中又要用到,则需要现场保护,同时在中断结束时,恢复现场,如程序中的累加器A 。
另外还要注意IE 、TCON 、TMOD等特殊功能寄存器的使用。
图2 中断服务程序4 结语本设计以51单片机为控制核心,介实现了简易秒表的设计,具有硬件结构简单、扩展性强、驱动能力强等特点,具有较高的应用价值。
参考:张靖武,周灵彬,单片机原理、应用于PROTEUS 仿真[M].北京:电子工业出版社,2010;孙勤江,沈彬,基于单片机的信号发生器设计[J].石油和化工设备,2014(01):11-23;熊华波,单片机开发入门及应用实例[M].北京:北京大学出版社,2011。
杨凌职业技术学院自然科学研究基金项目“无线远程监控技术在设施农业中的应用”(A2018051)。
单片机课程设计+基于单片机的秒表系统设计

目录一总体方案设计 (1)1.1 设计要求 (1)1.2 优点及意义 (1)1.3 初步设计思路 (1)二、硬件电路设计 (1)2.1 AT89C51单片机模块 (1)2.1.1 89C5单片机 (1)2.1.1单片机中断系统 (2)2.2 复位与时钟电路模块 (3)2.2.1晶振电路 (3)2.2.2 复位电路 (3)2.3按键模块 (3)2.4蜂鸣器模块 (4)①蜂鸣器工作原理 (4)2.5数码管模块 (4)三、软件设计 (5)3.1程序流程图 (5)3.2主程序设计 (5)3.2.1定义管脚、指示灯、蜂鸣器 (5)3.2.2启动与暂停 (5)3.2.3每秒报警 (7)3.2.4数码管显示 (7)3.3子程序设计 (8)3.3.1 定时器子程序设计 (8)总结 (9)参考文献 (10)附录 (11)一总体方案设计1.1 设计要求1、设计精度为0.1S的秒表系统。
2、设置启动、暂停、清零按钮。
3、设计每一秒钟都有提醒功能。
4、秒表的最长计时长度为9:59:59,超过此长度,报警。
1.2 优点及意义单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。
事实上单片机是世界上数量最多的计算机。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
1.3 初步设计思路该实验要求进行计时并在数码管上显示时间,则可利用单片机微机仿真实验系统中的芯片AT89C51中的P3.2管脚做为外部中断0的入口地址,并实现“开始/停止”、“暂停”、“清零”按键的功能;定时器T0作为每秒加一的定时器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于52单片机的秒表设计1 单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种职能IC卡,名用豪华车辆的安全保障系统,摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广发应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:1.1 在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用与仪器仪表中,结合不同类型的传感器,可实现诸如电压、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(示波器,各种分析仪)。
1.2在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二极管控制系统等。
1.3在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子称量设备,五花八门,无所不在。
1.4在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便的与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上实现了单片机智能控制,从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可以兼得移动电话,集群移动通信,无线电对讲机等。
1.5单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如易用呼吸机,各种分析仪,监护仪,超生趁断设备及病床呼叫系统等等。
1.6在各大型电器中的模块化的应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。
如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复习的类似与计算机的原理。
如:音乐信号一数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)1.7单片机在汽车设备领域中应用AT89C52单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN 总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等。
此外,单片机在工商、金融、科研、教育,国防航空航天等领域都有着十分广泛的用途。
以89c52为例讲解单片机的引脚及相关AT89C52单片机的引脚图如图1所示.图1 单片机引脚图40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。
1.电源:(1)VCC·芯片电源,接+5V;(2)VSS·接地端;注:用万用表测试单片机引脚电压一般为0V或者5V,这是标准的TTL电平。
但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0V~+5V之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0V或5V。
2.时钟:XTAL1、XTAL2·晶体振荡电路反相输入端和输出端。
3.控制线:控制线共有4根:(1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲○1ALE功能:用来锁存P0口送出的低8位地址○2PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
(2)PSEN:(3)RST/VPD:复位、备用电源。
○1RST(Reset)功能:复位输入端。
○2VPD功能:在Vcc钓点的情况下,接备用电源。
(4)EA/Vpp:内外ROM选择/片内EPROM编程电源。
○1EA功能:内外ROM选择端。
○2Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
4.I/O线。
89C52共有4个8位并行I/O端:P0、P1、P2、P3、口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)5.P3口第一功能:P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0(低电平有效)、P3.3 INT1 外部中断1(低电平有效)P3.4 T0 定时计数器0P3.5 T1 定时计数器1P3.6 WR 外部数据存储器写选通(低电平有效)P3.7 RD外部数据存储器写选通(低电平有效)2 系统设计任务和要求以及方案硬件设计2.1 设计任务设计一个单片机控制的秒表系统。
利用单片机的定时器、计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。
将软、硬件有机的结合起来,使得系统能够正确的进行加计时,数码管能够正确的显示时间。
2.2设计要求1.开机时液晶显示00:00:0。
2七位LED显示,显示时间为00:00:0~60:00:0分钟。
3.每一秒钟,计数器自动加1。
4.按键控制计数,分别控制开始计数、停止计数和归零,功能分配如下所示:按键K1:控制秒表的启动、停止,并且K2键暂停后按K1键归零按键K2:控制数码管显示暂停,继续2.3 系统总体方案本系统采用89C51系列单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计数器,将软、硬件有机的结合起来。
其中软件系统采用C语言编写程序,包括显示程序,加1技术程序,演示程序,按键消抖程序等,并在WAVE中调试运行,硬件系统利用PROTEUS 强大功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
系统框图如图2所示。
图2 系统框图2.4 硬件电路设计本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等。
(1)单片机简介本系统设计采用89C52系列单片机。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非意识存储器制造技术制造,与工业标准的MCS-52指令集和输出管脚相兼容(由于在微机原理中学过C-52的具体知识,这里不再详细说明)。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效的微控制器。
(2)电源电路电源电路是系统最基本的部分电路,任何电路都离不开电源部分,由于三端集成稳压器件所组成的稳压电源线路简单,性能稳定,工作可靠,调整方便,已逐渐取代分立元件,在生产中被广泛采用,由于是小系统,我们采用7809电源提供+5V稳压电压。
(1)晶体振荡电路MCS-52单片机内部的振荡电路是一个高增益反相器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
这里,我们选用52单片机12MHz的内部振荡方式,电路如下:电容器C1、C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要晶体振荡器X1极可能接近单片机。
电路图如图3 所示。
图3 晶体振荡电路图(2)复位电路采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使用RST持续一段时间的高电平,从而实现上电加开关复位的操作。
这不仅能使单片机复位,而且还能使单片机的外围芯片也同时复位。
电路图如图4所示。
图4 复位电路(3)显示电路显示电路既可以选用液晶显示器,也可以选用数码管显示。
我们采用的是数码管显示电路。
用七个共阳极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。
再用数码管显示时,我们静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。
在设计中,我们采用LED动态显示,用P0口驱动显示。
由于P0口输出级是开漏电路,用它驱动是需要上拉电阻才能输出高电平。
电路图如图5 所示。
图5 显示电路图(4)键盘电路在按键电路中,我们可以在I/O口直接接按键,或者通过I/O设计一个键盘,然后通过键盘扫描程序判断是否有键按下等。
键盘扫描电路节省I/O口,但程序有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,为了使程序简化,我们采用按键电路,用部分P1口做开关,P1.0为开始停止,P1.1为暂停继续,外用中断INT1开始,另外用软件发消除振动。
电路图如图6所示。
图6 键盘电路图2.5硬件主电路图设计用pretues画出其硬件主电路图如图7 所示。
图7 硬件主电路图3 软件设计3.1软件设计概述在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。
把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可能性,使程序的结构层次一目了然。
应用系统的程序由包含多个模块的主程序和各种子程序组成。
各程序模块都要完成一个明确的任务,实现某个具体的功能,如:加计数延时,计数和显示等,在具体需要时调用相应的模块即可。
功能描述:用7位LED数码显示“秒表”,显示时间为00秒~60分,每秒自动加:1;一个:“开始”“清零”键,一个“暂停”“继续”键。
3.2主程序流程图这里采用顺序结构,通过对按键的扫描,判断要实现什么功能。
如图8 所示。
图8 主流程框图3.3程序中个函数设计#include <reg51.h>#include <absacc.h>#define a8255 XBYTE[0x1b00]#define b8255 XBYTE[0x1b01]#define c8255 XBYTE[0x1b02]#define com8255 XBYTE[0x1b03]char min,sec,dsec,a,b,c;char n[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; char count;bit flag;bit flag1;sbit p10=P1^0;sbit p11=P1^1;void delay(void){char k;for (k=0;k<99;k++);}void display(int m,int s,int ds) //显示程序{char m1,m2,s1,s2,i;m1=m2=s1=s2=0;if(m>0){m2=m%10;m/=10;}if(m>0) m1=m%10;if(s>0){s2=s%10;s/=10;}if(s>0) s1=s%10;b8255=0xff;for(i=0;i<7;i++){switch(i){case 0:b8255=0xfe;a8255=n[m1];delay();case 1:b8255=0xfd;a8255=n[m2];delay();case 2:b8255=0xfb;a8255=n[10];delay();case 3:b8255=0xf7;a8255=n[s1];delay();case 4:b8255=0xef;a8255=n[s2];delay();case 5:b8255=0xdf;a8255=n[10];delay();case 6:b8255=0xbf;a8255=n[ds];delay();}}}void initial(void){com8255=0x80;TMOD=0x01;IT0=1;EA=1;ET0=1;EX0=1;min=0;sec=0;dsec=0;a=0;b=0;c=0;flag=0;flag1=0;}void main(void){initial();while(1){if(!flag1)display(min,sec,dsec);elsedisplay(a,b,c);}}void st(void) //秒表启动停止控制{flag=!flag;if (flag){TH0=-50000/256;TL0=-50000%256;TR0=1;}if(!flag){if(flag1==1){min=0;sec=0;dsec=0;count=0;flag1=0;TR0=0;}else TR0=0;flag=0;}}void lock(void) //数码管数字锁定{if(flag==1){a=min;b=sec;c=dsec;flag1=!flag1;}}void T0_serv(void) interrupt 1 using 1 //定时器T0每0。