基于单片机的简易秒表制作
- 格式:doc
- 大小:174.50 KB
- 文档页数:11
基于单片机的秒表制作班级:P12电气五班姓名:苑仁绰学号:2012031202742014年6 月20 日一.摘要基于单片机技术制作秒表,运用单片机的定时器中断程序,来实现计时功能。
在给单片机接上外部电路,接上LED数码管,由单片机的P2口控制位码输出,P0口控制断码输出。
3个按键可以采用独立式键盘,其中两个按键分别连接到外部中断INTO、INT1,第三个按键连接到定时器1的T1端口,以中断方式实现键盘的扫描。
给单片机接上按键复位电路。
通过单片机X1,X2端接上外部时钟脉冲,通过编程,来实现秒表的计时。
关键字:单片机秒表LED数码管二. 目录一.摘要 (2)二.目录................................. 错误!未定义书签。
三.总体设计方案 (4)四.硬件电路设计 (4)1.硬件知识: (4)(1).单片机 (4)(2). LED数码管 (7)(3).时钟电路 (8)(4).复位电路 (9)(5).限流电阻 (9)2.线路图 (10)五.软件设计 (11)1.资源分配 (11)2.程序流程图 (12)( 1).主程序 (12)(2).显示子程序 (12)3.编程 (14)六.设计完成后的心得体会 (18)三.总体设计方案主要分为3个部分:主程序﹑显示子程序和定时器中断程序。
主程序主要是初始化部分和不断调用动态显示子程序部分。
动态显示子程序完成4位LED的轮流位扫描,它被主程序不断调用,以保证稳定可靠的显示。
显示时间的刷新由定时器中断产生,定时器每50ms中断一次,当中断20次后(即1s后),对时间单元(秒计数单元、分计数单元)进行更新,然后通过拆字子程序将时间单元里面的十六进制数拆开为两个BCD码,并送到显示缓冲区。
返回主程序后显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也随之发生变化。
根据硬件设计,由单片机的P2口控制位码输出,P0口控制断码输出。
动态显示程序中,在单片机内部RAM中设置显示数据缓冲区,由查表程序完成显示译码,将缓冲区内待显示数据转换成相应的断码,再将断码通过8051的P0口输出;位码数据由累加器循环左移指令产生,再通过P2口输出。
摘要本设计是基于AT89S51单片机的简易数字秒表设计,主要组成是以51单片机最小系统为核心,通过运用单片机的振荡电路实现计时同时用数码管同步显示。
本秒表最大计时为99秒。
本设计的特点是:大部分功能通过软件实现,使电路简单明了,系统稳定性好。
关键词:AT89S51 振荡电路计时数码管目录1设计概述 (1)1.1AT89S51概述 (1)1.2系统设计功能概述 (1)2系统设计 (2)2.1设计思路 (2)2.2硬件设计 (2)2.2.1单片机最小系统的设计 (2)2.2.2数码管显示电路设计 (3)2.3软件设计 (7)2.3.1软件设计流程图 (7)2.3.2消除开关抖动 (9)2.3.3数码管延时显示程序 (9)2.3.4延时1秒的程序 (10)3软件调试和结果 (10)3.1软件调试与下载 (10)3.2硬件仿真 (11)4心得体会 (12)参考文献 (14)附录 (15)I基于单片机的数字秒表设计主程序 (15)IIPCB电路图 (17)III实物图 (17)11 设计概述1.1 AT89S51概述AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In -system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:40个引脚,4k Bytes Flash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。
单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
课程名称:微机原理课程设计题目:基于51单片机的秒表设计随着社会的发展,单片机已经渗透到我们生活中的各个领域,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等。
本设计就是由单片机STC89C52RC芯片和四位一体LED数码管为核心,辅以必要的电路,构成了一个单片机电子秒表。
秒表是一种常用的测试仪器,它可以用在百米赛跑等需要精确计时的地方,为人们的生活提供了很大的方便。
该单片机电子秒表布置合理,全部器件分布在7*9cm洞洞板上,看起来小巧精简。
采用的是单片机内部定时/计数器计时,走时非常精确而且不易出错。
0.56英寸的四位数码管发出红光,可以直观地显示时间。
一个控制按键就可以控制秒表的计数与停止,按一下控制键,秒表工作状态就由计时变为计时变为停止或停止变为计时,按一下清零键就可以清零,操作非常简单。
由于是四位数码管,它的计时周期为100秒,显示满刻度为99:99秒,从左往右数共四位,前两位显示整数部分,后两位显示小数部分,中间两个个秒闪灯(秒闪灯一直亮)。
关键词:秒表,51单片机,C语言一、设计任务与要求 (18)1.1 设计任务 (18)1.2 设计要求 (18)二、方案总体设计 (19)2.1 方案一 (19)2.2 方案二 (19)2.3 系统采用方案 (19)三、硬件设计 (21)3.1 单片机最小系统 (21)3.2 数码管显示模块 (21)3.3 系统电源 (22)3.4 整体电路 (22)四、软件设计 (24)4.1 keil软件介绍 (24)4.2 系统程序流程 (24)五、仿真与实现 (27)5.1 proteus软件介绍 (27)5.2 仿真过程 (27)5.3 实物制作与调试 (29)5.4 使用说明 (30)六、总结 (32)6.1设计总结 (32)6.2经验总结 (20)七、参考文献 (21)一、设计任务与要求1.1 设计任务1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).加深焊接的技巧,提高焊接的能力5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求1).清零键进行清零2).一个独立按键进行停止与运行的操作3).秒闪灯一直亮二、方案总体设计设计一个基于51单片机的秒表。
基于单片机的秒表设计基于单片机的秒表设计引言在现代生活中,计时设备已经成为了我们日常生活中的必需品。
无论是体育比赛、工程控制还是交通调度,都需要精确的计时功能。
传统的机械秒表虽然精度高,但操作复杂,不易携带。
为了解决这一问题,基于单片机的秒表设计应运而生。
本文将详细介绍秒表的设计原理、实现方案以及实验验证。
原理分析单片机内部有一个高精度振荡器,通过晶振和电容等元件构成的电路,产生具有一定频率的方波信号。
该信号送入单片机内的计数器,计数器对单位时间内方波的个数进行计数,从而得到时间信息。
单片机将这些时间信息进行处理和存储,并通过输出设备展示给用户。
设计方案基于单片机的秒表设计主要包括以下几个部分:1、电路连接:通过单片机内部的计数器和外部的晶振、电容等元件构成计时电路。
2、程序编写:编写程序实现计时、暂停、清零等功能。
3、输出显示:通过液晶显示屏等设备将计时的结果展示给用户。
实验验证为了验证基于单片机的秒表的准确性和稳定性,我们进行了一系列实验。
实验结果表明,该秒表在各种环境条件下均能保持较高的精度和稳定性。
对比其他方案相比于传统的机械秒表,基于单片机的秒表具有更高的精度和稳定性。
同时,基于单片机的秒表可以通过程序实现复杂的功能,如计时、暂停、清零等,更加方便实用。
结论基于单片机的秒表设计具有高精度、多功能、易操作等优点,在实际生活中具有广泛的应用价值。
通过单片机内部的高精度振荡器和外部的晶振、电容等元件构成的计时电路,实现了秒表的计时功能。
通过程序编写实现了计时、暂停、清零等功能,并通过液晶显示屏等设备将计时的结果展示给用户。
实验结果表明,该秒表在各种环境条件下均能保持较高的精度和稳定性。
基于单片机的秒表相比于传统的机械秒表具有更高的精度和稳定性,同时可以通过程序实现复杂的功能,更加方便实用。
• 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)。
51单片机秒表程序设计1. 简介秒表是一种用于测量时间间隔的计时器,常见于体育比赛、实验室实验等场合。
本文将介绍如何使用51单片机设计一个简单的秒表程序。
2. 硬件准备•51单片机开发板•LCD液晶显示屏•按键开关•连接线3. 程序流程3.1 初始化设置1.设置LCD液晶显示屏为8位数据总线模式。
2.初始化LCD液晶显示屏。
3.设置按键开关为输入模式。
3.2 主程序循环1.显示初始界面,包括“00:00:00”表示计时器初始值。
2.等待用户按下开始/暂停按钮。
3.如果用户按下开始按钮,则开始计时,进入计时状态。
4.如果用户按下暂停按钮,则暂停计时,进入暂停状态。
5.在计时状态下,每隔1毫秒更新计时器的数值,并在LCD液晶显示屏上显示出来。
6.在暂停状态下,不更新计时器的数值,并保持显示当前数值。
3.3 计时器控制1.定义一个变量time用于存储当前的计时器数值,单位为毫秒。
2.定义一个变量running用于标记计时器的状态,0表示暂停,1表示运行。
3.定义一个变量start_time用于存储计时器开始的时间点。
4.定义一个变量pause_time用于存储计时器暂停的时间点。
5.在计时状态下,每隔1毫秒更新time的值为当前时间与start_time的差值,并将其转换为小时、分钟、秒的表示形式。
6.在暂停状态下,保持time的值不变。
3.4 按键检测1.检测按键开关是否被按下。
2.如果按键被按下,判断是开始/暂停按钮还是复位按钮。
3.如果是开始/暂停按钮,并且当前处于计时状态,则将计时状态设置为暂停状态,并记录暂停时间点为pause_time;如果当前处于暂停状态,则将计时状态设置为运行状态,并记录开始时间点为当前时间减去暂停时间的差值。
4.如果是复位按钮,则将计时器数值重置为0,并将计时状态设置为暂停。
4. 程序代码示例#include <reg51.h>// 定义LCD控制端口和数据端口sbit LCD_RS = P1^0;sbit LCD_RW = P1^1;sbit LCD_EN = P1^2;sbit LCD_D4 = P1^3;sbit LCD_D5 = P1^4;sbit LCD_D6 = P1^5;sbit LCD_D7 = P1^6;// 定义按键开关端口sbit START_PAUSE_BTN = P2^0;sbit RESET_BTN = P2^1;// 定义全局变量unsigned int time = 0; // 计时器数值,单位为毫秒bit running = 0; // 计时器状态,0表示暂停,1表示运行unsigned long start_time = 0; // 开始时间点unsigned long pause_time = 0; // 暂停时间点// 函数声明void delay(unsigned int ms);void lcd_init();void lcd_command(unsigned char cmd);void lcd_data(unsigned char dat);void lcd_string(unsigned char *str);void lcd_clear();void lcd_gotoxy(unsigned char x, unsigned char y);// 主函数void main() {// 初始化设置lcd_init();while (1) {// 显示初始界面lcd_clear();lcd_gotoxy(0, 0);lcd_string("00:00:00");// 等待用户按下开始/暂停按钮while (!START_PAUSE_BTN && !RESET_BTN);// 判断按钮类型并处理计时器状态if (START_PAUSE_BTN) {if (running) { // 当前处于计时状态,按下按钮将进入暂停状态 running = 0;pause_time = time;} else { // 当前处于暂停状态,按下按钮将进入计时状态running = 1;start_time = get_current_time() - pause_time;}} else if (RESET_BTN) { // 复位按钮按下,重置计时器time = 0;running = 0;}}}// 毫秒级延时函数void delay(unsigned int ms) {unsigned int i, j;for (i = ms; i > 0; i--) {for (j = 110; j > 0; j--);}}// LCD初始化函数void lcd_init() {lcd_command(0x38); // 设置8位数据总线模式lcd_command(0x0C); // 显示开,光标关闭lcd_command(0x06); // 光标右移,不移动显示器lcd_command(0x01); // 清屏}// 向LCD发送指令函数void lcd_command(unsigned char cmd) {LCD_RS = 0;LCD_RW = 0;LCD_EN = 1;LCD_D4 = cmd >> 4 & 1;LCD_D5 = cmd >> 5 & 1;LCD_D6 = cmd >> 6 & 1;LCD_D7 = cmd >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = cmd >> 0 & 1;LCD_D5 = cmd >> 1 & 1;LCD_D6 = cmd >> 2 & 1;LCD_D7 = cmd >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送数据函数void lcd_data(unsigned char dat) { LCD_RS = 1;LCD_RW = 0;LCD_EN = 1;LCD_D4 = dat >> 4 & 1;LCD_D5 = dat >> 5 & 1;LCD_D6 = dat >> 6 & 1;LCD_D7 = dat >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = dat >> 0 & 1;LCD_D5 = dat >> 1 & 1;LCD_D6 = dat >> 2 & 1;LCD_D7 = dat >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送字符串函数void lcd_string(unsigned char *str) {while (*str) {lcd_data(*str++);delay(5);}}// 清屏函数void lcd_clear() {lcd_command(0x01);}// 设置光标位置函数void lcd_gotoxy(unsigned char x, unsigned char y) {unsigned char addr;if (y == 0)addr = x | (0x80 + y);else if (y == 1)addr = x | (0xC0 + y);lcd_command(addr);}5. 总结本文介绍了使用51单片机设计一个简单的秒表程序。
目录摘要………………………………………………………………………Abstract……………………………………………………………………...1 绪论…….……………………………………........................1.1 设计任务及指标…………………………………………………...1.2 系统设计方案论证…………………………..……………………………1.3设计任务...........................................................................................................2 设计方案简述…………………………..…………………...............2.1 中央处理单元………………………………..………………………….…2.2 电源电路部分……………………………..………………………….…2.3 显示部分…………………………………..………………………….…3 详细设计……………………………………………..………………......3.1 器件及原理…………………………..………………………….…............3.1.1 STC89C52简介.............................................3.1.2 74LS138简介..............................................3.2 电路制作…………………………………………………………………4总结...………………………………..………………………….…........................ 参考文献.....................................................................................................................附录主要程序代码………...………………………..………………………….…摘要在现实生活中,秒表的用途很广泛。
基于某单片机的秒表设计一、设计要求与方案选择(一)设计要求1、能够精确到 001 秒的计时精度。
2、具备启动、暂停、复位等基本功能。
3、能够通过数码管或液晶显示屏显示计时结果。
(二)方案选择在单片机的选择上,考虑到成本、性能和易用性等因素,我们选用了_____单片机。
该单片机具有丰富的资源和良好的稳定性,能够满足秒表设计的需求。
对于计时方式,采用内部定时器中断来实现精确计时。
通过设置合适的定时器初值和中断时间间隔,可以达到 001 秒的计时精度。
在显示方案上,经过比较数码管和液晶显示屏的优缺点,最终决定使用_____液晶显示屏。
它具有显示内容丰富、功耗低、可视角度大等优点,能够清晰地显示秒表的计时结果。
二、硬件设计(一)单片机最小系统单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振电路为单片机提供稳定的时钟信号,复位电路用于系统的初始化和异常情况下的恢复。
(二)按键电路为了实现秒表的启动、暂停和复位功能,设计了三个独立按键。
通过检测按键的按下状态,将相应的信号传递给单片机进行处理。
(三)显示电路选用的液晶显示屏通过数据总线和控制总线与单片机相连。
单片机通过向显示屏发送指令和数据,实现计时结果的显示。
(四)电源电路为整个系统提供稳定的电源供应,确保系统正常工作。
三、软件设计(一)主程序流程主程序首先进行系统初始化,包括单片机内部资源的配置、液晶显示屏的初始化等。
然后进入一个无限循环,在循环中不断检测按键状态,并根据按键操作执行相应的功能,如启动计时、暂停计时、复位计时等。
(二)定时器中断服务程序定时器中断服务程序用于实现精确计时。
在中断服务程序中,对计时变量进行累加,当计时达到 1 秒时,将秒数加 1,并对毫秒数进行清零,从而实现秒表的计时功能。
(三)按键处理程序按键处理程序通过检测按键的按下和释放状态,判断用户的操作意图,并将相应的标志位置位或清零,以供主程序进行处理。
(四)显示程序显示程序负责将计时结果转换为相应的字符,并发送到液晶显示屏进行显示。