您的当前位置:首页基于单片机的计数器

基于单片机的计数器

2024-05-15 来源:飒榕旅游知识分享网
第一章 绪论

i

目 录

第一章 绪 论 ...................................................... 1 1.1 选题背景 ....................................................... 1 1.1.1 数字单片机的技术发展 ....................................... 1 1.1.2 以单片机为核心的嵌入式系统 ................................. 2 1.2 本研究课题的发展趋势 ........................................... 3 1.3 设计研究的要求及主要内容应解决的问题 ........................... 4 第二章 整体设计方案 ............................................... 5 2.1 设计方案选择 ................................................... 5 2.2 设计原理 ....................................................... 5 第三章 硬件电路设计 ............................................... 7 3.1 最小系统设计 ................................................... 7 3.2 原理图 ........................................................ 10 3.3 重要元器件介绍 ................................................ 11 3.3.1 单片机介绍 ................................................ 11 3.3.2 PCB版的介绍 ............................................... 15 3.3.3 数码管的介绍 .............................................. 16 3.4 PROTEUS软件介绍 ................................................ 18 3.5 电路仿真 ...................................................... 20 3.6 PCB图 ......................................................... 22 第四章 软件设计 .................................................. 23 4.1 系统软件设计流程图 ............................................ 23 4.2 C语言介绍 ..................................................... 24 4.3 程序 .......................................................... 25 4.4 KEIL软件调试 .................................................. 27 4.4.1 软件介绍 .................................................. 27 4.4.2 系统概述 .................................................. 27

ii

第一章 绪论

4.4.3 Keil C51单片机软件开发系统的整体结构 ...................... 27 第五章 焊接调试与功能说明 ........................................ 29 5.1 系统性能测试与功能说明......................................... 29 5.2 软件调试问题及解决............................................. 29 结 论........................................................... 31 参 考 文 献 ...................................................... 33 致 谢 .......................................................... 35 附 录 ........................................................... 37

第一章 绪论

1

第一章 绪 论

本章介绍了本研究课题的背景及意义,阐述了其发展状况。对当前各种计数器的特点及其计数器的未来发展趋势作了概况。另外,简要说明了本文所做的工作。

1.1 选题背景

随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。

现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。 计数器的应用范围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。 1.1.1 数字单片机的技术发展 1.内部结构的变化

单片机在内部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,A/D转换器,D /A转换器,串行通信接口,Watchdog电路,LCD控制器等。

有的单片机为了构成控制网络或形成局部网,内部含有局部网络控制模块CAN。例如,Infineon公司的C 505C,C515C,C167CR,C167CS-32FM,81C90。因此,这类单片机十分容易构成网络。特别是在控制,系统较为复杂时,构成一个控制网络十分有用。为了能在变频控制中方便使用单片机,形成最具经济效益的嵌入式控制系统。有的单片机内部设置了专门用于变频控制的脉宽调制控制电路,

2

M=999的计数器的设计与实现

这些单片机有Fujitsu公司的MB89850系列、MB89860系列;Motorola 公司的MC68HC08MR16、MR24等。在这些单片机中,脉宽调制电路有6个通道输出,可产生三相脉宽调制交流电压,并内部含死区控制等功能。

特别引人注目的是:现在有的单片机已采用所谓的三核(TrCore)结构。这是一种建立在系统级芯片(System on a chip)概念上的结构。这种单片机由三个核组成:一个是微控制器和DSP核,一个是数据和程序存储器核,最后一个是外围专用集成电路(ASIC)。这种单片机的最大特点在于把DSP和微控制器同时做在一个片上。把它和传统单片机结合集成大大提高了单片机的功能。这是目前单片机最大的进步之一。这种单片机最典型的有Infineon公司的TC10GP;Hitachi公司的SH7410,SH7612等。 2.功耗、封装及电源电压的发展

现在新的单片机的功耗越来越小,特别是很多单片机都设置了多种工作方式,这些工作方式包括等待,暂停,睡眠,空闲,节电等工作方式。

现在单片机的封装水平已大大提高,随着贴片工艺的出现,单片机也大量采用了各种合符贴片工艺的封装方式出现,以大量减少体积。扩大电源电压范围以及在较低电压下仍然能工作是今天单片机发展的目标之一。目前,一般单片机都可以在3.3~5.5V的条件下工作。而一些厂家,则生产出可以在2.2~6V的条件下工作的单片机。 3.工艺上的发展

