目录
1 倒计时器设计要求 ................................................... 1
1.1设计要求 .......................................................... 1
1.2开发作用和意义 .................................................... 1
2. 单片机 ............................................................. 2
2.1单片机概述 ........................................................ 2
2.1.1 单片机基础 ..................................................... 2
2.1.2 单片机与单片机系统 ............................................. 2
2.1.3 单片机的产生与发展 ............................................. 3
3. 硬件设计 ........................................................... 4
3.1 AT89C51的介绍 .................................................... 4
3.2晶振电路 .......................................................... 5
3.3复位电路 .......................................................... 5
3.4 按键电路 ......................................................... 5
3.5 显示电路 ......................................................... 6
3.6 蜂鸣器电路 ....................................................... 6
4. 系统调试 ........................................................... 7
4.1系统调试工具 Keil uVision3 ........................................ 7
4.2调试工具PROTEUS .................................................. 7
4.3调试方法 .......................................................... 8
4.4调试的主要步骤 .................................................... 8
5. 系统仿真 .......................................................... 10
5.1 proteus仿真 ..................................................... 10
总结 ................................................................ 12
致谢 ................................................................ 13
参考文献 ............................................................ 14
程序 ................................................................ 15
1 倒计时器设计要求
1.1设计要求
以AT89C51系统单片机为核心器件,组成一个99秒以内任意秒数的倒计时系统,即初值为99秒以内任意秒数,以一秒的速度进行倒计时。
系统有8个LED 数码管显示器,选择显示十位、个位,而其余位设置为一直是暗的,没有任何显示。
此倒计时设计能够通过按键倒计时器设定任何不大于99秒的初值,同时设置有开始键、复位键,以达到可以重新设置初值的目的。
1.2开发作用和意义
现在单片机的应用在我们的生活中随处可见,这体现了它的重要性与实用性。它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。本次设计的倒计时器就是采用的微控制计数的方法实现的。
计时器在单片机模块中是比较常见的的一个模块,计时器是一种用数字电路技术实现计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。本次设计的99秒倒计时器是在计时器的基础上设计的,以倒计时器为基础,还可以设计更多对日常生活密切相关的设备,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,都是以计时器为基础的。
通过对基于单片机控制的倒计时器的设计的过程中,让我对单片机的知识有一个初步解,在学习单片机基础知识的同时,结合C 语言学习,实现一些简单的功能的设计,做到了主动学习和探索。
本设计不但节约成本,而且功能齐全,不但能实现倒计时器的功能,而且还能实现其他多种功能,如倒计时秒表、定时器等等。而且由于本次这个基于51单片机的99秒的倒计时器无论是硬件方面还是在软件程序设计方面都比较简单,所以还可以通过扩展完成其他的功能,而且功能的相互转换也非常简单。若作为一个部件生产产品,有很大的挖掘价值,也非常有吸引力。
本课题开发的意义在于它既节省了硬件成本,又能实现多功能。既可做倒计时秒表, 又可进行定时,还可以通过扩展完成其他功能,而且功能的相互转换也十分简单。对于厂商, 有很大的挖掘潜在价值的空间;对于消费者,也有很大的吸引力。
2. 单片机
2.1 单片机概述
单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器
CPU(Central processing unit)。随机存储器RAM (Random access memory)。只读存储器ROM (Read only memory)。
中断系统、定时器/计数器以及I\O(Input/output)接口电路等主要微型机部件集成在一个芯片上。虽然单片机只是一个芯片,但从组成和功能上看,它已具有了计算机系统的属性。为此,称它为单片微型计算机SCMC (Single chip micro computer),简称单片机。
单片机主要应用与控制领域,用以实现各种测试和控制功能,为了强调起控制属性,也可以把单片机称为微控制器MCU (Micro controller unit )。在国际上,“微控制器”的叫法似乎更通用一些,而在我国则比较习惯与“单片机”这一名称。单片机在应用时,通常是处于控制系统的核心地位并融入其中,即以嵌入的方式进行使用,为了强调其"嵌入"的特点,也常常将单片机称为嵌入式微控制器EMCU (Embedded micro
2.1.1 单片机基础
根据控制应用的需要,可以将单片机分成为通用型和专用型两种类型。通用型单片机是一种基本芯片,他的内部资源比较丰富,性能全面且适用性强,能覆盖多种应用需要。用户可以根据需要设计成各种不同应用的控制系统,即通用单片机有一个在设计的过程,通过用户的进一步设计,才能组建成一个以通用单片机芯片为核心再配以其它外围电路的应用控制系统。然而在单片机的控制应用中,有许多时候是专门针对某个特定产品的,例如电度表和 IC 卡读写器上的单片机等。这种应用的最大特点是针对性强而且数量巨大,为此厂家常与芯片制造商合作,设计和生产专用的单片机芯片。由于专用单片机芯片是针对一种产品或一种控制应用而专门设计的,设计时已经对系统结构的最简化,软硬件资源利用的最优化。
2.1.2单片机与单片机系统
单片机通常是指芯片本身,它是有芯片制造商生产的,在它上面集成的是一些做为基本组成部分的运算器电路,控制器电路,存储器,中断系统,定时器/计数器以及输入/输出口电路等。但一个单片机芯片并不能把计算机的全部电路都集成到其中,例如组成谐振电路和复位电路的石英晶体,电阻,电容等,这些元件在单片机系统中只能以散件的形式出现。从中可以看到单片机和单片机系统的差别,即:单片机只是一块芯片,而单片机系统则是在单片机芯片的基础上扩展其它电路或芯片结构的具有一定应用功能的计算机系统。 通常所说的单片机系统都是为实现某一控制应用需要由用户设计的,是一个围绕单片机芯片而建的计算机应用系统。在单片机系统中,单片机处于核心地位,是构成单片机系统的硬件和软件基础。
controller unit)。在单片机的电路和结构中,有许多嵌入式应用的特点。
2.1.3 单片机的产生与发展
1. 单片机的产生
电子计算机的发展经历了从电子管,晶体管,集成电路到大(超大)规模集成电路共四个阶段,即通常所说的第一代,第二代,第三代和第四代计算机。现在广泛使用的微型计算机是大规模集成电路技术发展的产物,因此它属于第四代计算机,而单片机则是微型计算机的一个分支。从1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个不同的方向发展;一个是向高速度,大容量,高性能的高档微机方向发展;而另一个则是向稳定可靠、体积小和价格廉价的单片机方向发展。但是两者在原理和技术上是紧密联系的。
2. 单片机的发展继1971年微处理器的研制成功不久,就出现了单片的微型计算机即单片机,但最早出现的单片机是一位的,1976年Intel 公司推出了8位的MCS-48系列单片机,它以体积小、控制功能全、价格低等特点,赢得了广泛的应用和好评,为单片机的发展奠定了坚实的基础,成为单片机发展史上一个重要阶段,其后,在MCS-48成功的刺激下,许多半导体芯片在生产厂商竞相研制和发展自己的单片机系列。到80年代末,世界各地已相继研制出大约50个系列300多个品种的单片机产品,其中包括Motorola 公司的6801,6802,Zilog 公司的Z-8系列,Rockwell 公司的6501,6502等,此外,日本的NEC 公司,日立公司等也不甘落后,相继推出了各自的单片机品种。尽管目前单片机的品种很多,但是我过使用最多的是Intel 公司的MCS-51单片机系列。MCS-51系列是在MCS-48的基础上于20世纪80年代初发展起来的,虽然它是8位的单片机,但其功能较MCS-48有很大的增强。此外,它还具有品种全,兼容性强,软硬件资料丰富等特点,因此应用愈加广泛,成为比MCS-48更重要的单片机品种,直到现在,MCS-51仍不失为单片机的主流系列。继8位单片机之后,又出现了16位单片机,1983年Intel 公司推出的MCS-96系列单片机就是其中的典型代表。与MCS-51相比,MCS-96不但字长增加一倍,而且在其他性能方面也有很大的提高,特别是芯片内还增加了一个4路或8路的10位A/D转换器,使其具有A/D转换的功能。纵观单片机近30年的发展历程,单片机今后将向多功能、高性能、高速度、低电压、低功耗、低价格、外围电路简单化以及片内存储器容量增加的方向发展。但其位数不一定会继续增加,尽管现在已经有了32位单片机,但使用的并不多。可以预言,今后的单片机将是功能更强,集成度和可靠性更高而功耗更低,以及使用更方便等特点。此外,专用化也是单片机的一个发展方向,针对单一用途的专用单片机将会越来越多。
3. 硬件设计
3.1 AT89C51的介绍
AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable) 的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易
失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O)口,4个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,内部集成看门狗计时器片内时钟振荡器。图3-1为AT89C51在proteus 中的引脚图。
图3-1 AT89C51在proteus 中的引脚图。
3.2晶振电路
设计中运用了2个30pF 的电阻分别以C1和C2作为称为,还有一个11.0592MHZ 的晶振备注为X1(当然设计中为了方便称为12MHZ )晶振电路的两端和单片机系统的18端口和19端口连接分别备注为X1和X2端口。
图 3-2 晶振电路
3.3复位电路
复位开关:当程序在运行的过程之中需要重新开始运作时,就可以按下reset 复位开关来实现数码管显示99来重新运作。该电路的组成是由一个1000f 称为C3的电容、和一个10K 的R2组成。一端接的是VCC 一端接的是RST 。
图3-3 复位电路
3.4 按键电路
本设计的按键共有三个,包括有系统复位按钮、开始按钮、暂停按钮。三个按钮分
别接入P1.0、P1.1、P1.2。
接线如图3.4所示:
图3.4 按键模块
3.5 显示电路
由于本设计要求倒计时范围最大为99秒,由LED 显示模块显示剩余时间,显示格式为 XX(秒).X ,精确到0.1s 的整数倍,故采用8位共阴极LED 显示器。如下图所示。
图3.5 显示电路
3.6 蜂鸣器电路
设计要求倒计时时间到时要有声音提醒信号产生,可选择一只蜂鸣器来实现这一功
能。选用电平式蜂鸣器。
蜂鸣器电路与单片机的接口:蜂鸣器的输入接P3.0口,另一端接地。当P3.0=1时,蜂鸣器中有电流通过,而产生蜂鸣声。当P3.0=0时,蜂鸣器不发声。连接图如图3-6所示。
图3.6 蜂鸣器模块
4. 系统调试
4.1系统调试工具 Keil uVision3
Keil uVision3 仿真器是一款利用其IDE 集成开发环境作为仿真环境的廉价仿真器,是利用SST 公司具有IAP 功能的单片机SST89C58 制作而成,主要是利用了SST89C58的IAP 功能,所谓IAP 功能是In application program的英文缩写,是在应用编程的意思,通俗一点讲就是:它可以通过串口将用户的程序下载到单片机中,可以通过串口对单片机进行编程。它之所以具有这种功能,实际上它有两块程序flash 区,其中一块 flash 中运行的程序可以更改另外的一块程序 flash 区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58,监控程序通过 SST89C58的串口和PC 通讯,当使用 KEIL UVISION3 的 IDE 环境仿真时,用户的程序通过串口被监控程序写入flash 程序区中,当用户设置断点等操作仿真程序时,flash 程序中的用户程序也在相应的更改,从而实现了仿真功能 。
4.2调试工具PROTEUS
Proteus 是一款EDA 软件,该软件具有模拟电路仿真,数字电路仿真,单片机以及
外围电路组成的系统的仿真,RS-232动态仿真,I2C 调试器,SPI 调试器,键盘和LCD 系统的仿真,以及各种虚拟仪器,如示波器,逻辑分析仪,信号发生器等。该软件目前支持的单片机类型有:68000系列、8051系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、ARM 以及各种外围芯片。该软件还支持大量的存储器和外围芯片,所以,该软件是一款集单片机和SPICE 分析于一身的仿真软件。
4.3调试方法
调试方法:首先用Keil 软件将C 编译成HEX 文件,打开Keil 软件,新建一个文档,输入C 程序,保存成C 格式文件,然后新建工程,连接单片机为AT89C51,选择Options for target ,选择OUTPUT 子菜单,在Create HEX Fi 前打钩,DeBug 子菜单中,Settings 选择ProteusVSM Simulator,USE 前打钩,再次运行文件,成功后在目录下会生成HEX 文件,打开Proteus 软件,或直接点击DSN 文件,双击单片机模板,点击文件夹式样的图标选择对应的HEX 驱动文件,然后点击开始,进行调试。
4.4调试的主要步骤:
①点击启动 Keil uVision3。
②新建一个工程。Project 菜单——〉New project ,选择好我们要保存的文件夹后,键入 djs 保存。接着弹出 CPU 类型选择框,选择最常用的Atmel ——〉AT89C51,按确定。如下图4.4.1:
图4.4.1
③在工程中加入文件。新建一个文件,文件菜单 File——〉New ,我们再点击save the active document按钮,(另存为)弹出对话框后,我们文件名框中键入djs.c (注
意文件后缀名是.c )保存,这个时候C 语言文件创建完毕。
④现在可以把文件加入到工程中去。点击Target1 前面的+号,右键单击 Source Group 1——〉选择 Add Files to Group’Source Group 1’,在弹出的对话框中选择
一创建好的djs.c 文件,选择添加 Add,然后关闭此对话框。如图4.4.2
所示:
图4.4.2
⑤此时工程建成,可以写入程序了。在写入程序的时候,通过软件设计模块,先写好主程序的框架,然后在需要调用子程序的时候,一个子程序一个子程序进行编写、调试。 ⑥当程序完成之后,点击Rebuild all target files按钮(重新编译所有目标
文件) 进行程序调试、查错,在程序下面的提示框Output window中点击出错的提示,
进行程序改错,当程序没有错误的时候,出现如下图4.4.3的对话框。
图4.4 .3正确编译时对话框
5. 系统仿真
5.1 proteus仿真
在完成了电路图的仿真电路连接后,注意原件的封装以及规格,注意元件之间的连接,合理的布局。将keil 中的程序导入单片机内,按下proteus 左下角的三角形按钮进行模拟仿真运行。
倒计时的初始化完成之后,操作者按下开始按键run ,倒计时开始运行。数码管设置的初始值为20秒,所以由20秒开始倒计时。如下图5.11所示。直至程序运行至00时,数码管停止变化。当数码管显示00时,代表程序运行完成,此时,蜂鸣器会发出信号,进行提示。如果在运行过过程中,在要求停止的情况下,课按下stop 键,系统就会停止运行。
图5.1.1
倒计时程序运行之后,操作者按下开始按键stop 键,倒计时器停止运行。如下图
5.1.2所示
图5.1.2
当要求重新开始计时时,可按下reset 键进行复位。当程序运行完成后,显示器将会停止数字滚动,一个完整的运行周期运行完毕。
总结
在本设计过程中,首先碰到的问题是对单片机系统的选择。在对各种单片机系统的功能特性深入了解以后,结合应用场合,性价比综合考虑,进行比较,最后确定最优方案。
经过一个星期的反复理论分析和实践设计,完全实现了当初预期制作所要完成的功能!将编好的程序存入控制系统AT89S52中,通过对锁存器的段和位的开、关实现数码管的显示。本设计中设计了开始、暂停、复位按键,方便控制的多功能化。当按下开始按键时,系统自动实施自减至运行一个周期为止。假如在运行中需要停止,可按下暂停按键实现停止。待需要再次继续运行的时候可按下开始按键。复位按键主要是方便在操作过程中重新开始运行。
本次毕业设计的重点是对程序的设计,尽管本次的设计任务适量,但还是遇到了很多的问题。刚选定毕业设计题目的时候,自己对整个毕业设计有模糊的思路,盲目的查了不少资料,可以说是找到了很多没有多大帮助的资料。在导师的指导和自己的努力下,短短的一个月多时间里我完成了基于单片机控制的倒计时系统。通过对元器件的选择、电路原理图的设计、板图的设计、程序的设计,知道了自己知识的欠缺,也同时让我学会了反向思维的方法,应该先做哪一步,后做哪一步,应该如何查找自己所需的资料。并且最终实现了毕业设计的功能。但是由于自己的知识水平还很有限,设计中难免会出现错误和不足之处,欢迎老师及同学们帮我指出,自己一定会认真改正。
致谢
感谢申红军老师的指导和同学们的帮助我们组完成了这次电子电路制作实训,在此过程中,首先感谢申红军老师在知识给予我们的引导与支持,从开始的Protel99se 入门到最后的基本融会贯通都离不开申红军老师的点滴指导,最后到设计中遇到的难点凝点得到了申红军老师。其次还得感谢我们小组的成员谢磊给我的帮助他在PCB 板的制作、电路的调试方面给了帮助。
最后向申红军老师说声感谢,感谢您的无私指导!同时向我们小组同学说一声谢谢,谢谢积极配合和帮助!
参考文献
[1]李朝青. 单片机原理及接口技术(简明修订版)北京航空航天大学出版社,1998
[2]王文杰,徐文斌。单片机应用技术,治金工业出版社,2008
[3]阎石. 数字电子技术基础(第三版). 北京高等教育出版社,1989
[4]高明远.Protel Dxp基础与应用(修订版).科学出版社,2007。
[5]郑步生,吴渭.Multisim200l 电路设计及仿真入门与应用[M].电子工业出版社,2002.
[6]沈美明,温冬婵.IBM —PC 汇编语言程序设计[M].清华大学出版社,2001.
[7]汪吉鹏.微型机原理与接口技术(第二版),高等教育出版社,2004.
程序:
#include
sbit K1=P2^0;//加1
sbit K2=P2^1;//减1
sbit K3=P2^2;//暂停
sbit K4=P2^3;//启动
sbit S0=P3^6;
sbit S1=P3^7;
sbit F=P2^5; //蜂鸣器
sbit LED=P2^4;
void disp (unsigned char n);
unsigned char m=0;
unsigned char n=10;
unsigned char code
D[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(unsigned int a)
{ unsigned char b;
while(--a)
{for(b=0;b
}
void main()
{EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=0;
while(1)
{disp(n);
if(K1==0){while(K1==0);disp(++n);}
if(K2==0){while(K2==0);disp(--n);}
if(K3==0){while(K3==0);TR0=0;disp(n);}
if(K4==0){while(K4==0);TR0=1;disp(n);}
if(n==0){F=~F;}}
}
void disp (unsigned char n)
{unsigned char i,j;
i=n/10;
j=n%10;
P1=D[i];
S0=0;
delay(20);
P3=0xff;
P1=D[j];
S1=0;
delay(20);
P3=0xff;
}
void ds() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++m>19)
{n--;
if(n==0){LED=0;F=0;while(1) disp(0);m=0;} m=0;}
}