基于单片机设计的秒表_第1页
基于单片机设计的秒表_第2页
基于单片机设计的秒表_第3页
基于单片机设计的秒表_第4页
基于单片机设计的秒表_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、 数理与信息工程学院单片机原理及应用期末课程设计题 目: 基于单片机设计的秒表 专 业: 计算机科学与技术 班 级: 计本072班 姓 名: 郑进伟 学 号: 指导老师: 余水宝 成 绩: ( 2010.1 )目 录 第1节 引 言31.1 秒表功能概述31.2 本设计任务和主要内容3第2节 系统主要硬件电路设计42.1 系统组成框图42.2 控制系统电路42.2.1晶振的使用5 2.2.2控制电路62.3 控制电路与晶振的连接62.4 数码管显示系统电路7第3节 系统软件设计9 3.1 计时主程序设计93.2 数码管显示程序设计12第4节 结束语15参考文献16基于单片机设计的秒表数理与信息

2、工程学院 计算机科学与技术072 郑进伟指导教师: 余水宝 第1节 引 言 秒表虽然是一个简单的小工具,但是给我们的生活带来许多方便,体育比赛中秒表是必不可少的裁判工具。其核心是基于单片机的控制部分和晶振共同组成,加以软件编程实现。秒表的设计程序用AT89C51,外接晶振,复位电路,二个数码管,二个按键,做一个电子秒表,具体要求为用按键起停电子表,可用按键设计倒计时时间(如10S,20S,60S),并启动倒计时功能。能用按键选择以上两功能之一。该系统结构简单,易于操作,可靠性高,用途广泛。 1.1 秒表设计概述 秒表虽然是一个简单的小工具,市面上随处可见。但麻雀虽小,五脏俱全。它亦是一个完整,

3、精密的小系统。加上秒表使用范围广,如果能用更加稳定,优异的设计来实现,使其能够更精确,或者能将其模块化添加到其他的电子产品中,如手表,手机等,可以创造许多经济效益。1.2 本设计任务和主要内容本论文主要研究基于单片机的秒表设计,主要是控制电路设计,数码管显示的设计,和软件程序的编写。 第2节 系统主要硬件电路设计 2.1 系统组成框图图2-1 秒表系统原理框图2.2 控制系统电路AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多

4、功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效的微控制器。图2-2 单片机秒表系统图2.2.1 晶振的使用 单片机的时钟信号用来

5、提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的倍频或分频后就成了各种不同的总线频率。我们可以使用晶振来作为计时的工具。晶振也是很多电子设备中不可缺少的一部分。图2-2-1 单片机秒表系统图2.2.2 控制电路本次秒表设计要实现的功能具体是:用按键起停电子表,可用按键设计倒计时时间(如10S,20S,60S),并启动倒计时功能。能用按键选择以上两功能之一。具体要用AT89C51芯片实现。MCS-51单片机的复位是靠外部电路实现的。MCS-51单片机工作之后,只要在他的RST引线上

6、加载10ms以上的高点平,单片机就能有效地复位。MCS-51单片机通常采用上电自动复位和按键复位两种方式。最简单的复位电路如下图: 上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上的高电平,就能使单片机有效的复位。在应有系统中,有些外围芯片也需要复位。如果这些芯片复位端的复位电平与单片机的复位电平的要求一致,则可以将复位信号与之相连。2.3 控制电路与晶振的连接晶振分为有源晶振和无源晶振。无源晶振只有两个引脚,没有所谓的正负极。有源晶振需要接电源才能工作,一般有四个引脚,其中有两个电源输入引脚,有正负极之分。本设计采用的是无源晶振,无源晶振,两个电容分别接到晶振的两端,

