单片机课程设计秒表系统_第1页
单片机课程设计秒表系统_第2页
单片机课程设计秒表系统_第3页
单片机课程设计秒表系统_第4页
单片机课程设计秒表系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 名 称 单片机原理及应用设 计 题 目 基于单片机的秒表系统设计 系 部 名 称 机械电子工程系 专 业 班 级 电子信息工程2014级2班 姓 名 学 号 成 绩 指 导 教 师 2016年12月摘要秒表主要有机械和电子两大类,电子表又可分为三按键和四按键两大类。绝大部分体育教师使用的多是电子秒表,机械秒表在很多地方已经成为历史。电子秒表是一种较先进的电子计时器,国产的电子秒一般都是利用石英振荡器的振荡频率作为时间基准,采用6位液晶数字显示时间,具有显示直观、读取方便、功能多等优点。广泛运用于学校、小型比赛等计时时间较短的场所。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点

2、,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。本课程设计以STC89C51单片机为核心,结合C语言编程及其他硬软件相结合设计的简易秒表,旨在学会运用单片机解决实际生产生活中问题。关键字:STC89C51单片机、C语言、秒表等目录摘要I目录II第1章 设计目的、内容及要求11.1 设计目的11.2 设计内容11.3 设计要求11.4 设计工具11.4.1 主要软件11.4.2 主要硬件2第2章

3、设计原理及相关硬件42.1 设计方案原理及各模块设计42.2 硬件原理及模块设计42.2.1 时钟电路42.2.2 复位电路52.2.3 控制电路52.2.4 报警电路62.2.5 显示电路62.2.6 总体电路图72.3 软件原理及模块设计7第3章 程序编译及仿真过程93.1 工程建立及原理图绘制93.2 仿真方法93.3 仿真结果分析9第4章 设计总结12参考文献15附录1 源程序16附件1 任务书19附件2评价表20第1章 设计目的、内容及要求1.1 设计目的了解并掌握一般设计方法,具备初步的独立设计能力;掌握用C语言程序设计基本技能;提高综合运用所学的理论知识独立分析和解决问题的能力;

4、进一步掌握单片机技术的开发流程,学习较复杂的数字系统设计方法,为以后进行工程实际问题的研究打下设计基础。1.2 设计内容1、进行总体设计,画出设计原理图;2、用PROTEUS软件画出设计电路图;3、用Keil软件编写程序;4、在PROTEUS里模拟并调试程序达到期望功能。5、撰写单片机课程设计报告1.3 设计要求1、设计精度为1/60S的秒表系统。2、设置启动、暂停、清零按钮。3、秒表的最长计时长度为01:59:59,超过此长度,报警。1.4 设计工具1.4.1 主要软件1、PROTEUS软件Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中

5、国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、A

6、RM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。2、KEIL 软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统

7、。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。1.4.2 主要硬件1、STC89C51单片机STC89C51是一种低功耗、高性能CMOS 8位微控制器,具有4K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51在众多嵌入式控制应用系统中得到广泛应用。其引脚如图1.1所示。

8、图1.1 STC89C51引脚1)电源地组Vcc和Vss:Vcc(40)脚接+5V电压;Vss(20)脚接地2)时钟电路组XTAL1和XTAL2 3)控制信号组RST/ALE/PSEN和EA 4)I/O端口P0、P1,、P2和P3 2、数码管数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。按发光二极管单元连接方式可分为共阳极数码管和

9、共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。对应段码如表1.1所示,对应符号和引脚及内部结构如图1.1所示。 表1.1 常用字符字型码(十六进制表示)字符0123456789AbCdE

10、FP.暗共阴极3F065B4F666D7D077F6F777C395E7971738000共阳极C0F9A4B0999282F880908883C6A1868E8C7FFF图1.1 符号和引脚及内部结构第2章 设计原理及相关硬件2.1 设计方案原理及各模块设计本设计是基于AT89C51单片机设计的,分为硬件设计模块、软件设计模块。秒表的硬件包括时钟电路、控制电路以及外部显示电路。利用89C51单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。计时精度为1/60s。秒表软件设计采用C语言编写程序,包括延时程序、显示程序、按键扫描、报警程序、定时中断服

