基于单片机的多功能秒表

合集下载

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

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

目录一、课程设计目的 (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、项目概述数字秒表是采用数字电路制成的实现对时间的测量,数字秒表是通信设备、视频等科研生产领域并不可少的测量仪器。

基于单片机的多功能秒表系统课程设计

基于单片机的多功能秒表系统课程设计

单片机课程设计报告多功能秒表系统设计姓名:学号:专业班级:指导老师:所在学院:2009年6月10日单片机已经无处不在,与我们生活更是息息相关并已渗透到了生活的方方面面。

单片机的特点是体积小,重量轻,功能强,通用性好,也就是说集成度高,其内部的结构是普通的计算机系统的简化。

在增加一些外围电路之后,就能成为一个完整的系统。

在众多单片机中,MCS-51系列单片机具有系统结构完整,特殊功能寄存器规范化以及指令系统的控制功能强等特色,使起成为单片机中的主流机型。

本设计是一个由AT89C51单片机控制,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路按键计时来实现的多功能秒表系统。

在本次设计中我们以AT89C51单片机为主要器件,利用它的定时器/计数器定时和记数的原理,结合7809电源提供的+5V稳压电压,上电加按钮复位电路,晶体振荡电路,由P0口驱动的LED动态显示电路,键盘电路等来完成多功能秒表的设计。

这个多功能秒表系统能够实现两位LED显示,显示的时间为00~99秒,每秒自动加1,能正确地进行加、减(倒)计时,能同时记录4个相对独立的时间,通过上翻键和下翻键来查看这4个不同的计时值,还具有快加和复位功能,基本上实现了老师的要求。

我们使用汇编语言来编写程序,采用模块化程序设计方法,主程序有多个子程序构成,这些子程序可以单独的设计,调试和管理,其中包括加1子程序、减1子程序、延时子程序、快加子程序,复位子程序和显示子程序等。

将源程序代码在WAVE中进行编译和调试,硬件系统利用Proteus软件来实现,可以方便的看到运行结果。

关键词:多功能秒表、单片机、子程序模块、Proteus仿真1 概述 (3)1.1单片机简介 .................... ............... .. (3)1.2设计任务 (3)1.3设计要求 (3)2 系统总体方案及硬件设计 (4)2.1、电源 (5)2.2、复位电路 (5)2.3、晶体振荡电路 (6)2.4、显示电路 (7)2.5、键盘电路 (8)3 软件设计 (9)3.1、设计思想 (10)3.2、系统流程图 (15)4 Proteus软件仿真 (17)5 课程设计体会 (19)参考文献 (20)附1:源程序代码 (21)附2:系统原理图 (25)1 概述1.1单片机简介单片机是性能价格比高、体积小、对国民经济渗透力大、最有前途的微控制器。

基于单片机的秒表课程设计

基于单片机的秒表课程设计

基于单片机的秒表课程设计————————————————————————————————作者:————————————————————————————————日期:基于单片机的秒表课程设计姓名:班级:学号:专业:指导老师:年月日目录1、总体设计方案简介1.1设计课程任务1。

2系统分析1。

3系统方案1.4方案论证2、硬件设计2。

1控制芯片的介绍2.2硬件接线2。

2。

1硬件接线接口2。

2。

2硬件接线图3、软件设计3.1程序设计思路3.2流程图3.3源程序3.4仿真结果4、元件清单5、心得体会基于单片机的秒表课程设计摘要本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成数字式秒表的硬件电路的。

电子秒表电路主要由AT89S51单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八段数码显示和计时,能通过控制电路控制时间的暂停和开始。

关键字:AT89S51 数码管最小系统1总体设计方案简介1。

1设计课题任务设计一个具有特定功能的数字式秒表。

用AT89C52设计一个2位LED 数码显示“秒表”,显示时间为00-59,另设计一个“开始”按钮和一个“复位”按钮。

按键说明:按“开始"按键,开始计数,数码管从00开始每秒自动加一;按“复位”按键,系统清零,数码管显示00。

1.2系统分析设计的电路主要是能多次计时,计时的多少通过显示电路出来,设计框图如图所示;控制部分技术和存储部显示部分1.3系统方案利用AT89C52单片机设计数显定时器。

此方案采用AT89C52单片机系统来实现。

AT89C52芯片内含8KB 的EEPROM ,不需要外扩展存储器,可是系统整体结构更为简单。

设计框图如图所示;1.4方案论证此方案是以AT89C52芯片为中心控制系统,可实现计时、清零等功能,大大提高了系统的智能化,也是的系统所测结果精度大大提高。

所以此方案可行。

2硬件设计2。

1控制芯片的介绍AT89S52是一种低功耗、高性能的片内含有4KB 快闪可编程/擦除只读存储器,的8位CMOS 微控制器,使用高密度、非易失存储技术制造,并外部控制开关AT89C52单 片 机七段数码显示与80S52引脚和指令系统完全兼容。

单片机课程设计_基于单片机的数字秒表设计

单片机课程设计_基于单片机的数字秒表设计

单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。

本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。

一、设计要求1、能够实现秒表的启动、暂停、复位功能。

2、计时精度达到 001 秒。

3、能够通过数码管显示计时结果。

二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。

显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。

按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。

时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。

2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。

中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。

三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振频率选择 12MHz,为单片机提供时钟信号。

复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。

2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。

通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。

3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。

当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。

四、软件程序设计1、主程序流程系统初始化后,进入主循环。

在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。

单片机课程设计之多功能秒表

单片机课程设计之多功能秒表

单片机报告—————多功能秒表实验者:蒋晓婷班级:2008级电自9班学号:20080711304组员:丁秀香一、实验要求1.硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)2、软件程序清单一套(含主要程序流程图,全部源程序及详细的注释)3、使用功能说明书一份(含功能描述及操作指南和收获体会)4、软件在开发板上调试成功,并能成功表演,达到设计课题的要求二、实现要求秒表功能1、设计可以显示0.1—100s的秒表,最小单位为毫秒;2、通过按键控制秒表清零、暂停、继续、退出等功能;3、具有倒计时功能;4、秒表可以分组存储,批量显示;5、显示北京时间;6、可利用蜂鸣器添加提示音。

