ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:567.91KB ,
资源ID:5764446      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5764446.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的时钟秒表.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的时钟秒表.docx

1、基于51单片机的时钟秒表摘要本设计的数字秒表系统采用STC89C52单片机为中心器件,利用其定时器/计数器原理,结合LED数码管以及按键电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现四位LED显示,显示时间为00.0099.99秒,计时精度为0.01秒,能正确地进行计时。同时,我在此基础上,又设计了时钟秒表定时器,可以显示年、月、日、星期、时间进制、时、分、秒、以及闹钟启/停状态,可以实现时间的调整,时钟/秒表功能的转换,闹钟的启/停。其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,延时程序等,并在keil中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切

2、易于观察,在仿真中就可以观察到实际的工作状态,利用单片机开发板可下载程序,实现硬件实现。关键词:秒表,时钟,定时/计数器1 设计目的及要求1.1 设计目的本设计主要是应用Proteus软件和嵌入式C语言编程工具,结合单片机原理及应用、微机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。1.2 设计要求试用定时器/计数器设计一个简单的秒表,能显示计时状态和结果。要求进行电路仿真实验,并使用C语言进行程序的开发。2 设计方案选择2.1芯片简介本设计选择采用STC89C52单片机为核心。STC89C52

3、是一个低电压、高性能CMOS8位单片机带有64K字节的可反复擦写的程序存储器。和128字节的存取数据存储器RAM,这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-52系列的单片机兼容。片内含有8位中央处理器和闪烁存储单位,有较强的功能的STC89C52单片机能够被应用到控制领域中。 STC89C52提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内振荡器和时钟电路。另外,STC89C52还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处

4、理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。2.2 总体设计思路 本设计使用89C52芯片作为控制芯片,复位电路和时钟电路构成单片机最小系统。利用P1口8个引脚接上拉电阻,然后连接四位共阴极数码管段选段即P0.0P0.7分别连接共阴极数码管的ADP脚,P1.0P1.3分别反相器74HC04再与数码管的位选端14脚连接,实现秒表的显示。利用P3.2和P3.3分别连接了2个按键,分别用来控制秒表复位、开始/暂停。单片机控制原理图如下: 图2.2 单片机控制原理图2.3单元电路设计 本设计主要分为时钟电路模块,复位电路模块,显示模块和控制模块。设计方案如下:2

5、.3.1 时钟模块 图2.3 时钟电路如上图所示,89C52单片机的时钟信号通常用内部振荡方法得到,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方法。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选择6MHz、12MHz、24MHz。本设计采用12MHz晶振。图中电容C1、C2起到稳固振荡频率、快速起振的作用。电容值一般为530pF。本设计选用22pF电容。2.3.2 复位电路模块 图2.4 复位电路复位操作完成电路的初始化,使单片机从一种确定的状态开始运行。由上图可知,控制模块实际上就是单片机的最小系

6、统。本设计采用常用的上电且开关复位电路。上电后,由于电容的充电,使RST持续一段高电平时间。当单片机已在运行中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。此处,C3电容取20uF,R1=1K。2.3.3 控制模块控制部分电路连接如下图所示: 图2.5 控制电路 单片机检测按键的原理是:单片机的I/O口既可作为输出也可作为输入使用,当检测按键时,用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋一高电平,然后让单片机不断的检测该I/O口是否变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平,程

7、序一旦检测到I/O口变为低电平则说明按键被放下,然后执行相应的指令。本设计如图2.5所示,1个独立按键K2接到P3口的P3.2端,K2键即既可以当作开始键又可以当作暂停键,同时也可当复位键。同时借助于复位电路中按键K1也可以实现秒表的复位,当需要秒表重新计时,利用K1键复位,当程序出现错误时,可以随时使电路复位。2.3.4 显示模块显示部分电路设计如下图: 图2.6 显示模块电路图显示电路我们采用的是数码管显示电路。用4个共阴极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。在用数码管显示时,我们有静态和动态两种选择,静态显示程序

8、简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。在设计中,我们采用LED动态显示,用P0口驱动显示。由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。P1.OP1.3提供位选择。共阴极数码管用非门74HC04反相驱动。3 软件设计(1)实现计时。利用单片机内部T0计时器实现计时,首先给定时器工作方式寄存器TMOD赋值0x01选定T0定时器工作在方式1。接着确定定时初值TH0=(6553610000)/256;TL0=(6553610000)%256实现10ms的定时,利用中断一次实现0.01秒定时。 (2)实现时间显示。利用单片机

