基于单片机实现的定时器设计.docx

上传人:b****5 文档编号:28397459 上传时间:2023-07-13 格式:DOCX 页数:34 大小:516.42KB
下载 相关 举报
基于单片机实现的定时器设计.docx_第1页
第1页 / 共34页
基于单片机实现的定时器设计.docx_第2页
第2页 / 共34页
基于单片机实现的定时器设计.docx_第3页
第3页 / 共34页
基于单片机实现的定时器设计.docx_第4页
第4页 / 共34页
基于单片机实现的定时器设计.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于单片机实现的定时器设计.docx

《基于单片机实现的定时器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的定时器设计.docx(34页珍藏版)》请在冰豆网上搜索。

基于单片机实现的定时器设计.docx

基于单片机实现的定时器设计

第一章单片机的简介

一个8位的80c51微处理器,片内256字节数据存储器RAM/SFR,用以存放可以读写的数据,如运算的中间结果,最终结果以及欲显示的数据;片内4kb程序存储器FlashROM,用以存放程序,一些原始数据和表格;4个8位并行I/O口P0~P3,每个端口既可用作输入,也可用作输出;两个16位的定时器/计数器,每个定时器/计数器都可设置成计数方式,用以对外部事件进行计数,也可设置成定时方式,并可以根据计数或者定时的结果实现计算机控制;具有5个中断源,两个中断优先级的中断控制系统;一个全双工UART(通用异步接受发送器)的串行I/O口,用于实现单片机之间或者单片机与PC机之间的串行通信;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许震荡频率为24MHz;89c51与80c51相比具有节电工作方式,即休闲方式及掉电方式。

1.1中央处理器(CPU):

CPU是单片机内部的核心部件,是一个8位二进制数的中央处理单元,主要由运算器、控制器和寄存器阵列构成。

1.1.1运算器:

运算器用来完成算术运算和逻辑运算功能,它是89C51内部处理各种信息的主要部件。

运算器主要由算术逻辑单元(ALU)、累加器(ACC)、暂存寄存器(TMP1、TMP2)和状态寄存器(PSW)组成。

算术逻辑单元(ALU):

89C51中的ALU由加法器和一个布尔处理器组成。

累加器(ACC):

用来存放参与算术运算和逻辑运算的一个操作数或运算的结果。

暂存寄存器(TMP1、TMP2):

用来存放参与算术运算和逻辑运算的另一个操作数,它对用户不开放。

状态寄存器(PSW):

PSW是一个8位标志寄存器,用来存放ALU操作结果的有关状态。

1.1.2控制器:

控制器是单片机内部按一定时序协调工作的控制核心,是分析和执行指令的部件。

控制器主要由程序计数器PC、指令寄存器IR、指令译码器ID和定时控制逻辑电路等构成。

程序计数器PC是专门用于存放现行指令的16位地址的。

CPU就是根据PC中的地址到ROM中去读取程序指令码和数据,并送给指令寄存器IR进行分析。

指令寄存器IR用于存放CPU根据PC地址从ROM中读出的指令操作码。

指令译码器ID是用于分析指令操作的部件,指令操作码经译码后产生相应于某一特定操作的信号。

定时控制逻辑中定时部件用来产生脉冲序列和多种节拍脉冲。

1.1.3寄存器阵列:

寄存器阵列是单片机内部的临时存储单元或固定用途单元,包括通用寄存器组和专用寄存器组。

通用寄存器组用来存放过渡性的数据和地址,提高CPU的运行速度。

专用寄存器组主要用来指示当前要执行指令的内存地址,存放特定的操作数,指示指令运行的状态等。

1.1.4存储器:

89C51单片机内部有256个字节的RAM数据存储器和4 KB的闪存程序存储器(Flash),当不够使用时,可分别扩展为64KB外部RAM存储器和64KB外部程序存储器。

它们的逻辑空间是分开的,并有各自的寻址机构和寻址方式。

这种结构的单片机称为哈佛型结构单片机。

程序存储器是可读不可写的,用于存放编好的程序和表格常数。

数据存储器是既可读也可写的,用于存放运算的中间结果,进行数据暂存及数据缓冲等。

89C51单片机对外部电路进行控制或交换信息都是通过I/O端口进行的。

单片机的I/O端口分为并行I/O端口和串行I/O端口,它们的结构和作用并不相同。

并行I/O端口:

89C51有四个8位并行I/O端口,分别命名为P0口、P1口、P2口和P3口,它们都是8位准双向口,每次可以并行输入或输出8位二进制信息。

串行I/O端口:

89C51有一个全双工的可编程串行I/O端口,它利用了P3口的第二功能,即将P3.1引脚作为串行数据的发送线TXD,将P3.0引脚作为串行数据的接收线RXD。

1.1.5定时器/计数器:

89C51内部有两个16位可编程定时器/计数器,简称为定时器0(T0)和定时器1(T1),T0和T1分别由两个8位寄存器构成,其中T0由TH0(高8位)和TL0(低8位)构成,T1由TH1(高8位)和TL1(低8位)构成。

TH0、TL0、TH1、TL1都是SFR中的特殊功能寄存器。

T0和T1在TCON和TMOD的控制下可工作在定时器模式或计数器模式下,每种模式下又有不同的工作方式。

当定时或计数溢出时还可申请中断。

1.1.6中断系统:

单片机中的中断是指CPU暂停正在执行的原程序转而为中断源服务(执行中断服务程序),在执行完中断服务程序后再回到原程序继续执行。

中断系统是指

够处理上述中断过程所需要的部分电路。

89C51的中断系统由中断源、中断允许控制器IE、中断优先级控制器IP、定时器控制器TCON(中断标志寄存器)等构成,IE、IP、TCON均为SFR特殊功能寄存器(见表2.2)。

1.1.7内部总线:

总线是用于传送信息的公共途径。

总线可分为数据总线、地址总线和控制总线。

单片机内的CPU、存储器、I/O接口等单元部件都是通过总线连接到一起的。

采用总线结构可以减少信息传输线的根数,提高系统可靠性,增强系统灵活性。

89C51单片机内部总线是单总线结构,即数据总线和地址总线是公用的。

1.1.889C51单片机引脚及其功能:

89C51有40条引脚,与其他51系列单片机引脚是兼容的。

这40条引脚可分为I/O端口线、电源线、控制线、外接晶体线四部分。

其封装形式有两种:

双列直插封装(DIP)形式和方形封装形式,如图所示。

 

(a)双列直插式封装(b)方形封装

图189C51封装和引脚分配图

1.1.989C51单片机工作方式:

单片机在开机时或在工作中因干扰而使程序失控或工作中程序处于某种死循环状态等情况下都需要复位。

复位的作用是使中央处理器CPU以及其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。

1.1.9.1复位原理:

89C51单片机的复位靠外部电路实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。

复位后,PC程序计数器的内容为0000H,其他特殊功能寄存器的复位状态如表2.5所示。

片内RAM中内容不变。

1.1.9.2常用复位电路:

一般有上电复位、手动开关复位和自动复位电路三种,如图所示。

 

(a)上电复位电路;(b)手动复位电路;(c)自动复位电路

图2单片机复位电路图

1.1.9.389C51时钟电路:

单片机内各部件之间有条不紊的协调工作,其控制信号是在一种基本节拍的指挥下按一定时间顺序发出的,这些控制信号在时间上的相互关系就是CPU时序。

而产生这种基本节拍的电路就是振荡器和时钟电路。

89C51单片机内部有一个用于构成振荡器的单级反相放大器,如图所示。

 

图389C51内部振荡器电路图

引脚XTAL1为反相器输入端,XTAL2为反相器输出端。

当在放大器两个引脚上外接一个晶体(或陶瓷振荡器)和电容组成的并联谐振电路作为反馈元件时,便构成一个自激振荡器,如下图所示。

 

图4内部振荡器等效电路图

1.2单片机的应用领域

1.2.1在智能仪器仪表的应用:

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。

采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。

例如精密的测量设备(功率计,示波器,各种分析仪)。

1.2.2在家用电器中的应用:

可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

1.2.3在工业控制中的应用:

用单片机可以构成形式多样的控制系统、数据采集系统。

例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

1.2.4在计算机网络和通信领域中的应用:

现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

1.2.5单片机在医用设备领域中的应用:

单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

此外,单片机在工商、金融、科研、教育、国防航空等领域都有着十分广泛的用途。

1.3单片机的发展趋势

单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。

纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:

1.3.1微型单片化:

现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。

甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。

此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。

现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。

1.3.2低功耗CMOS化:

MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。

像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。

CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。

所以这种工艺将是今后一段时期单片机发展的主要途径。

1.3.3主流与多品种共存:

现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。

所以80C51占据了半壁江山。

而Microchip公司的PIC精简指令集合(RISC)也有着强劲的发展势头,中国台湾的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。

此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。

在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。

九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。

芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。

这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。

 

第二章AD9954简介

2.1AD9954的内部结构

AD9954的内部结构如图1所示,其主要特性如下:

●内置400MSPs时钟;

●内含l4位DAC;

●相位、幅度可编程;

●有32位频率转换字;

●可用串行I/O控制;

●内置超高速模拟比较器

●可自动线性和非线性扫频

●内部集成有1024X32位RAM;

●采用1.8V电源供电;

●可420倍倍频;

●支持大多数数字输入中的5、,输入电平;

●可实现多片同步。

2.2引脚说明

AD9954采用48脚TQFP/EP封装,其引脚排列如图2所示,各引脚定义如下:

I/0UPDATE:

在该引脚的上升沿可把内部缓冲存储器中的内容送到I/O寄存器中。

引脚电平的建立和保持与SYNC-CLK输出信号有关;

DVDD和AVDD:

数字与模拟电源引脚,电压值为1.8V;

DGND和AGND:

数字地与模拟地;

OSC/RE~CLK和OSC/REFCLK:

参考时钟或振荡输入端;

限srAI。

OUT:

振荡器输出端;

CLKMODESEt.ECT:

振荡器控制端,为1时使能振荡器,为0时不使能振荡器;

LOOP—FILTER:

该引脚应与AVDD间串联一个1kQ电阻和一个0.1ttF电容;

IOUT和IOUT:

DAC输出端,使用时应接一个上拉电阻;

DACBP:

DAC去耦端,使用时应接一个0.01ttF的旁路电容;

DAC—R鲫:

DAC复位端,使用时应通过一个3.92kQ的电阻接至AGND端;

COoUT:

比较器输出端,可以输出方波或脉冲信号;

COMP_IN和COMP—IN:

比较器输入端;

PWRDWNCTL:

外部电源掉电控制输入引脚;

砒蕊r:

芯片复位端;

IOSYNC:

异步串行端口控制复位引脚;为1时,当前I/O操作立即停止;为0时开始新的I/O操作;不用时,此引脚必须接地;

SDO:

采用3线串口操作时,SDO为串行数据输出端。

采用2线串口操作时,SDO不用,可以不连;

C—S:

片选端,低电平有效,允许多芯片共用I/O总线;

SCLK:

I/O操作的串行数据时钟输入端;sD10:

采用3线串口操作时,SDO为串行数据输入端,采用2线操作时,SDO为双向串行数据端;

DVDD_I/o:

I/0电源,可以是1.8v或3.3V;

SYNC—IN:

同步多片AD9954的输入信号,使用时与主AD9954的SYNC—CLK的输出相连;

SYNC—CLK:

时钟输出脚,为内部时钟的1/4,可用作外围硬件同步;

OSK:

在编程操作时可用该脚来控制幅度与时间斜率,与SYNC-CLK同步;当OSK不能被编程时,此脚接DGND;

PS1和PS0:

可用来选择4个RAM段控制字区中的一个。

2.3AD9954的串行操作

在AD9954的串行操作中,指令字节用来指定读/写操作和寄存器地址。

由于串行操作是在寄存器级别上发生的,因此串行端口控制器应能识别指令字节寄存器地址和自动产生适当的寄存器字节地址。

在串行操作指令阶段和通信阶段,一般先传送指令阶段的指令字,指令阶段对应于SCLK的前8个上升沿,其对应的指令字(8比特)包含了以下信息:

其中R/W位用于决定指令字后的操作是读还是写,高电平为读出,低电平为写入;6、5位的电平高低与操作无关;4~0位则对应于A4~A0,表示操作串行寄存器地址,该地址信息同时包含了与该指令字所在指令段对应的通信段的传送字节数。

指令阶段后接着是通讯阶段,传送对应于字节数的几个通信周期。

通信周期完成后,AD9954的串口控制器即认为接下来的8个SCLK的上升沿对应的是下一个通信周期的指令字。

IOSYNC引脚为高时将立即终止当前的通信周期,而当IOSYNC引脚状态回到低电平时,AD9954串口控制器即认为接下来的8个系统时钟的上升沿对应的是下一个通信周期的指令字,从而保持通信的同步。

AD9954的串行操作有两种数据传送方式,即从最高位开始传送和从最低位开始传送,这是由控制寄存器0的第8位来决定的。

默认状态为低电平,此时先传送最高位,若为高电平则先传送最低位。

串行操作

的读/写时序如图3所示。

2.4AD9954的RAM

AD9954内部的1024×32静态RAM具有双向单一人口,对它进行的读/写操作不能同时进行,写操作优先。

RAM的使能位是CFR<31>(控制功能寄存器的31位),此位为低时,对RAM的操作只能通过串行端口;此位为高且CFR<30>为逻辑0时,RAM的输出为相位累加器的输入,此时给芯片提供的是频率转换字;此位为高且CFR<30>为逻辑1时,RAM的输出可作为相位偏移加法器的输入给芯片提供相位偏移控制字。

写RAM的操作首先通过控制PSI、PSO来选择RAM段,然后再对相应的RAM控制寄存器写RAM操作的地址变化率、起始地址、终止地址、模式控制和停留方式位。

RAM段控制寄存器的5、6、7位可用来指示RAM操作的5种模式,即直接转换模式、上斜坡模式、双向斜变模式、连续双向斜变模式和连续循环模式。

其中连续循环模式是使能RAM,RAM模式控制字为100,这种模式可提供自动、连续、单向的扫频,地址发生器从起始地址开始,当其增加到终止地址后会自动回到起始地址重新开始下次循环。

RAM段控制寄存器的3924位可定义RAM控制器在每个地址停留的SYNC-CIK的周期数.取值范围是1—65535;9、8、23—16位用于定义10位终止地址;3—0、15—10位则用于定义10位起始地址。

寄存器表1。

2.5如下为DDS的基本原理

 

 

第三章单片机与AD9954通信

3.1硬件原理

 

3.2程序图

此程序的关健是单片机与AD9954进行通信,只须看懂时序图就可以了。

 

第四单调试

下面用KEILuVision与porteus仿真软件介绍数字计算器的仿真与调试。

4.1KeilC51单片机软件开发系统

4.1.1系统的整体结构:

C51工具包的整体结构中,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

4.1.2采用KEIL开发的89c51单片机应用程序步骤:

★.在uVision集成开发环境中创建新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片机CPU器件(本设计采用ATMEL公司下的AT89C51)

★.用uVision的文本编辑器编写源文件,可以是汇编文件(.ASM),也可以使C语言文件(扩展名.C),并将该文件添加到项目中去。

一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。

★.通过uVision2的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。

★.对项目中的源文件进行编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目。

★.对没有语法错误的程序进行仿真调试,调试成功后将HEX文件写入到单片机应用系统的ROM中。

 

第五章结束语

毕业设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为自动化专业的学生来说掌握单片机的开发技术是十分重要的。

我的题目是单片机与AD9954硬软件的设计,对于我们这些工科学生来说,这是一次考验。

怎么才能找到课堂所学与实际应用的最佳结合点?

怎样让自己的业余更接近专业?

怎样让自己的计划更具有序性,而不会忙无一用?

这都是我们所要考虑和努力的。

这次毕业设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。

不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。

通过这次毕业设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。

这次毕业设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成了。

参考文献:

[1]侯玉宝,陈忠平,,李成群.《基于Proteus的51系列单片机设计与仿真》北京电子工业出版社,2008

[2]沈德金,陈粤初.MCS-51系列单片机接口电路与应用程序实例.北京航空航天大学出版社,1990

[3]胡汉才.单片机原理及接口技术.清华大学出版社,1996

[4]何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,1990.1

[5]张毅刚、彭喜元、姜守达、乔立岩.新编MCS-51系列单片机应用设计.哈尔滨工业大学出版社,2003.6

[6]康万新,谢维成,杨加国.《毕业设计指导及案例剖析》,清华大学出版社,2007年

[7]马忠梅等.《单片机C语言应用程序设计》.北京航空航天大学出版社,1997:

201-211

[8]付家才,《单片机控制工程实践技术》,化学工业出版社,2004年

[9]及力,马东升.《Protel99SE原理图与PCB设计教程》,电子工业出版社,2007年

[10]黄智伟.《全国大学生电子设计竞赛系统设计》,北京航空航天大学出版社,2006年

 

附表一:

 

附表二:

#include

//#include"AD9954.h"

unsignedlongCFR1=0;

unsignedlongCFR1SLAVE=0x00800000;

unsignedlongCFR2=0;

unsignedlongASF;

unsignedlongARR;

unsignedlongFTW0;

unsignedlongPOW0;

unsignedlongFTW1;

unsignedlongNLSCW=0xFF000053E2;

unsignedlongPLSCW=0xFF000053E2;

unsignedlongmultfreq=0xFFFFFFFF;//计算频率控制字的系数

unsignedlongCS2,PWR,RET,CLKMS;

sbitPS1=P1^0;

sbitPS0=P1^1;//RAM部分先择控制

sbitSDIO=P1^3;//当做为3线口操作时做为串行数据输入,采用2线时,为双向数据口

sbitSCLK=P1^4;//串行数据时钟输入端

sbitCS=P1^5;//片选项,允许多个芯片共用I/O总线

sbitOSK=P1^2;//编程操作时用来控制幅度与时间的斜率

sbitIO_UPDATE=P2^1;//在上升沿将buffer中的数据送到I/O寄存器中

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1