11、务程序等。设计原理框图如图2.1所示。图2.1 设计原理框图2.2 硬件原理及模块设计2.2.1 时钟电路通过XTAL1和XTAL2外接晶体振荡器构成内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。其中石英晶振为12MHz时钟电路如图2.2所示。图2.2 时钟电路2.2.2 复位电路采用上电加按键复位电路,也就是手动复位,上电后,由于电容充电,使RET持续一段

12、高电平时间,当单片机运行时,按下复位键也能使RET持续一段时间的高电平,从而实现上电加开关复位的操作。复位电路如图2.3所示。图2.3 复位电路2.2.3 控制电路当某一按键按下时,连接按键的IO口被置为低电平,通过软件识别产生相应控制指令。控制电路如图2.4所示。(1) 复位/暂停按键,按下后使得TR0取反,相应启动和停止T0定时器。(2) 清零按键,按下后使得num清零,TR0=0,即秒、分等置零,且定时计数器关闭。图2.4 控制电路2.2.4 报警电路当数显显示1-59-59时,P1.0口变为低电平并延时1s后再变为高电平,使得LED灯亮1s后灭。报警电路如图2.5所示。图2.5 报警电

13、路2.2.5 显示电路由软件控制单片机给P0口发送段码,P0口P0.0-P0.7分别与A,B,C,D,E,F,G,DP相连(同时连上拉电阻),P2口发送位码,P2口P2.0-P2.7分别与8个选通口顺次相连。采用数码管动态显示原理,8个位码单独发送,每次仅选选通一位,于此同时给该位发送相应段码,然后延时一段时间,大约为1-10ms。虽然每次只有一个 LED 显示,但只要扫描显示速率够快,由于人的视觉余辉效应,使我们仍会感觉所有的数码管都在同时显示。显示电路如图2.6所示。图2.6 显示电路2.2.6 总体电路图2.3 软件原理及模块设计相关计算:设计要求精度为1/60s,因此定时计数器T0定时

14、时间为1/60s,则:时钟周期:计数值:计数初值利用C语言编程,程序见附录1。软件设计框图如图2.8所示。图2.8 软件设计框图第3章 程序编译及仿真过程3.1 工程建立及原理图绘制1) 启动KEIL建立一个空白工程,然后命名为 miaobiao.uvproj。2) 新建 C语言源程序文件 miaobiao.c,写出程序代码并保存(程序附后),进行编译,若在编译过程中发现错误,则找出并更正误,直至编译成功为止,点击3) 启动Proteus软件新建设计原理图,然后命名为miaobiao.DSN。4)添加各元件绘制如图2.7原理图并保存。3.2 仿真方法打开miaobiao.DSN,点击单片机,在

15、程序一栏添加KEIL生成的miaobiao.hex文件,点击开始仿真按钮即开始仿真。按下不同的按钮,观察结果有何不同,在下一节做详细分析。3.3 仿真结果分析1、接通电源(启动仿真时)数码管显示为00-00-00,如图3.1所示。图3.1 仿真1:初始图2、按下启动/暂停键数码管开始计数,最低位逢10进1向高位进1,第二位逢6向高位进1,第三位和第六位固定显示“-”,其余各位进位法则与前两位一样,最多显示01-59-59。再次按下时停止计数。如图3.2、3.3所示。图3.2 仿真2:按下启动键图3.3 仿真3:按下暂停键3、按下清零键图3.4 仿真3:按下清零键4、报警数码管显示为01-59-

16、59,LED亮,1s后数码管显示00-00-00,LED灯灭。如图3.5、3.6所示。图3.5 仿真5:报警图3.6 仿真6:报警结束第4章 设计总结随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。单片机作为可编程控制器的代表,以高性价比、高可靠性、低电压、低功耗的优点,遍布现代社会各个领域。本次课程设计所做的秒表,在各阶层体育教育、中小规模体育赛事及其他需要计量时间的场合都不可缺少,设计优良的秒表不仅要保证精度、实用性等功能要求,还要求