附加功能1、利用实时钟芯片,显示年月日以及星期;2、选择蜂鸣器电路,实现闹钟设置和报警功能;3、可以通过按键调整日期、时间;4、可以设置两组闹钟,闹钟时间到,蜂鸣器响;5、利用蜂鸣器实现整点报时。

三、硬件原理:ADUC848管脚图如下图所示。

Pin1~4:(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。

若P2、P3、P0口要作为输入,则应往相应引脚写1。

Pin5、6:AVDD、AGND,模拟电源输入。

Pin7、8:外部参考电压接入,Pin7接AGND。

片内DAC有2.5V内部参考,ADC有1.25V内部参考。

Pin9、10:(P1.4、P1.5)两路AD输入,可做差分输入,需要设置ADC的寄存器。

Pin11、12:(P1.6、P1.7)各200uA激励电流源,可配合RTD等做应用。

Pin13:两路AD输入做普通输入时的电压参考端,AD输入电压不能低于此引脚电压。

Pin14:片内DAC输出。

Pin15:复位引脚。

Pin16、17:单片机RS232接口的RXD(P3.0)TXD(P3.1)。

Pin18:(P3.2)外部中断0,用于红外接收和PS/2接口。

基于单片机的多功能秒表设计

基于单片机的多功能秒表设计

基于单片机的多功能秒表设计本次设计的内容是以STC89C52单片机为控制核心的秒表。

设计的主要内容为计时器从00~99秒的计时,每秒种自动加1,另外还设置有暂停键和复位键等按键,在任何情况下都可以实现暂停和复位功能。

利用单片机定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计的计时器。

此次设计将软、硬件有机地结合起来,使得系统能够实现2位LED数码管显示,显示时间为00~99秒,同时计时精度为1秒,并且能够正确地进行计时。

其中软件系统采用C语言编写程序,包括显示子程序、中断服务、外部中断服务子程序和复位子程序等。

关键词:单片机;数码管; C语言;目录1引言................................................................. - 1 -1.1研究背景......................................................... - 1 -1.2 研究的意义与方法 ................................................ - 1 -2 电路方案论证 .......................................................... - 2 -2.1单片机芯片的选择方案和论证:..................................... - 2 -2.1.1 采用STC89C51单片机 .................................................................................. - 2 -2.1.2 采用STC89C52单片机 .................................................................................. - 2 -2.2显示模块选择方案和论证:......................................... - 2 -2.2.1 采用LED液晶显示屏 .................................................................................... - 2 -2.2.2 采用LED数码管显示 .................................................................................... - 3 -2.3 小结 ............................................................ - 3 -3 系统硬件电路设计 ...................................................... - 3 -3.1 STC89C52芯片.................................................... - 3 -3.1.1 概述 ................................................................................................................ - 3 -3.1.2 STC89C52主要特性 ....................................................................................... - 3 -3.1.3 STC89C52管脚说明 ....................................................................................... - 4 -3.2 LED数码管显示器概述............................................. - 5 -3.2.1 数码管的分类 ................................................................................................ - 5 -3.2.2 数码管的连接方法 ........................................................................................ - 5 -3.3 总体设计方案 .................................................... - 6 -3.4 部分电路设计 .................................................... - 7 -3.4.1晶振电路 ......................................................................................................... - 7 -3.4.2 按键部分电路接线 ........................................................................................ - 7 -3.4.3 显示电路 ........................................................................................................ - 8 -3.4.4 复位电路 ........................................................................................................ - 8 -4 系统程序的设计 ........................................................ - 9 -4.1 主程序设计 ...................................................... - 9 -4.2 定时器T0子程序设计 ............................................ - 10 -5 联调与调试 ........................................................... - 10 -5.1仿真调试........................................................ - 10 -5.2硬件调试........................................................ - 12 -结论与展望 ............................................................. - 13 - 附录A 系统原理图..................................................... - 14 - 附录B 系统仿真图与实物图............................................. - 15 - 附录C 系统PCB图..................................................... - 16 - 附录D 系统源程序..................................................... - 17 -1引言1.1研究背景在生活和生产的各领域中,凡是有自动控制要求的地方都会伴随着单片机的身影出现;从简单到复杂,从空中、地面到地下,只要是能想象到的地方几乎都有使用单片的需求。

MSP430单片机秒表程序(完整)

MSP430单片机秒表程序(完整)

MSP430单片机"秒表" 程序(完整)/*******************************************************基于MSP430F449单片机的秒表*功能:秒计时,8位数码管显示,包括小时、分钟、秒和毫秒*此程序同样适用于其他系列单片机*by:duyunfu1987******************************************************/#include "msp430x44x.h"#define DPYOUT P3OUT //数码管的段选输出口#define DPYCOM P2OUT //38译码器的ABC输入#define OPENOUT P2OUT |= BIT3 //74HC573使能锁存段选#define CLOSEOUT P2OUT &= ~BIT3//74HC573无效int hour,min,sec,ms; //缓冲区定义,小时、分钟、秒、毫秒int count = 0; //2ms计数,计到5时ms增1//共“阴”极数码管的码表unsigned char LED7CC[] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//延时n(us)void delay_us(int n){ while(n-- >0)_NOP();}//延时n(ms)void delay_ms(int dms){ int i;while(dms-- >0){ for(i=0;i<250;i++);}}//初始化缓冲区与IO口void Init(){hour = 0;min = 0;sec = 0;ms = 0;P2SEL = 0;P3SEL = 0;P2DIR |= BIT0+BIT1+BIT2+ BIT3;//A B C 使能位P2DIR &= ~(BIT4+BIT5+BIT6); //按键P3DIR = 0xff;P3OUT = 0x00;}//8位数码管动态显示函数void display(){DPYOUT = 0;_NOP();DPYOUT = LED7CC[ms%10]; DPYCOM = 7;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[ms/10]; DPYCOM = 6;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[sec%10]|0x80; DPYCOM = 5;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[sec/10]; DPYCOM = 4;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[min%10]|0x80; DPYCOM = 3;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[min/10]; DPYCOM = 2;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[hour%10]|0x80; DPYCOM = 1;OPENOUT;CLOSEOUT;DPYOUT = LED7CC[hour/10]; DPYCOM = 0;OPENOUT;CLOSEOUT;}//按键处理函数void key_deal(int key){switch(key){case 0x60: //START--开始计时{ BTCTL = BT_ADL Y_2;IE2 |= BTIE;_EINT();}break;case 0x50: //STOP -- 停止BTCTL |= BTHOLD; break;case 0x30: //CLEAR--缓冲区清零{ hour = 0;min = 0;sec = 0;ms = 0;}break;default : break;}display();}//主函数void main( void ){int key;// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;FLL_CTL0 |= XCAP18PF;Init();while(1){if((key = P2IN & 0x70)!=0x70){delay_ms(10);if((key = P2IN & 0x70)!=0x70){ key_deal(key);}}display();}}//BT中断服务程序,2ms计时#pragma vector = BASICTIMER_VECTOR__interrupt void BT_ISR(){count ++;if(count == 5){ count = 0;ms ++;}if(ms == 100){ms = 0;sec ++;if(sec == 60){sec = 0;min ++;if(min == 60){min = 0;hour ++;if(hour == 24)hour = 0;}}}}。

基于单片机的多功能秒表的设计

基于单片机的多功能秒表的设计

摘要:单片机具有集成度高,体积小可靠性好和性价比高得优点,该文主要阐述了设计一个利用单片机作为总控制中枢的秒表系统。

利用单片机可以定时和记数的原理结合时钟电路、数码管显示电路、复位电路和按键电路将软、硬件同时结合起来,使得系统能够准确无误地进行计时,同时具有开始,暂停,清零和复位的功能。

关键词:单片机;多功能秒表;c语言中图分类号:tp368 文献标识码:a 文章编号:1009-3044(2016)13-0257-021 系统硬件总体结构本系统采用at89c52单片机为核心器件,通过硬件电路的制作和软件程序的编写,利用单片机的控制作用通过led来直接显示数字[1]。

其中硬件电路如电源电路,晶振电路,复位电路[2],显示电路,以及一些按键电路等,软件系统采用c语言编写,包括数码管点亮显示程序,加减计数程序,延时程序,按键消抖程序等[3],并在keil中调试运行,硬件系统利用proteus仿真,简单而且易于观察,在仿真中就可以观察到实际的工作。

总体硬件框图如图1所示。

[4]2 模块电路分析多功能秒表能正常工作,是在各个电路模块组合下协调完成的,其中包括了单片机工作电路、数码管显示电路,按键电路和时钟电路,下面做详细介绍。

2.1 单片机简单介绍电源vcc、gnd,时钟引脚xtal1、xtal2 ,i/o口引脚p0、p1、p2、p3四组八位i/0,编程控制引脚rst。

采用msc-51系列的单片机是因为其具有两大优势[5]:1)片内程序存储器采用快闪存储器,使程序写入方便,还可以任意的擦写;2)提供了更小的芯片,使整个硬件电路体积更小,物美价廉,经济适用。

