《基于单片机的多功能秒表的课程设计(17页).doc》由会员分享,可在线阅读,更多相关《基于单片机的多功能秒表的课程设计(17页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的多功能秒表的课程设计-第 11 页郑州科技学院单片机课程设计题 目 基于单片机的 多功能秒表 学生姓名 专业班级 学 号 院 (系) 指导教师 完成时间 2015 年 1 月 16 日 目 录1 设计总体方案11.1 设计要求与目的11.2 设计思路11.3工作原理21.4 功能说明22 主要元器件介绍32.1 AT89C51单片机32.2 四位共阴数码管53 系统硬件设计63.1 电源电路63.2 时钟电路63.3 复位电路73.4 显示电路73.5 键盘电路84 软件设计95 系统调试及结果分析116 总结12参考文献13附录1:总体电路原理图14附录2:元器件清单15附录3
2、:实物图16附录4:源程序171 设计总体方案1.1 设计要求与目的 设计一个单片机控制的多功能秒表系统,利用单片机的定时器/计时器定时和计数的原理,结合显示电路、用四位共阴极LED数码管以及按键来设计秒表计时器,实现暂停与清零功能,并多次计数。 在设计系统前,我们主要考虑以下一些原则:节约元器件,尽量降低系统实现成本;硬件电路尽量简单,使得硬件实现、问题检查、软件编程以及系统调试的难度都降低;能在软件上实现,使芯片利用率尽可能高;软件设计方案要优化,使得做成实物尽可能简单,方便仿真与检测;设计方案要和当前的试验平台相应;充分利用各种资源,尽量采用成熟与经典的电路。1.2 设计思路因为秒表的设
3、计相对较为简单,因此在软件设计中我们一般采用模块化程序设计的方法。模块是一个具有独立功能的程序,可以单独设计、调试与管理,模块可以分为功能模块和控制模块两类。我们通过模块化程序设计可按适当的原则把一个情况复杂、规模较大的程序划分为一个个较小的、功能相关而又相对独立的模块。根据电子秒表的设计要求,主要设计一个计数系统、译码驱动、数码显示系统、控制系统。其主要核心技术在于产生秒表信号的计数脉冲与计数器之间的级联。1.3工作原理 本系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软、
4、硬件有机地结合起来。其中软件系统采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,延时程序等,并调试运行,硬件系统利用proteus强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。1.4 功能说明 开始按钮是用来开始进行计数的。停止按键用来暂停程序的运行,当按下暂停键时,程序停留在原地,等待再次按下暂停键,再次按下暂停键后,程序继续运行。计数按钮用来记录数据,每按下一次计数按钮,程序自动记录一个数据,并存放到指定内存单元中。复位按钮是用来对程序复位,每当程序出现死循环的时候,按下复位键即可跳出死循环,回到程序的开始。这些功能分别用开始/暂停键、记录键、
5、上翻键、下翻键以及复位键来实现。还有一个是清零键,用于对当前数码管的计数进行清零,但是对芯片内存单元保存的记录并不产生影响,这点事清零键与复位键的区别。2 主要元器件介绍2.1 AT89C51单片机AT89C51单片机是低电压、高性能CMOS 8位微处理器,是一种带2k字节闪存可编程可擦除只读存储器。单片机的可擦除只读存储器可以反复擦除1000次,含128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个全双工串行通信口,片内振荡器及时钟电路。空闲时停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有
6、部件工作直到下一个硬件复位。引脚图见图2-1所示:图2-1 AT89C51引脚图VCC:供电电压。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。 P3.0 RXD(串行输入口) P3
7、.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当
8、/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.2 四位共阴数码管共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。从左下角开始逆时针一圈分别是1至12个引脚,12、9、8、6为数码管的公共端,a、b、c、d、e、f、g、dP分别为数码管的段引脚,这些段引脚分别对应11、7
9、、4、2、1、10、5、3这些位置, A1、A2、A3、A4分别表示数码管的四个位。 图2-2 四位共阴数码管3 系统硬件设计 本系统中,硬件电路主要有电源电路,时钟电路,复位电路,显示电路,以及一些按键电路等。3.1 电源电路 电源电路是指提供给用电设备电力供应的电源部分的电路设计、使用的电路形式和特点。电源有交流电源也有直流电源。 电源电路是系统最基本的部分,任何电路都离不开电源部分,由于三端集成稳压器件所组成的稳压电源线路简单、性能稳定、工作可靠、调整方便,已逐渐取代分立元件,在生产中被广泛采用。3.2 时钟电路 MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和
10、XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。这里,我们选用51单片机12MHZ的内部振荡方式,电容器C1、C2起稳定振荡频率、快速起振的作用,C1和C2可在20-100PF之间取,这里取33P,接线时要使晶体振荡器X1尽可能接近单片机。电路见图3-1所示: 图3-1 时钟电路3.3 复位电路 采用上电和和按键复位电路。上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能使单片机复位,而且还能使单片机的外围芯片也同时
11、复位。当程序出现错误时,可以随时使电路复位。电路见图3-2所示:图3-2 复位电路3.4 显示电路 我们采用的是数码管显示电路。在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。在设计中,我们采用LED动态显示,用P0口驱动显示。由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。电路见图3-3所示:图 3-3 显示电路3.5 键盘电路 通过1/0口连接,将每个按钮的一端接到单片机的I/O口,另一端接地,这是最简单的办法。如图3-4所示是实验板上按钮的接法,其功能很简单,五个键定
12、义如下:按键1:开始/暂停计时按键2:记录时刻按键3:上翻记录时刻按键4:下翻记录时刻按键5:清零当前记录时刻图3-4 键盘电路4 软件设计 在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。 各程序模块都要完成一个明确的任务,实现某个具体的功能,如:加计数、减计数、延时、快加、快减,计数和显示等,在具体需要时调用相应的模块即可,设计流程框图见图4-1所示:开始初始化化P1.0=0?P1.1=0?P1.2=0?P1.3=0?P1.4=0?停止
13、下翻上翻够8个个?N 记录NNNNNY 清零图4-1 设计流程框图5 系统调试及结果分析 因为整个系统都是数字电路,因此可以用仿真软件来对其进行调试。本次实际的电子秒表系统是用于测量较短而且较精准的时间,它具体有以下一些功能: (1)整个系统由六个小开关控制。 (2)系统在用之前能清零,即电子秒表开始计时之前,其他时间显示零。 (3)若不需要计时或需要中途暂停计时,则秒表能及时停止计时,但能保留停止计时之前所计的时间。 用PROTEUS将编译生成的秒表.HEX 文件下到单片机中,点击运行按相应的操作键即可看到下图的效果: 图5-1 仿真结果经proteus软件仿真后,系统运行良好,结果正确。
14、6总结经过一个星期的课程设计,过程有曲折也有顺利。在此期间我也失落过,也曾一度热情高涨。在老师的指导下,我们顺利完成了课程设计的实物设计。让我学到了以下几点: 1将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻,对程序的编译过程了解透彻。 2本次课程设计以合作设计为主,因此培养了学习的积极性,让我能够配合同伴去分析问题、发现问题、解决问题,更增强与老师同学交流沟通和合作完成任务的能力。 3由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEUS等的基本知识。程序是用汇编语言来编写的,这次课程设计让我在编程能力方面得到了提高。4由于水平有限,实验程序运行有一定的
15、限制,以后会加强改进。 总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,还希望老师能够多多指导,促进我不断的进步。参考文献1 余发山.单片机原理及应用技术.中国矿业大学出版社,2003.49772 杨凌霄.微型计算机原理及应用.中国矿业大学出版社,2004. 3 李群芳.单片机原理、接口及应用.清华大学出版社,2005. 4 陈忠平.单片机原理及接口.清华大学出版社,2007.125131 5 刘同法.单片机基础与最小系统实践.北京航空航天大学出版社,2007.6 王东峰等
16、.单片机C语言应用100例M.电子工业出版社,2009. 7 陈海宴.51单片机原理及应用M.北京航空航天大学出版社,2010. 附录1:总体电路原理图附录2:元器件清单序号名称型号规格数量1单片机AT89C5112数码管7SEG-MPX4-CC13电阻20011K580016电容22uF17电容33pF28排阻PESPACK-819晶振XTAL18110按键开关611导线若干附录3:实物图附录4:源程序(1)停止子程序 按键后,使秒表停止,即关闭定时器0,1,程序如下: STOP: CLR TR0 CLR TR1;关闭定时器0,1 ACALL DISP;显示 (2)暂停记录子程序 按键结束后
17、,通过条件转移指令判断是否存够4个数,若存够则停止,否则继续。 JILU : MOV A,20H MOV R1, A INC R1 DJNZ 50H, HERE;是否够四个数? MOV R1, #71H MOV 50H, #04H MOV 51H, #04H SJMP STOP;够4个数停止 (3)加1子程序 此程序只为简单的加1,并判断是否到100?到则从0开始,否则继续。 JIA1: MOV A,20H CLR C INC A CJNE A, #100, GO1;是否加到100? MOV 20H, #00H RET GO1: MOV 20H, A;将个位十位分开显示 MOV B, #0AH
18、 DIV AB MOV 31H, A MOV 30H, B RET (4)显示子程序,采用动态显示 DISP: MOV R0,#30H MOV R3, #0FEH MOV A, R3 PLAY: MOV P2, A MOV A,R0 MOV DPTR, #DSEG1 MOVC A,A+DPTR MOV P0, A LCALL DL1 MOV P2, #0FFH MOV A, R3 RL A JNB ACC.2, LD1 INC R0 MOV R3, A LJMP PLAY LD1: RET DL1: MOV R7, #05H DL: MOV R6, #0FFH DL6: DJNZ R6, $ DJNZ R7, DL RET (5)延时子程序 例如延时10ms程序: DELAY10:MOV R4,#14H DL00: MOV R5, #0FFH DL11: DJNZ R5, DL11 DJNZ R4, DL00 RET (6)按键消抖程序 延时10ms再次判断该位的状态,若仍是0则说明该键被按下,弹起后去执行该按键功能;若为1,则说明是抖动则继续向下判断。 L1: JB P1.1,L2 P1.1=0,快减 ACALL DELAY10 JB P1.1, L2 JNB P1.1, $ LJMP KJIAN