单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx

上传人:b****3 文档编号:5424680 上传时间:2022-12-16 格式:DOCX 页数:23 大小:394.29KB
下载 相关 举报
单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx_第1页
第1页 / 共23页
单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx_第2页
第2页 / 共23页
单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx_第3页
第3页 / 共23页
单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx_第4页
第4页 / 共23页
单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx

《单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx》由会员分享,可在线阅读,更多相关《单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx(23页珍藏版)》请在冰豆网上搜索。

单片机课程设计设计并实现两路相位可调方波信号发生器资料.docx

单片机课程设计设计并实现两路相位可调方波信号发生器资料

课程设计任务书

学生姓名:

专业班级:

电信1306班

指导教师:

工作单位:

信息工程学院

题目:

设计并实现两路相位可调方波信号发生器

初始条件:

一台PC机,PC机上装有单片机开发软件;实验室提供单片机实验箱,该实验箱具有各种通用接口供同学们选择,同学们也可以购置单片机最小系统开发板作为开发基础,也可以全部购置分立元件组装。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1、设计任务

一周内完成可编倒计时装置的软硬件设计、仿真、调试及制作。

2、技术要求

输出两路方波信号,键盘控制频率和两信号的相位差,频率范围和变化步长值自定,相位0~360°,相位差变化步长值自定。

用双踪示波器观察。

(*能做到频率和相位差两参数独立变化更好)

3、课程设计说明书要求

课程设计说明书应包括方案设计、硬件电路设计、软件设计、资源分配表、调试及结果、性能分析、总结几大部分。

其中性能分析主要分析精度和误差来源,也可分析装置的反应速度、成本等。

最后附参考文献。

设计说明书格式应符合《武汉理工大学课程设计工作规范》要求。

时间安排:

第1-2天:

查阅相关资料,熟悉接口实验平台及其软件开发平台,完成方案设计。

第3-4天:

完成硬件设计,画出硬件电路图。

第5-6天:

软件设计、仿真。

第7天:

制作、调试。

第8天:

撰写课程设计说明书。

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

摘要

本文介绍了两路相位可调方波信号发生器的原理与设计。

利用定时器来实现方波输出,相位变化,最后对设计的系统进行性能分析(精度、实用性、成本等)。

本设计最终产生两路频率相位可调的方波信号。

用"增加"、"减小"2个按钮改变方波给定频率,按钮每按下一次,给定频率改变的步进步长为1Hz,当按钮持续按下的时间超过2秒后,给定频率以10次/秒的速度连续增加(减少),输出方波的频率在数码管上显示。

相位最小步进值为18度,且可以进行左移,右移。

开机默认输出频率为10Hz。

 

关键词:

信号发生器;方波;频率相位可调

目录

1Proteus软件简介1

2设计原理及方法2

2.1单片机概述2

2.2AT89C52引脚说明3

2.3方案的选择5

2.4设计方案说明5

2.4.1设计原理5

2.4.2参数计算6

3系统硬件线路设计图7

3.1引脚排布7

3.2硬件模块分析7

3.2.1主程序分析7

3.2.2频率改变电路设计8

3.2.3相位改变电路设计9

3.2.4时钟电路与复位电路设计10

3.3程序总框图11

4程序编程及仿真12

4.1程序代码12

4.2资源分配表15

4.3仿真电路总图15

4.4仿真结果及实际结果对照16

5性能分析18

6心得体会19

7参考文献20

1Proteus软件简介

Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、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建立了完备的电子设计开发环境。

2设计原理及方法

2.1单片机概述

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

本次课程设计选用的是MCS-51系列单片机中的AT89C52。

MCS-51单片机包含:

●一个8位CPU;

●128BRAM数据存储器,21个专用寄存器;

●4KBROM程序存储器;

●两个16位可编程定时器/计数器;

●32位双向可独立寻址的I/O口;

●一个全双工异步串行通信口;

●5个中断源、两级中断优先级的中断控制器;

●时钟电路,外接晶振和电容可产生1.2MHz~12MHz的时钟频率;

●可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路。

图2.1单片机内部结构框图

2.2AT89C52引脚说明

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

 

图2.2AT89C52的引脚图

其引脚功能如下:

P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。

Flash编程和程序校验期间,P1口接收低8位地址。

P2口是一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可驱动4个TTL逻辑门电路。

对端口P2口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地数据存储器时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容。

Flash编程或校验时,P2口亦接收高位地址和一些控制信号。

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

RST复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN程序储存允许输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。

在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/Vpp外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平,CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