2.2 晶体振荡电路at89c52芯片内部有一个反相放大器,用于构成振荡器。

引脚 xtal1为反向放大器的输入,引脚xtal2为反向放大器输出,两端跨接石英晶体及两个电容就可构成稳定的自激振荡器。

电容器c1,c2起稳定振荡频率,并对振荡频率有微调作用。

这部分给单片机提供晶振周期。

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

郑州科技学院单片机课程设计题目基于单片机的多功能秒表学生姓名专业班级学号院(系)指导教师完成时间2015 年1 月16 日目录1 设计概述 (1)1.1设计目的 (1)1.2设计要求 (1)1.3设计意义 (1)2 系统总体方案及硬件设计 (2)2.1系统总体方案 (2)2.2硬件设计 (2)2.3时钟电路 (3)2.4复位电路 (4)2.5按键电路 (5)2.6显示电路 (6)3 软件设计 (7)3.1设计思路 (7)3.2程序流程框图设计 (7)4 PROTEUS软件仿真 (9)5 课程设计体会 (10)参考文献 (12)附录1:总体电路原理图 (13)附录2:元器件清单........................................... 错误!未定义书签。

附录3:实物图 . (15)附录4:源程序 (16)1 设计概述1.1 设计目的设计一个单片机控制的秒表系统。

