首页 基于单片机的数字秒表设计

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

举报
开通vip

基于单片机的数字秒表设计摘要 基于单片机的数字秒表设计 摘要 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的数字电子秒表设计。本设计主要特点是计时精度达到0.01s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。 本设计的数字电子秒表系统采用80C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现六位LED显示,显示时间为0~59:59:99秒,计时精度为0.01秒...

基于单片机的数字秒表设计
摘要 基于单片机的数字秒表设计 摘要 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的数字电子秒表设计。本设计主要特点是计时精度达到0.01s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。 本设计的数字电子秒表系统采用80C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现六位LED显示,显示时间为0~59:59:99秒,计时精度为0.01秒,能正确地进行计时,同时能记录一次时间,并在下一次计时后对上一次计时时间进行查询。其中软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键字:单片机;数字电子秒表;仿真 目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc266087232" 1.5 时钟电路的选择与设计 12 HYPERLINK \l "_Toc266087233" 1.6 复位电路的选择与设计 14 HYPERLINK \l "_Toc266087234" 1.7 系统总电路的设计 16 HYPERLINK \l "_Toc266087235" 2 软件设计 17 HYPERLINK \l "_Toc266087236" 2.1 程序设计思想 18 HYPERLINK \l "_Toc266087237" 2.2 系统资源的分配 18 HYPERLINK \l "_Toc266087238" 2.3 主程序设计 18 HYPERLINK \l "_Toc266087239" 2.4 中断程序设计 20 HYPERLINK \l "_Toc266087241" 3.1 软件的仿真与调试 24 HYPERLINK \l "_Toc266087242" 3.2 硬件的安装与调试 24 HYPERLINK \l "_Toc266087243" 3.3 系统程序的烧录 25 HYPERLINK \l "_Toc266087244" 3.4 数字电子秒表的精度调试 26 HYPERLINK \l "_Toc266087245" 结 论 27 HYPERLINK \l "_Toc266087246" 参考文献 29 HYPERLINK \l "_Toc266087247" 附录A 程序 30 HYPERLINK \l "_Toc266087248" 附录B 电路原理图 35 绪 论 秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。 2004年8月28日15点15分,中国选手孟关良/杨文军在雅典奥运会男子500米划艇决赛中,以1分40秒278的成绩获得中国在雅典奥运会的第28金。这是中国皮划艇项目的第一枚奥运金牌,也是中国水上项目在历届奥运会上所获得的第一枚金牌。孟关良/杨文军的成绩比获得银牌的古巴选手只快了 0.072秒,以至于两人在夺冠之后还不敢相信。 在现在的体育竞技比赛中,随着运动员的水平不断提高,差距也在不断缩小。有些运动对时间精度的要求也越来越高,有时比赛冠亚军之间的差距只有几毫秒,因此就需要高精度的秒表来记录成绩。 本设计利用80C51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.5口作列扫描输出,P1.0、P3.2、P3.3、/PSEN分别接四个按钮开关,分别实现开始、暂停、清零和查看上次时间的功能。显示电路由五位共阴极数码管组成。 初始状态下计时器显示00:00:00,当按下开始键时,外部中断INT1向CPU发出中断请求,CPU转去执行外部中断1服务程序,即开启定时器T0。计时采用定时器T0中断完成,定时溢出中断周期为10ms,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对毫秒计数单元进行加一,达到10次就对百毫秒位进行加一,依次类推,直到59:59:99秒重新复位。在计时过程中,只要按下暂停键,外部中断INT0向CPU发出中断请求,CPU转去执行外部中断0服务程序,即关闭定时器T0,调用显示程序,实现暂停功能,同时将此次计时时间存入寄存区。然后对P3.2进行扫描。当P3.2按下时就跳转回主程序。等待下一次计时开始。 在按下暂停键时,将此时的计时时间存入中间缓存区,当再次按下开始键时,则讲中间缓存区的数据转入最终缓存区。秒表停止后对查看键/PSEN进行扫描,/PSEN按下为低电平时,调用最终缓存区的数据进行显示,即显示上一次计时成 绩。当/PSEN位高电平时,调用显示缓存区的数据进行显示,即显示当此计时的成绩。根据以上设计思路从而实现数字电子秒表的计时和查看上一次计时时间的功能。 本文主要内容包括三部分:第一部分介绍硬件部分设计思路及 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ;第二部分介绍了软件部分的设计思路和设计;最后一部分则是整个系统的安装与调试过程。 1 硬件设计 1.1 总体方案的设计 数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。 设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。主控制器采用单片机80C51,显示电路采用共阴极LED数码管显示计时时间。 本设计利用80C51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.5口作列扫描输出,P1.0、P3.2、P3.3、/PSEN口接四个按钮开关,分别实现开始、暂停、清零和查看上次计时时间功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。硬件电路图按照图1.1进行设计。 图1.1 数字秒表硬件电路基本原理图 根据要求知道秒表设计主要实现的功能是计时和显示。本设计中,数码管显示的数据存放在内存单元79H-7EH中。其中79H存放十毫秒位数据,7AH存放百毫秒位数据,7BH存放秒位数据,7CH存放十秒位数据,7DH存放分位数据,7EH存放十分位数据。由于采用软件动态扫描实现数据显示功能,显示数据的对应段码存放在ROM表中。显示时,先取出79H-7EH某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。 最终缓存区则设置为59H-5EH,数据存放规则和79H-7EH一样。分别对应存放十毫秒位至百秒位数据。与79H-7EH存储区不一样的是:59H-5EH存储的内容为数字秒表上一次计时显示的时间。而79H-7EH为当前计时时间存储区。 计时采用定时器T0中断完成,定时溢出中断周期为10ms,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对十毫秒计数单元进行加一,达到10次就对百毫秒位进行加一,依次类推,直到59:59:99秒重新复位。 再看按键的处理。这四个键可以采用中断的方法,也可以采用扫描的方法来识别。复位键和查看主要功能在于数值复位和查询上次计时时间,对于时间的要求不是很严格。而开始和停止键则是用于对时间的锁定,需要比较准确的控制。因此可以对复位和查看按键采取扫描的方式。而对开始和停止键采用外部中断的方式。 设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,显示电路和回零、启动、查看、停表电路等。主控制器采用单片机80C51,显示电路采用共阴极LED数码管显示计时时间,四个按键均采用触点式按键。 1.2 单片机的选择 本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了Intel公司的80C51。 单片机的外部结构 80C51单片机采用40引脚的双列直插封装方式。图1.2为引脚排列图, 40条引脚说明如下: 主电源引脚Vss和Vcc ① Vss接地 ② Vcc正常操作时为+5伏电源 外接晶振引脚XTAL1和XTAL2 ① XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。 ②XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源控制或与其它电源复用引脚RST/VPD,ALE/ , 和 /Vpp。 图1.2 8051单片机引脚图 ① RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。 ② ALE/ 正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲( 功能) ③ 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间, 在每个机器周期内两次有效。 同样可以驱动八LSTTL输入。 ④ /Vpp、 /Vpp为内部程序存储器和外部程序存储器选择端。当 /Vpp为高电平时,访问内部程序存储器,当 /Vpp为低电平时,则访问外部程序存储器。对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(Vpp)。 输入/输出引脚P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 ① P0口(P0.0 - P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。 ② P1口(P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。 ③ P2口(P2.0 - P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。 ④ P3口(P3.0 - P3.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。 80C51具有以下 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 功能:8k字节Flash,256字节RAM,32 位I/O口线, 2个数据指针,两个16位定时器/计数器,一个全双工串行口,片内晶振及时钟电路。另外,80C51可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。CPU是单片机的核心部件。它由运算器和控制器等部件组成。 (1) 运算器 运算器的功能是进行算术运算和逻辑运算。可以对半字节(4位)、单字节等数据进行操作。例如能完成加、减、乘、除、加1、减1、BCD码十进制调整、比较等算术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存器。80C51运算器还包含有一个布尔处理器,用来处理位操作。 (2) 程序计数器PC 程序计数器PC用来存放即将要执行的指令地址,共16位,可对64K程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。 (3) 令寄存器 指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。 1.3 显示电路的选择与设计 对于数字显示电路,通常采用液晶显示或数码管显示。本设计的显示电路采用6位LED作为显示介质。 数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用五位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。 图1.3 显示电路基本原理图 动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。 数码显示管分为共阳数码管和共阴数码管两种。 共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,如图1.4(b),通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,如图(c), 通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 图1.4 (a)数码管引脚图 (b)共阳极内部结构图 (c)共阴极内部结构图 本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、h引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示0~9的编码见表1.1。 表1.1 共阴极数码显示管字型代码 字型 共阴极代码 字型 共阴极代码 0 3FH 5 6DH 1 06H 6 7DH 2 5BH 7 07H 3 4FH 8 7FH 4 66H 9 6FH 动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。如图1.3所示为本系统的6位LED动态显示器接口电路。图中,5个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而6个数码管的位控制端则和NPN型三极管的集电极相连接。单片机的P2.0~P2.5口则分别对应数码显示管的最低位到最高位,P2.0~P2.5口分别和六个NPN型三极管的基极相连,做三极管导通的控制端,而NPN型三极管选用9013型三极管。根据9013的资料显示:其耐压值为40V,最大功率为0.65W,最大电流为0.5A,电气性能完全满足本设计的要求。另外数码管显示是采用动态显示,所以对三极管的开关频率有一定的要求。根据电子秒表的设计计算可知动态显示的频率最高为3KHz,而9013的导通频率为150MHz,完全能满足本设计的要求,所以最终选取9013三极管最为位控制开关。 由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。另外一位共阴数码管的驱动电流一般为20mA左右,如果电流太大容易造成数码管损坏,所以也需要根据电源的电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大,造成单片机IO的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压为5V,当上拉电阻选用220Ω电阻时灌电流为22mA。不会损坏单片机的I/O口,同时也可以为数码显示管起到限制电流的保护作用。 1.4 按键电路的选择与设计 本设计中有四个按键,分别实现开始、暂停、复位和查看功能。这四个键可以采用中断的方法,也可以采用查询的方法来识别。对于复位键和查看键,主要功能在于数值复位和对上次计时时间的查看,对于时间的要求不是很严格,而开始和暂停键主要用于时间的锁定,需要比较准确的控制。因此可以考虑,对复位键和查看键采用查询的方式,而对于开始和暂停键采用外部中断。四个按键均采用低电平有效,具体电路连接图如图1.5所示。 当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行限流,本设计中选取阻值为2kΩ 的电阻作为上拉电阻,根据计算可知此时的灌电流为2.5mA,查看8051的资料得知次电流在安全范围内,符合安全设计要求。 图1.5 按键电路 按键电路中由于采用了外部中断,所以需要用到P3口的第二功能。P3口引脚的第二功能如表1.2 表1.2 P3口引脚第二功能表 P3口引脚 特殊功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0请求输入端) P3.3 INT1(外部中断1请求输入端) P3.4 T0(定时器/计数器0计数脉冲输入端) P3.5 T1(定时器/计数器1计数脉冲输入端) P3.6 WR(片外数据存储器写选通信号输出端) P3.7 RD(片内数据存储器读选通信号输出端) 1.5 时钟电路的选择与设计 单片机的时钟信号用来提供单片机内各种微操作的时间基准,8051片内设有一个由反向放大器所构成的振荡电路,XTAL1和 XTAL2分别为振荡电路的输入和输出端,8051单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。 时钟发生器把振荡频率两分频,产生一个两相时钟信号P1和P2供单片机使用。P1在每一个状态S的前半部分有效,P2在每个状态的后半部分有效。本设计采用的内部振荡方式,内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。本设计系统的时钟电路如图1.4所示。只要按照图1.6所示电路进行设计连接就能使系统可靠起振并能稳定运行。图中,电容器C1 、C2起稳定振荡频率、快速起振的作用,电容值一般为5~33pF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本设计中采用大小为30pF的电容和12MHz的晶振。 图1.6 内部振荡电路 (4) 时序 80C51典型的指令周期(执行一条指令的时间称为指令周期)为一个机器周期,一个机器周期由六个状态(十二振荡周期)组成。每个状态又被分成两个时相P1和P2。所以,一个机器周期可以依次表示为S1P1,S1P2……,S6P1,S6P2。通常算术逻辑操作在P1时相进行,而内部寄存器传送在P2时相进行。 图1.7 8051 时序 图1.7给出了80C51单片机的取指和执行指令的定时关系。这些内部时钟信号不能从外部观察到,所用XTAL2振荡信号作参考。在图中可看到,低8位地址的锁存信号ALE在每个机器周期中两次有效:一次在S1P2与S2P1期间,另一次在S4P2与S5P1期间。 对于单周期指令,当操作码被送入指令寄存器时,便从S1P2开始执行指令。如果是双字节单机器周期指令,则在同一机器周期的S4期间读入第二个字节,若是单字节单机器周期指令,则在S4期间仍进行读,但所读的这个字节操作码被忽略,程序计数器也不加1,在S6P2结束时完成指令操作。图1.7的(a)和(b)给出了单字节单机器周期和双字节单机器周期指令的时序。 1.6 复位电路的选择与设计 当80C51单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。而本系统选用的是12MHz的晶振,因此一个机器周期为1μs,那么复位脉冲宽度最小应为2μs。在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量。 根据应用的要求,复位操作通常有两种基本形式:上电复位、手动复位。 上电复位要求接通电源后,自动实现复位操作。80C51单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时。 上述一系列的延时,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。典型复位电路如图1.8(a)所示,其中的阻容值是原始手册中提供的。 HYPERLINK "http://www.weeqoo.com/UploadFile/2007/10/19/200710191155249232.gif" \t "_blank" INCLUDEPICTURE "http://www.weeqoo.com/UploadFile/2007/10/19/200710191155249232.gif" \* MERGEFORMATINET 图1.8 上电复位延时电路 标准80C51不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此必须借助于外接阻容支路来增加延时环节,如图1.8(a)所示。其实,外接电阻R还是可以省略的,理由是一些CMOS单片机芯片内部存在一个现成的下拉电阻Rrst。例如,80C51系列的Rrst阻值约为50~200 kΩ;P89V51Rx2系列的Rrst阻值约为40~225 kΩ,如图1.9所示。因此,在图1.8(a)基础上,上电复位延时电路还可以精简为图1.8(b)所示的简化电路(其中电容C的容量也相应减小了)。 HYPERLINK "http://www.weeqoo.com/UploadFile/2007/10/19/200710191155243462.gif" \t "_blank" INCLUDEPICTURE "http://www.weeqoo.com/UploadFile/2007/10/19/200710191155243462.gif" \* MERGEFORMATINET 图1.9 复位引脚RST内部电路 在每次单片机断电之后,须使延时电容C上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C还没有充分放电的情况下,如果很快又加电,那么RC支路就失去了它应有的延迟功能。因此,在图1.8(a)的基础上添加一个放电二极管D,上电复位延时电路就变成了如图1.8(c)所示的改进电路。也就是说,只有RC支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在的危害。于是附加一个放电二极管D来大力缩短放电持续时间,以便消除隐患。二极管D只有在单片机断电的瞬间(即VCC趋近于0 V,可以看作VCC对地短路)正向导通,平时一直处于反偏截止状态。 手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。 本设计采用上电且开关复位电路,如图1.10所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=10~30μF,R=1K,本设计采用的电容值为22μF的电容和电阻为1K的电阻。 图1.10 单片机复位电路 1.7 系统总电路的设计 系统总电路由以上设计的显示电路,时钟电路,按键电路和复位电路组成,只要将单片机与以上各部分电路合理的连接就组成了系统总电路。系统总电路图附录B所示。 80C51单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作。 80C51单片机提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。 复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有效。 按键电路与单片机的端口连接可以由用户自己设定,本设计中软件复位键和查看键分别接单片机的P1.0和/PSEN,均设为低电平有效。而另外的开始键和暂停键两键使用了外部中断,所以需要连接到单片机的特殊接口P3.3和P3.2,这两个I/O口的第二功能分别为单片机的外部中断1端口和外部中断0端口。同样设置为位低电平有效。 显示电路由五位数码管组成,采用动态显示方式,因此有8位段控制端和6位位控制端,八位段控制接P0口,P0.0~P0.7分别控制数码显示管的a、b、c、d、e、f、g、dp显示,8051的P0口没有集成上拉电阻,高电平的驱动能力很弱,所以需要接上拉电阻来提高P0的高电平驱动能力。六位位控制则由低位到高位分别接到P2.0~P2.6口,NPN三极管9013做为位控制端的开关,当P2.0~P2.5端口任意一个端口为高电平时,与其相对应的三极管就导通,对应的数码管导通显示。 通过以上设计已经将各部分电路与单片机有机的结合到一起,硬件部分的设计以大功告成,剩下的部分就是对单片机的编程,使单片机按程序运行,实现数字电子秒表的全部功能。 2 软件设计 2.1 程序设计思想 本设计采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。 汇编语言的特点: (1).面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。 (2).保持了机器语言的优点,具有直接和简捷的特点。 (3).可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。 (4).目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 (5).经常与高级语言配合使用,应用十分广泛。 在程序设计过程中,为了有效地完成任务,把所要完成的任务精心的分割成若干个相互独立但相互又仍可有联系的任务模块,这些任务模块使得任务变得相对单纯,对外的数据交换相对简单,容易编写,容易检测,容易阅读和维护。这种程序设计思想称为模块化程序设计思想。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。程序的主要模块有:主程序、显示程序、定时溢出中断服务程序、外部中断服务程序。 2.2 系统资源的分配 本设计系统所用到的单片机端口数比较多,所以在这里将对数字电子秒表的硬件资源的大概分配加以说明。片内RAM的分配、各功能键的定义以及各端口的分配安排如表2.1所示。 表2.1 端口的分配安排表 名称 功能描述 初始化值 79H-7DH 1ms-10s位显示寄存区 00H 69H-6DH 1ms-10s位中间寄存区 00H 59H-5DH 1ms-10s位最终寄存区 00H R1- R5 1ms-10s位溢出计数区 定时器T0 控制秒表的最小精度 E018H 外部中断INT0 停止中断信号入口 外部中断INT1 开始中断信号入口 2.3 主程序设计 本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。 系统(上电)复位后,进入主程序,主程序流程图如图2.1。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显示一次就对P1.0和/PSEN进行一次扫描,查询复位键P1.0是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。当没有按下复位键时,程序则扫描/PSEN是否按下,当/PSEN没有按下则返回显示程,不断地调用显示缓存区的数据进行显示。使用户能清楚的看到当前电子秒表所记录的时间。当查询到/PSEN按下后则跳转到另外一段显示程序并调用最红缓存区的数据进行显示,此时显示的时间即为上一次计时的时间。与此同时,在/PSEN 按下后单片机执行显示程序的同时也在对/PSEN进行扫描,当/PSEN断开后立即跳转回之前的显示程序显示当前的计时时间。 在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。 图2.1 主程序流程图 比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。,合理分配中断对本设计的实现是至关重要的。 另外由于数字式电子秒表的最小精度位10ms,属于高精度电子秒表。定时器T0的定时周期也为10ms,为了使电子秒表暂停键按下后CPU能马上去响应中断程序,必须将暂停的外部中断级别高于定时计数器的中断级别。避免出现CPU执行完定时溢出中断程序后再响应外部中断程序,影响计时精度。 80C51的自然优先级顺序排列如下: 中断源 最高 外部中断0 定时/计数器0溢出中断 外部中断1 定时/计数器1溢出中断 串行口中断 最低 数字式秒表中的两个按键采用了中断实现功能。开始采用外部中断INT0,暂停采用外部中断INT1。另外程序中还用到了定时/计数器0溢出中断进行计时。依据设计要求,暂停的外部中断INT1中断级别最高,计时的定时/计数器0溢出中断次之,开始的外部中断INT0级别最低。 (1)外部中断0服务程序: 外部中断0服务程序结合外部P3.2停止键实现数字电子秒表的停止功能,具体流程图如图2.2。 当按下P3.2停止键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,停止定时器。另外将当前显示的时间进行一次存储,存进中间寄存区。 2.4 中断程序设计 现在方案中采用了三个中断,外部中断INT0,INT1和定时中断T0。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级区。 图2.2 外部中断0服务程序流程图 (2)外部中断1服务程序 外部中断1服务程序结合外部P3.3停止键实现数字电子秒表的启动功能,具体流程图如图2.2。 当按下P3.3启动键按下向CPU发出外部中断请求,CPU转向外部中断1服务程序执行,启动定时器。另外进行二次存储,将之前进行一次存储的数码管显示数据存入最终缓存区,避免下次计时暂停时一次存储将数据掩盖,从而起到保 护数据的作用。二次存储后就中断返回。 图2.3 外部中断1服务程序流程图 (3)定时中断服务程序 当定时/计数器T0器溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行,具体流程如图2.4。定时中断程序是一个进位程序,主要负责对10ms的加一。10ms位没有满十就跳出中断程序,返回显示程序。当10ms位满十后就对10ms位清零,向100ms位加一,同时检测100ms位是否满十,没有满十就跳出中断程序,返回显示程序。如果满十就向1s位加一,依次类推,最终达到59:59:99秒后归零,从零开始再次计时。 定时/计数器T0工作在方式1下,TH0和TL0组成一个16位的二进制数计数器。单片机开机或复位时,它的值为00H,当T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0000000000000000开始计数到1111111111111111,再计数一个脉冲时TH0和TL0组成的16位计数器将会从16个1变成16个0,并产生溢出,溢出位将被送到TF0标志位,通过溢出标志产生溢出中断请求。显然,T0定时器在方式1下引起一次中断所允许计数的最多脉冲个数为216 个。 但如果定时计数器如果每次都固定从0开始计数,到计满后,再向CPU发出溢出中断请求信号那是毫无意义的。为了使定时计数器在规定的计数脉冲个数字之后(此时应小于216 个脉冲),向CPU发出溢出中断请求,可采取预先向TH0和TL0中放入一个初值X的方法,使计数器以X值为起始值开始计数,即X+1,X+2,……直至计数器计满,从1全变为0。设需要计数的脉冲个数为Y,则有: X+Y=216 在定时方式下:定时时间间隔位t=(216—X)*振荡周期*12 现在本设计要求10ms实现一次中断,选择定时器T0工作在方式1。所以需要根据以上条件计算出T0的初值。 设T0的初值为X,则 (216—X)*12/12*106 =1*10-3 转换位十六进制数X=55536=1101100011110000B 即TH0=0D8H(取X的高8位) TL0=0F0H(取X的低8位) 由于定时10ms只是一个理想化的时间,其中并没有考虑到中断后单片机执行语句所花的时间。虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒中要溢出中断100次,积累起来误差就能达到十毫秒级,这对于精度到达十毫秒级的数字电子秒表来说是很大的误差。所以要在后期编程时还要将单片机读程序的时间考虑进去,在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字电子秒表的误差达到最小。 图2.4 定时中断服务程序 3 数字电子秒表的安装与调试 3.1 软件的仿真与调试 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的主要特点总结后有以下四点:①实现了单片机仿真和SPICE电路仿真相结合的功能。②支持目前主流单片机系统的仿真。③提供了软件调试功能,并可以与WAVE联合仿真调试。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。在电子领域中也起到了很大的作用,它的出现仿真不需要先焊接电路,可以先仿真调试通过后在焊电路,节省了不少在硬件调试上所花的时间。 Proteus ISIS的工作界面是一种标准的Windows界面。它包括标题栏、主菜单、状态栏、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等十几个工具,方便了使用者的使用。 首先打开已经画好的proteus DSN文件,双击图中的AT89S52芯片,就弹出一个窗口,在Program File项中通过路径选择在WAVE中生成的HEX文件,双击选中后确定,这样仿真图中的AT89S52芯片就已经读取了本设计中的HEX文件。单击“三角形按钮”进行仿真。通过对仿真结果的观察来对程序进行修改,最终使程序到达设计要求。 3.2 硬件的安装与调试 按照之前设计好的数字电子秒表原理图,详细计算系统中各个元件的参数,选择相应器件,制作实际电路板。由于考虑到万能板大小的问题及元件之间连线的方便,在焊接元器件前必须考虑元件的布局然后进行实际操作。 制作好的电路板可以用万用表(200欧姆档)的红、黑表笔测试电路板的每条走线,当其电阻非常小时,证明走线没有断开,当其电阻很大时,证明该条走线断了,应该重新走线,使电路板在电气上得到正确地连接。选用万用表的20K欧姆档,检测电路中是否存在短路。因为系统采用的是共阴极数码管作为显示电路,必须确保数码管的公共端接的是低电平。 (1)晶振电路的测试 在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。 (2)复位电路的测试 复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可能无法正常工作。单片机正常工作时,RST复位引脚应为0V,按下复位按键时,复位引脚为高电平5V左右。 (3)显示电路的测试 显示电路是数字电子秒表正常运行最直观的观察窗口,我们可以通过观察显示电路的显示结果观察系统能否正常运行。当显示电路按照电路图焊接好后,用万用表的测二极管档位,将黑表笔接共阴数码管的公共段,然后将红表笔接数码管的各段,当数码管的段能正常显示,说明各点焊接正常。 3.3 系统程序的烧录 在软件调试中,使用当今流行的功能强大且普遍的WAVE 6000软件\进行软件编译与调试,使用Microcontroller ISP Software及其配套的单片机对程序进行烧录。 3.1Debiceselection 图3.2 Atmel microcontroller 软件的烧录:第一步:安装并运行Microcontroller ISP Software软件;第二步:点击Options栏的select device选项;这时出现一个对话窗口,如图3.1所示,按图选择后,点击OK按键,如出现图3.2所示窗口,则说明电脑与开发板没连接好或单片机没插好等,需重装检查硬件连接,如果没有出现则说明初始化成功。 第三步:点击File栏的Load Buffer选项打开已经编译好的HEX文件。点击载入,出现如图3.4.a对话框点确定后,再点击图3.3中的“A”字图标,出现如图3.4.b对话框,完成后,按软件默认选项,点击“OK”-“OK”―“OK”烧录完成;否则重新检查硬件连接后再重新烧录。 图3.4.a Atmel 图3.4.b auto programming 3.4 数字电子秒表的精度调试 将数字电子秒表的程序编译后烧录进单片机,并将单片机插入系统并保证其能正常运行。在进行精度测试之前的编程过程中,我们知道了单片机在进行定时中断时需要执行语句,而执行这些语句是需要占用CPU时间的,从而影响单片机定时的精确性,最终会导致数字电子秒表的计时误差,为了减小这种计时误差,我们之前在编程时已经将单片机一秒钟内执行程序的时间计算在内,并将定时器的初值做出了适当调整。争取最大限度的减小数字电子秒表的计时误差。 在进行秒表精度调试时,我们让本设计的单片机秒表和电子表同时计时,为了能尽可能的观察出是否有误差,我们将计时时间定为10分钟,当计时时间到后观察两个计时秒表是否同时到达。如果不是同时到达就说明有一定的误差,需要在程序中对定时器进行微调。如果两表是同时到达则说明秒表的设计满足要求。 结 论 本设计的数字电子秒表是由80C51单片机、共阴数码显示管、控制按键、三极管等器件构成的,设有六位计时显示,开始、暂停、复位按键以及一个系统整机复位按钮。计时精度能到达10ms,设计精简,使用简单易懂。系统设计合理,线路简单、功能先进,性能稳定,程序精简。并给出了详细的电路设计方法。本系统是以单片机为核心,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。所以采用汇编语言来进行软件设计,利用汇编语言面向机器并能较好的发挥机器的特性,得到较高的程序,同时汇编语言目标代码简短,占用内存少,执行速度快,能提高秒表的精度。 通过本次设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及应用等课程知识,加深对各门课程及相互关系的理解,并成功使用了Wave、Protel 99se和Proteus三款电子软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。 同时,在设计的过程中,我也发现了本系统的许多不足和可以改进的地方。但因时间紧迫等原因没能改进。本设计的数字电子秒表缺少对多次计时时间进行记录的功能。应给在单片机的内部存储区多设置一些存储空间,用来存储多次计时时间。并在程序中编入对多次计时时间的调用显示。虽然存在不足,但本设计的数字电子秒表仍具有它的实用性。 心得体会 两周的课程设计已经结束,虽然很辛苦,但给我带来了从未有过的体验与喜悦。在设计实践的过程中,我深深的体会到必须要有扎实的知识基础,要熟练地掌握课本上的知识,这样才能对试验中出现的问题进行分析解决。在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督,学会了如何更好的合作。 在设计电路中,完成电路图只是完成了设计的一小部分,更加困难的是对电路的验证和纠错,在这过程中我接触到了很多未接触过的检查方法和思想。在电路的仿真过程中出错的主要原因都主要是接线的错误所引起的。接线的时候一定要细心,不要接错,同时也要学会如何判别芯片的功能,要是芯片不具备要求的功能,或者,不匹配,即使接线再正确也出不来结果。对自己的设计要仔细考虑,是否可行。 这次课设是我们第一次使用仿真软件进行设计的,从这次的仿真中,我发现仿真和实际的电路也有不少差别,仿真的电路图放在实际中不一定就可以用,因为仿真软件会帮你把一些细小部分自动完善,但实际连接的电路就不能按照预定目标实现,比如我们设计的显示电路在仿真软件中正常运行着,但实际连好后,却不能实现开机清零功能,最后我们在同学的帮助之下把电路进行了完善,才得到我们预期的电路。 我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。 所以我认为这次的课程设计意义很深,和其他2位同学的共同学习﹑配合﹑努力的过程也很愉快,另外还要感谢老师的耐心辅导。 很感谢学校和老师给我们安排了这次课程设计,让我真正感受到的是合作的重要,许多时候遇到难题时,是组员的讨论或老师指导中的一句半句话启发了我,就出现的让人欣喜的结果;理论知识同样很重要,有些问题都是由于基础知识掌握不好才出现的。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。 参考文献 [1] 郑毛祥.单片机应用基础.人民邮电出版社,2006.6:21-42 [2] 李邓化,彭书华,许晓飞.智能检测技术及仪表.科学出版社,2007:194-201 [3] 戴佳. 单片机C51语言应用程序设计. 电子工业出版社, 2006.7:168-169 [4] 朱民雄.计算机语言技术. 北京航空航天大学出版社,2002.1:103-105 [5] 李鸿. 单片机原理及应用. 湖南大学出版社. 2004:8:72-73 [6] 刘建清. 单片机技术. 国防工业出版社, 2006.8: 104-105 [7] 杨宁,胡学军.单片机与控制技术.北京航空航天大学出版社,2005-03:306-322 [8] 马忠梅等.单片机C语言应用程序设计.北京航空航天大学出版社,1997:201-211 [9] Kai E, Sawata S, Lkebukuro K et al. Detection of PCR product in solution using surface plasmon resonance .Analytical Chemistry, 1999.7.1 :796~800 [10] Verghese G C, Lang H, Casey L F. Analysis of instability in electrical machines .IEEE Trans on IA, 1986, 22 :853-864 . [11] Richard Blanchard, James Harden. Mosfets control more power in the same-sized package .Electronic Design, 1982, 12:107~114 附录A 程序 ORG 0000H LJMP MAIN ORG 0003H ;外部中断INT0中断入口 LJMP TINGZHI ORG 000BH ;定时器T0中断入口 LJMP UPDATE ORG 0013H ; 外部中断INT1中断入口 LJMP KAISHI MAIN: MOV DPTR, #TAB ;存入表头地址 MOV TMOD, #01H ;置T0为方式1 MOV TH0, #0D8H ;赋定时器初值 MOV TL0, #0F0H MOV 79H, #00H ;显示缓存区清零 MOV 7AH, #00H MOV 7BH, #00H MOV 7CH, #00H MOV 7DH, #00H MOV 7EH, #00H MOV R0, #00H ;溢出计数区清零 MOV R1, #00H MOV R2, #00H MOV R3, #00H MOV R4, #00H MOV R5, #00H SETB EA ;CPU开中断 SETB EX0 ;开外部中断0 SETB EX1 ;开外部中断1 SETB IT0 ;外部中断0位边沿触发方式 SETB IT1 ;外部中断1位边沿触发方式 SETB ET0 ;定时器0允许位 XIAN: MOV A, 79H ;显示10ms位数字 MOVC A, @A+DPTR MOV P0, A SETB P2.0 LCALL DELAY CLR P2.0 MOV A, 7AH ;显示100ms位数字 MOVC A, @A+DPTR MOV P0, A SETB P2.1 LCALL DELAY CLR P2.1 MOV A, 7BH ;显示1s位数字 MOVC A, @A+DPTR MOV P0, A SETB P2.2 LCALL DELAY CLR P2.2 MOV A, 7CH ;显示10s位数字 MOVC A, @A+DPTR MOV P0, A SETB P2.3 LCALL DELAY CLR P2.3 MOV A, 7DH ;显示1min位数字 MOVC A, @A+DPTR MOV P0, A SETB P2.4 LCALL DELAY CLR P2.4 MOV A, 7EH MOVC A, @A+DPTR MOV P0, A SETB P2.5 LCALL DELAY CLR P2.5 MOV P0, #80H ;显示小数点 SETB P2.2 LCALL DELAY CLR P2.2 MOV P0, #80H SETB P2.4 LCALL DELAY CLR P2.4 JNB P1.1, AA ;扫描复位键是否按下 LJMP XIAN ;返回显示程序,重新进行显示 AA: LJMP MAIN KAISHI: SETB TR0 ;启动定时器T0 RETI TINGZHI: CLR TR0 ;停止定时器T0 RETI UPDATE: MOV TH0, #0D8H ;重赋定时器初值 MOV TL0, #0F0H MOV A, 79H ADD A, #01H MOV 79H, A MOV R0, A C
本文档为【基于单片机的数字秒表设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_770942
暂无简介~
格式:doc
大小:708KB
软件:Word
页数:34
分类:
上传时间:2011-07-19
浏览量:325