XTAL1振荡器反相放大器及内部时钟发生器的输入端。

XTAL2振荡器反相放大器的输出端。

2.3方案的选择

本次课程设计要求设计并实现两路相位可调方波信号发生器,设计两路相位可调的方波可以分为三部分,即产生原始方波、调频、调相。

相位差的调节原理是通过两个波形的输出产生延迟实现的,延迟的实现可以有两种思路,其中一种方法是用单片机自带的定时器来实现,还有一种方法是利用延时来实现。

上述两种方法各有利弊。

如果利用单片机自带的定时器,单片机中定时器是可以产生很精确的定时,这样就可以产生很精准的频率,还可以通过控制定时器的工作来产生延迟输出波形,借此来产生相位差;但是这种方法考虑的方案设计要比较复杂,而且程序的设计也是很复杂的。

如果使用延时程序来控制,是很容易产生误差,而且相位调节更有可能调节很不准确;但是方案设计和程序的书写比较简单。

经过以上的细致分析,要想完成本次设计,我们应该选择用定时器来实现频率可调和延时程序来实现相位差可调的方波输出。

因此本次课程设计可以实现固定步长值的频率、相位可调。

2.4设计方案说明

2.4.1设计原理

本次设计要求是两路方波频率和相位可调方波发生器,利用AT89C52来产生相位和频率可调的方波。

P2.4,P2.5,P2.6三个端口分别用来调节方波输出的频率增减,相位增,而P0.0,P0.1则是用来输出两路方波信号。

P2.4,P2.5,P2.6三个接口接着高电平和按键,而按键另一端则是接地,当按下按键时,原本高电平的接口变为低电平。

(1)选用51单片机中的T0和T1两个定时器,对于两路输出信号P0.0和P0.1分别进行控制,通过定时器的定时计数功能,调整电平变化,产生方波。

而CPL命令来是得端口输出循环反向。

(2)采取改变两个定时计数器计数初值的手段,改变方波电平产生的延时时间,从而改变方波频率(本次设计中方波占空比为1)

(3)将P2.4和P2.5设为调频端口,将P2.6设为调相端口。

通过更改P0.1端口定时中断中加入输出方波前的独立延时时间,使两个波形之间产生相位差,相位差的步进值为18°。

2.4.2参数计算

本次设计输出频率为10HZ的方波,步进值为1HZ。

两个输出都采用定时方式1产生方波。

通过设计一个标志位,当信号开始变为高电平时,把相应的高电平计数初值赋给T0,当产生T0溢出中断时,把信号变为低电平,同时把低电平相应的计数初值赋给T0,通过标志位的0和1循环,从而产生持续交替的高低电平,一个频率可调的方波就出来了。

1.方波频率的设置:

根据T=1/频率F,得出周期为0.1s,即100ms,则首先产生50ms脉冲,计数初值为:

C=模-[t/MC](2.1)

带入数据得,初值C=3CB0H

2.频率步进值的设计:

初始脉冲个数为C350H,则根据步进值为1HZ,可得若增加后的频率为11HZ,则首先产生脉冲约为45ms,根据式(2.1),带入计算得初值为5038H。

即对于初始脉冲,高8位减少13H,低8位减少88H,并取反,即可得到初始值5038H。

同理可得,若使频率减少,相应变化值也应该增加1388H后并取反。

3.相位步进值的设置:

两路方波产生相位差主要是通过更改P0.1端口定时中断中加入输出方波前的独立延时时间。

通过延时电路的设计,以及机器周期的计算可知,延时的时长约为2.5ms,即产生18度的相位差。

所以每按下调相按钮时,都会产生相位差,并以18度步进值变化。

3系统硬件线路设计图

3.1引脚排布

在本次课程设计中,我们进行以下引脚分布:

●P3.4——调整频率步进值+1按键

●P3.5——调整频率步进值-1按键

●P3.6——调整相位增加按键

●P0.0——第一路方波输出端(定时中断入口0BH)

●P0.1——第二路方波输出端(定时中断入口1BH)

●T0——控制P0.0的方波输出

●T1——控制P0.1的方波输出

●XTAL1/XTAL2——接外部晶振,频率为12MHZ

3.2硬件模块分析

3.2.1主程序分析

主程序必须是一个死循环系统,才能不断执行该程序。

主程序包括系统初始化程序、键盘程序、控制当前的两个波形的频率和相位差程序。

图3.1主程序框架说明

3.2.2频率改变电路设计

频率的改变是通过键盘命令控制的。

