单片机应用技术任务11 控制秒表的启停与清零
秒表课程设计
《单片机技术》课程设计说明书数字式秒表院、部:电气与信息工程学院学生姓名:刘贝贝指导教师:肖冬瑞职称讲师专业:电气工程及其自动化班级:电气本1305班学号:1330120504完成时间:2016年6月湖南工学院《单片机技术》课程设计课题任务书学院:电气与信息工程学院专业:电气工程及其自动化指导教师肖冬瑞学生姓名刘贝贝课题名称数字式秒表内内容及任务一、设计任务设计一个具有特定功能的数字式秒表。
二、设计内容1、秒表的硬件系统(1)、单片机最小系统模块(2)、供电模块(3)、显示模块(4)、键盘模块2、秒表的软件系统(1)、系统监控程序模块(2)、显示程序模块(3)、键盘程序模块三、设计要求该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数字式秒表应具有开始、暂停、连续、清零和停止功能。
主主要参考资料[1]李广弟.单片机基础[M].第3版.北京:北京航空航天大学出版社,2003.6.[2]李全利.单片机原理及应用(C51编程)[M].北京:高等教育出版社,2012.12.[3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:北京航空航天大学出版社,2003.6.[4]李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003.01.[5]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.9.教教研室意见见教研室主任:(签字)年月日摘要本次课程设计的数字电子秒表系统采用AT89S52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计。
将软、硬件有机地结合起来,使得系统能够实现LED显示,0~99.99秒,计时精度为0.01秒,能正确地进行计时。
其中软件系统采用汇编语言编写程序,包括主程序,显示程序,中断服务程序,延时程序,按键程序等,并在KEIL中调试运行,硬件系统利用PROTEUS来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
单片机秒表设计程序及原理图
单片机秒表系统设计引言:中国使用单片机的历史只有短短的30年,在初始的短短五年时间里发展极为迅速。
纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。
在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。
这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了。
所以,它的魔力不仅是在现在,在将来将会有更多的人来接受它、使用它。
据统计,我国的单片机年容量已达3亿片,且每年以大约20%的速度增长,但相对于世界市场我国的占有率还不到1%。
特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地。
所以,学习单片机在我国是有着广阔前景的。
一、单片机秒表系统设计目的及内容1、利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。
2、综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。
3、通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
4、通过本次系统设计,增强自己的动手能力。
认识单片机在日常生活中的应用的广泛性,实用性。
本系统利用单片机的定时器/计数器定时和记数的原理,通过采用proteus仿真软件来模拟实现。
模拟利用AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计数的开启/暂停/继续与复位!其中有两个数码管用来显示数据,一个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。
基于51单片机秒表的程序的设计[1]
基于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单片机的秒表设计1
实训报告题目秒表系统的设计年级专业班级学号姓名地点日期目录一,目⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 3 二,系硬件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 三,系件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7 四,系与果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 五,片机小⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13设计目标最近几年来跟着科学技术的发展,单片机的应用范围愈来愈广,也成为好多专业的必修课。
本文简单论述了鉴于单片机的秒表设计。
本设计的主要特色是计时精度达到 0.01 秒,能够用来为各样体育比赛计时等。
本设计的数字秒表采纳AT89才 51 单片机为主要器件,利用其准时器的原理,结LED数码管以及外面中止电路来设计计时器。
将软硬件联合起来,使得系统能实现 0~99.99 秒的计时,计时精度位 0.01 秒。
当按下一个键 1 时,开始显示数字,即计时开始,再按下键 2 时,暂停计时并显示方才的结果,这个时候假如再按键 1,则持续计时,也就是显示的数字包含方才的数据。
按下键 3 时,数据清零。
系统硬件设计1 、1整体方案的设计数字秒表拥有显示直观、读取方便、精度高等长处,在计时中宽泛应用。
本设计顶用单片机和数码管构成数字秒,力争构造简单。
设计中包含硬件电路的设计和系统程序的设计。
硬件电路主要有主控制器、控制按钮与显示电路构成。
主控制器采纳单片机AT89才 51,显示电路采纳四位共阴极数码管显示计不时间。
本设计利用 AT89才 51 单片机的准时器,使其能精准计时。
利用键盘上的独立按键实现开始计时和暂停以及清零。
P0口输出段码数据, P2.0~P2.2 连上译码器作为位选。
设计的基本要求是正确性。
计时器采纳 T0 中止实现,准时溢出中止周期为1ms,当溢出中止后向CPU 发出溢出中止恳求,每发出10 次中止恳求就对 10ms位(即最后一位)加一,达到 100 次就对 100ms位加一,以此类推,直到99.99s 为止。
单片机课程设计_基于单片机的数字秒表设计
单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
《单片机技术应用》课程标准
《单片机技术应用》课程标准课程名称:单片机技术应用适用专业:电气技术应用专业一、课程性质《单片机技术应用》前叙课程是:电工电子综合课程、机床电气控制、电机与变压器,单片机技术应用课程是将综合应用上述课程的知识,让学生掌握单片机小型控制系统的设计、调试、维护方法,为后继《机电一体化设备》课程和顶岗实习做准备。
二、课程设计思路大部分的单片机控制设备属于机电一体系统,单片机岗位群的典型工作是从事单片机应用系统进行设计、制作和维护的。
具体工作包括:1.根据产品开发需要设计单机片系统,包括总体设计方案、硬件电路设计、软件程序开发;2.撰写相关的技术文档,包括进行材料表的整理和归档,作业文件的编写。
3.参与产品的可靠性测试、转产和生产的支持。
岗位要求从业者熟悉单片机的相关知识,可以熟练运用单片机做应用开发;具有能熟练应用单片机开发软件的能力;了解相关硬件调测仪器的使用方法和测试仪器:万用表、数字示波器、逻辑分析仪等;根据岗位对从业者的知识技能、工作的情感态度要求,单片机课程教学应当围绕岗位的要求、岗位的组成环节来提出教学的能力目标和知识系统的构建方式。
《单片机技术应用》是机电技术应用三年制中职专业设置的必修课程之一,是一门集合了电力电子知识、传感器知识和自动控制知识于一体的课程。
课程从工作过程分析出发,根据企业机电岗位岗位,职业能力需求,使课程的目标、内容、设计和评价贴近真实的工作岗位的需求,培养学生胜任实际工作岗位的能力。
工作项目是课程实施的载体,《单片机技术应用》课程的工作项目的内容选取应当具备以下特点:选用典型的单片机控制系统作为开展教学活动的载体;工作项目中应当使用岗位常用的编译软件;工作项目应当尽量使用单片机控制系统常用的器件,例如:主流单片机芯片、各种传感器、电机;工作项目中应当包含典型单片机技术应用的安装、调试、维护和维修各个完整的工作过程。
《单片机技术应用》本课程开设一学期,教学课时数为80学时,4学分。
单片机原理与应用实验报告5——秒表定时器实验
大连理工大学软件学院《单片机原理与应用》实验报告姓名:学号:班级:姓名:学号:班级:组号:实验箱编号:实验时间:月日实验室:嵌入式实验室实验台:Embest Edukit-III平台指导教师:侯刚成绩:实验五:秒表定时器实验一、实验目的和要求题目:秒表定时器实验实验目的1. 学习单片机的基本接口技术。
2. 学习74HC595、74HC138使用及与51单片机的控制方法。
实验要求1.通过按键控制,完成数码管的显示计数控制。
2. 用汇编语言设计程序,完成8个数码管的显示控制。
当按下INT 按钮时,数码管开始快速计时,高五位为秒数,低三位为ms 数,每1ms 刷新一次显示内容。
当再次按下INT 按钮时,停止计数。
二、实验原理和内容实验内容:用汇编语言设计程序,完成8个数码管的显示控制。
当按下INT 按钮时,数码管开始快速计时,高五位为秒数,低三位为ms 数,每1ms 刷新一次显示内容。
当再次按下INT 按钮时,停止计数。
实验原理:1.根据原理图,分析工作原理,有P0进行取段码,P2.0 P2.1 P2.2进行取位码。
2.使用定时器进行计时。
根据所给开发板上的晶振频率,计算出计时器所付初值,设置计时器TO在模式下工作,每次计时100ms后,转入数码管显示中断处理程序。
3.实验板为共阴极数码管显示,将对应的显示0~9的电信号依次存储在“数组表”中。
4.使用key1,key2两个按键,按下key1,开始计时。
按下key2,计时停止。
5.根据实验要求,采用T0,T1两个定时器,其中T0用来增加时间显示,T1为按暂停键时为LED显示管循环上电所用。
6.每部分中断程序用寄存器间接寻址的方式获取显示数字的电信号量。
并进行循环上电,保证数字的亮度。
三、主要仪器设备及软件编程环境主要仪器:计算机编程软件,51电路开发板编程环境:uVision2 ,progisp烧写软件四、实验步骤与编程实验步骤:编写代码,编译,调试,烧写,完成实验。
单片机简易秒表正计时时间可设置
单片机简易秒表正计时时间可设置秒表是一种用来测量时间流逝的仪器,广泛应用于体育比赛、科学实验和日常生活中。
在现代科技的推动下,秒表的功能和精准度都得到了极大提升。
本文将介绍一种单片机实现的简易秒表,能够进行正计时,并可设置计时时间。
用于实现秒表功能的单片机芯片有很多种,通常选择计时和定时功能强大的单片机,如STC89C52、AT89C51等。
这些单片机具有丰富的外设和强大的计时能力,非常适合实现秒表功能。
在开始设计之前,我们需要明确几个关键的功能要求。
首先是正计时功能,我们需要编写程序来实现从0开始的计时。
其次是计时时间可设置,即用户可以设置计时的起始时间和结束时间。
最后是计时的精确度,单片机通常使用定时中断来实现计时,我们需要考虑到时钟频率和定时器的精度,确保计时的准确性。
首先,我们需要连接单片机与显示器和按键开关。
单片机的引脚可以通过通用I/O口或专用的定时器引脚与显示器和按键开关相连接。
这里我们选择7段LED数码管作为显示器,用来显示计时结果。
按键开关用于设置计时时间。
接下来,我们需要编写程序来实现秒表的功能。
首先,初始化单片机的定时器和中断。
我们需要设置定时器的工作模式、时钟频率和计时的时间间隔。
然后,我们需要编写中断服务函数,该函数在定时器达到设定的时间时被调用。
在中断服务函数中,我们将对计时进行加法操作,并将结果显示在LED数码管上。
同时,我们还需要判断计时是否达到设置的结束时间,如果达到,则停止计时。
为了使用户可以设置计时时间,我们可以通过按键开关来实现。
当用户按下设定时间的键时,我们将进入设定模式,用户可以通过按键来设定起始时间和结束时间。
通过LED数码管来显示用户设置的时间。
最后,我们需要对秒表进行测试和调试,确保其功能的正常运行。
我们可以逐步测试每个功能点,如正计时功能、计时时间设置功能和计时精确度等。
通过串口输出调试信息,我们可以对程序进行调优和改进,提高秒表的性能和稳定性。
单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
标准文档9创新实践实训报告学院信息电子技术学院专业电子信息工程班级14学籍号姓名指导教师蒋野2017年06月29日单片机控制秒表电路一、电路工作原理1.工作原理用STC89C52设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“暂停”键S2和一个“继续”键S3。
为使本设计系统更加完善,可以引入一个“复位”键S1,以方便对系统的控制。
如图。
本系统采用STC89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,将软硬件有机结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,硬件系统利用Protues强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。
2.元器件作用(1)STC89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
(2)时钟电路作用是为电路提供唯一的时钟信号。
(3)复位电路外接一个开关,控制电路复位,接通电源电路直接复位,如果没有开关亦可将复位电路引出导线接电源后断开。
(4)本设计要求使用共阳极的数码管,如下是共阳极的数码管的0-9编码:0xc0,0x92,0x82,0xf8,0x80,0x90,0xf9,0xa4,0xb0,0x99.(5)控制电路:S2按下电路停止计时,S3按下电路恢复计时。
二、程序流程图主程序流程图三、检测安装与调试1.元件检测共阳极数码管检测管脚序号利用万用表二极管档红表笔接一个抵住两个管脚,利用另一个接触其他,找出1,2两个管脚,继续分别找出A,D,C,D,E,F,G,Dp管脚。
单片机课程设计十秒秒表
目录1 设计目的 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)2 设计原理分析 (2)2.1十秒秒表系统设计 (2)2.2十秒秒表系统的功能要求 (2)2.2.1 计时显示 (2)2.2.2 中断设置 (2)2.3十秒秒表系统的基本构成及原理 (2)2.3.1 LED数码管显示器的结构与原理 (3)2.3.2 LED数码管的显示方式 (4)3系统硬件电路的设计 (5)3.1系统硬件总电路构成及原理 (5)3.2主控制部分――AT89C51单片机简介 (5)3.2.1 AT89C51的内部结构功能 (6)3.2.2 51单片机的串行接口工作方式 (7)3.3其它器件 (8)3.4十秒秒表系统原理图 (8)3.5设计的连线图 (9)3.6硬件资源及其分配 (9)3.7运行步骤 (10)3.8检测与调试 (10)3.8.1 硬件调试 (10)3.8.2 软件调试 (11)4 系统软件程序的简单设计 (12)4.1程序框图 (12)4.2程序 (13)4.3仿真结果图 (15)结论 (17)参考文献 (18)1 设计目的1.1 设计目的1、通过单片机课程设计,熟练掌握单片机C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过定时/计数器控制两个LED数码管显示器显示10秒秒表系统的设计,掌握定时/计数器和LED数码管显示器的使用方法,同时掌握简单程序的编写,最终提高我们的逻辑抽象能力。
1.2 设计内容和要求内容:设计一个开关控制两个LED数码管显示器显示10秒秒表的模拟系统。
要求:利用单片机的定时/计数器定时,使两个LED数码管显示器分别显示秒位和毫秒位。
1.3 设计思路1、先熟悉实验原理,同时了解定时/计数器的运作,和LED数码管显示器显示0到9数字的原理。
2、绘制电路原理图,编写基本程序,并进行仿真,实现两个LED数码管显示器显示0到9数字的功能。
51单片机秒表程序设计
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单片机设计一个简单的秒表程序。
秒表
自动化专业单片机应用设计单片机秒表设计内容提要随着科学的飞速发展,单片机也日新月异。
在电子时代的大潮流中,MCS-51系列的单片机以其特有的简单、易用、易学、应用技术成熟、应用技术人员多、性价比高的优势在市场上占有很大的份额,由此可见单片机在实际生活的广泛运用。
单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。
本次设计内容为以AT89C51单片机为核心的秒表。
设计的主要特点是计时器从0~99.99秒的计时,每秒自动加1,同时还设置有开始键和复位键,利用单片机定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够实现4位LED显示,显示时间为0~99.99秒,计时精度为0.01秒,能够正确地进行计时。
其中软件系统采用汇编语言编写程序,包括显示程序,中断服务子程序等。
目录1 概述 (1)1.1设计意义 (1)1.2设计内容 (1)2 硬件电路设计 (1)2.1系统框图 (2)2.2单片机AT89C51介绍 (2)2.3时钟电路和复位电路 (5)2.4按键电路 (10)2.5显示电路的设计 (11)2.6系统总电路图 (12)3 软件设计 (113)3.1Keil软件简介 (113)3.2流程图设计 (13)4 源程序代码 (16)5 系统仿真 (19)5.1 Proteus软件简介 (19)5.2 仿真结果 (20)6课程设计体会 (21)参考文献 (22)1 概述1.1设计意义目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种职能IC卡,名用豪华车辆的安全保障系统,摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
9创新实践实训报告学籍号姓名指导教师蒋野单片机控制秒表电路一、电路工作原理1.工作原理用STC89C52设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒本系统采用STC89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,将软硬件有机结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,硬件系统利用Protues强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。
2.元器件作用(1)STC89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降主程序流程图三、检测安装与调试1.元件检测3.调试(1)安装好后,接通电源,电路没有反应,数码管不亮。
二、问题与解决如图可以看出利用两个数码管,首次焊接没有检测数码管器件为共阴极数码管,与设计程序不符,导致乱码,而后改接电路,重新安装共阳极数码管。
单片机与排座接触不良,解决方法:利用废弃的二极管的管脚,插入排座排孔,增大接触面积。
附件1.利用单片机完成一定的任务,你的创意(创新)是什么?for(j=0;j<255;j++);}void To_INT(void) interrupt 1{TH0=0x3c;TL0=0xb0;msec++;if(msec==20){msec=0;TL0=0xb0;EA=1;ET0=1;TR0=1;while(1){if(W==0){TR0=1;} if(H==0){TR0=0;}。
单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
(4)复查电路:重新检测电路,利用万用表电流档,检测电路电流,发现电路无电流,检查40引脚VCC,发现单片机40引脚与插座短路,接触不良导致,陆续检查其他引脚。发现还有部分引脚短路。
(5)继续检查电路,直至数码管显示数字为止。
结果显示,秒表运行正常。按照预期实现了99s计时、暂停以及继续的功能。
附件
1.利用单片机完成一定的任务,你的创意(创新)是什么?
我的创意就是电路的布局,实验操作起来与仿真不同,需要注意很多细节,例如原件检测。我的电路布局既节省空间,又不影响电路结构。
2.程序
#include<reg52.h>
sbit W=P1^4;
sbit H=P1^6;
unsigned char msec,sec;
void delay(unsigned char i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void To_INT(void) interrupt 1
2.元器件作用
(1)STC89C52单片机在电子行业中有着广泛的应用。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
9
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程
单片机课程设计--数字式秒表
湖南工学院单片机课程设说明书数字式秒表学生姓名:**系部:电气与信息工程系指导教师:**专业:自动化班级:自本1001班完成时间:2012年12月18号目录第1章数字式秒表的设计介绍 (1)1.1设计任务及功能要求 (1)1.2数字式秒表的方案介绍及工作原理说明 (1)第二章数字式秒表硬件系统的设计 (3)2.1 AT89S52芯片的介绍 (3)2.2 时钟电路的介绍 (4)2.3 复位电路的介绍 (4)2.4 键盘电路的介绍 (5)2.5 驱动及显示电路的介绍 (6)2.6 单片机下载口电路 (6)第三章数字式秒表软件系统的设计 (7)3.1 数字式秒表使用单片机资源情况 (7)3.2 主程序流程图 (8)3.3 秒表的工作流程图 (9)3.4 显示程序流程图 (10)3.5 按键扫描流程图 (11)3.6软件系统程序清单 (11)第4章设计结果及误差分析 (12)4.1 数字式秒表的设计结论及使用说明 (12)4.2 调试软件介绍 (12)4.3 程序仿真与结果 (13)4.4 KEIL uVision3简介 (15)4.5 proteus的简介 (15)4.5 误差分析及解决方法 (16)第五章数字式秒表的设计体会及课程教学建议 (17)5.1 秒表的课程设计体会 (17)5.2 课程教学建议 (17)参考文献 (19)附录A 原理图 (20)附录B PCB图、布局图、实物图 (21)附录C 程序 (24)附录 D 元器件清单 (26)第1章数字式秒表的设计介绍1.1设计任务及功能要求由单片机接收小键盘控制递增计时,由LED 显示模块计时时间,显示格式为 00-59(分)00-59(秒).00-99(毫秒),精确到0.01s的整数倍。
绘制系统硬件接线图,并进行系统仿真和实验。
画出程序流程图并编写程序实现系统功能。
使用单片机AT89S52作为主要控制芯片,以四位一体共阳极数码显示管通过三极管驱动作为显示部分,设计一个具有特定功能的数字式秒表。
带启停和清零控制的秒表
安徽冶金科技职业学院实训报告课题名称带启停和清零控制的秒表系部班级学生姓名指导教师年月日一.带启停和清零控制秒表的原理:单片机的P1口经驱动器输出段码给计数器的数码管,单片机的P2.0和P2.1作显示器的位选端,经非门接数码管公共端,单片机的P3.0、P3.1、P3.2分别接启动,停止,清零按钮,启动按钮按下后,秒表每秒计数值加1,数码管显示当前值(0~59);任意时刻按下停止按钮,秒表停止计数;任意时刻按下清零按钮,秒表计数值清零;当计数值增值59时,再隔1秒计数值回0,然后在循环计数。
如图A,所示是电路连接。
三、带启停和清零控制秒表的控制程序:#include<reg51.h> //1包含特殊功能寄存器定义头文件reg51.h#define DCOUNT 2 //2宏定义:DUOUNT代表2(数码个数为2)#define portled_s P1 //3宏定义:portle_s代表P0(数码管的断选口)#define portled_b P2 //4宏定义:portle_p代表P1(数码管的位选口)#define keyport P3 //5宏定义:keyport代表P0(键盘控制口)#define uchar unsigned char //6宏定义:uchar代表unsigned charuchar data wcnt,timcnt,second; //7 wcat:显示位置,timan:10ms中断次数,second:秒数bit keytreated,down; //8 keyteated:键按下已处理,down:键按下过uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //9 笔型码表uchar code ledctrl[]={0x01,0x02}; //10 数码管显示控制码表void display(uchar); //11说明显示函数displayvoid key(void); //12说明键盘处理函数keyvoid main(void) //13 main函数{ second=0; //14秒计数赋初值0timcnt=0; //15 10ms中断计数赋初值0wcnt=0; //16数码管显示位置计数赋初值0keytreated=0; //17按键未处理down=0; //18无键按下TMOD=0x11; //19 T1:定时方式1, T0定时方式1TL0=(65536-9216)%256; //20 T0计数器赋初值:10msTH0=(65536-9216)/256; //21TL1=(65536-9216)%256; //22 T1计数器赋初值:10msTH1=(65536-9216)/256; //23ET0=1; //24开T0中断ET1=1; //25开T1中断PT1=1; //26 T1中断采用高优先级EA=1; //27开全局中断TR0=1; //28启动T0while(1) //29 while死循环,30句为循环体{ PCON=PCON|0X01; } //30睡眠CPU} /31 main函数结束//----------定时中断T1服务程序-----------//功能:对秒表进行计数,T1的启动与停止受控制于键盘操作void tim1() interrupt 3 using 1 //32 T1中断服务函数{ TL1=(65536-9216)%256; //33 T1重置计数器初值:10msTH1=(65536-9216)/256; //34timcnt++; //35 10ms中断次数计数值加1if(timcnt>=100) //36若计数满1秒,则进行37~40{ timcnt=0; //37 10ms中断次数计数值回0second++; //38秒计数加1if(second>=60) second=0; //39若记满1分,则秒回0} //40记满1秒出,处理结束} //41 T1中断服务结束//---------定时中断T0服务程序---------//功能:键盘处理,显示处理void tim0() interrupt 1 using 2 //42 T0中断服务函数{ TL0=(65536-9216)%256; //43 T0重置计数初值:10msTH0=(65536-9216)/256; //44key(); //45调用key函数进行键盘处理display(second); //46调用display函数显示second变量中的秒数} //47 T0中断服务结束//-----------显示子程序------------void display(uchar time) //48{ portled_s=0; //49段选口输出熄灭数码管的显示码portled_b=ledctrl[wcnt]; //50位选口输出wcnt号管点亮的控制码if(wcnt) //51判断显示位置portled_s=led[time/10]; //52非0号管,则段选口输出秒十位的笔型码else //53portled_s=led[time%10]; //54 0号管,段选口输出秒个位的笔型码wcnt++; //55 显示位置计数值加1wcnt=wcnt%DCOUNT; //56计数值对2取余,保证其值为0或者1}//57显示函数结束//-----------键盘处理程序-------------void key(void) //58{ uchar keyval; //59定义局部变量keyport=0x0ff; //60键值输入口写1,准备读按键输入keyval=~keyport; //61键输入值按位取反后为键值if(keyval) //62若有键按下进行63~77句处理{ if(down&&!keytreated) //63若10ms前键按下过且键没处理,则进行64~75句处理{ switch(keyval) //64依键值进行按键解释{case 0x01: //65是启动键(S0的键值为0x01)TR1=1;break; //66启动T1走时case 0x04: //67是清0键(S2的键值为0x04)second=0; //68秒清0TR1=0;break; //69停止T1走时case 0x02: //70是停止键(S1的键值为0x02)TR1=0;break; //71停止T1走时default: break; //72键值为其他值,则什么也不做} //73按键功能解释结束keytreated=1; //74置键按下已处理标志,防止一次键按下被多次解释} //75 10ms前键有键按下且键没处理的处理结束down=1; //76置键按下标志} //77 当前扫描有键按下处理结束else //78当前扫描无键按下,则进行79~81句处理{ down=0; //79置键未按下标志keytreated=0; //80置键未处理标志} //81当前扫描无键按下处理结束} //key函数结束四、带启停和清零控制秒表的步骤和调试:A.创建keil项目:1)双击桌面keil软件2)打开keil的集成开发环境3)点击菜单栏项目project选新建new project4)选择保存路径,建立项目文件夹,给项目命名并保存。
0.01秒高分辨力秒表设计
单片机原理与应用课程设计说明书题目:0.01S分辨力高精度秒表设计系部:信息与控制工程学院专业:测控技术与仪器班级:2011级1班学生姓名: 王茂杰学号: 11031240126指导教师:吴萍2013年12 月 6 日目录1设计任务与要求............................................................................................................................... - 2 -1.1设计任务.............................................................................................................................. - 2 - 1.2设计要求.............................................................................................................................. - 2 - 1.3设计结果.............................................................................................................................. - 2 - 2设计方案............................................................................................................................................ - 3 -2.1设计思路.............................................................................................................................. - 3 - 2.2方案选择.............................................................................................................................. - 3 - 2.2.1按键方式选择 ........................................................................................................ - 3 - 2.2.2计时分辨力选择.................................................................................................... - 4 - 2.3主要器件及芯片.................................................................................................................. - 4 - 2.3.1本设计主要器件清单............................................................................................ - 4 - 2.3.2单片机STC89C51RD .......................................................................................... - 5 - 2.3.374HC164芯片...................................................................................................... - 5 - 2.3.4MAX818 ........................................................................................................ - 6 - 2.3.5MAX232 ........................................................................................................ - 7 - 2.3.6数码管LED-SP41056 ......................................................................................... - 8 - 3硬件电路设计 ................................................................................................................................ - 10 -3.1硬件电路图设计说明 ...................................................................................................... - 10 - 4软件设计......................................................................................................................................... - 11 -4.1程序流程图....................................................................................................................... - 11 - 4.2主要参数计算与分析 ...................................................................................................... - 11 - 4.2.1定时初值计算 ..................................................................................................... - 11 - 4.2.2按键初值分析 ..................................................................................................... - 12 - 4.2.3段码计算.............................................................................................................. - 12 - 4.3定时器及按键初始化程序.............................................................................................. - 12 - 4.4PROTEUS仿真结果........................................................................................................ - 13 - 5调试过程......................................................................................................................................... - 13 -6结论................................................................................................................................................. - 13 - 附录:..................................................................................................................................................... - 15 -1实物图..................................................................................................................................... - 15 - 2器件清单 ................................................................................................................................ - 16 - 参考文献:............................................................................................................................................. - 17 -1设计任务与要求秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流程图对应的程序代码如下:
系统中其他功能处理
#defined keyport P1 //1 P1为键盘控制口 bit keytreated; //2 定义按键已处理标志位 void main(void) //3 main函数 { unsigned char keyval; //4 keyval:按键的键值 //系统中软硬件初始化 5 keytreated=0; //6 键按下未处理 while(1) //7 死循环,循环体为语句8~语句21 { keyport=0ff; //8 键输入口写1,准备读按键输入 if(~keyport) //9 有键按下吗? { delay(); //10 延时10ms去抖动 keyport=0ff; //11 键输入口写1,准备读按键输入 if(~keyport) //12 有键按下吗? { if(!keytreated) //13 键按下未处理吗,是则进行以下处理 { keyval=scan(); //14 扫描键盘,获取按键的位置(键值) keyexplain(keyval); //15 对按键进行解释处理 keytreated=1; //16 置键按下已处理标志,阻止按键被重复处理 } //17 键按下处理结束 } } //第2次、第1次检测到有键按下处理结束 else keytreated=0; //20 第1次检测到无键按下,置键按下未处理标志 //系统中其他处理 21 } //22 死循环的循环体结束 } //23 main函数结束
S2键按下。程序中可以不单独使用scan函数获取键值。 ③在独立式键盘中,常用switch/case语句实现依键值进行按键功能
上图中,S0键未按下时,P0.0=1,S0按下后,P0.0=0。
3、独立式键盘接口
⑵键盘处理程序 键盘处理需要注意的问题是,要
开始 系统中软硬件初始化 Keytreated=0 N
防止一次按键按下被多次解释执行(连
击键除外)。 在main函数中处键盘流程如图所示 图中,keytreated为按键已处理
值为0。上电时,秒表停止计时,数码管显示0秒。
1、循环结构中的break语句与continue语句
⑴break语句 break语句常用在循环结构的循环体中,用来结束循环,使程序跳转
至循环结构之后的语句上。while语句的循环程序的一般形式:
表达式1 假
while(表达式1) { 语句块1; if(表达式2) 语句块2; } 语句块3;
置键按下未处理标志 (keytreated=0)
Байду номын сангаас
有键按下? Y 延时10ms去抖动 有键按下? Y 按键未处理? (Keytreated=0) Y 确定键按下的位置 (确定键值) 按键功能解释 置键按下已处理标志 (keytreated=1) N N
标志位,keytreated标志位与按键是
否按下控制按键解释的执行,防止一 次按键事件被多次解释处理。
3、独立式键盘接口
【说明】
①本程序为键盘处理通用结构,也适合于后面介绍的矩阵式键盘处 理。不同的键盘其获取键值和按键功能解释不同,在实际使用中需要根
据具体情况作适当变换。
②在独立式键盘中,按键的输入值中包含了按键的键值信息,即按 键的输入值实际上就是按键的编码值。输入值的某位为0,则表示对应
的按键按下。对于图5-15的电路,若P0口输入值为11111010B,则是S0、
态。
2、键盘处理的流程
软件去抖动的方法
开始 N
有键按下? Y 延时10ms
N
有键按下? Y
确定按键的位置(确定按健的键值) 按键功能解释
结束
3、独立式键盘接口
⑴接口电路
VCC STC89C51
P10 P11 P12 P13
S0 S1 S2 S3
电路的特点 按键的一端接地,另一端接并 行口的某一根I/O口线,I/O口线 外接上拉电阻。若并行口内部 有上拉电阻(如单片机的P1口), 可不接上拉电阻。采用这种电 路时,若某个键按下,则对应 的I/O口线输入为0。 左图中,S0键未按下时, P0.0=1,S0按下后,P0.0=0。
按下 抖动
稳定按下期
释放 抖动
2、键盘处理的流程
去抖动的方法:硬件去抖动和软件去抖动 硬件去抖动:采用R-S触发器组成的闩锁电路来去抖动。 软件去抖动:采取延时的方法来回避抖动期。具体方法是,检测到有 键按下或者有键释放后,延时5ms~15ms左右的时间,再去读按键输 入情况,此时抖动期已过,所读的按键输入是按键稳定按下或释放状
真 语句块1 表达式2 假 语句块2 真
break;
语句块3
break流程图
1、循环结构中的break语句与continue语句
⑵continue语句
continue语句只能用在循环结构的循 环体中,用来结束本次循环,使程序跳转 到循环条件判断处。while语句的循环程序 的一般形式如下
表达式2 表达式1 真 语句块1 真 假
控制秒表的启停与清零
任务要求
在任务10的基础上增加S0、S1、S2三个按键。S0键作启动键, 按S0键,启动秒表走时,秒表在当前显示秒数的基础上计时。例如,
当前数码管显示的是05,按S0键后,秒表在5秒的基础上计时,依次
显示06,07,……。S1键为停止键,按S1键,秒表停止走时,显示 时间一直保持不变。S2键为清0键,按S2键,秒表停止走时,显示数
while(表达式1) { 语句块1; if(表达式2) 语句块2; } 语句块3;
假 语句块2
continue;
语句块3
continue流程图
1、循环结构中的break语句与continue语句
【例】统计1~100之间能被7整除的数的个数。
void {
main(void) unsigned char i,j; j=0; for(i=1;i<=100;i++) { if(i%7!=0) j++; }
continue;
}
2、键盘处理的流程
单片机系统中所用的键盘有独立式键盘和矩阵式键盘两种。键盘接口 的基本任务主要有4个方面:⑴判断是否有键按下;⑵去抖动;⑶确定所 按下键的键值,即确定是何键按下;⑷对按键功能进行解释。 在一次按键操作中,由于按键的机械特性的原因,键按下或释放都 有一个弹跳的抖动过程,抖动的时间一般为5~15ms,其波形如下: