本科毕业设计之基于51单片机控制的60秒倒计时系统设计
摘 要
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。由于单片机具有体积小,易于产品化、面向控制、集成度高、功能强、可靠性高、价格低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领域中得到了广泛的应用。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。但是仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本次设计采用C语言编程,通过倒计时子程序模块、矩阵键盘扫描模块、中断等子程序的正确调用,完成了可以随时设置初值的基于51单片机控制的60秒倒计时系统。
关键词:倒计时 单片机 KeiluVision3 LED数码显示器
目 录
1 MCS-51 单片机硬件结构及原理 ............................................ 1
1.1MCS-51系列单片机结构 .................................................. 1 1.1.1MCS-51单片机的基本组成 .............................................. 1 1.1.2内部基本结构 ........................................................ 3 1.2MCS-51单片机存储器安排 ................................................ 6 1.2.1存储器空间安排 ...................................................... 6 1.2.2片内存储器 .......................................................... 6 2 课程设计的目的和任务 ................................................... 9 2.1单片机秒表课程设计的概述 .............................................. 9 2.2课程设计思路及描述 .................................................... 9 2.3 课程设计任务和要求 .................................................. 10 3 软件与硬件设计 ........................................................ 11 3.1系统硬件方案设计 ..................................................... 11 3.2软件方案设计 ......................................................... 11 3.3 生“HEX”文件的步骤 ................................................. 12 4 程序编写与课程设计效果 ................................................ 15 4.1 源程序及注释 ........................................................ 15 4.2原理图分析 ........................................................... 15
4.3课程设计效果 ......................................................... 18
总 结 .................................................................. 19 致 谢 .................................................................. 20 参考文献 ................................................................ 21
单片机60秒倒计时
1 MCS-51 单片机硬件结构及原理
1.1 MCS-51系列单片机结构
1.1.1 MCS-51单片机的基本组成
1 总体结构
图1-1单片机的总体结构 2. MCS-51单片机外部引脚及其说明
最常见的封装形式是40引脚双列直插式DIP(Dual In-line Package)
尚有44引脚的无引线芯片载体封装PLCC(Plastic Leaded Chip Carrier)
P V1 1.0CC40 2 P P 39 1.10.0
P P 3 38 1.20.1
P 4 P 37 0.21.3P 36 P 0.31.45 P P 6 1.535 0.4P P 7 0.534 1.68031 8 P P 33 0.61.7P 8051 RST/VPD 9 0.732
RXD/P 10 31 3.08751 EA/Vpp TXD/P 11 30 3.1ALE/PROG 12 29 INT/P 03.2PSEN 13 28 INT/P P 13.32.714 27 T0/P P 3.42.615 26 T1/P P 3.52.516 25 WR/P 3.6P 2.417 24 RD/P 3.7P 2.318 23 XTAL P 22.219 22 XTAL P 12.120 21 V P SS2.0
图1-2 MCS-51单片机外部引脚及说明 其中两条电源线,两条外接晶体,4条控制或作电源复用,32条I/O引线。 ? 电源引脚:2条
V: +5V CC
1
单片机60秒倒计时
V: 接地 SS
? 外接晶体:2条,接石英晶体构成自激振荡器
? 控制线:4条
? EA/V: 程序存储器选择,编程电源 输入线 PP
? 1 访问片内程序存储器,寻址范围为0000H,0FFFH
EA,?
? 0 访问片外程序存储器(用于片内无ROM/EPROM型) V: 用于片内EPROM型,在编程固化期间加编程高压。 PP
? RST: 复位输入 (VPD:对HMOS芯片为片内RAM掉电保护备用电源)
+5V 10μ10μ +5V F C F C11RST RST RST +5V 8031 8031 8031 8051 R 1 R 28051 8051 8751 8.2KΩ C R 212008751 8751 22μ 8.2KΩ R Ω 1 F
(a)上电复位电(b)按键电平复位电(c)按键脉冲复位电
路 路 路
图1-3 复位电路
保持两个机器周期的高电平便复位。推荐此引脚与V之间接一个10μf电容,与CC
V之间接一个下拉电阻8.2k,便上电复位。 SS
? ALE/PROG,(外部扩展存储器低位字节)地址锁存允许/编程脉冲输入
ALE (Address Latch Enable):当访问外部存储器时,用该输出脉冲锁存地址的低位字节。
ALE输出正脉冲的频率为晶体频率的1/6。但在访问外部数据存储器时,即运行MOVX指令时,将跳过一个ALE脉冲,即这时的频率是晶体频率的1/12。
PROG:编程脉冲输入,用于片内EPROM型单片机编程期间输入编程脉冲。
? PSEN:外部程序存储器读信号输出。
用以区分外部数据存储器RAM的读信号RD(P3.7)。其写信号WR是P3.6。 ? I/O接口:4个8位的I/O接口,,P0、P1、P2和P3口,每个口都有锁存器、一个输出驱动器和一个输入缓冲器。其中P0口是三态开漏双向口,而P1、P2和P3口都是准双向口,内部都有固定的上拉电阻。
特点:一口多用、分时复用
2
单片机60秒倒计时
? P0口: ? 作输出时,开漏电路需加上拉电阻 不需要扩展时此口可作一般I/O口用?
? 作输入时,需要先写入1,使之浮置 外接存储器时,分时作为扩展电路的低8位地址和数据总线复用,这时由P2口提供高8位地址。
? P1口:内有固定上拉电阻,每条I/O线都可单独用作输入或输出。要用作输入,必须先写入1,使输出驱动器的FET截止,通过上拉电阻置为高电平。 复位以后,自动对其写入1,置为输入状态。
? P2口:在外接存储器时,作为高8位地址总线。
? P3口:内有固定的上拉电阻,可作为通用I/O口用,也可通过把相应位置1,使它具有以下专用功能:
P3.0 RXD串行输入口
P3.1 TXD 串行输出口
P3.2 INT0 外部中断O
P3.3 INT1 外部中断I
P3.4 T0 定时器O的外部输出
P3.5 T1 定时器I的外部输出
P3.6 WR 外部RAM写信号
P3.7 RD 外部RAM读信号
1.1.2 内部基本结构 (1) 运算器
主要由8位的算术逻辑运算单元ALU、两个8位的暂存器TMP1和TMP2、8位累加器ACC、寄存器B和程序状态字寄存器PSW组成。
? ALU:可对4位、8位(、16位)数据进行操作和处理。
如加、减、乘、除、增量、减量、十进制数调整、比较、逻辑与、或、异或、求补循环移位等操作。
? ACC:累加器(Accumulator)这是使用最频繁的寄存器,它本身没有运算功能,它配合ALU完成算术和逻辑运算。在算术和逻辑运算中,参与运算的两个操作数必须有一个是在A累加器中,运算结果也存放在A累加器中。
? B:8位寄存器,在乘和除法运算中用来存放一个操作数和部分的运算结果。在不作乘除用时,可作为一般通用寄存器来使用。
? PSW:程序状态字寄存器,8位寄存器,用来提供当前指令操作结果引起的状态变化信息特征,以供程序查询和判断用。这些标志如有无进位、半进位、溢出等信息。
(2) 控制器
控制器包括指令寄存器、指令译码器和定时控制逻辑电路等。这部分是整个CPU的控制中枢。控制过程是取指?译码?控制。
3
单片机60秒倒计时
? 指令寄存器和指令译码器:
从存储器中取出指令?指令寄存器?指令译码器翻译成控制信号,再通过定时控制电路,在规定的时刻向有关部件发出相应的控制信号,如寄存器传送、存储器读写、加或减算术操作、逻辑运算等命令,其动作的依据就是该时刻执行的指令。 ? 时钟和定时电路:
CPU的操作需要精确的定时,这是用一个晶体振荡器产生稳定的时钟脉冲来控制的。单片机内部已集成了振荡器电路,只需要外接一个石英晶体和两个频率微调电容就可工作。其频率范围为1.2,12MHz。
* 振荡周期:定时信号振荡器频率的倒数,用P表示。
如6MHz时为 1/6μS,12MHz时为 1/12μS。
* 时钟周期:对振荡周期二分频,它是振荡周期的两倍。又称状态周期,用S表示,其前半周期为P1,后半周期为P2。
* 机器周期:一个机器周期含6个时钟周期,分别用S1,S6表示。含12个振荡周期,分别用S1P1、S1P2„S6P2表示。
* 指令周期:完成一条指令所需要的时间。
一个指令周期一般含1,4个机器周期。大部分指令是单字节单周期指令,少数是单字节双周期、双字节双周期指令,只有乘法和除法指令占用4个机器周期。
指令周期
机器周期 机器周期
S S1 S S S S S S S S S S42345612356
P P P P P P P P P P P P P P P P P P P P P PP P 121212212121212121212121P XTAL 2 2
(OSC) 振荡周期
时钟周期
图1-4各种周期的相互关系
(3) 存储器
根据不同的型号,不同的芯片内部可有不同的存储器配置,一般片内可以有两类存储器:程序存储器(ROM、EPROM、EEPROM等)和数据存储器RAM。它们是两个完全分开的各自独立的存储空间。详细情况在存储器安排一节介绍。
4
单片机60秒倒计时
存储器类型 EPROM RAM 掩膜ROM 单片机系列
MCS51 / / 128 B
-51 子系列 80
31 4KB / 128 B 80
51 / 4 KB 128 B 87
51 52 / / 256 B 子系列 80
32 8KB / 256 B 80
52 / 8 KB 256 B 87 52
表1-1 存储器型号表
(4) 输入和输出接口
从结构安排上看,MCS-51单片机有4个8位的并行I/O接口P0、P1、P2、P3,当采用片内存储器而不再片外扩展存储器时,它们都是既可输入也可输出的(准)双向接口,这些端口的地址与RAM统一编址,可以把它们当作寄存器来看待。但当需要在片外扩展存储器芯片时,P2口就作为高8位地址总线使用,同时P0既作为8位的数据总线又作为低8位的地址总线分时复用。详细结构后面介绍。
(5) 其他部件
定时器,计数器、通信串行口、中断控制逻辑
? 定时器,计数器
MCS-51单片机片内有2个16位的定时器,计数器。详细结构和用法后面介绍。 ? 通信串行口
MCS-51单片机片内有一个全双工异步通信串行接口。详细结构和用法后面介绍。 ? 中断控制逻辑
MCS-51单片机片内有可实现五个中断源二个不同优先级的中断控制逻辑。详细结构和用法后面介绍。
(6) 布尔处理机,,位处理机
可直接位寻址、位操作,构成一个位处理机。有位处理指令系统计17条指令,位处理累加器Cy。在片内RAM中,可对16个字节(20H,2FH)的16×8=128位直接寻址,其位地址从00H , 7FH。(也可字节寻址20H , 2FH)。
5
单片机60秒倒计时
在寄存器中可对11个字节的专用寄存器(80H、88H、90H、98H、A0H、A8H、B0H、B8H、(C8H)、D0H、E0H、F0H单元)的(11×8-3)/(12×8-3)计85/93位直接寻址,其位地址从80H , F7H(中间不完全连续)。其中包括P0 , P3的各位I/O口。
这提供了面向控制的功能,可简化、优化实时控制程序设计,实现复杂的组合逻辑功能。
1.2 MCS-51单片机存储器安排
存储器空间安排 1.2.1
程序存储器与数据存储器严格分开
数据存储器片内与片外严格分开
片内---程序存储器(8×51 4kB×8)
有4个物理存储空间: 数据存储器 256 Bytes
片外---程序存储器(8×51 60 kB×8, 8031 64kB×8)
数据存储器 64 kB×8
但仅有3个逻辑存储空间: 程序存储器 64 kB×8
片内数据存储器 256 Bytes
片外数据存储器 64 kB×8
FFH F0H SFR FFFFH FFFFH E0H 专寄 D0H 用 B8H 存 寄外 部 B0H 外部 存器 器A8H RAM 中A0H ROM 位 98H 通用 寻90H (I/O口 址 RAM区 88H 地址) 80H 80H
7FH 位寻址区
30H 1000H
2FH
20H 0FFFH 0FFFH 内部 外部 1FH
ROM ROM 工作寄
(EA=1) (EA=0) 0000H 存器区 0000H 0000H 00H
程序存储器 外部数据存储器 内部数据存储器
(c) (b) (a)
图1-5 存储器空间安排
1.2.2 片内存储器
? 片内RAM区(128单元)
6
单片机60秒倒计时
? 寄存器区(00H,1FH):32个单元通用寄存器或工作寄存器,4组寄存器,每组8个单元。每组都以R0,R7编号。任一时刻只能使用其中的一组,由PSW中的RS1、RS0指定。
RS RS 10选择工作寄存器组
0 0 0组(00H,07H)
0 1 1组(08H,0FH)
1 0 2组(10H,17H)
1 1 3组(18H,1FH)
? 可位寻址区(20H,2FH):16个单元,128位。既可作一般字节寻址的字节单元,也可以每一个单元中的每一位进行位操作,作为布尔处理机中的存储空间。 ? 普通RAM区(30H,7FH):80个单元,作为用户通用RAM存储单元。如需要用到(08H,1FH)单元的寄存器,一般可把堆栈存储区设置在该区域中。
? SFR区(21个)
? PSW(Program Status Word):程序状态字寄存器
其中,CY:进借位标志;AC:辅助进借位标志; F:用户标志; RS、RS:工作寄010存器组选择;OV:溢出标志;P:奇偶标志。
(1) Cy进位标志。当执行算术运算时,最高位向前进位或借位时,Cy被置位。在执行逻辑运算时,可以被硬件或软件置位或清零。在布尔处理机中,它被认为是位累加器。 (2)Ac辅助进位标志。进行加法或减法运算时,当低四位向高四位进位或借位时,Ac被置位,否则就被清零。Ac被用于十进制调正,详见DA A指令。
(3)F0标志。是用户定义的一个状态标志,可以用软件来使它置位或清零,也可以用软件测试F0以控制程序的流向。
(4)RS1,RS0寄存器区选择控制位1和0。可以用软件来置位或清0,以确定工作寄存器区。RSl,RS0与工作寄存器区的对应关系如表2—3所示。
(5)OV溢出标志。当执行算术运算ADD或SUBB指令时,对带符号数作加、减运算时,OV,1,表示加、减运算的结果超出8位带符号数的范围(+127,-128)。
OV标志常用C6和C7的关系来表示。
OV=C6?C7
当进行加、减运算时,C6表示D6位向D7位有进位或借位,C7表示D7位向进位
7
单片机60秒倒计时
位有进位或借位。
在MCS-51单片机中,无符号数乘法指令MUL和除法指令DIV的执行结果也会影响溢出标志。
(6)奇偶标志。表示累加器A中1的位数的奇偶数。若1的位数为奇数,则P置位,偶数,则清0。该标志在每个指令周期由硬件来置位或清o。
此标志位对串行通信中的数据传输有重要意义。在串行通信中常用奇偶校验来检验数据传输的误码率。在发送端可根据P的值对数据的奇偶位置位或清零,若通信协议中规定采用奇校验的办法,则P,1,当数据传输到接收端,若P,1,则表示传输过程中,奇偶无错误,可以接收,否则奇偶有错,不能接收。
? DPTR:数据指针 DPTR=DPH+DPL
83H 82H
这是一个16位的寄存器,用来存放外部数据存储器的16位地址,当对64kB的外部数据存储器寻址时,可作间址寄存器,用下列两条指令来传送数据:
MOVX A,@DPTR
MOVX ,DPTR,A
在访问程序存储器时,DPIR可用作基址寄存器,以读取存放在程序存储器内的表格常数;
MOVC A,,A十DPTR
DPTR可以分成两个8位寄存器:高位字节寄存器DPH和低位字节寄存器DPL,既可作一个16位寄存器用,也可作两个8位寄存器来用。
8位寄存器 ? SP,堆栈指针,
复位初始化后,SP=07H,从08H开始存放。因为08H,1FH是工作寄存器1,3区,如要用到这些区,可重新设置SP。
8
单片机60秒倒计时
2. 课程设计的目的和任务
2.1单片机秒表课程设计的概述
一、课程设计题目
秒表系统设计——用At 89C51设计一个2位LED数码显示“秒表”,显示时间为0.0~60秒,每毫秒自动加一,每十毫秒自动加一秒。
二、增加功能
增加一个“复位0.0”按键(即清零),一个“暂停”和“开始”按键,一个“复位60”按键(用来60秒倒计时),一个倒计时“逐渐自减”按键。
三,课程设计的难点
单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程。
四、课程设计内容提要
本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有一个开关按键:即秒表开始键(同时也用作暂停键), key1按键按下去时数码管复位为“60”(用于倒计时),key4按键按下去则是数码管开始“逐渐自减”倒计时。
五、课程设计的意义
1) 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。
2) 掌握定时器、外部中断的设置和编程原理。
3) 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4) 该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义
六、课程设计软件
MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。 2.2课程设计思路及描述
该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7作为按键的入口;定时器T0作为每0.1秒减一的定时器;定时器T1作为每0.1秒加一的定时器。其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。
方框图如图所示:
9
单片机60秒倒计时
MCS-51 开关
AT89C52RLED显示
C
图2-1 数字秒表设计导向
2.3 课程设计任务和要求
1(设计指标
了解8051芯片的的
工作原理
数字放映机工作原理变压器基本工作原理叉车的结构和工作原理袋收尘器工作原理主动脉球囊反搏护理
和工作方式 ,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、倒计时清零等功能,精确到0.1秒。
要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。 2(设计要求
画出电路原理图(或仿真电路图);
软件编程与调试;
电路仿真与调试。
10
单片机60秒倒计时
3(软件与硬件设计
3.1系统硬件方案设计
单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
2个数码
管显示
12.0MHz晶振
电源开关
STC89C51R C
1个独立电源指示 式的按键 灯
图3-1系统硬件结构框
3.2软件方案设计
此次选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图如图所示:
11
单片机60秒倒计时
开始
系统初始化
While
(1)
数码管显示选择
按键的扫描及处
理
图3-2系统软件流程图
3.3 生“HEX”文件的步骤
1 新建工程
图3-3新建工程
12
单片机60秒倒计时 2 “HEX”文件输出设置
图3-4“HEX”文件输出设置 3 新建“C”文件
图3-5新建“C”文件 4 写入程序
图3-6 写入程序
13
单片机60秒倒计时 5 运行程序使之输出“HEX”文件
图3-7 运行程序使之输出“HEX”文件
14
单片机60秒倒计时 4 程序编写与课程设计效果
4.1 源程序及注释
可键盘设置倒计时时间
#include
unsigned char num,t,n; unsigned char code table[ ]={0xc0,0x90,0x80,0xf8 ,0x82,0x92,0x99,0xb0,0xa4,0xf9};
unsigned char code table1[ ]={0x92,0x99,0xb0,0xa4,0xf9,0xc0};
void main()
{
num=0;
t=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P0=0xc0;
P2=0x82;
while(1)
{
if(t==20)
{
t=0;
num++;
if(num==10)
num=0;
P2=table[num];
if(num==1)
{
P0=table1[n];
n++;
}
}
if(n==6)
15
单片机60秒倒计时
{
if(num==0)
while(1);
}
}
}
void exter0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
}
4.2原理图分析
图4-1 原理图
16
单片机60秒倒计时 如图4-2 AT89C51
图4-2 原件图 如图4-3 7段数码显示管
图4-3 7段数码显示管
如图4-4 复位按钮
图4-4复位按钮
-5 电容 如图4
图4-5 电容
17
单片机60秒倒计时
如图4-6 电阻
图4-6 电阻 4.3课程设计效果
图4-8 原理图
18
单片机60秒倒计时
总 结
体会:为期一个星期的课程设计终于落下了帷幕 。万事开头难。在刚开始课程设计的时候,大家都有点茫然而且无从下手的感觉。首先是题目的选择,在没有决定题目之前,查找资料毫无目的,基本是查查这个资料,待会又搜索另一个。这大大的浪费了时间。最后,经过老师的指导及自己查阅相关的资料,逐渐有了自己的设计想法,制定出了系统的结构框图。终于定下了题目。定下了题目之后,做起来就比较有目的。在指导老师的提示下,我们在网上查到了一些相关的资料,再综合书本上学到的一些知识,参考网上的程序,经过调试修改后,最终实现了题目设计的要求。
通过学习单片机这门课程设计,不仅了解了AT89c51的功能、还加强了单片机的理论知识得了解,而且进一步接触并了解到了软硬件的结合这个实践问题。不仅如此,此次设计也加强了我们动手培养了我的动手能力及分析思考和解决问题的能力,更令我的创造性思维得到拓展。
19
单片机60秒倒计时
致 谢
一周的实习生活短暂而难忘,在设计中,李老师给我们提出许多意见,这些都将使我们终身受用。领导及各位指导老师刻苦的工作作风,严谨的教学风格,精湛的教学技艺,崇高的敬业精神和博大的爱生心怀更是为我们展现了作为一名合格、称职的人民教师所必须具备的素质与精神,这也是我们今后努力的方向。
最后,让我们真诚地道一声谢谢,感谢李老师给予我们的支持与指导。
20
单片机60秒倒计时
参考文献 [1] 李朝青,单片机原理与接口技术,北京航空航天大学出版社。 [2] 楼然苗,单片机课程设计指导,北京航空航天大学出版社。 [3] 于海生,微型计算机控制技术[M],清华大学出版社,1999.6。
21