对于给定步长的频率增加值,由于采用自动重装模式计数,最大计数到255就会回零,所以设定频率最大为256,但要根据实际测得值来判断频率值。

频率值不能一直加,所以频率值应该离最大值有一个步长才能够加,设定一直加到255停止增加。

同样,对于给定步长的频率减少值,频率值不能一直减少,所以频率值应该大于一个给定步长才能够减少,设定一直减到1停止减少。

N

Y

 

图3.2频率增加程序流程图

N

Y

 

图3.3频率减少程序流程图

3.2.3相位改变电路设计

两路方波产生相位差主要是通过更改P0.1端口定时中断中加入输出方波前的独立延时时间。

通过延时电路的设计,以及机器周期的计算可知,延时的时长约为2.5ms,即产生18度的相位差。

所以每按下调相按钮时,都会产生相位差,并以18度步进值变化。

相位的改变值要很准确,首先计算1度占180度的比例1/180=0.0056,所以定时器T0选用的是55us,以减小误差,定时器T1选用200us,所以计算各个溢出次数是要除以相应的定时时间0.000055和0.0002,相位对应延迟时间是通过变量Control_Phase来控制的,所以要根据Control_Phase值来确定延迟时间,在确定延时时间下的一个机器周期指令执行的次数,这是本次设计的重点;频率的改变是通过定时器T1控制,频率的改变需要计算当前频率下的半个周期的时间,以控制方波变反输出。

两种情况下都要进行取整运算,减小误差。

图3.3相位改变流程图

3.2.4时钟电路与复位电路设计

单片机的时钟信号用来提供单片机内各种微操作时间基准;复位操作完成单片机片内电路的初始化,单片机从一种确定的状态开始运行。

本次设计电路中采用内部振荡电路,晶振频率为12MHz。

复位操作完成单片机片内电路的初始化,单电机从一种确定的状态开始运行。

设计电路图中采用手动复位电路。

图3.4内部时钟模块电路

图3.5手动复位模块电路

3.3程序总框图

Y

N

Y

N

 

图3.6设计程序框图

4程序编程及仿真

4.1程序代码

ORG0000H

AJMPSTART

ORG000BH

AJMPBRK0

ORG001BH

AJMPBRK1

ORG0030H

START:

MOVR0,#3CH;设定定时器的初值

MOVR1,#0B0H

MOVR2,#0C3H;相应的脉冲个数

MOVR3,#50H

MAIN:

SETBP0.0

SETBP0.1

MOVTMOD,#11H;设定T0、T1均工作于方式1

MOVTH0,R0;设定T0初值

MOVTL0,R1

MOVTH1,R0;设定T1初值

MOVTL1,R1

SETBTR1;启动T1工作

SETBEA

SETBTR0;启动T0工作

SETBET0;允许T0中断

WAIT:

JNBP3.4,TF2;等待调频按键的操作

JNBP3.5,TF3;等待调频按键的操作

JNBP3.6,TP;等待调相按键的操作

LJMPWAIT

TP:

MOVR4,#16H

DL1:

MOVR6,#16H

DJNZR6,$

DJNZR4,DL1

MOVR7,#01H

LJMPWAIT

TF2:

;步进值为+1Hz的调频程序

JNBP3.4,$

MOVA,R3

CLRC

SUBBA,#88H

MOVR3,A

CPLA

MOVR1,A;调频后的计数器初值低八位

MOVA,R2

SUBBA,#13H

MOVR2,A

CLRC

CPLA

MOVR0,A;调频后的计数器初值高八位

MOVTH1,R0;重新给计数器赋初值

MOVTL1,R1

MOVTH0,R0

MOVTL0,R1

LJMPWAIT

TF3:

JNBP3.5,$;步进值为-1Hz的调频程序

MOVA,R3

CLRC

ADDCA,#88H

MOVR3,A

CPLA

MOVR1,A;调频后的计数器初值低八位

MOVA,R2

ADDCA,#13H

MOVR2,A

CLRC

CPLA

MOVR0,A;调频后的计数器初值高八位

MOVTH1,R0;重新给计数器赋初值

MOVTL1,R1

MOVTH0,R0

MOVTL0,R1

LJMPWAIT

BRK0:

SETBET1;T0中断程序入口

CPLP0.0

MOVTH0,R0

MOVTL0,R1

RETI

BRK1:

CJNER7,#01H,XX;T1中断程序入口

CALLCF;若R7为1,则调用调相程序XX

XX:

CPLP0.1

MOVTH1,R0

MOVTL1,R1

RETI

CF:

MOVR4,#16H

DL2:

MOVR6,#16H

DJNZR6,$

DJNZR4,DL2

DECR7;将R7位清零

RET;返回定时中断程序

4.2资源分配表

表4.189C52系统资源分配表

资源/引脚

实现功能

P3.4

调整频率步进值+1按键

P3.5

调整频率步进值-1按键

P3.6

调整相位增加按键

P0.0

第一路方波输出端(定时中断入口0BH)

P0.1

第二路方波输出端(定时中断入口1BH)

T0

控制P0.0的方波输出

T1

控制P0.1的方波输出

XTAL1

接外部晶振,频率为12MHZ

XTAL2

接外部晶振,频率为12MHZ

4.3仿真电路总图

图4.1硬件系统设计电路图

4.4仿真结果及实际结果对照

(a)(b)

图4.2(a)、(b)分别为仿真、实际调制的方波

(c)(d)

图4.3(c)、(d)分别为仿真、实际过程中频率加三次后的结果

(e)(f)

图4.4(e)、(f)分别为仿真、实际过程中频率加四次后的结果

(g)(h)

图4.5(g)、(h)分别为仿真、实际过程中频率减两次后的结果

(i)(j)

图4.6(i)、(j)分别为仿真、实际过程中相位变化五次后的结果

(k)(l)

图4.7(k)、(l)分别为仿真、实际过程中相位变化十次后的结果

5性能分析

本次设计实现了两路频率可调、相位可调的方波信号的输出。

基本达到以下几点要求:

(1)通过定时计数器,产生双输出同步,占空比为1的方波;

(2)通过更改计数器的初值,调节频率变化,实现频率可控,且步进值为1Hz;

(3)通过对T1定时计数器的设置,对其进行相位延时,从而产生步进值为18°的相位差,实现相位差可控;

(4)通过“系统复位”按键,用来控制系统的复位操作;

(5)输出方波的频率和相位差在示波器上得到显示;利用单片机输出两路方波,其中一路方波作为参考,另外一路方波作为调节波,与前一路波形成对比,以测试实现功能频率、相位可调。

综上可知,本次设计基本实现了两路相位可调方波信号发生器的功能,尚待完善的功能如下:

(1)频率的步进变化,并非呈倍频效果,仅在10Hz和20Hz之间变化是符合要求的。

(2)对于相位差的步进,采用的是更改计数初值的办法来是第二个波形产生单独延时,所以对于改变后的频率不再是以18°为步进值改变。

而且相位变化范围仅在0到180度变化。

(3)在进行硬件调试时发现,频率的调节是无法和显示的频率是精确一致的,例如显示10Hz时,示波器显示9.206Hz,但误差不大;而石英晶振的频率也不可能精确为12MHz,这样就造成了时钟周期上的微小误差,进而影响到各个参数值的精确程度。

总体上,整个系统的设计要求可以达到,设计出来的效果比较好。

频率在频率比较小时比较准确,而在比较高时误差较大,这是因为程序运行时间造成的时间延迟所致,频率较小,定时时间比较长,相应的时间延迟影响比较小;但是频率较高时影响比较大,尽管加入了频率校正程序,但是这个程序段并不能保证所有的频率都能很好的校正。

6心得体会

经历了一个星期的查阅资料和理论分析,终于完成了单片机应用实践课程设计的编程和报告。

经历了这次课程设计,大大的提高了我的操作能力以及分析问题的能力,从中也学到了很多书面上所没有搞清楚的问题,也熟悉了应用Proteus这个软件来进行程序编程。

通过这次课程设计,我学到了很多有用的知识,并加强了自己掌握和理解书本知识的能力,培养了自己的实际动手能力与综合设计能力,提高了自己的技术素质,这对以后的学习和工作都是非常有益的。

现如今我对单片机有了更进一步的理解,并且学到了很多关于单片机的知识,及其所涉及到的一些汇编语言的用法,还知道了单片机中的关于中断程序的设计步骤和它的相关的使用,以及定时/计数器的四个工作方式所具有的特点同时还掌握了在各种工作方式下其计数初值的算法。

这次的课程设计是对本学期所学知识的一次重要巩固,使得在课堂上掌握的知识得到了真正的运用。

在学习的过程中和同学讨论,更明白了理论知识与实践的联系。

总之,通过这次课程设计我有了很多收获。

摸索该如何使用Proteus去实现题目要求的

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

当前位置:首页 > 医药卫生 > 基础医学

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

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