欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于单片机的电子跑表设计.doc

    • 资源ID:849128       资源大小:228.26KB        全文页数:19页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的电子跑表设计.doc

    1、 目 录1 设计内容及要求11.1 设计内容与要求:11.2设计要求:12 系统总体方案设计22.1 总体方案设计22.2 设计说明23 各部分方案选定及接口设计33.1 主控制器单片机的选择33.2 时钟电路33.3显示接口电路33.4 键盘接口电路44 系统软件的设计54.1 设计说明54.2 主程序设计54.3 时间处理模块64.5 键盘扫描模块95 系统的调试与使用说明116 总结127 参考文献13附录:141 设计内容及要求1.1 设计内容与要求:具有时钟和电子跑表的功能。开机为时钟功能,用4位LED数码管显示时、分,以24小时计时方式;用按键控制切换到电子跑表功能:可用3位数码管

    2、从00.0开始计时的功能。1.2设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要元器件选择;4)完成应用程序设计;5)进行应用程序的调试;2 系统总体方案设计2.1 总体方案设计 电子跑表的设计有多种方法,例如,可用中小规模集成电路组成电子跑表;也可用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子跑表;还可以利用单片机来实现等等。为求结构简单,本次设计利用单片机组成数字电子跑表。2.2 设计说明 本系统采用AT89C51单片机、4位LDE数码管显示、一个排阻、4个调节按钮、2个电容与1个晶体振荡器共同构成本的单片机电子跑表的硬件。时钟模块与计时模块则分别由单片机内

    3、部的定时器/记数器T0与T1来实现。时间显示功能通过LED数码管动态扫描来实现。电子跑表的启动/暂停/清零功能由软件来实现。P1.0实现时钟与秒表的切换功能,P1.1接开始计时键,P1.2接计时暂停键,P1.3接计时重新计时键。本系统软件部分则采用C51编写,功能模块结构化强,共利用了6个功能函数,2个中断服务函数和1个主函数构成了本次电子跑表的软件部分。图2.1为本系统方框图。AT89C51单片机模块4位共阴数码管显示模块时钟位驱动按键图2.1系统框图3 各部分方案选定及接口设计 3.1 主控制器单片机的选择本次设计采用AT89C51单片机,以下为其标准功能:4k 字节Flash 闪速存储器

    4、,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操 作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2 时钟电路单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路,如图3.2所示。电路中,电容器C1和C2对振荡频率有微调作用,本

    5、次设计中电容器取值为20pF,石英晶体选择12MHz,故单片机的机器周期为1us。图3.1 内部时钟电路3.3显示接口电路本次设计中使用了4位共阴数码显示管,显示控制采用动态显示,即数据的显示是由段和位选信号共同配合完成的。为了实现显示器的动态扫描,我们需要对显示器进行段控和位控,因此在显示器接口电路中需要有两个输出口,其中一个用于输出8条段控线;另一个用于输出位控线,位控线的数目等于显示器的位数。本次设计中用P1口与显示器的8条段控线相接,用P2.4P2.7与显示器的4条位控线相接。如图3.2所示。图3.2 显示接口电路3.4 键盘接口电路本设计的键盘接口电路中使用了4个按键分别与单片机的P

    6、1.1P1.3口相连如图3.3所示,分别实现时钟/秒表切换、开始计时、暂停计时、重新计时的功能。按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免键的一次处理闭合,应采CPU多次按用措施消除抖动。 图3.3 键盘接口电路4 系统软件的设计4.1 设计说明 在进行应用软件设计时应采用模块化结构设计,其优点是:每个模块的程序结构简单,任务明确,易于编写,调试和修改,程序可读性好,

    7、对程序的修改可局部进行,其他部分可以保持不变,便于功能扩充和版本升级,是便于多个模块的调用和分工合作。因此为了达到功能结构模块化,易读,简单,易移植的特点,故本次设计采用C51编写。 系统编写时可分为键盘扫描程序模块,时间处理模块,显示模块。如图4.1所示。将这些事先划分好的模块用C51编成不同的子函数,再将它们有机的结合起来从而达到系统的整体功能。 主函数 键盘扫描模块数码管显示模块 时间处理模块图4.1 软件设计模块4.2 主程序设计 本程序可分为4个模块,共定义了7个子函数,其中键盘扫描模块包括键盘扫描函数,数码管显示模块包括时钟显示函数、秒表显示函数,时间处理模块包括时钟系时间处理函数

    8、、秒表系时间处理函数、延迟函数,,另本程序还利用了两个定时/计数器分别为T0、T1,故还需定义两个中断函数T0中断服务函数和T1中断服务程序。本程序中由于涉及时钟与秒表互切问题,故定义了一控制变量Numb并赋其初值0,若在仿真过中切到秒表则Numb取反为1,切到时钟则Numb重新为0。因此在程序运行过程中便可控制各按键功能及屏蔽在时钟模式或秒表模式下不相干功能键的影响。图4.2为主程序流程图。 开始 赋初值1?否是 键盘扫描函数否是否切换秒表是数码管显示秒表数码管显示时钟 结束图4.2主程序4.3 时间处理模块时钟处理函数用定时器T0定时10ms,其计数初值为,由于T0选用工作方式1,故M为即

    9、65536,fosc为晶振频率为12MHZ,t为定时时间10ms,所以X的值为64536,将该值的高八位值赋给TH0,低八位并赋给TL0,这样便完成了T0的初始化工作,因为定时器T0工作在方式1下,故每次定时器T0溢出都需再给T0赋初值。由于T0定时10ms,所以要得到1s的时间需T0溢出100次,由此引入计数变量Count。每当T0溢出,Count便自动加1,直至计满100,便使秒变量Seconds自动加1并初始化Count重新开始计数,直到Seconds为60,初始化Seconds并使分变量Minutes自动加1,同理到时变量Hour为24时,初始化Hours,由此无限循环下去直到关闭电源

    10、。图4.3为程序流程图 时钟时间处理函数 T0中断服务函数否否否否否是是是是Minutes=0时Hours+Minutes=60Seconds=0分Minutes+Seconds=60Count=0秒Seconds+Count=100Hours=0赋初值T0溢出启动T0计数变量Count+Hours=24图4.3 T0中断函数及时钟处理函数秒表时间处理函数用的是定时器T1与T0相同,同样定时10ms,高八位TH1赋值为,低八位TL1赋值为。T1的启动由按键扫描函数控制,当开启T1后,每次T1溢出,Decisec自动加1,直至Decisec到100,秒Sec自动加1,直至分Mint为10,初始化

    11、Mint计时复位。图4.4为其程序流程图。启动T1T1溢出 秒表时间处理函数T1定时器中断服务函数否否否否是是是Mint=0Mint=10分Mint+Sec=0Sec=60秒Sec+Decisec=0Decisec=100分秒Decisec+赋初值图4.4 秒表处理函数及T1中断服务函数 4.5 键盘扫描模块时钟与秒表切换键程序:CHANGE键为时钟秒表切换键,当按下CHANGE键时,会产生按键抖动,本程序中利用delay(5)产生5ms延迟使得按键状态稳定后重新确认是否按下了CHANGE键即CHANGE为低电平,此时还需判断控制变量Numb是否为0(Numb为0即奇数次按下CHANGE键显示

    12、秒表,Numb为1则为偶数次按下CHANGE键显示时钟),在CHANGE为0且Numb为0的情况下,执行数码管显示秒表函数并对Numb取反为再次按下CHANGE键做准备,此后程序进入确认结束按键循环,若松开CHANGE,则非CHANGE为0,循环结束回到开始处等待按键电平;若一直按着CHANGE,则一直执行数码管显示秒表函数。当Numb为1时,则同理显示时钟函数,非CHANGE为0时退出循环回到等待。图4.5为该程序流程图。 CHANGE=0否是Delay(5)CHANGE=0且Numb=0否否是CHANGE=0且Numb=1Display1()是Display2()Numb=!Numb否!C

    13、HANGENumb=!Numb否是!CHANGEDisplay1()是Display2()图4.5 时钟与秒表切换程序开始计时键程序:在控制变量Numb等于1的情况按下START键则开启T1定时器开始计时,这里加入Numb的目的是为了在时钟状态下屏蔽非时钟功能键,故当切换为秒表状态时,Numb为1,此时秒表系功能键生效,此时按下START键,开始计时。图4.6为开始计时键程序流程图。否STRAT=0 且Numb=1是Delay(5)START=0否是TR1=1否!START是Display1() 图4.6 开始计时键程序暂停计时键程序、计时复位键程序同开始计时键程序类似都需在Numb为1的情况

    14、下方可启用,且其程序流程相似。键盘扫描函数keyscan()是由时钟与秒表切换键程序、开始计时键程序、暂停计时键程序、计时复位键程序构成的。5 系统的调试与使用说明 用KEIL运行程序正确后生成HEX格式的文件,用Proteus画好电路图,导入HEX格式的文件进行仿真。如下图所示,P1.0是秒表与时钟切换键,P1.1为开始计时键,P1.2为暂停计时键。P1.3为重新计时键。下图5.1、5.2分别是时钟状态和计时状态调试图。图5.1 开机时钟状态图5.2 计时状态6 总结 开始做课程设计时,我们首先需要将硬件设计做出来,在硬件设计好的基础上进行软件设计这样就方便多了。着手软件设计时要有一个整体的

    15、思路,即主程序,有了整体思路就开始着手于分模块的设计,如时钟显示程序、中断服务程序、时间处理程序等。每个模块出来后都需要配合主程序进行仿真验证程序是否能正常运行。这次的设计尽管还不是很完善,但我已经非常开心了,至少有了自己的思路再去实践,再在实践的过程中收获,这是课堂上所没有的欣喜。 在课程设计的过程中遇到的各种知识不总是在书上能找到的,所以我们必须自己查找相关资料,利用图书馆或网络搜索,这是一个比较辛苦的过程,你必须从无数的信息中分离出对你有用的,然后加以整理,最后吸收并用到设计中来。通过这点,我收益很大。课程设计是从整体到部分的过程,然而一切并不都是如此的。因为有时候你整体设计好了,然而在

    16、设计部分的时候却可能影响到整体,然后又要作出调整,在不断的调整中才慢慢把设计做出来。有时候你还必须把自己前面做的东西全部推翻,然后重新再来。 经过两个星期的课程设计,确实让我收获很多,学到了很多,特别要谢谢李老师的指导及严格要求,虽然在设计过程中很累,但是一看到自己做出来的成果,就什么疲劳都没有了。7 参考文献1王迎旭单片机原理与应用(第2版)机械工业出版社2胡汉才单片机原理及系统设计清华大学出版社.3潘永雄新编单片机原理与应用西安电子科技大学出版社.4张迎新单片微型计算机原理、应用及接口技术国防工业出版社5张欣单片机原理与C51程序设计基础教程清华大学出版社6李叶紫MCS51单片机应用教程清

    17、华大学出版社附录:程序清单:#include#define uchar unsigned char#define uint unsigned int/七段共阴数码显示管段码表/ucharcodedispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/定义初始化变量/秒表部分/uchar Decisec=0;/分秒/uchar Sec=0;/秒/uchar Mint=0;/分/时钟部分/uchar Seconds=0;uchar Minutes=23;uchar Hours=15;uchar Count=0;uchar Numb=0

    18、;/按键部分/sbit CHANGE=P10; /切换:可实现跑表与时钟互切 /sbit START=P11; /开始/sbit STOP=P12; /暂停/sbit RST=P13; /复位/函数声明/void delay(uchar ms); /延迟函数/void time_pro1();/秒表处理函数/void time_pro2();/时钟处理函数/void keyscan(); /键盘扫描函数/void display1(); /数码管显示秒表函数/void display2(); /数码管显示时钟函数/*/ 主函数 /*/void main()P1=0xff;TMOD=0x11;T

    19、H0=(65536-10000)/256;TL0=(65536-10000)%256;TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA=1;ET0=1;ET1=1;TR0=1;while(1)keyscan();if(Numb=1)display1();if(Numb=0)display2();/*/ 延迟函数 /*/void delay(uchar ms)uchar i,j;for(i=ms;i0;i-)for(j=500;j0;j-);/*/ 秒表处理函数 /*/void time_pro1()if(Decisec=100)Decisec=0;S

    20、ec+;if(Sec=60)Sec=0;Mint+;if(Mint=10)Mint=0;/*/ 时钟处理函数 /*/void time_pro2()if(Seconds=60)Seconds=0;Minutes+;if(Minutes=60)Minutes=0;Hours+;if(Hours=24)Hours=0;/*/ 键盘扫描函数/*/void keyscan()/ 秒表/时钟切换 /if(CHANGE=0)delay(5);if(CHANGE=0)&(Numb=0)display1();Numb=!Numb;while(!CHANGE)display1();if(CHANGE=0)&(N

    21、umb=1)Numb=!Numb;while(!CHANGE)display2();/ 开始计时 /if(START=0)&(Numb=1) delay(5);if(START=0)TR1=1;while(!START)display1();/ 暂停计时 /if(STOP=0)&(Numb=1) delay(5);if(STOP=0)TR1=0;while(!STOP)display1(); / 重新计时 /if(RST=0)&(Numb=1) delay(5);if(RST=0)while(!RST)Decisec=0;Sec=0;Mint=0;display1(); /*/ 数码管显示秒表

    22、函数 /*/void display1()P2=0x7f;P0=dispcodeDecisec/10;/ 显示分秒 /delay(1);P2=0xbf;P0=dispcodeSec%10|0x80;/显示秒个位/delay(1);P2=0xdf;P0=dispcodeSec/10;/显示秒十位/delay(1);P2=0xef;P0=dispcodeMint|0x80;/ 显示分 /delay(1);/*/ 数码管显示时钟函数 /*/void display2()P2=0x7f;P0=dispcodeMinutes%10;/显示分个位/delay(1);P2=0xbf;P0=dispcodeM

    23、inutes/10;/显示分十位/delay(1);P2=0xdf;P0=dispcodeHours%10|0x80;/显示时个位/delay(1);P2=0xef;P0=dispcodeHours/10;/显示时十位/delay(1);/*/定时器T1中断服务程序/*/void time_T1()interrupt 3TH1=(65536-10000)/256;TL1=(65536-10000)%256;Decisec+;time_pro1();/秒表时间处理函数/*/定时器T0中断服务程序/*/void time_T0()interrupt 1TH0=(65536-10000)/256;TL0=(65536-10000)%256;Count+;if(Count=100)Seconds+;time_pro2();/时钟时间处理函数/Count=0;秒表/时钟计时器电路原理图18


    注意事项

    本文(基于单片机的电子跑表设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922