现在的单片机基本上采用CMOS技术,但已经大多数采用了0.6?m以上的光刻工艺,有个别的公司,如Motorola公司则已采用0.35?m甚至是0.25?m技术。这些技术的进步大大地提高了单片机的内部密度和可靠性。 1.1.2 以单片机为核心的嵌入式系统

单片机的另外一个名称就是嵌入式微控制器。目前,把单片机嵌入式系统和Internet连接已是一种趋势。要实现嵌入式设备和Internet连接,就需要把传统的Internet理论和嵌入式设备的实践都颠倒过来。为了使复杂的或简单的嵌入式设备,例如单片机控制的机床、单片机控制的门锁,能切实可行地和Internet连接,就要求专门为嵌入式微控制器设备设计网络服务器,使嵌入式设备可以和

第一章 绪论

3

Internet相连,并通过标准网络浏览器进行过程控制。

EmWare公司提出嵌入式系统入网的方案--EMIT技术。这个技术包括三个主要部分:即emMicro, emGateway和网络浏览器。

目前,单片机应用中提出了一个新的问题:这就是如何使8位、16位单片机控制的产品,也即嵌入式产品或设备能实现和互联网互连?

TASKING公司目前正在为解决这个问题提供了途径。该公司已把emWare的EMIT软件包和有关的软件配套集成,形成一个集成开发环境,向用户提供开发方便。嵌入互联网联盟ETI(embed the Internet Consortium)正在紧密合作,共同开发嵌入式Internet的解决方案 。

1.2 本研究课题的发展趋势

自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发 展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。单片机的应用在后PC时代得到了前所未有的发展,但对处理器的综合性能要求也越来越高。综观单片机的发展,以应用需求为目标,市场越来越细化,充分突出以“单片”解决问题,而不像多年前以MCS51/96等处理器为中心,外扩各种接口构成各种应用系统。单片机系统作为嵌入式系统的一部分,主要集中在中、低端应用领域(嵌入式高端应用主要由DSP、ARM、MIPS等高性能处理器构成),在这些应用中,目前也出现了一些新的需求,主要体现在以下几个方面: (1)以电池供电的应用越来越多,而且由于产品体积的限制,很多是用钮扣电池供电,要求系统功耗尽可能低,如手持式仪表、水表、玩具等。

(2)随着应用的复杂,对处理器的功能和性能要求不断提高。既要外设丰富、功能灵活,又要有一定的运算能力,能做一些实时算法,而不仅仅做一些简单的控制。

(3)产品更新速度快,开发时间短,希望开发工具简单、廉价、功能完善。特别是仿真工具要有延续性,能适应多种MCU,以免重复投资,增加开发费用。 (4)产品性能稳定,可靠性高,既能加密保护,又能方便升级。

4

M=999的计数器的设计与实现

1.3 设计研究的要求及主要内容应解决的问题

要求:

1.整个系统有较强的抗干扰能力. 2.计数范围:000~999. 3.将计数值准确显示出来. 应解决问题:

基于单片机构成的产品自动计数器研究的主要内容包括:如果构成检测电路、MCS-51单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示驱动模块的选择、MCS-51单片机的扩展。在这个设计中主要需要解决的问题便是如何提高MCS-51单片机的抗干扰能力以及稳定性。

第二章 整体设计方案

5

第二章 整体设计方案

2.1 设计方案选择

方案一:

采用多种数字逻辑电路来实现逻辑控制、主门、门控、计数单元的设计要求,这样设计的电路整体比较复杂,而且不宜完成发挥部分的功能要求。所以方案一不采用。 方案二:

可以采用FPGA来实现逻辑控制、主门、门控、计数单元的设计要求,并且设计方便,但由于对FPGA的技术原理掌握不够熟练,所以放弃方案二。 方案三:

系统采用8051为核心的单片机控制系统,实现原理图中的逻辑控制、主门、门控、计数的设计要求

单片机计数器的方式控制寄存器TMOD中的GATE位=1时,可以很方便的进行INT0引脚的外部输入信号的时间间隔测量。且单片机的控制电路很容易实现扩展,比如语音模块、测温I2C模块、时钟模块、A/D模块等。故采用方案三。

2.2 设计原理

利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-999计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-999计数的十位数显示;

硬件电路图如图2-1所示:

6

M=999的计数器的设计与实现

图 2-1 硬件电路图

系统板上硬件连线

1)把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

2)把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;

3)把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;

第三章 硬件电路设计

7

第三章 硬件电路设计

3.1 最小系统设计

