单片机10秒秒表课程设计
赣 南 师 范 学 院
物理与电子信息学院 课程设计Ⅳ设计报告书
基于AT89S52单片机的
10秒秒表的设计
姓名: 匡远熹 班级: 09电子信息工程 学号: 090802015 指导老师:刘小燕 时间: 2012.1.01
目 录
内容摘要 ............................................................................... 1 关键词 ................................................................. 错误!未定义书签。 Abstract ............................................................. 错误!未定义书签。 Keywords ............................................................. 错误!未定义书签。 1绪论 .................................................................................................... 2 2 系统设计 ........................................................................................... 2 2.1 设计任务与要求 ..................................................................................... 3 2.2 方案的选择与论证 ....................................................................... 3 3 系统硬件设计 ................................................................................... 4 3.1 AT89C52简介 ................................................................................ 4 3.2 时钟电路 ....................................................................................... 5 3.3 复位电路 ....................................................................................... 5 3.4 显示电路 ....................................................................................... 6
3.5引脚控制 7
3.6 硬件元件清单 ............................................................................... 7 4软件设计与仿真 ................................................................................ 7 4.1主程序设计 .................................................................................... 7 4.2 仿真软件简介 ............................................................................... 9 4.3 仿真结果 ..................................................................................... 10 4.4 系统调试 ..................................................................................... 11 结束语 .............................................................................................................. 12 附录:程序清单 ................................................................................. 14 参考文献 ............................................................................................. 16
内容摘要:本文阐述了基于单片机的数字电子秒表设计。本设计主要特点是计时精度达到0.1s,是各种体育竞赛的必备设备之一。本设计的数字电子秒表系统采用8051单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管设计计时器。其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,延时程。硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键字:秒表;单片机AT89S52;硬件;软件;仿真
Abstract:The design of the multi-function stopwatch system uses AT89S52 microcontroller as the central device, and use its timer / counter timing and the count principles, combined with display circuit, LED digital tube, as well as the external interrupt circuit to design a timer. Be able to correctly time at the same time to record a time, and the next time after the last time the time to search automatically added a second in which software systems using assembly language programming, including the display program, timing, interrupt service, external interrupt service routine, delay procedures, key consumer shaking procedures, and KEIL in the commissioning, operation, hardware system uses to achieve PROTEUS powerful, simple and easy to observe the cut in the simulation can be observed on the actual working condition.
Keyword:Stopwatch;AT89S52 scm;Hardware;Software;Simulation
1绪论
当今,计算机技术带来了科研和生产的许多重大飞跃,微型计算机的应用已渗透到生产、生活的各个方面。其中单片微型计算机虽然问世不久,然而体积小、价廉、功能强,其销售额以每年近80%的速率增长。他的性能不断提高,适用范围愈来愈宽,在计算机应用领域已占有日益重要的地位。
单片微型计算机简称单片机,又成为控制器。他是在一块半导体上,集成了CPU、ROM、RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成了一台完整的数字计算机。单片机在生产生活中的许多方面得到广泛的应用,例如,生活中五彩变幻的霓虹灯,手机通信,温度检测,流量控制等都涉及到单片机。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如按时自动打铃、时间程序自动控制、秒表等。所有这些,都是以钟表数字化为基础的。因此,研究电子秒表及扩大其应用,有非常现实的意义。电子秒表是一种用数字电路技术实现秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 电子秒表从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
电子科技日新月异,人们对现代电子设备的智能化和微型化及其精度提出了更高的要求,而单片机因其具有稳定可靠、 体积小、 价格低廉等特点,成为设计智能化仪器仪表的首选微控制器,因此本次我没有选用传统的专用的时钟芯片,而是采用了AT89C52芯片,此款单片机可以使用软件对其进行在线编程,其灵活性和可靠性都相对提高。
通过此次课程设计,增强了我们的动手能力,把理论与实践融合在一
起。同时,也进一步加深了对单片机的硬件结构的理解和巩固,编程能力也得到了提高。在此将秒表制作过程中用到的知识进行了一些总结,希望自己今后能注意。
2 系统设计
2.1 设计任务与要求
2.1.1 设计任务
1、掌握数码管显示控制系统的显示原理,学习数码管显示数字和字符的编程方法.
2、试设计一简易秒表,使得七段符显示管的a-g分别接在单片机的P口上,输出低电平时,显示管点亮, 要求从数字“0”显示到数字“9”,延时间隔为1秒。 2.1.2 设计要求
[1]显示时间范围0.0-9.9s; [2]按键开关按下,电路复位。
2.2 方案的选择与论证
2.2.1总体设计方案
方案1:在方案1中,我们所选用的是软件定时,即用for循环来定时1秒进行显示的变化。
方案2:在方案2中,采用的是硬件定时,即用单片机内部的定时器T0。先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时。 2.2.2:选择与论证
方案比较:我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比
较准确的。第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来,但真正大程序时会很占用资源的,所以在用定时中断过程中是非常节省资源的。综合上述两种比较,我们选用了第二种方案。
3 系统硬件设计
本系统由控制器模块、复位模块、LED显示模块组成,系统硬件组成框图如图1所示。系统总体电路原理图如图1所示。
图1 系统电路原理图
3.1 AT89S52简介
(1) 与MCS-51产品相兼容;
(2) 具有8KB可改写的Flash 内部程序存储器,可写/擦1000次; (5)256字节内部RAM; (6) 32根可编程I/O口; (7) 3个16位定时器/计数器。 (8) 8个中断源;
(9) 可编程中串行口; (10) 低功耗空闲和掉电方式。
它的价格便宜,功能强大,能耗低。很大程度上减少总电路的复杂性,提高了所设计系统的稳定性。其芯片引脚图如图2所示。
图2 单片机AT89S52引脚图
3.2时钟电路
下图所示为时钟电路原理图,在AT89S52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,
才
3.5引脚控制
P0.0—P0.7对应两个数码管的A、B、C、D、E、F、G和小数点位;P2.5控制数码管个位的显示,P2.6控制数码管十位;P3.6、P3.7分别接按键
3.6硬件元件清单
系统元器件清单见下表
系统元器件清单
4软件设计与仿真
本系统程序包括主程序、据子程序等。主程序用于系统初始化,子程序调度等。
4.1主程序设计
主程序流程图如下图:
4.2 仿真软件简介
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运
行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。
(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。
(4)具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
Proteus7.5是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA、部分SPI器件、部分IIC器件等)。
软件编译采用KEIL C51软件,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在
功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
4.3 仿真结果
4.4 系统调试
在调试过程中主要是对程序的修改和对线路的修改来使系统正常的工作
结束语
本次的课程设计,使关于51系列单片机的,正是我们刚刚学到的51单片机,在平时课程的学习中,我们仅限于理论知识的讲解,即使知识是很扎实的,实际应用并不是这样的。开始时我也觉得自己的理论知识已经够了,但当我拿到课题时,在脑海里想的是非常好的,但真正编成和控制时,理论和实际结合不到一起,甚至于51芯片的使用我都感觉很迷茫,还是经过搜集大量资料才将理论与实际结合到一起了。本次课程设计我主要负责编程,这次不仅锻炼了我C语言的知识,更加我们正在学习的51的定时与中断结合在一起,进行了实际的操作,让我的知识掌握得更加牢固。本次的实际经验之后,让我对单片机定时赋初值有了更新的认识,对程序的循环顺序、结构类型都有了非常深刻的认识,对真正硬件的连接也有了认识,不再将自己的知识局限于自己狭隘的空间中。通过这次课程设计——秒表/时钟计时器,使我又重新开始学习C语言,因为C语言是大一学的,至从学完就再也没用过,所以开始很陌生,我又找了有关资料来了解,才有了一点眉目。刚开始以为可以用汇编很容易就写出来,因为我们正在学习汇编语言,以为学的很明白了,但是用汇编时才发现原来都不怎么熟练,编了一会程序发现只有一种感觉——举步维艰啊!还是放弃汇编选择C语言吧!对于单片机,我们课本学习的是80C51,但是这次做课程设计用的是89C51,这样不仅使我们掌握了80C51,而且对89C51也有了一定的了解了,在课堂上学习的都理论的,跟实际永远有一定的差距,不实践就不会发现问题。通过这次课程设计使我把课堂上学习的东西都用到了实践中,例如:定时/计数器的应用与中断。学习的时候不怎么理解,但是在实践中应用了以后就自然了解了。这次课程设计使我受益匪浅,而且都是实际的东西。
附录:程序清单
#include
sbit key=P3^7;
unsigned char
duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; static unsigned char k;
void delay(unsigned char t); void delayms(unsigned char t);
void INTO_Timer0();
void main() {
static unsigned char b=0;
P0=duanma[0]; P2=duanma[0]; while(1) { if(!key) {
delayms(10); if(!key) { b++; if(b==1)
{
INTO_Timer0(); } if(b==2) { TR0=0; } if(b==3) { b=0;
k=0;
P0=duanma[0]; P2=duanma[0]; }
while(!key); } } } }
void INTO_Timer0() {
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;
}
void isr_Timer0() interrupt 1 {
static unsigned char i; i++; if(i==2) { i=0; k++; if(k==100) k=0;
P0=duanma[k/10]; P2=duanma[k%10];
} }
void delay(unsigned char t) {
while(t--); }
void delayms(unsigned char t) { while(t--) {
delay(245); delay(245);
} }
参考文献
[1]《电子技能与EDA技术》 主编:韩克 柳秀山 [2]《数据电路设计报告》
[3]《电子控制电路实例》 主编:陈尔绍 [4]《数字电子技术基础与综合训练》 主编:卢庆林 [5]《数字电子技术基础》高等教育出版社
[ 6]《单片机原理与应用及C51程序设计》主编:谢维成
[7]《单片机基础[M]》北京:北京航空航天大学出版社,李广第,朱月秀,王秀山.2001.
[10]《单片机原理及应用[M]》电子工业出版社,张鑫.2005.
赣南师范学院 2011— 2012 学年第一学期课程设计Ⅳ
行政班级: 09电信本 学号:090802015 姓名:匡远熹 选课班级: 电子信息工程 任课教师: 刘小燕 成绩: