单片机计时秒表的设计(正确无误)

更新时间:2024-07-06 15:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实习任务书 学生姓名 指导教师姓名 题目名称 一、设计的内容、目的和意义 本次实习主要完成具备基本功能的计时秒表的理论和实践设计。 计时秒表是重要的计时工具,广泛运用于各行各业中。作为一种测量工具,计时秒表相对其它一般的记时工具具有便捷、准确、可比性高等优点。不仅可以提高精确度,而且可以大大减轻操作人员的负担,降低错误率。因此计时秒表常常用于体育竞赛及各种其他要求有较精确时间的各领域中。人们在日常生活中,有很多时候也要精确地计算时间,但往往因为人为因素造成人们不愿意看到的误差。秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。通过实习加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。 通过此次实习能够将单片机软硬件结合起来,对程序进行编辑,校验。实习通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。 系部 职称 电气与信息工程学院 讲师 计时秒表的设计 专业 班级 是否外聘 自动化11-1班 □是??否 二、设计的技术指标要求 1、研究方法 (1)总体按照最优化的方法进行软件设计和硬件设计,走软件实现电路; (2)对软硬件进行模块划分,并对各单元电路结合EDA工具进行论证设计; (3)在查阅文献基础上展开设计,力求创新。 2、技术要求 (1)计时范围:小于1小时 (2)可显示出毫秒计时 (3)实现开始、停止、继续功能 摘 要 本次设计主要完成具备基本功能的计时秒表的理论和实践设计单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。本次设计内容为以AT89S52单片机为核心的秒表,它采用键盘输入,单片机技术控制。设计内容以硬件电路设计和软件设计两部分来设计。利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使他拥有正确的计时、暂停和继续并同时可以用数码管显示,在现实生中应用广泛。 关键词:单片机;计时秒表;定时器/计数器;中断 方案比较及选择 (方案数量可根据具体情况而定。方案论述要求简明扼要,突出设计原理。) 方案1:利用集成计数器芯片74HC161进行计数,外加晶振14M电路提供脉冲,计数器最大计数值是16个数,可以用多片计数器级联,计数值通过转换芯片的转换,再输送给数码管显示。 方案2:使用单片机AT89S52的定时器T0或者T1方式1十六位定时器,每隔一段时间产生一个中断,给定时器初值,通过程序设计使得软件计数器加1,将最后得到的软件计数器分离成各个段码,采用动态法使得数码管亮。 方案3:使用单片机AT89S52的定时器T0或者T1方式2定时器,每隔一段时间产生一个中断,通过程序设计使得软件计数器加1,将最后得到的软件计数器分离成各个段码,采用动态法使得数码管亮。 方案4:使用单片机AT89S52的定时器T2十六位自动重载方式定时器,每隔一段时间产生一个中断,通过程序设计使得软件计数器加1,将最后得到的软件计数器分离成各个段码,采用动态法使得数码管亮。 确定方案及理由: 方案1电路连接复杂,不能实现秒表的启停。方案2使用方式1不能实现定时器初值的自动重载,将影响表秒的精确度。方案3虽然实现了自动重载功能,但是其计数的最大值较小,必须进行多次中断,这也会减少秒表的精确度。选择方案4,因为其最大技术值是65535,并且实现了自动重载功能,能最大的增加精确度。 第1章 总体设计方案

1.1 总体设计方案

本次实习选用了价格较为低廉的AT89S52芯片来实现秒表的精确计数,并运用编程加以实现。

具体是通过单片机的T2定时器每隔一定的时间产生中断,通过程序设计使得软件计数器加1,将最后得到的软件计数器分离成各个段码,采用动态法使得数码管显示不同的数。

其具体系统原理框图如图1.1

复位电路 时钟电路 单片机 AT89S52 数码管显示 图 1.1 图 1.1

按键电路 1.2 软硬件功能分析

系统的总体工作过程:

首先通过软件设置选用单片机T2的自动重载方式的定时器,通过两个按键来控制定时器的启动和停止,来实现秒表的启停。设置三个软件计数器,分别负责分、秒,毫秒的计数,每隔10ms产生一次中断,然后判断对应的软件计数器是否满足值,若满足则相应的值加一,若不满足则返回主程序,获得的分、秒,毫秒通过运算可以得到七段译码,送到数码管显示最后结果。

第2章 硬件电路设计

2.1 单片机最小系统电路设计设计

所谓的最小系统是指可以保证计算机工作的最小硬件构成。对于单片机内部资源已能够满足系统需要的直接采用最小系统。对于AT89S52具有片上Flash的单片机,其最小系统如图2.1所示,其主要组成电路是复位电路和时钟电路。此时,P0和P2可以从总线应用解放出来,以作为普通I/O使用。

图2.1

2.1.1 复位电路

手动复位电路的工作原理是:加电瞬间,RST端的是高电平,随着RC电路充电电

流的减小RST电位也减小,降到一定程度,即为低电平,单片机开始正常工作。当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被短路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,这就保证了在RST端足够长的高电平时间,充电完成后,电容相当于开路,RST为低电平,正常工作。如图2.1.1所示。 2.1.2 时钟电路

