单片机秒表课程设计_第1页
单片机秒表课程设计_第2页
单片机秒表课程设计_第3页
单片机秒表课程设计_第4页
单片机秒表课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、牡丹江师范学院本科学生课程设计题 目 基于 MCS-51单片机的秒表设计 班 级 学 号 姓 名 指导教师 牡丹江师范学院 2013 年11 月 6 日摘要单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。本次设计内容为以 8051 单片机为核心的秒表,它采用键盘输入,单片机技术控制。设计内容以硬件电路设计,软件设计和 PCB 板制作三部分来设计。利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使他拥有正确的计时、暂停、清零、并同时可以用数码管显示,

2、在现实生中应用广泛。关键词:秒表;8051;定时器;计数器目录第一章 课程设计的目的和任务.21.1 单片机秒表课程设计的概述.21.2 课程设计思路及描述.31.3 课程设计任务和要求.3第二章 硬件与软件设计.42.1 系统硬件方案设计.4 2.2 软件方案设计.5 第三章 程序流程及实验效果.63.1 源程序及说明.6 3.2 原理图分析.12 3.3 实验效果.12第四章 心得体会.15参考文献.15第一章 课程设计的目的和任务1.1 单片机秒表实验的概述一、实验题目 秒表系统设计用 STC89C52RC 设计一个3位的LED数码显示“秒表” ,显示时间为 00.059.9 秒,每毫秒

3、自动加一,每十毫秒自动加一秒。二、增加功能 增加一个“复位 00.0”按键(即清零),一个“暂停”和“开始”按键,一个“复位 60.0” 按键(用来60秒倒计时),一个倒计时“逐渐自减”按键。三、课程设计的难点 单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现 LED 的动态扫描显示;三是如何对键盘输入进行编程。四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED 数码管以及实验箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确 地进行计时,数码管能够正确地显示时

4、间。其中本课程设计有四个开关按键:其中key2按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key1按键按下去时数码管清零,复位为“00.0”,key3 按键按下去时数码管复位为“60.0”(用于倒计时),key4 按键按下去则是数码管开始“逐渐自减”倒计时。五、课程设计的意义1) 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。 2) 掌握定时器、外部中断的设置和编程原理。 3) 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4) 该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、

5、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 六、课程设计仪器 集成电路芯片8051,七段数码管,TX-1C 单片机开发板,MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。1.2 系统设计思路及描述该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7 作为按键的入口;定时器 T0 作为每 0.1 秒减一的定时器; 定时器 T1 作为每 0.1 秒加一的定时器。其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下

6、拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。方框图如下图 :1.3 系统设计任务和要求1设计指标了解8051芯片的的工作原理和工作方式,使用该芯片对 LED 数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、60秒、倒计时清零等功能,精确到0.1秒。 要求选用定时器的工作方式,画出使用单片机控制LED 数码管显示的电路图,并实现其 硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。2设计要求 画出电路原理图(或仿真电路图); 软件编程与调试; 第二章 软件与硬件设计2.1 系统硬件方案设计单片机应用系统由硬件系统和软件系统

7、两部分组成。硬件系统是指单片机以及扩展的存 储器、IO 接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程 序。 在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和 IO 接口,使单片机应用系统能够运行。在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘 和显示器功能相对强大,而有些系统输入/输出

8、的信息少,这时可能用几个按键和几个 LED 指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。2.2 软件方案设计此次选用 C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义,其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图如图 2.2 所示:第三章 程序流程及实验效果 3.1 源程序及说明#include<reg52.h> /52 系列单片机头文件 #define uchar unsigned char /宏定义#define uint unsigned i

9、ntsbit dula=P26; /申明 U1 锁存器的锁存端 sbit wela=P27; /申明 U2 锁存器的锁存端 sbit key1=P34; /申明四个按键的锁存端sbit key2=P35;sbit key3=P36;sbit key4=P37; uchar code table= /含有 09 的数字数组 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f;void delayms(uint); /声明延时函数void display(uchar,uchar,uchar); /声明显示函数 void keyscan(); /声