17、要有好的后期制作:如包装等,但由于时间问题并未具体制作产品,只做基于proteus的设计仿真。在课程设计过程中对编程做过多次修改:启动/暂停等控制功能,可以用多种方法:中断、for语句等,用中断做可以稳定实现启动/暂停功能,但会因执行中断导致数码管的动态扫描停止,只显示一位数码管的数字,使秒表的实用性下降,经过减少中断内语句也会出现数显界面闪烁;而用for语句放在主程序中,能解决这个问题,但亦会出现功能不可靠问题。最终在控制功能方面做优劣性分析选择了后者。对于数码管的动态扫描对硬件及软件编程均有修改:有以下两种方案:方案1:采用74系列锁存器对IO口进行扩展,利用锁存控制端对数据进行隔离,每次

18、送一组段码及位码,实现动态扫描。程序段如下,原理图如4.1所示。while(1)/大循环 d=1; /开位锁存 P2=dig0;/送位码 d=0;/关位锁存 s=1;/开段锁存 P0=segc1_0 ;/送段码 s=0;/关段锁存 delayms(1);/延时1ms d=1;/重复上诉过程,送下一位位段码 P2=dig1; d=0; s=1; P0=segc1_1 ; s=0; delayms(1);.图4.1 74HC573实现的动态扫描这种方法的优点是可扩展IO口,节约IO口资源;缺点是程序冗长,会造成无法正确显示。方案2:直连法实现动态扫描。程序段如下,原理图如图4.2所示。 disp0

19、=0; disp1=num/3600;disp2=0xa;disp3=num%3600/600;disp4=num%3600%600/60;disp5=0xa;disp6=num%3600%600%60/10;disp7=num%10;/分离各位数字while(1)uchar i;for(i=0;i8;i+) P2=digi;/位码P0=segdispi;/段码delayms(5);/延时图4.2 直连法实现动态扫描此方案优点是程序简短;缺点是IO口不可复用,浪费IO口资源。结合优缺点分析最终选择了方案2。通过此次课程设计,我明白了单片机的要点就是对IO口的高低电平进行控制,而控制手段要通过不

20、同的单片机的资源功能进行程序编写,故需要软硬件结合才能实现相应功能,另外对于单片机程序无论是C语言,还是汇编语言不能仅仅只对程序本身做解读,最精髓的一点要结合单片机的外部扩展一起考虑,才能对程序理解到位,理解透彻。参考文献3 百度文库STC89C51芯片资料 N/OL 附录1 源程序#include /头文件#define uint unsigned int#define uchar unsigned char/ 宏定义sbit stop=P32; /暂停开始键sbit rst =P36; / 复位键sbit baojing=P10;/ 报警灯uchar code seg=0xc0,0xf9,

21、0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf;/数码管段码uchar code dig=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/数码管位码uchar disp=0,1,2,3,4,5,6,7;uint num;/定义全局变量 void delayms(uint n)uchar j;while(n-)for(j=0;j113;j+);/延时函数void shu()disp0=0; disp1=num/3600;disp2=0xa;/连接符“-”disp3=num%3600/600;disp4=num%3600%

22、600/60;disp5=0xa;disp6=num%3600%600%60/10;disp7=num%10;/分离 六十分之一秒、六分之一秒、秒、十秒、分以及连接符-void display()uchar i;for(i=0;i8;i+) P2=digi;P0=segdispi;delayms(5);/动态显示函数void key()if(stop=0)delayms(5); /延时消抖TR0=TR0; /每按下一次定时计数器暂停开始,num暂停叠加if(rst=0)delayms(5);/延时消抖TR0=0;num=0;/定时计数器停止计数,且num值清零/按键检测void main()TMOD=0x01;/方式1定时TH0=(65536-16666)/256;TL0=(65536-16666)%256;IE=0x82;TR0=0;/配置定时计数器T0while(1) key();shu();display();/主函数void add()interrupt 1TH0=(65536-16666)/256;TL0=(65536-16666)%256;/重装初值num+;if(num=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论