单片机课程设计报告-秒表设计
- 格式:doc
- 大小:196.50 KB
- 文档页数:15
单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
单片机课程设计报告设计课题:秒表设计目录一、课程设计目的和意义和主要功能1、目的意义2、主要功能二、方案设计与论证1、时钟电路2、按钮电路3、显示电路4、单片机三、硬件电路设计1、STC89C52RC单片机的简单介绍2、接口电路3、硬件连线图四、软件设计:数字秒表流程图、数字秒表源程序五、性能分析六、结论和心得附件(源程序)电子秒表设计摘要:本次设计主要是用STC89C52RC设计一个2位的数码作为“秒表”。
主要是利用单片机的定时器/计数器定时和计数原理来设计简单的计时器系统,拥有正确的启动停止、时间调整,启动停止清零通过键盘按键控制,并同时可以用数码管显示数字0-59,每秒自动加1,能正确地进行计时。
其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,延时程序等,并在keil中调试运行,硬件系统利用单片机开发板能来实现,简单且易于观察,在现实生活中应用广泛,具有现实意义。
关键字:单片机定时器启动停止时间调整数码管键盘一、课程设计目的和意义和主要功能1、目的意义1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。
2、掌握定时器、外部中断的设置和编程原理。
3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
2、主要功能显示时间为0-59秒,每1秒自动加1,另外设计一个“启动/停止”键、一个“时间调整”键。
能用按钮实现秒表启动、停止、时间调整。
二、方案设计与论证1、方案设计本设计要求进行计时并在数码管上显示时间,分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。
其模块电路如图2-1所示。
(1)、时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。
时钟电路如图所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。
单片机秒表课程设计报告㈠设计任务及要求秒表系统设计——用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~59秒,每秒自动加一。
另设计一个“开始”按键和一个“暂停”按键。
实验要求通过单片机的定时器/计数器定时和计时原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、快加功能,并同时可用数码管显示。
(二)设计思路分析该实验要求进行计时并在数码管上显示时间,则可利用芯片AT89C51中的P2.5管脚作为外部中断0的入口地址,并实现“开始”按键功能;将P2.6作为数据信号DATA输入的入口地址;将P2.7做为外部中断1的入口地址,并实现“清零”按键的功能;其中“开始”按键当开关由1拨向0时开始计时;“清零”按键当开关由1拨向0时数码管清零,此时若再拨“开始”按键则有可重新开始计时。
(三)硬件电路设计如图在P0口上接一个16M的晶振,它是时钟电路中最重要的部件,向主板的各部分提供基准频率。
2位LED数码管作为显示,并接在P0口和P2口。
“起始”、“暂停”和“清零”三个按键分别对应接在P2.5、P2.6、P2.7上。
(四)程序设计STRT EQU P2.5 ; 启动键端口STP EQU P2.6 ; 暂停键端口CLRR EQU P2.7; 复位键端口ORG 00HAJMP MAINORG 0BH ;定时器T0,中断入口AJMP T0INTORG 30HMAIN: MOV R0,#20 ; 中断计数器(循环次数)MOV TMOD,#01H; 定时器初始化MOV TH0,#3CH ; 设定时间50msMOV TL0,#0B0HMOV DPTR,#TABLESETB EA ; 开中断SETB ET0 ; 启动T0k1: LCALL DISPJB STRT,K2 ; 等待k2键停止LCALL DISPJNB STRT,$-3AJMP STARTk2: JB STP,K3 ; 等待K3键LCALL DISPJNB STP,STOPK3: JB CLRR, K1 ; 等待K1键LCALL DISPJNB CLRR,CLEARAJMP K3START: SETB TR0AJMP K1STOP: CLR TR0AJMP K2CLEAR: CLR TR0MOV 40H,#0AJMP K1T0INT: MOV TH0,#3CH ; 重新设置初始值MOV TL0,#0B0HDJNZ R0,RTIMOV R0,#20MOV A,40HCJNE A,#59,ADD1 ; 判断是否等于59MOV 40H,#00H ; 清零CLR TR0AJMP RTIADD1: ADD A,#01H ; 加一MOV 40H,ARTI: RETIDISP: MOV A,40HMOV B,#10DIV AB ;//当前值除以10MOV 20H,A ;//得出的商送给十位MOV 21H,B ;//得出的余数送给个位CLR P2.0SETB P2.1MOV A,20H ;//十位显示MOVC A,@A+DPTRMOV P0,ALCALL DELAYCLR P2.1SETB P2.0MOV A,21H ; //个位显示MOVC A,@A+DPTRMOV P0,A ; P0显示RETDELAY: ;误差0usMOV R6,#01HDL0:MOV R5,#61HDJNZ R5,$DJNZ R6,DL0RETTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;//共阳极0-9显示代码DB 92H,82H,0F8H,80H,90HEND(五)调试及结论在整个程序设计、电路的选择过程中,小组成员都遇到了许多问题。
单片机控制秒表课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握单片机在秒表设计中的应用。
2. 使学生掌握秒表计时原理,了解秒表各功能模块的工作原理。
3. 帮助学生掌握相关编程语言,实现单片机控制秒表的程序编写。
技能目标:1. 培养学生运用所学知识,设计并实现一个具有启动、停止、复位和计秒功能的单片机控制秒表。
2. 提高学生动手实践能力,学会使用编程软件、下载器和调试工具。
3. 培养学生团队协作能力,分工合作完成课程设计任务。
情感态度价值观目标:1. 培养学生热爱科学、勇于探索的精神,增强对单片机及嵌入式系统学习的兴趣。
2. 培养学生严谨、认真、负责的学习态度,养成良好的学习习惯。
3. 引导学生关注科技发展,了解单片机在日常生活和工业生产中的应用,提高创新意识。
本课程针对高年级学生,具有较强的实践性和综合性。
通过本课程的学习,使学生能够将所学理论知识与实际应用相结合,提高解决实际问题的能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果。
在教学过程中,需关注学生的个体差异,激发学生的学习兴趣,培养其动手实践能力和团队协作精神,为后续学习打下坚实基础。
二、教学内容本章节教学内容主要包括以下几部分:1. 单片机基本原理:讲解单片机的组成、工作原理和功能特点,使学生了解单片机在秒表设计中的核心作用。
2. 秒表计时原理:介绍秒表的计时原理,分析秒表的启动、停止、复位和计秒功能模块。
3. 编程语言及开发环境:学习单片机编程所需的语言(如C语言),介绍编程软件、下载器和调试工具的使用。
4. 单片机控制秒表设计:根据课程目标,制定以下详细教学大纲:(1)秒表功能需求分析:讨论并明确秒表的各项功能需求。
(2)硬件设计:讲解如何选用合适的单片机、时钟电路、按键、显示屏等硬件设备。
(3)软件设计:指导学生使用C语言编写单片机控制秒表的程序代码。
(4)系统调试:教授学生如何进行硬件和软件的调试,确保秒表的正常工作。
单片机秒表课程设计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 功能函数除了定时器中断函数和外部中断函数之外,还可以编写一些功能函数来实现计时、暂停和复位等功能。
一:课程设计题目秒表/时钟计时器二:课程设计任务与要求:利用89C51单片机设计秒表/时钟计时器,通过LED显示器显示秒十位和个位,在设计过程中用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,重新开始秒计数。
三:设计过程:1.设计原理:此次课程设计题目是秒表/时钟计时器,由课程设计的要求和任务,我采用的C语言编程,设计秒表要求一秒定时,采用了定时器和FOR循环来定时,其中一个软件一个硬件,会在方案论证中分析在1秒时采用的是硬件定时,即用单片机内部的定时器T0。
先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时。
然后由定义的变量second来进行加一运算,然后将其值通过P1,P2口在数码管上进行显示。
其中数码管的显示时,我在程序中首先定义了一个关于数码管显示的字形码定义,以便在显示时调用即可。
(1)方案论证:方案1:在方案1中,我们所选用的是软件定时,即用for循环来定时1秒进行显示的变化.方案2:在方案2中,采用的是硬件定时,即用单片机内部的定时器T0。
先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时.方案比较:我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的。
第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来,但真正大程序时会很占用资源的,所以在用定时中断过程中是非常节省资源的.综合上述两种比较,我们选用了第二种方案.(2)创新点:a。
在课程要求的基础上,我们做成的电路板上,用复位键来控制秒表计时的重新开始,即清零。
b。
在以上设计的基础上,我们又重新设计了一个程序,基本原理没有变,只是将秒表在到达59清零的瞬间向分的位数上进1,程序将会在附录3中给出。
2.硬件系统框图与说明:首先,连接的是单片机51的最小系统,其中包括时钟电路,复位电路,在此中包括的元器件在附录3中.我们所选用的数码管是共阴极的,置1时导通,所以将单片机的P1。
单片机数字秒表课程设计一、课程目标单片机数字秒表课程设计旨在通过实践操作,使学生在知识与技能、过程与方法、情感态度价值观三方面得到全面发展。
1. 知识目标:(1)掌握单片机的基本原理和结构;(2)了解数字秒表的工作原理;(3)熟悉C语言编程和单片机编程环境。
2. 技能目标:(1)能够运用所学知识设计并实现一个简单的数字秒表;(2)培养动手实践能力,提高问题解决能力;(3)提高团队协作和沟通表达能力。
3. 情感态度价值观目标:(1)激发学生对单片机及电子技术的学习兴趣,培养科技创新精神;(2)培养学生严谨的科学态度和良好的学习习惯;(3)增强学生的自信心和成就感,培养克服困难的意志。
课程性质:本课程为实践性课程,注重理论联系实际,强调动手能力培养。
学生特点:本课程针对初中年级学生,他们在前期的学习中已具备一定的电学基础和编程知识,对新鲜事物充满好奇心。
教学要求:教师需结合学生特点,以引导为主,注重启发式教学,充分调动学生的积极性和主动性,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 单片机原理及结构:涉及单片机的内部组成、工作原理、引脚功能等,对应教材第二章内容。
2. 数字秒表原理:介绍数字秒表的基本工作原理,包括计时、计数、显示等,对应教材第四章内容。
3. C语言编程:复习C语言基础知识,重点掌握数组、循环、函数等编程技巧,对应教材第五章内容。
4. 单片机编程环境:学习如何使用编程软件(如Keil)进行程序编写、编译和下载,对应教材第六章内容。
5. 实践操作:设计并实现一个简单的数字秒表,分小组进行实践操作,培养动手能力。
教学大纲安排如下:第一周:回顾单片机原理及结构,学习数字秒表原理;第二周:复习C语言基础知识,学习单片机编程环境;第三周:编写数字秒表程序,进行调试;第四周:分组实践,完成数字秒表的设计与制作。
教学内容具有科学性和系统性,确保学生在掌握理论知识的基础上,通过实践操作提高综合能力。
单片机秒表设计课程设计报告范文2基于52单片机的简易秒表课程设计摘要自20世纪70年代单片微型计算机(简称单片机)诞生以来,单片机以其功能强、体积小、质量轻、价格低、可靠性高、可塑性好等优点得到了广泛的应用,成为目前世界上数量最多的计算机和工程师们开发嵌入式应用系统和小型智能化产品的首选控制器。
一.设计任务及要求1、题目基于51单片机的简易秒表课程设计2、基本要求1)使用51系列单片机作为主控芯片构建最小系统,熟练掌握晶振与复位电路;2)用LED数码管来显示倒计时;3)用按键来实现起动与停止等功能;4)设计一完整电路,要求应用Protue软件进行仿真验证,并要求焊接实物后进行功能调试。
3、设计目的1)掌握单片机的接口技术及外围芯片的工作原理及控制方法;2)进一步掌握单片机程序编写及调试过程,掌握模块化程序设计方法;3)掌握LED数码管的工作原理;4)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解;4)掌握定时器、外部中断的设置和编程原理;5)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4、设计任务1)用STC89C52RC单片机的定时器/计数器定时和计数的原理,通过proteu仿真软件模拟设计一个2位LED数码显示“秒表”,显示时间为00-99秒,每秒自动加一或减一。
2)另设计一个“开始(正计数)”按键和一个“倒计数”按键,再增加一个“暂停”按键。
按键说明:按“开始”按键,开始正计数,数码管显示从00开始,每秒自动加一;按“暂停”按键,系统暂停计数,数码管显示当时的计数;按“倒计数”按键,系统在原先的计数上自动减一秒。
按“总开关”按键,结束计数;再按一下,系统清零,数码管显示00。
二、总体方案设计1、硬件方案设计1)时钟电路模块时钟电路由一个晶体振荡器12MHZ和两个22pF的瓷片电容组成。
引线某TAL1和某TAL2分别是放大器的输入端和输出端。
单片机课程设计报告一、实验题目秒表系统设计——用两个数码管来显示秒表数据,一个显示秒,另一个显示十分之一秒。
二、系统总体功能用两个数码管来显示秒表数据,一个显示秒,另一个显示十分之一秒。
有一个按键来启动秒表的开始和结束。
增加一个清零按钮,计时结束后可以清零。
三、实验目的1、利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。
2、综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。
3、通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
4、通过本次试验,增强自己的动手能力。
认识单片机在日常生活中的应用的广泛性,实用性。
四、系统设计方案本实验利用单片机的定时器/计数器定时和记数的原理,通过采用proteus 仿真软件来模拟实现。
模拟利用AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计数的开启/暂停/继续与复位!其中有两个数码管用来显示数据,一个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。
计秒数码管采用两位的数码管,当计数超过范围是所有数码管全部清零重新计数。
五、试验设计所需硬件(模拟硬件)Atmel89C51单片机芯片一个、LED数码显示管三个,低压电源、开关(按钮)两个、电阻、电容及导线若干。
由于条件限制本实验采用软件模拟硬件系统,采用proteus软件进行模拟设计及调试工作。
图2 Atmel89C52单片机外部引脚图六、试验设计原理图图3 试验设计电路图七、软件设计分析程序流程图:是 否 是 否定时器溢出中断对定时器重新赋值进行加一操作后重新计算时间往P0口和P2口送显示时间数码管显示中断返回主函数对定时器/计数器初始化始化程序开始判断P0^4口是否有低电平信号开中断并启动定时器开始、暂停或者继续 计数置零判断P0^7口是否有低电平信号 手动开关实验程序清单:#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar code table[]="2010-05-18";uchar code time[]="23:00:00";uchar code xi1[]="mon";uchar code xi2[]="tue";uchar code xi3[]="wed";uchar code xi4[]="thu";uchar code xi5[]="fri";uchar code xi6[]="sat";uchar code xi7[]="sun";sbit wr=P3^3;sbit rd=P3^5;sbit lcde=P3^4;uint i,shi,fen,miao,nian,yue,ri,count,num,x; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_add(uchar add){rd=0;P0=add;lcde=1;delay(5);lcde=0;}void write_date(uchar date){rd=1;P0=date;lcde=1;delay(5);lcde=0;}void writesfm(uchar add,uchar date){uchar s,g;s=date/10;g=date%10;write_add(0x80+0x40+add);write_date(0x30+s);write_date(0x30+g);}void writenyr(uchar add,uchar date) {uchar s,g;s=date/10;g=date%10;write_add(0x80+0x00+add);write_date(0x30+s);write_date(0x30+g);}void xi(uchar a){if(a==1){write_add(0x80+0x00+10);for(i=0;i<3;i++){write_date(xi1[i]);delay(5);}}if(a==2){write_add(0x80+0x00+10);for(i=0;i<3;i++){write_date(xi2[i]);delay(5);}}if(a==3){write_add(0x80+0x00+10);for(i=0;i<3;i++){write_date(xi3[i]);delay(5);}}if(a==4){write_add(0x80+0x00+10); for(i=0;i<3;i++){write_date(xi4[i]);delay(5);}}if(a==5){write_add(0x80+0x00+10); for(i=0;i<3;i++){write_date(xi5[i]);delay(5);}}if(a==6){write_add(0x80+0x00+10); for(i=0;i<3;i++){write_date(xi6[i]);delay(5);}}if(a==7){write_add(0x80+0x00+10); for(i=0;i<3;i++){write_date(xi7[i]);delay(5);}}}void init(){lcde=0;wr=0;write_add(0x38);write_add(0x0c);write_add(0x06);write_add(0x01);write_add(0x80+0x00+0); for(i=0;i<10;i++){write_date(table[i]); delay(5);}write_add(0x80+0x00+10); for(i=0;i<3;i++){write_date(xi7[i]);delay(5);}write_add(0x80+0x40+0); for(i=0;i<8;i++){write_date(time[i]); delay(5);}}void main(){init();TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;while(1){key();if(count==20){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;ri++;x++;xi(x);if(x==7){x=0;}if(ri==30){ri=0;yue++;if(yue==13){yue=0;nian++;if(nian==100){nian=0;}writenyr(2,nian);}writenyr(5,yue);}writenyr(8,ri);}writesfm(0,shi);}writesfm(3,fen);}writesfm(6,miao);}}}void t()interrupt 1{TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++;}八、试验设计总结通过这一周的课程设计,我对一些专业知识和电子设计有了更深的了解,同时也尝试着去应用自己的所掌握的知识。
单片机课程设计报告设计课题:秒表设计专业班级:电子***班学生姓名:***学号:***指教教师:***设计时间:2011年5月30~6月19日目录一、设计任务和要求 (3)(1)设计任务 (3)(2)设计要求 (3)二、设计方案与论证 (3)三、单元电路设计与参数计算 (4)(1)时钟电路 (4)(2)按钮电路 (4)(3)显示电路 (5)(4)单片机 (5)四、原理图及器件清单 (6)( 1 )总原理图 (6)(2)PCB图 (7)(3)Proteus仿真图 (7)(4)元器件清单 (8)五、安装与调试 (8)(1)安装 (8)(2)调试 (8)六、性能测试和分析 (9)七、结论和心得 (9)八、参考文献 (9)秒表设计一、设计任务和要求(1)设计任务用AT89C51设计一个3位的LED数码作为“秒表”。
(2)设计要求显示时间为0.0-99.9秒,每0.1秒自动加1,另外设计一个“开始”键、一个“复位”键和一个“停止”键。
秒表可单独分别计时,且最多可计5次。
二、方案设计与论证本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。
其模块电路如图2-1所示。
时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。
按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。
显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。
另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA 左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。
为了使电路简单化,本设计选用共阳数码管。
但根据显示方式的不同选择,我们可以有几种方案:方案一:使用静态显示方式。
静态显示方式下的数码管的显示字符一经确定,相应锁存器锁存的断码输出將维持不变,直到送入另一个字符的断码为止。
因而此设计中使用的显示位数使用了三个8位并行I/0口。
如果另外想扩展单片机功能,则能使用的输出管脚很是有限。
方案二:使用动态显示方式。
这个显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。
这种显示方式,简化了硬件电路,特别在多位数码管显示时尤为突出。
本小组尝试了各种方案,在此报告中以静态显示方式为例说明。
(动态显示方式省略)三、单元电路设计与参数计算注://单元电路设计中的网络标号的数字即为单片机的管脚//(1)时钟电路图3-1时钟电路如图3-1所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。
该电容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
(2)按钮电路图3-2a 图3-2bA、复位按钮根据计算容抗的公式1Xjwc以及并联电阻变小的性质,可以知道,当S13断开时,C3的容抗大,管脚9处的电位U9为电阻R3上的压降,因而U9为低电平,复位键无效。
当S13按下时,R2与C3的并联阻抗变小,R3上的压降增大,U9为高电平,复位键有效,实现复位功能。
本设计中C3取值22uF,电阻R2取值100欧姆,R3取值1K欧姆。
具体电路如图3-2a所示。
B、开始,停止、翻页按钮电路如图3-2b所示(3)显示电路P1口控制显示的是十位,p0口控制显示的是个位,P2口控制显示的是十分位。
不同的数码管显示方式,对应的最适合的共阴或者共阳级的数码管也不同。
静态显示的适宜选共阳的数码管,动态显示的适宜选共阴的数码管。
如果动态显示方式下选择共阳的数码管,位选端直接用单片机驱动则数码管的亮度不够,因而应该在位选端使用上拉电阻以提高数码管的驱动电流,但因为显示那个的数据段选的数目不同,故而需要用电阻对各段进行限流,以保证显示的每个数据亮度相同。
相同情况下,静态显示的数码管的亮度要比动态的亮。
(4)单片机单片机的程序可用汇编语言也可用C语言,为了提高使用汇编语言的能力,本设计特用了汇编语言了编写程序主程序流程图如下所示,具体程序见电子档。
主程序流程图:四、总原理图及元器件清单(1)总原理图(2)PCB图(3)Proteus仿真图(4)元器件清单1) AT89C51的引脚图和数码管5101BS的引脚图图4-3a AT89C51引脚图图4-3b 5101引脚图2)元器件总清单五、安装与调试(1)安装制板的顺序依次是:画原理图、做封装、在原理图中添加元器件对应的封装、布PCB板、改焊盘大少、打印PCB图、用快速制板机将PCB图烤制到铜板上、腐蚀铜板、钻孔、放置元器件、烙铁焊好器件。
一块电路板就安装完毕了。
(2)调试将外部电源接至电路板上,检验电路板是否完全实现设计要求。
本设计中,发现按钮功能完全符合设计要求,但是数码管的显示中有些段码不亮,从而显示的数据乱码,用万用表检测对应的管脚是否有电压,发现焊盘有虚焊,引脚与引脚之间有短路,排查后电路板实现设计要求。
六、性能测试与分析所制电路板虽然能实现设计中要求的功能,但是在实际使用中还是存在着许多缺陷。
这块电路板不能随意查看记录的数据,而是必须在计完五次数据后才能依次的翻页查看,复位后所计数据便会丢失,不能翻看历史,所计数据组数不能满足现实需要。
七、结论与心得在这三周的课程设计中,不管是在软件方面还是硬件方面我都有了更深入的学习。
………八、参考文献(1)单片机原理及接口技术张毅刚彭喜元著人民邮电出版社(2)单片机课程设计实例指导李光飞等编著北京航空航天大学出版社(3)51系列单片机原理、开发与应用实例孙进平等编著(4)单片机程序设计实例先锋工作室编著清华大学出版社(5)电子工程师之家、豆丁网、百度、搜狗、电子工程专辑等等附程序如下:D EQU 60HE EQU 61HF EQU 62HG EQU 63HH EQU 64HI EQU 65HORG 0000HLJMP MAINORG 000BH ;定时器T0的入口地址LJMP DINGSHIORG 0013H ;外部中断1的入口地址LJMP STOP1ORG 0030H ;主程序入口地址MAIN: MOV P0,#0C0H ;置初值MOV P2,#0C0HMOV P1,#0C0HMOV DPTR,#TABLE ;数据指针指向表头地址SETB EA ;开中断SETB EX0SETB EX1SETB ET0SETB PX0 ;设中断优先级SETB PX1MOV TMOD,#01H ;工作方式为方式1;********************************************;开始及计数程序;******************************************** START: MOV R0,#40HMOV R1,#50HMOV R2,#00HCLR P1.0MOV TH0,#0D8H ;置计数初始值MOV TL0,#0F0HMOV R3,#00HMOV R4,#00HMOV R7,#00HMOV B,#10MOV SP,#30HMOV D,#60HMOV E,#61HMOV F,#62HMOV G,#63HMOV I,#65HMOV R5,#05XUNHUAN: JB P1.7,START1 ;p1.7=0是开始LCALL DELAY10 ;按键消抖JB P1.7,XUNHUANJNB P1.7,$LJMP GN1LJMP XUNHUANSTART1: JB P3.0,XUNHUANLCALL DELAY10JB P3.0,XUNHUANJNB P3.0,$LCALL FANYELJMP XUNHUAN;******************************************** ;翻页模块;******************************************** FANYE: MOV A,@R0MOV R3,AMOV A,@R1MOV R4,ADEC R5CJNE R5,#04,LOP1MOV A,DMOV R7,ALJMP L1LOP1: CJNE R5,#03,LOP2MOV A,EMOV R7,ALJMP L1LOP2: CJNE R5,#02,LOP3MOV A,FMOV R7,ALJMP L1LOP3: CJNE R5,#01,LOP4MOV A,GMOV R7,ALJMP L1LOP4: CJNE R5,#00,FANYEMOV A,IMOV R7,ALJMP L1L1: INC R0INC R1INC R2CJNE R2,#5,LOOP2MOV R0,#40HMOV R1,#50HMOV R2,#00HLOOP2:LCALL XIANSHIRET;******************************************** ;数码管记录程序;********************************************GN1: SETB TR0LOOP: CJNE R2,#05H,LOOPMOV R0,#40HMOV R1,#50HMOV R2,#00HCLR EAAJMP XUNHUAN;******************************************** ;1毫秒延时子程序;******************************************** DELAY1: MOV R6,#2DL1: MOV H,#248DJNZ H,$DJNZ R6,DL1RET;********************************************;10毫秒延时子程序;******************************************** DELAY10: MOV R6,#20DL2: MOV H,#248DJNZ H,$DJNZ R6,DL2RET;********************************************;外部中断1中断程序,停止模块;******************************************** STOP1 : PUSH ACCPUSH PSWLCALL DELAY10 ;延时10毫秒消抖 JB P3.3, FAN1JNB P3.3,$MOV A, R3MOV @R0 , AMOV A, R4MOV @R1, ADEC R5CJNE R5, #04, LOP5MOV A, R7MOV D, ALJMP L4LOP5: CJNE R5, #03, LOP6MOV A, R7MOV E, ALJMP L4LOP6: CJNE R5, #02, LOP7MOV A, R7MOV F, ALJMP L4LOP7: CJNE R5, #01, LOP8MOV A, R7MOV G, ALJMP L4LOP8: CJNE R5, #00, STOP1MOV A, R7MOV I,ALJMP L4L4: INC R0INC R1INC R2FAN1: POP PSWPOP ACCRETI;******************************************** ;显示子程序;******************************************** XIANSHI:MOV A ,R3 ;扫描十分位上的数字MOV DPTR ,#TABLEMOVC A ,@A+DPTRMOV P2 ,AMOV A ,R4 ;扫描个位上的数字MOV DPTR ,#TABLEMOVC A ,@A+DPTRMOV P0 ,AMOV A ,R7 ;扫描十位上的数字MOV DPTR ,#TABLEMOVC A ,@A+DPTRMOV P1 ,ARET;******************************************** ;定时器T0中断程序;******************************************** DINGSHI:PUSH ACCPUSH PSWDJNZ B,DH1MOV B,#10AJMP COUNTCOUNT: INC R3CJNE R3,#0AH,DH2MOV R3,#00HINC R4CJNE R4,#0AH,DH2MOV R4,#00HINC R7CJNE R7,#0AH,DH2MOV R7,#00HDH1: MOV TH0,#0D8HMOV TL0,#0F0HSETB TR0DH2: POP PSWPOP ACCLCALL XIANSHIRETITABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END。