利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计秒表。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时具有开始/暂停,记录,上翻下翻,清零等功能。

1.2 设计要求(1)共四位LED显示,显示时间为00:00~59.99(2)共五个按键,分别是开始/暂停,记录,上翻,下翻,清零键;(3)能同时记录多个相对独立的时间并分别显示;(4)按上下翻按钮查看多个不同的计时值;1.3 设计意义(1)通过本次课程设计可以使我们进一步熟悉和掌握单片机内部结构和工作原理,了解单片机应用系统设计的基本步骤和方法。

(2)通过利用A T89C51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法。

(3)通过设计一个简单的实际应用输入及显示模拟系统,掌握单片机仿真软件PROTEUS的使用方法。

(4)该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、功能,并能同时记录多个相对独立的时间利用翻页按钮查看多个不同的计时值,该种秒表在现实生活中应用广泛,具有现实意义。

2 系统总体方案及硬件设计2.1 系统总体方案本系统采用A T89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软、硬件有机地结合起来。

其中软件系统采用汇编语言编写程序,包括显示,计数,中断,延时,按键消抖程序等,并在编程软件中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。

2.2 硬件设计MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:(1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器(2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序(3)RAM:256B的片内数据存储器,容量小,但作用大(4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线(5)中断系统:共5个中断源,3个内部中断,2个外部中断(6)定时器/计数器:2个16位的可编程定时器/计数器(7)通用串行口:全双工通用异步接收器/发送器(8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号(9)总线控制:89C51对外提供若干控制总线,便于系统扩展89C51单片机引脚图如图2-1所示:图2-1 89C51单片机引脚图2.3 时钟电路89C51芯片内部有一个高增益反相放大器,用于构成振荡器。

引线XTAL1和XTAL2分别为反向放大器的输入和输出,两端跨接石英晶体及两个电容就可构成稳定的自激振荡器。

这里,我们选用51单片机12MHZ的内部振荡方式,电容器C1,C2起稳定振荡频率,并对振荡频率有微调作用,C1和C2可在20-100PF之间取值,这里取33P,则时钟电路图如图2-2所示:图2-4 按键电路图2.6显示电路显示电路既可以选用液晶显示器,也可以选用数码管显示。

我们采用的是数码管显示电路。

用四个共阴极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。

在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。

在设计中,我们采用LED动态显示,用P0口驱动显示。

由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。

显示电路图如图2-5所示:1819303129912345678在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。

把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。

应用系统的程序由包含多个模块的主程序和各种子程序组成。

各程序模块都要完成一个明确的任务,实现某个具体的功能,如:计数、延时、和显示等,在具体需要时调用相应的模块即可。

用四位LED 数码管显示时间。

一个"开始/暂停"键,一个"复位"键,一个“记录”键,可同时记录八个相对独立的时间;一个“上翻”键,一个“下翻”键,查看八个不同的计时值。

五个按键分别通过五个端口控制秒表的五个功能。

3.2 程序流程框图设计程序流程框图如图3-1所示图3-1 程序流程框图4 PROTEUS软件仿真将以上程序清单导入先前做好的Proteus仿真电路中,汇编之后,按仿真键开始进行仿真。

仿真结果如图4-1所示:图4-1 仿真结果图仿真结果描述:按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;按记录键,秒表记录时间,共可记录八个数值;按上翻下翻键,可查看这八个不同的计时值。

结论及进一步设想:根据实验要求,本次课设基本完成了设计要求,由于秒表系统并不一定仅仅局限于计时,定时等功能,还可以进行多项的扩展,可以利用AT89C51强大的扩展功能,进一步丰富秒表的功能,例如可设定计时时间,倒计时等等众多功能。

单片机以其强大的功能和良好的兼容性可以更好地为我们服务,通过查阅各种资料,多了解一些单片机有关知识,可以为以后的工作和学习生活创造更多的便利条件。

5 课程设计体会通过本次课程设计,我深刻地认识到自己有很多不足之处,比如在自主学习能力方面的不足,实际动手操作能力的不足等。

这次的单片机课程设计是理论与实践相结合的范例。

该设计从头到尾都要自己参与进来,熟悉了整个设计流程才能更快地设计出方案并完成设计。

本次课程设计我主要负责硬件电路的设计和查阅相关资料。

单片机课程早已结束,相关的知识已经很模糊,导致我在设计硬件电路中遇到了不少麻烦。

首先是不知从何入手。

虽然小组讨论后确定了秒表要实现的功能,可是没有相关理论知识的熟知和实践操作,画出硬件设计图对我而言毫无头绪。

查阅了与89C51单片机相关的资料也阅读了其他人单片机数字秒表的设计,慢慢地我开始了解其中原理,一步步设计出了硬件电路的各个部分,如晶体振荡电路,复位电路,按键电路,显示电路。

完成设计后需要运用PROTEUS 软件进行设计仿真,由于这是第一次接触这个软件,还不知怎样运用它,查阅该软件的相关资料及看过网上的视频后便开始着手画图,接触后觉得还是挺简单的。

这次的课程设计我与小组同学进行了交流和讨论,我们分工进行设计,从搜索资料到硬件、软件的调试,每一步、每一个细节都经过我们自己的思考,我们共同讨论各方案的比较选择、硬件、软件的设计和调试,最终拿出了我们的成果。

在做的过程中不但加深了我们对单片机理论知识的认识和理解还认识到了这门学科在应用方面的广阔前景。

实践是最有高度也是最能体现整体水平的整个设计过程中,我们不断地探索,设计出了很多不一样的硬件电路图,写过了很多不一样的程序,正如设计中如何能使硬件电路图简单明了,程序简单而准确,如何能准确的运行,都是通过与同学老师的交流,慢慢摸索出来的。

以上的不断探索,使我们进一步熟悉和掌握单片机内部结构和工作原理,了解单片机应用系统设计的基本步骤和方法。

通过利用AT89C51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法。

通过设计一个简单的实际应用输入及显示模拟系统,掌握单片机仿真软件PROTEUS的使用方法。

我们设计的这种具有记录,上翻下翻功能的秒表在现实生活中应用广泛,如体育项目,因此本次课程设计具有现实意义,我很开心能将知识运用到实践中并在自主学习中收获到那么多。

参考文献[1] 余发山编著. 单片机原理及应用技术. 中国矿业大学出版社,2003年[2] 杨凌霄编著. 微型计算机原理及应用. 中国矿业大学出版社,2004年[3]杨宁编著. 单片机与控制技术. 北京航空航天大学出版社,2004年[4] 李群芳主编. 单片机原理、接口及应用. 清华大学出版社,2005年[5]胡汉才. 单片机原理及其接口技术(第二版). 清华大学出版社,2004[6] 李邓化. 智能检测技术及仪表. 科学出版社,2007[7]戴佳. 单片机C51语言应用程序设计. 电子工业出版社,2006[8]朱民雄. 计算机语言技术. 北京航空航天大学出版社,2002[9]李鸿. 单片机原理及应用. 湖南大学出版社,2004[10]刘建清. 单片机技术. 国防工业出版社, 2006附录1:总体电路原理图附录2:元器件清单附录3:实物图附录4:源程序/*1、程序目的:使用定时器学习秒表计时,记录8组数据,通过上翻、下翻键查看记录的数据2、硬件要求:数码管、晶振12MHz*/#include <reg52.h>Code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管0-9code unsigned char tab1[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xE F} ;//共阴数码管0-9带小数点sbit key1 = P1^0; //开始、暂停sbit key2 = P1^1; //记数sbit key3 = P1^2; //上翻sbit key4 = P1^3; //下翻sbit key5 = P1^4; //清零static unsigned char ms,sec;static unsigned char Sec[8],Ms[8];static int i ,j;void delay(unsigned int cnt) //延时程序{while(--cnt);}void main(){unsigned char key3_flag=0,key4_flag=0;TMOD |=0x01;//定时器010ms in12M crystal用于计时TH0=0xd8;TL0=0xf0;ET0=1;TR0=0;TMOD |=0x10; //定时器1用于动态扫描TH1=0xF8;TL1=0xf0;ET1=1;TR1=1;EA =1;sec=0; //初始化ms=0;P1=0xff;i=0;j=0;start:while(1){ //开始、暂停if(!key1) //判断是否按下{delay(50); //去抖if(!key1)while(!key1) //等待按键释放 {;}TR0=!TR0;} //记录if(!key2) //判断是否按下{delay(50); //去抖if(!key2){ while(!key2) //等待按键释放{;}if(i==8) //8组数据记录完毕{TR0=0; goto start;}Sec[i]= sec; //将数据存入数组Ms[i]= ms;i++;}}//上翻if(!key3){delay(50);if(!key3){ while(!key3){;}TR0=0;key3_flag=1; //按键3标志if(j==i)goto start;elseif(key4_flag)j+=2;key4_flag=0;sec=Sec[j];ms=Ms[j]; //显示数组里的内容j++;}}//下翻if(!key4){delay(50);if(!key4){while(!key4){;}TR0=0;key4_flag=1; //按键4标志if(j<0)goto start;elseif(key3_flag)j-=2;key3_flag=0;sec=Sec[j];ms=Ms[j]; //显示数组里的内容j--;}} //清零if(!key5){delay(50);if(!key5)while(!key5){;}TR0=0;ms=0;sec=0;for(i=0;i<8;i++){Sec[i]=0;Ms[i]=0;}i=0;}}}/********************************//* 定时中断1 *//********************************/void time1_isr(void) interrupt3using0//定时器1用来动态扫描{static unsigned char num;TH1=0xF8;//重入初值TL1=0xf0;switch(num){case0: P2=0xfe;P0=tab[sec/10];break;//显示秒十位case1: P2=0xfd;P0=tab1[sec%10];break; //显示秒个位case2: P2=0xfb;P0=tab[ms/10];break;//显示十位case3: P2=0xf7;P0=tab[ms%10];break; //显示个位default:break;}num++;if(num==4)num=0;}/********************************/ /* 定时中断0 */ /********************************/ void tim(void) interrupt1using1{TH0=0xd8;//重新赋值TL0=0xf0;ms++;//毫秒单元加1if(ms==100){ms=0;//等于100时归零sec++;//秒加1if(sec==60){sec=0;//秒等于60时归零 }}}。

相关文档
最新文档