10、明按键函数 uchar num1,num2,bai,shi,ge; /变量声明 uint num; void main() /主函数入口 TMOD=0x11; /设置 TO,T1 定时器 TH0=(65536-45872)/256; /装初值11.05992M晶振50ms数为45872 TL0=(65536-45872)%256; TH1=(65536-45872)/256; TL1=(65536-45872)%256; EA=1; /开总中断 ET0=1; /开启定时器 T0 中断 ET1=1; /开启定时器 T1 中断 while(1) /程序停在这里等待中断的发生,这个大循环也是实现数据

11、显示的主体 keyscan(); /三个数码管要选送的数据 bai=num/100; /百位 shi=(num-100*bai)/10; /十位 ge=num-100*bai-shi*10; /个位 /直接把第二只数码管的小数点烧出来dula=1; /打开段选 P0=0x80; /送段选数据dula=0; /关闭断选 P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位 锁存端造成混乱 wela=1; /打开位选 P0=0xfd; /送位选数据 wela=0; /关闭位选 delayms(5); /延时 display(bai,shi,ge); void disp

12、lay(uchar bai, uchar shi,uchar ge) dula=1; /打开段选P0=tablebai; /送段选数据 dula=0; /关闭断选 P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存 端造成混乱wela=1; /打开位选 P0=0xfe; /送位选数据wela=0; /关闭位选 delayms(5); /延时 dula=1; /打开段选P0=tableshi; /送段选数据dula=0; /关闭断选 P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存端造 成混乱 wela=1; /打开位选

13、P0=0xfd; /送位选数据 wela=0; /关闭位选 delayms(5); /延时dula=1; /打开段选P0=tablege; /送段选数据dula=0; /关闭断选 P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位锁存端造 成混乱 wela=1; /打开位选 P0=0xfb; /送位选数据 wela=0; /关闭位选 delayms(5); /延时 void delayms(uint xms) /延时子函数 uint i,j; for(i=xms;i>0;i-) /i=xms 即延时约 xms 毫秒for(j=110;j>0;j-);

14、 void keyscan() if(key1=0) /清零 delayms(10); /延时去抖 if(key1=0) while(!key1) /等待按下 TR0=0; /定时器 TR0 关闭 TR1=1; /定时器 TR1 打开 num=0; /送数据 num=0 TR1=0; /定时器 TR1 关闭 if(key2=0) /暂停和开始 delayms(10); if(key2=0) while(!key2); TR0=0;TR1=TR1; /每次按下,TR1 的状态时相反的 if(key3=0) /使计数器显示为 60.0while(!key3); TR0=0; TR1=1; num=

15、600; TR1=0; if(key4=0) /实现计数器的倒数功能 while(!key4); TR1=0; TR0=1; void T0_time()interrupt 1 TH0=(65536-45872)/256; /重装初值TL0=(65536-45872)%256; num2+; if(num2=2) /如果到了2次,说明0.1秒的时间到 num2=0; /然后把num2清零重新再计2次num1+; if(num1=10) num1=0; if(num=0) /当 num 自减为0时,重新为 60.0,再开始倒计时 num=600; /num 逐渐自减 num-; /定时器 T0,

16、中断序号为 1 void T1_time()interrupt 3 TH1=(65536-45872)/256; /重装初值 TL1=(65536-45872)%256; num2+; if(num2=2) /如果到了 2 次,说明 0.1 秒的时间到 num2=0; /然后把 num2 清零重新再计 2 次 num1+; if(num1=10)num1=0; num+; /num 逐渐自加 if(num=600) num=0; /这个数十用来送给数码管显示的,到了 60.0 后归零 3.2 原理图分析3.3 实验效果通过最后软件对程序的编译,组建,执行,还有最终生成.hex 文件,把.hex

17、下载到TX-1C开发板的 STC89C52RC 单片机上的最终效果图如下:1)复位“00.0”2)复位“60.0”3)“开始自加”运行4)“开始自减”运行第四章 心得体会通过对本次课程的课程设计,使自己深刻的认识到自己的很多不足之处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,看懂题目的要求!对于软件编程不益太简单或者太难。做到既能把课题完成又能锻炼 自己的能力!根据课题要求,复习相关的知识,查询相关的资料。根据课程条件,找到适 合的方案,找到需要的元器件及工具,准备课程。根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。然后再进行 程序调试和相应的修改,以达到能够实现所要求的功能的目的。还要根据课程的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程 序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。 该课程设计的程序可以参考 MCS-51 系列单片机,也可自己根据自己熟悉的方 法来编程如单片机 C 语言。在设计控制开关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论