7、每个电容的另一端再接到地。一般的电容为15p或12.5p 。再与芯片引脚相连。 24 数码管显示系统电路微机化测控系统中常用的测量数据的显示器有发光二极管显示器(简称LED或数码管)和液晶显示器(简称LCD)。这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点,本系统输出结果选用2个LED显示。LED数码管的外形结构如图2-4,外部有10个引脚,其中3, 8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字(0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。由于系统要显示的内容比较简单,显示量不多,

8、所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图2-4所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。 共阴极 共阳极 图2-4 LED数码管结构原理图数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需要解决多位LED数

9、码管的“段控”和“位控”问题,本电路的通过P1口实现:而每一位的公共端,即LED数码管的“位控”,则由P3口控制。这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开头”状态。因AT89C51单片机I/O口资源有限,必须对其Il0口进行扩展才能满足实现系统功能,如图2-7所示为用8155扩展1/0口的4个8位

10、LED动态显示器,显示扫描由程控实现,其中PA口输出字型码,PC口输出位选信号即扫描信号,图中片选线CE和AT89C51的P2.7口相连,IO/ M选通输入线与P2.4口相连,该系统中当P2.7=0且P2.4 =1时,选中8155芯片内三个I/O口。 表2-1 8155端口地址分配 第3节 系统的软件设计 AT89C51显示0099汇编语言程序。要实现两位数码管显示0099依次循环的秒表设计,必须得将AT89C51芯片写入程序,只有将程序写进AT89C51芯片,才能实现其秒表的原理功能。31 计时主程序设计 A_BIT EQU 20H ;数码管个位数存放内存位置 B_BIT EQU 21H ;

11、数码管十位数存放内存位置 TEMP EQU 22H ;计数器数值存放内存位置 ;开机初始化 MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于输入 MOV P0,#0FFH ;使显示时间数码管熄灭 CLR F0 CLR F1 MOV DPTR,#NUMTAB ;指定查表启始地址 ;等待按键输入 ;根据按键的输入判断执行什么功能 ;按键1按下则执行功能1 MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于输入 MOV P0,#0FFH ;使显示时间数码管熄灭START: JB P3.6,START1 ;循环判断开始按钮K1是否按下? ACALL DELAY10 ;延时10

12、毫秒触点消抖 JB P3.6,START ;如果是干扰就返回 JNB P3.6,$ ;等待按键松开 LJMP GN1 ;按键2按下则执行功能2START1: JB P3.7,START ;循环判断开始按钮K2是否按下? ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.7,START1 ;如果是干扰就返回 JNB P3.7,$ LJMP GN2 ;数码管显示秒表时间的程序GN1: ;先初始化S1: MOV A,#0 MOV TEMP,AGOON1: MOV R2,#2JS1: MOV R3,#250TIME1: MOV A,TEMP ;将TEMP中的16进制数转换成10进制 MO

13、V B,#10 ;10进制/10=10进制 DIV AB MOV B_BIT,A ;十位在A MOV A_BIT,B ;个位在B LCALL DPLOP1 ;插入判断按键输入的程序段C1: JB P3.6,B1 ACALL DELAY10 ;延时10毫秒消抖 JB P3.6,C1 JNB P3.6,$ ;等待按键松开 CPL F0ZT1: MOV P3,#0FFH ;对P3口设置为高电平,用于输入 JB P3.6,$ ;循环判断开始按钮K1是否按下? ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.6,ZT1 ;如果是干扰就返回 JNB P3.6,$ ;等待按键松开 LCALL

14、 DPLOP1B1: JB P3.7,LOOP1 ACALL DELAY10 ;延时10毫秒消抖 JB P3.7,B1 JNB P3.7,$ ;等待按键松开 AJMP OVERLOOP1: DJNZ R3,TIME1 ;2毫秒循环执行250次,时间约0.5秒 DJNZ R2,JS1 ;循环执行2次,时间为1秒钟 INC TEMP ;满一秒钟对时间加1 MOV A,TEMP CLR C SUBB A,#60 JNZ GOON1 ;判断TEMP的数值是否为60?不为60循环 ACALL OVER RETGN2: MOV A,#14H ;设定倒计时的时间20S MOV TEMP,A ;数码管显示倒计

15、时时间的程序 ;初始化 MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于输入 MOV P0,#14H ;使显示时间为设定的倒计时时间GOON2: MOV R2,#2JS2: MOV R3,#250TIME2: MOV A,TEMP ;将TEMP中的十六进制数转换成10进制 MOV B,#10 ;10进制/10=10进制 DIV AB MOV B_BIT,A ;十位在A MOV A_BIT,B ;个位在B MOV DPTR,#NUMTAB ;指定查表启始地址DPLOP2: MOV A,A_BIT ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 MOV P0,A ;送出

16、个位的7段代码 CLR P2.5 ;开个位显示 ACALL DELY1 ;显示1毫秒 SETB P2.5 ;关闭个位显示,防止鬼影 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.6 ;开十位显示 ACALL DELY1 ;显示1毫秒 SETB P2.6 ;关闭十位显示,防止鬼影 C2: ;插入判断按键输入的程序段 JB P3.6,B2 ACALL DELAY10 ;延时10毫秒消抖 JB P3.6,C2 JNB P3.6,$ ;等待按键松开ZT2: MOV P3,#0FFH ;对P3口,设置为高电平,

17、用于按键输入 JB P3.6,$ ;循环判断开始按钮K1是否按下? ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.6,ZT2 ;如果是干扰就返回 JNB P3.6,$ ;等待按键松开B2: JB P3.7,LOOP2 ACALL DELAY10 ;延时10毫秒消抖 JB P3.7,B1 JNB P3.7,$ ;等待按键松开 AJMP OVERLOOP2: DJNZ R3,TIME2 ;2毫秒循环执行250次,时间约0.5秒 DJNZ R2,JS2 ;循环执行2次,时间为1秒钟 DEC TEMP ;满一秒钟对时间减1 MOV A,TEMP JNZ GOON2 ;判断TEMP的数

18、值是否为0?不为0循环 ACALL OVER RET ;结束定时OVER: AJMP START ;退到开机初始化状态 DELY1: ;1毫秒延时子程序 MOV R4,#2D1: MOV R5,#248 DJNZ R5,$ DJNZ R4,D1 RETDELAY10: ;10毫秒延时子程序 MOV R4,#20D2: MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 RET NUMTAB: ;实验板上数码管09各数字的显示代码 DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10HDPLOP1: MOV A,A_BIT ;取个位数 MOVC A,A

19、+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.5 ;开个位显示 ACALL DELY1 ;显示1毫秒 SETB P2.5 ;关闭个位显示,防止鬼影 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.6 ;开十位显示 ACALL DELY1 ;显示1毫秒 SETB P2.6 ;关闭十位显示,防止鬼影 RET END3.4 数码管显示程序 由于LED为共阴极接法,并有反相驱动,字型表TAB中有效的字型码为:表3-1 LED显示段码字型共阳极段共阴极段字型共阳极段共阴极

20、段0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H程序如下:/2个2位数码管分别实现分、秒显示程序#include /包括一个52标准内核的头文件#define uchar unsigned char /定义一下方便使用#define uint unsigned int#define ulong unsigned longuchar code dx5163 _at_ 0x003b; /这是为

21、了仿真设置的/共11个字模:依次为0,1,2,3,4,5,6,7,8,9, uchar code numcode11=0x84,0xee,0x45,0x46,0x2e,0x16,0x14,0xce,0x04,0x0e,0xff;/定义分,秒uchar min=0; /分uchar miao=0; /秒uchar fm=0; /记数uchar dis4; /4位显示缓存void main(void) /主程序 RCAP2H =0xf6; /1/400秒中断一次 RCAP2L =0x3c; TR2=1; /启动定时器 ET2=1; /打开定时器2中断 PT2=1; /定时器2优先 EA=1; /打开总中断 while(1) /程序循环 /显示数据 dis3=min/10; /显示分 dis2=min%10; dis1=miao/10; /显示秒 dis0=miao%10; /定时器2中断,兼LED扫描和时钟timer2() interrupt 5 uchar code p1line4=0xfe,0xfd,0xf7,0xfb; static uchar t; TF2=0; t+; /时间计时 if(t=4) t=0; fm+; /分秒加1 if(fm=100) fm=0; miao+; /秒加1 if(miao=60) miao=0; min+;

温馨提示

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

评论

0/150

提交评论