9、P1端口控制数码管的位选,利用P0端口控制数码管的段选,只要两个数码管位选段选间隔的时间适当,就可以实现动态显示时间。 (3)实现按键控制。利用单片机P3复用端口输入按键控制命令,可以将与P3.2端口相连的按键定义为启动/暂停按键,复位按键。3.1 整体程序设计思路 此次设计中,定时/计数器选择定时/计数器T0,工作于工作方式1,即16位定时/计数器。利用定时器定时中断,每定时10ms即产生一次中断。每发生一次中断即定时0.01s,没发生100次中断即定时1s。P3.2口为秒表启动/暂停控制按键,在键值处理子程序中,每检测到一次低电平,按键K1计数值加一,当此值为奇数时,秒表启动,当此值为偶数

10、时,秒表暂停。P3.3口为秒表复位控制按键,每检测到一次低电平,秒表停止计时,显示恢复为00.00。另外,独立按键在闭合时存在抖动现象,所以编写键盘检测程序时,需在检测按下时加入去抖延时,检测松手时就不用了。3.2 程序流图主程序: 中断子程序: 按键检测子程序: 3.3 主要程序代码#include#define uint unsigned int #define uchar unsigned char sbit k1 = P32;/定义开始/暂停按键/sbit k2 = P33;/定义秒表复位按键uint count;uchar code table=0x3f,0x06,0x5b,0x4f

11、,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uint second;uint millisecond;void delay(uint z) /延时0.5ms uint x,y; for(x=z;x0;x-) for(y=60;y0;y-); void keyscan() if(k1=0) delay(20); if(k1=0) count+; while(!k1); switch(count) case 1 :TR0=1; break; ca

12、se 2:TR0=0; break; case 3:TR0=0; second=0;millisecond=0;count=0;break; void disply() P0=tablemillisecond%10; /P0=0xff; P1=0x08; delay(1); P0=tablemillisecond/10; /P0=0xff; P1=0x04; delay(1); P0=table1second%10; /P0=0xff; P1=0x02; delay(1); P0=tablesecond/10; / P0=0xff; P1=0x01; delay(1); void main()

13、 count=0; second=0; millisecond=0; disply(); TMOD=0x01; /TO工作在定时器方式1 TH0=(65536-10000)/256; /预置计数初值 ,定时10ms TL0=(65536-10000)%256; EA=1; /CPU开中断 ET0=1; /T0开中断 TR0=0; / T0停 P1=P2=P3=0xFF; while(1) keyscan(); disply(); void timer0() interrupt 1 TH0=(65536-10000)/256; /计数初值重装载 TL0=(65536-10000)%256; mi

14、llisecond+; if(millisecond=100) millisecond=0; second+; if(second=60) second=0; 4 仿真调试总体仿真电路图如下图所示:图4.1 整体仿真原理图4.1 keil简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要W

15、IN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 4.2 keil与protues联调 联调设置步骤如下: (1)把C:Program FilesLabcenter ElectronicsProteus 6 ProfessionalMODELS目录下的 VDM51.dll文件复制到 C:KeilC51BIN文件夹

16、下。(目录名都是默认的,你可以根据你实际安装的目录进行复制。) 可能会没有这个VDM51.dll 楼主需要网上下一个,再放到BIN里面。 (2)用记事本(其它的编辑软件也可以,如Ultra Edit)打开Keil 根目录下的 TOOLS.INI 文件,在C51 栏目下加入 TDRV8=BINVDM51.DLL (Proteus VSM Monitor-51 Driver ) 。 (3)打开Proteus,画出相应电路,在Proteus的“Debug”菜单中选中“Use Remote Debug Monitor(远程监控)”。 (4)进入Keil的Project菜单Option for Targ

17、et工程名。在Debug选项中右栏上部的下拉菜单选中Proteus Driver。再进入Settings,机子IP设为127.0.0.1,端口号为8000。 (5)在Keil中进行debug,同时在Proteus中查看直观的结果。这样就可以像使用仿真器一样调试程序了。4.3 仿真实现双击图标进入Keil uVision2编程环境,输入程序。返回桌面双击图标,进入PROTEUS仿真环境,点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图如图4.1所示。然后按照4.1节所写步骤,设置keil和proteus的工作环境,实现keil和proteus的连调。设置完成后,程序开始执行即可看到数