时钟电路产生单片机工作所需要的时钟信号,电路应在唯一的时钟信号控制下严格的按时序进行工作。 在51芯片内部有一个高增益反向放大器,其输入端为引脚XTAL1,输出端引脚为XTAL2,在芯片的外部通过这两个脚跨接晶体振荡器和微调电容,形成

反馈电路,就构成一个稳定的自激振荡器。振荡晶体可在1.2MHz~12MHz之间选择,电容值无严格要求,但在电容值取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,可在20pF~100pF之间取值。本设计选取晶振为12MHz,电容为30pF。如图2.1.2所示。

图 2.1.1 图 2.1.2 2.2 系统供电电源设计

本系统需要采用5V电源,所采用的电源电路是由LM1117三端稳压器组成的。电源电路如图2.2所示。

图2.2

2.3 按键电路

按键是常开的按键开关,每个按键都被赋予一个代码,称为键码。按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的长短与开关的机械特性有关,一般在

实习总结

(包括:实习质量分析、待完善和改进之处和心得体会) 在本次实习过程中比较好的完成了各项任务。在设计简易秒表时,采用定时器T2的自动重载方式通过多次中断实现计时。在软硬件各方面做了充足的准备,可以说实习效果较好。 本次实习在参考了相关电路和他人的设计方法基础上自行设计完成的。通过较少的集成器件,实现了计时启动、停止、继续和毫秒显示的功能。该秒表具有准确度高、灵敏度好、成本低、低功耗等特点。此外。本设计单片机的很多资源还未使用,为以后的功能拓展提供了广泛的空间。 由于实验条件及自身所学知识的限制,本系统还存在有待进一步的完善和改进的地方。例如,本次所用的LED为四位数码管但是没有冒号显示所以不是特别完整的显示秒表计时。还有就是不能在毫秒挡实现暂停。这需要在以后进一步完善。 通过对本次实习,使自己深刻的认识到自己的很多不足之处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,看懂题目的要求!对于软件编程不益太简单或者太难。做到既能把课题完成又能锻炼 自己的能力!根据课题要求,复习相关的知识,查询相关的资料。根据课程条件,找到适 合的方案,找到需要的元器件及工具,准备课程。根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。这次实习增长了我的实践意识,还促使我认真学习了单片机的内部设置,也让我了解到在实际电路中,很多细节上的问题必须要考虑清楚,怎么做才是对电路的优化设计是最好的,必须通过实际操作过程加以确认。 参考文献

[1]刘海成.单片机及应用原理教程[M].北京:中国电力出版社,2012. [2]康华光.电子技术基础(模拟部分)[M].高等教育出版社,2006. [3]秦进平.数字电子与EDA技术[M].科学出版社,2011.

附录1 总原理图

附录

附录2 源程序

#include #define uchar unsigned char #define uint unsigned int sbit s1=P2^2; sbit s2=P2^1; sbit s3=P2^0; sbit wei1=P3^0; sbit wei2=P3^1; sbit wei3=P3^2; sbit wei4=P3^3;

uchar fen,miao,haomiao,miaoge,miaoshi,fenge,fenshi,haomiaoge,haomiaoshi; uint times1=0; uint times2=0;

uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delay_1ms(void) { uint i;

for(i=0;i<124;i++); }

void shurumiao(uchar miao) {

miaoshi=miao/10; miaoge=miao; }

void shurufen(uchar fen) {

fenshi=fen/10; fenge=fen; }

void shuruhaomiao(uint times1) {

haomiaoshi=times1/10;

haomiaoge=times1; }

void display(void) { wei1=0; P0=table[fenshi]; delay_1ms(); wei1=1; wei2=0;

P0=table[fenge]&0x7f; delay_1ms(); wei2=1; wei3=0;

P0=table[miaoshi]; delay_1ms(); wei3=1; wei4=0;

P0=table[miaoge]; delay_1ms(); wei4=1; }

void delay(uchar i) {

uchar j,k;

for(j=i;j>0;j--)

for(k=125;k>0;k--); }

void anjian(void) {

s1=1; s2=1;

s3=1;

if(s1==0)

{

delay(20);

{

while(s1==0); TR2=1; }

if(s1==0)

}

if(s2==0) {

delay(20);

{

while(s2==0); TR2=0; }

if(s2==0)

}

if(s3==0) {

delay(20);

{

wei1=1; wei2=1; wei3=1; wei4=1; wei1=0;

if(s3==0)

P0=table[haomiaoshi]; delay_1ms(); wei1=1; wei2=0;

P0=table[haomiaoge]; delay_1ms(); wei2=1;

}

}

}

void main() {

T2CON=0x00; //T2MOD=0x01; TH2=216; TL2=240; RCAP2H=216; RCAP2L=240; EA=1; ET2=1; TR2=0; fen=0; miao=0;

times1=0; while(1) {

shurufen(fen);

void T2_ISR(void) interrupt 5 { TF2=0; times1++;

shurumiao(miao); shuruhaomiao(times1); display(); anjian();

}

}

times2++;

if(times1>=100) {

times1=0; if(miao>59) miao=0;

miao++;

}

if(times2>=6000) {

times2=0; if(fen>60) fen=0; }

fen++;

}

本文来源:https://www.bwwdw.com/article/071.html

Top