图3-1 单片机最小系统的结构图

单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。 1.电源引脚 Vcc 40 电源端 GND 20 接地端

工作电压为5V,另有AT89LV51工作电压则是2.7-6V,引脚功能一样。 2.外接晶体引脚

8

M=999的计数器的设计与实现

图3-2 晶振连接的内部、外部方式图

XTAL1 19 XTAL2 18

XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。 3.复位 RST 9

在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由

第三章 硬件电路设计

9

外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。复位操作不会对内部RAM有所影响。 常用的复位电路如下图所示:

图3-3 常用复位电路图

4.输入输出引脚

(1) P0端口[P0.0-P0.7] P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。

对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。

在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。

(2) P1端口[P1.0-P1.7] P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

对内部Flash程序存储器编程时,接收低8位地址信息。

(3) P2端口[P2.0-P2.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

10

M=999的计数器的设计与实现

对内部Flash程序存储器编程时,接收高8位地址和控制信息。

在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。

(4) P3端口[P3.0-P3.7]P2是一个带有内部上拉电阻的8位双向端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

3.2 原理图

图3-4 电路总图

第三章 硬件电路设计

11

3.3 重要元器件介绍

3.3.1 单片机介绍

1. MCS-51系列单片机简介

8051是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: ·中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 ·数据存储器(RAM):

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

图3-5 8051内部结构图

12

M=999的计数器的设计与实现

·程序存储器(ROM):

8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM):

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

·并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 ·全双工串行口:

8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。 ·中断系统:

8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路:

8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。

第三章 硬件电路设计

13

下图是MCS-51系列单片机的内部结构示意图3-6

图3-6 MCS-51结构图

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明: MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。 现在我们对这些引脚的功能加以说明:如图3-7

14

M=999的计数器的设计与实现

图3-7双列直插式封装引脚图

Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。

8051的复位方式可以是自动复位,也可以是手动复位。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。

见下图3-8为两种复位方式和两种时钟方式:

图3-8复位方式图与时钟方式图

·Pin30:ALE/

当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址

的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,

将用于输入编程脉冲。

第三章 硬件电路设计

15

·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16

位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。

·Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。在编程时,EA/Vpp脚还需加上21V的编程电压。 3.3.2 PCB版的介绍

PCB(PrintedCircuitBoard),中文名称为印制电路板,又称印刷电路板、印刷线路板,简单的说就是置有集成电路和其他电子组件的薄板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者,是低能耗、低污染的,由于它是采用电子印刷术制作的,故被称为“印刷”电路板。

印制电路板的设计是以电路原理图为根据,实现电路设计者所需要的功能。印刷电路板的设计主要指版图设计,需要考虑外部连接的布局、内部电子元件的优化布局、金属连线和通孔的优化布局、电磁保护、热耗散等各种因素。优秀的版图设计可以节约生产成本,达到良好的电路性能和散热性能。简单的版图设计可以用手工实现,复杂的版图设计需要借助计算机辅助设计(CAD)实现。

根据电路层数分类:分为单面板、双面板和多层板。常见的多层板一般为4层板或6层板,复杂的多层板可达十几层。 PCB板有以下三种主要的划分类型: 1.单面板

单面板(Single-Sided Boards) 在最基本的PCB上,零件集中在其中一面,导线则集中在另一面上。因为导线只出现在其中一面,所以这种PCB叫作单面板(Single-sided)。因为单面板在设计线路上有许多严格的限制(因为只有一面,布线间不能交叉而必须绕独自的路径),所以只有早期的电路才使用这类的板子。 2.双面板

双面板(Double-Sided Boards) 这种电路板的两面都有布线,不过要用上

16

M=999的计数器的设计与实现

两面的导线,必须要在两面间有适当的电路连接才行。这种电路间的“桥梁”叫做导孔(via)。导孔是在PCB上,充满或涂上金属的小洞,它可以与两面的导线相连接。因为双面板的面积比单面板大了一倍,而且因为布线可以互相交错(可以绕到另一面),它更适合用在比单面板更复杂的电路上。 3.多层板

多层板(Multi-Layer Boards) 为了增加可以布线的面积,多层板用上了更多单或双面的布线板。用一块双面作内层、二块单面作外层或二块双面作内层、二块单面作外层的印刷线路板,通过定位系统及绝缘粘结材料交替在一起且导电图形按设计要求进行互连的印刷线路板就成为四层、六层印刷电路板了,也称为多层印刷线路板。板子的层数就代表了有几层独立的布线层,通常层数都是偶数,并且包含最外侧的两层。大部分的主机板都是4到8层的结构,不过技术上理可以做到近100层的PCB板。不过因为这类计算机已经可以用许多普通计算机的集群代替,超多层板已经渐渐不被使用了。因为PCB中的各层都紧密的结合,一般不太容易看出实际数目,不过如果仔细观察主机板,还是可以看出来。 3.3.3 数码管的介绍

在本任务中用3位数码管显示当前数值的百,十,个,由于数码管个数多,如采用静态显示方式,则占用单片机的I/O口线太多,如果用定时器/计数器的串行移位寄存器工作方式及外接串入并出移位寄存器74LS164的方式,则电路复杂。所以,在数码管个数较多时,常采用动态显示方式。

3位数码管的相同段并联在一起,由一个6位I/O(P1口)输出字形码控制显示某一字形,每个数码管的公共端由另外一个I/O口(P0口)输出的字位码控制,即数码管显示的字形是由单片机I/O口输出的字形码确定,而哪个数码管点亮是由单片机I/O口输出的字位码确定的。3个数码管分时轮流循环点亮,在同一时刻只有1个数码管点亮,但由于数码管具有余辉特性及人眼具有视觉暂留特性,所以适当地选取循环扫描频率,看上去所有数码管是同时点亮的,察觉不出闪烁现象。动态显示方式所接数码管不能太多,否则会因每个数码管所分配的实际导通时间太少,使得数码管的亮度不足。在本任务中,为了简便,字形码和字位码都没由加驱动电路,在实际应用中应加驱动电路。数码管有共阴极和共阳极两种,

第三章 硬件设计电路

17

对于共阳数码管,字形驱动输出0有效,字位驱动输出1有效;而对于共阴数码管则相反,即:字形驱动输出1有效,字位驱动输出0有效

显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一, 发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图是共阳式、共阴式LED数码管的原理图和符号。

图3-9共阳式、共阴式LED数码管的原理图和数码管的符号图 显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位LED显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。

18

M=999的计数器的设计与实现

图3-10 数码管的硬件连接示意图

数码管使用条件:

a、使用电压段:根据发光颜色决定; b、小数点:根据发光颜色决定

c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流100mA

数码管使用注意事项说明:

(1)数码管表面不要用手触摸,不要用手去弄引角; (2)焊接温度:260度;焊接时间:1s (3)表面有保护膜的产品,可以在使用前撕下来。

3.4 proteus软件介绍

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路

第三章 硬件电路设计

19

仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 功能特点:

Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是: (1)原理布图

(2)PCB自动或人工布线 (3)SPICE电路仿真 革命性的特点: (1)互动的电路仿真

用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 (2)仿真处理器及其外围电路

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。 功能模块:

能原理图设计(ISIS)

丰富的器件库:超过27000种元器件,可方便地创建新元件; 智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;

智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间; 支持总线结构:使用总线器件和总线布线使电路设计简明清晰;

可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。 完善的电路仿真功能(Prospice)

PROSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;

超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设

20

第三章 硬件电路设计

计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;

多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入; 丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;

生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;

高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析;

独特的单片机协同仿真功能(VSM)

3.5 电路仿真

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

第三章 硬件电路设计

21

用PROTUES软件,画出M=999的计数器仿真图,得到的图如下所示。

图3-11 仿真图

PROTEUS 是单片机课堂教学的先进助手。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台

随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能

22

M=999的计数器的设计与实现

茯得愈来愈广泛的应用。

使用Proteus 软件进行单片机系统仿真设计, 是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。

3.6 PCB图

图3-12 PCB版电路

第四章 软件设计

23

第四章 软件设计

系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:

(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;

(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;

(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数; (4)绘制程序流程图; (5)合理分配系统资源;

(6)为程序加入注释,提高可读性,实施软件工程; (7)注意软件的抗干扰设计,提高系统的可靠性。

4.1 系统软件设计流程图

主程序先是开始,然后赋初值,本设计采用的是动态显示,所以在赋玩初值后显示程序不断被调用。

图4-1主程序流程图

24

M=999的计数器的设计与实现

4.2 C语言介绍

C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。

C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。

C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。

1.C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。

4.C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。

C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。

C语言具有较好的可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。

第四章 软件设计

25

4.3 程序

#include code unsigned char tab[]=

{0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20,0xA0,0x60,0x25,0x3C,0

x23,0x34,0x74};

unsigned char Dis_baiwei;//定义十位 unsigned char Dis_shiwei; //定义个位 unsigned char Dis_gewei;

void delay(unsigned int cnt) {

while(--cnt); } main() {

TMOD |=0x01;//定时器设置 10ms in 12M crystal TH0=0xd8; TL0=0xf0;

IE= 0x82; //打开中断 TR0=1;

while(1) {

//共阳数码管 0-9

26

M=999的计数器的设计与实现

P0=Dis_baiwei;//显示十位 P2=0x7f;

delay(300);//短暂延时 P0=Dis_shiwei; //显示个位 P2=0xbf; delay(300); P0=Dis_gewei; P2=0xdf; delay(300); } }

/********************************//* 定时中断 */ /********************************/ void tim(void) interrupt 1 using 1 {

static unsigned int second,count; TH0=0xd8;//重新赋值 TL0=0xf0; count++; if (count==100) { count=0;

second++;//秒加1 if(second==1000) second=0;

Dis_baiwei=tab[second/100];//百位显示值处理

Dis_shiwei=tab[(second%100)/10]; //十位显示处理

Dis_gewei=tab[(second%100)%10];//各位

}

第四章 软件设计

27

4.4 keil软件调试

4.4.1 软件介绍

Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 4.4.2 系统概述

目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

4.4.3 Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以

28

M=999的计数器的设计与实现

与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

第五章 焊接调试与功能说明

29

第五章 焊接调试与功能说明

5.1 系统性能测试与功能说明

走时:默认为计数状态,显示三位数,时间会按实际时间以秒为最小单位变化,从000—999的计数,按复位键,重000开始,重新计数。

5.2 软件调试问题及解决

软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。

仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。

首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。

30

M=999的计数器的设计与实现

结论

31

结 论

这次毕业设计让我受益匪浅。通过这次设计我对自己在大学三年时间里所学的知识得到了全面的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了这份论文。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。

通过这次毕业设计我发现,只有理论水平提高了,才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个设计十分有意义 我获得很深刻的经验。通过这次毕业设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。 我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。

32

M=999的计数器的设计与实现

参考文献

33

参 考 文 献

[1] 《单片机系统设计及工程应用》 雷思孝等 西安电子科技大学出版社

[2] 《电路基础》 吴大正 西安电子科技大学出版社 [3] 《c++程序与设计语言》 揣锦华等 西安电子科技大学出版社 [4] 《电子线路CAD实用教程》 潘永雄等 西安电子科技大学出版社 [5] 《MCS—51/96系列单片机原理及应用》 孙涵芳 北京航空航天大学出版社

34

M=999的计数器的设计与实现

致谢

35

致 谢

论文的完成标志着我的大学四年即将结束,也意味着,新的生活又将开始了。最近的半年则并行着找工作和写论文。其间的起起伏伏、悲喜得失,今天想来仍旧唏嘘不已。所幸我没有被失败击垮。自信、坚强、乐观的态度让我坚持到了最后,并且争取了最好的结局。

通过几个月的悉心设计,在指导教师的耐心指导下,我完成了毕业设计的工作。此次的毕业设计是我们四年来专业知识的综合运用,是对我们能力的综合考核。这不仅涉及到对基本原理的理解,也涉及到对问题的分析能力。

通过本次毕业设计,让我对我国电子软件有了新的认识。这也使我认识到了自己知识的匮乏和能力的有限。从而激励我在今后的学习和工作中更要努力的学习和不断的充实自己。在这里我尤其感谢老师。在他的耐心指导下,我才能成功的完成这次的毕业设计,在写论文时老师严格的要求我们,培养我们强烈的责任心和工作学习的积极性,并且耐心的解答论文中出现的问题。他还为我们指明了论文方向,校定论文方向。在他的要求下,我不仅完成了整个设计和论文,更重要的是锻炼了我分析问题和独立思考的能力。

最后,我再一次表达我对领导以及教过我所有的老师最衷心的感谢,是你们在我前进的道路上给以引导,并无私的教给我许多专业知识以及做人的道理。再次,让我对所有的老师及所有帮助过我的同学们致以最崇高的敬意。

“长风破浪会有时,直挂云帆济沧海。”这是我最喜欢的诗句。就用这话作为这篇论文的一个结尾,也是一段生活的结束。希望自己能够记取少年时的梦想,永不放弃。

36

M=999的计数器的设计与实现

附录

37

附 录

实物图:

因篇幅问题不能全部显示,请点此查看更多更全内容