18、码管显示初始值00.00。按下K1一次,秒表开始计时,再按下K1,秒表暂停,依次循环操作。按下K2键秒表又恢复至00.00,停止计时,再按下K1键才能重新开始计时。5 硬件实现5.1 程序下载步骤1.连接硬件:将串口下载线一头与计算机串口相连,另一头与学习板串口相连,注意此时不要给学习板上电。2.运行STC下载软件STC_ISP_V3.5,出现如下界面: 图5.1 STC_ISP_V3.5运行界面第一步:选择单片机型号STC89C52。第二步:打开要下载的HEX文件。第三步:选择串口和波特率。波特率请选用默认值。第四步:点击下载按钮。由此完成程序的下载。5.1 硬件调试给目标板上电复位,即可按

19、键数码管显示00.00,按下K1一次,秒表开始计时,再按下K1,秒表暂停,依次循环操作。按下K2键秒表又从00.00开始计时。由此可见,该设计完成了设计要求。如下图为硬件实现照片展示: 图5.2 硬件调试6 拓展在基于定时/计数器设计的秒表的基础上,设计一个基于定时/计数器的时钟秒表计时器,可以显示年、月、日、星期、时间进制、时、分、秒、以及闹钟启/停状态,可以实现时间的调整,时钟/秒表功能的转换,闹钟的启/停。采用定时器T0,实现时钟定时器,定时器T1实现秒表定时器。用LCD1602液晶显示器显示年、月、日、星期、时间进制、时、分、秒、以及闹钟启/停状态。使用弹性小按键,可以实现时间的调整,

20、时钟/秒表功能的转换,闹钟的启/停。6.1 设计原理原理图如下图所示:图6.1 时钟秒表原理图6.2 主要程序清单void delay(uint z)void di(uint x) /蜂鸣器发声函数void write_com(uchar com) /给写液晶命令void write_date(uchar date) /给液晶写数据void init() /初始化函数void write_nian(uchar add , uint date) /年显示函数void write_yue(uchar add , uchar date) /月显示函数void write_ri(uchar add ,

21、 uchar date) /日显示函数void write_sfm(uchar add ,uchar date) /时分秒显示函数void write_week(uchar week) /星期显示函数void write_jinzhi(uchar jinzhi) /时间进制显示函数void write_nao(uchar nao) /闹钟开关(ON/OFF)显示函数void keyboard() /按键扫描函数void mbiao( ) /秒表函数void main() /主函数void timer0() interrupt 1 /时钟定时器void timer1() interrupt 3

22、/秒表定时器6.3 仿真实现 设置完成后,程序开始执行即可看到液晶显示器显示初始时间,如图6.2所示;当时钟走至整点时(如图6.3所示),进行整点报时,如图6.4所示;当按动K1键,进行调时控制,并由K2,K3键进行加、减调时控制,可以任意调整时间,如图6.5所示;当按动K4键,可以实现时钟/秒表功能转换,并可以实现秒表的启/停控制,如图6.6所示。 由此可见,本设计完成了基本的时钟秒表定时器设计要求。 图6.2 初始时间 图6.3 时钟模式 (整点) 图6.4 整点报时 图6.5 调时 图6.6 秒表模式7 心得体会经过几天不懈的努力,此次能力拓展训练终于拉下帷幕,回想这几天的经历,受益颇多

23、。这次设计,我所做的题目为秒表的设计,虽然在大一就学习了C语言,但是很少将它应用于实践中,再加之,在单片机课程中老师以汇编语言授课,所以在一开始时,由于对C语言的使用不是很熟练,我感到极大地困惑,无从下手。但是,通过查阅书籍及上网搜集资料,我渐渐地拾起了以前的C语言知识。同时,这次设计,让我对C51单片机的结构有了更清楚的了解,尤其是对定时/计数器以及中断的使用更加的熟练。通过这次课程设计,我明白了独立思考重要性,因为从头到尾,都是自己一个人完成。从原理的最终敲定,到程序的编写,到仿真的实现,至最后的程序下载调试,这都是我一个人独立完成结果。期间,在我调试程序时,曾遇到了问题,任凭我用尽各种办法也查不出问题所在,但是,我并没有放弃,休息了一会,继续静下来思考,最终发现了问题的所在。最后,要感谢学校给我这次学习的机会,感谢老师的指导,要感谢我的同学的帮助与鼓励。我想这次能力拓展训练,必将是我学习道路上的一次宝贵经历。参考文献1 李群芳,张士军,黄建.单片微型计算机与接口技术.北京:电子工业出版社,20102 郭天祥.51单片机C语言编程.北京:电子工业出版社,20093 张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,19994 谭浩强.C程序设计.北京:清华大学出版社,19915 王守中.51单片机发入门与经典实例.北京:人民邮电出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1