两路相位可调方波信号发生器.docx
《两路相位可调方波信号发生器.docx》由会员分享,可在线阅读,更多相关《两路相位可调方波信号发生器.docx(17页珍藏版)》请在冰豆网上搜索。
两路相位可调方波信号发生器
摘要
本次课设完成了两路相位可调方波信号发生器。
利用单片机最小系统及三个独立按键来实现这一题目。
通过编程对三个独立按键分别赋予不同的功能,使三个按键分别实现频率的增大,减小,以及相位的变化。
关键词:
两路,相位可调,方波,最小系统,独立按键.
1.设计原理与方法………………………………………………………………………………1
1.1单片机系统概述…………………………………………………………………………1
1.280C51部结构…………………………………………………………………………1
1.3设计原理说明……………………………………………………………………………3
1.3.1设计方案……………………………………………………………………………3
1.3.2参数计算……………………………………………………………………………4
2.程序框图………………………………………………………………………………………5
3.资源分配表……………………………………………………………………………………6
4.源程序…………………………………………………………………………………………6
5.系统硬件线路设计图………………………………………………………………………10
6.仿真结果……………………………………………………………………………………10
7.实物调试结果………………………………………………………………………………12
8.性能分析……………………………………………………………………………………13
9.总结与心得…………………………………………………………………………………14
10.参考文献……………………………………………………………………………………15
1.设计原理与方法
1.1单片机系统概述
单片机全称单片微型计算机,又称MCU,是将计算机的基本部分微型化,使之集成在一块芯片上的微机。
片含有CPU,ROM,RAM,并行I/O,串行I/O,定时/计数器,A/D,D/A,中断控制,系统时钟及系统总线等,它本身就是一个嵌入式系统,同时也是其他嵌入式系统的核心。
它最早是被用在工业控制领域。
单片机由芯片仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便不同步。
为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器核都是一样的,只是存储器,接口的配置及封装不同,这样可以使单片机最大限度的与应用需求相匹配,功能不多不少,从而减少功耗和成本。
单片机是世界上数量最多的计算机。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
手机、、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。
而个人电脑中也会有为数不少的单片机在工作。
汽车上一般配备40多部单片机,单片机的数量不仅远超过PC机和其他计算的总和。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
1.280C51部结构
8051的CPU包含以下功能部件:
(1)8位CPU。
(2)布尔代数处理器,具有位寻址能力。
(3)128B部RAM数据存储器,21个专用寄存器。
(4)4KB部掩膜ROM程序存储器。
(5)2个16位可编程定时器/计数器。
(6)32位(4×8位)双向可独立寻址的I/O口。
(7)1个全双工UART(异步串行通信口)。
(8)5个中断源、两级中断优先级的中断控制器。
(9)时钟电路,外接晶振和电容可产生1.2MHz~12MHz的时钟频率。
(10)外部程序/数据存储器寻址空间均为64KB。
(11)111条指令,大部分为单字节指令。
(12)单一+5V电源供电,双列直插40引脚DIP封装。
MCS-51单片机中有两个16位的定时器/计数器T0和T1,它们由4个8位寄存器(TL0,TH0,TL1和TH1)组成,2个16位定时器/计数器是完全独立的。
可以单独对这4个寄存器进行寻址,但不能把T0和T1当做16位寄存器来使用。
引脚说明:
Pin9:
RESET/Vpd复位信号复用脚。
当80C51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,80C51的初始态。
Pin30:
ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
Pin29:
当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
Pin31:
EA/Vpp程序存储器的外部选通线.
8051和8751单片机,置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对部无程序存储器的8031,EA端必须接地。
单片机最小系统部结构图如图1所示:
图1单片机最小系统部结构图
1.3设计原理说明
1.3.1设计方案
本次设计的目的是实现两路相位可调的方波信号发生器。
包括两个方面,产生频率和相位可调的方波,相位差和频率变化步进值可以自定。
通过对51单片机工作原理的学习,设计方案如下:
选用51单片机的最小系统将P3.2,P3.3口设为调频端口,将P3.4口设为调相端口,并且设置P0.0和P0.1两个端口分别输出两路方波,并且设定单片机中的T0和T1两个寄存器通过定时器的定时/计数功能,调整电平变化,产生方波。
在编写程序中采取改变两个定时/计数器的计数初值的方法来使产生的方波的频率发生变化(本次设计中方波占空比为1)。
在编程中采用固定延时的方法来使两路方波中的一路信号产生相位变化(另一路信号作为参考波形)通过更改P0.1端口定时中断中加入输出方波前的独立延时时间,使两个波形之间产生固定的相位差。
本设计通过3个按键即P3.4,P3.5,P3.6分别用来控制输出信号的频率和相位变化,其分别是频率增大,频率减小和相位变化。
根据机器周期和频率的关系,可知机器周期T=12/(晶振频率),由于本系统用的是12MHZ的晶振,所以可以算的系统的一个机器周期是1us。
1.3.2参数计算:
依据设计的要求,本次设计输出频率为10HZ的方波,步进值为1HZ。
两个方波输出端均采用定时方式1产生方波。
在实现时,通过设置一个标志位,当信号开始变为高电平时,把相应的高电平计数初值赋给T0,当产生T0溢出中断时,把信号变为低电平,同时把低电平相应的计数初值赋给T0,通过标志位的0和1的循环,从而产生持续交替的高低电平,一个频率可调的方波就出来了。
方波频率的设置过程如下所示:
根据T=1/频率F,可得周期为50ms
则在定时/计数器工作方式1的初值C=10000—[t/MC]其中MC为系统的机器周期为1us,带入数据得,计数初值C=3CB0H
频率步进值的设计:
初始脉冲个数为C350H,则根据步进值为1HZ,可得若方波频率增加1Hz后方波频率则变为11HZ,根据计数初值C=10000—[t/MC],带入计算得,计数初值应该减少1388H,即对于初始脉冲,高8位减少13H,低8位减少88H。
同理可得,若要使频率减少1Hz,则相应计数初值应该增加1388H即对于初始脉冲,高8位增加13H,低8位增加88H。
相位步进值的设置:
两路方波产生相位差主要是通过更改P0.1端口定时中断中加入输出方波前的独立延时时间。
通过对延时电路的设计,以及机器周期的计算可知,延时的时长约为2.5ms时此时两路方波就会产生18度的相位差。
2.程序框图
3.资源分配表
以下是本设计单片机80C52的系统资源分配:
名称
功能
P3.2
调整频率步进值+1按键
P3.3
调整频率步进值-1按键
P3.4
调整相位按键
P0.0
第一路方波输出端(定时中断入口0BH)
P0.1
第二路方波输出端(定时中断入口1BH
T0
控制P0.0的方波输出
T1
控制P0.1的方波输出
XTAL1,XTAL2
接外部晶振,频率为12MHZ
4.源程序
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,TF1;等待调频按键的操作
JNBP3.5,TF2;等待调频按键的操作
JNBP3.6,TP;等待调相按键的操作
LJMPWAIT
TP:
MOVR4,#16H
DL1:
MOVR6,#16H
DJNZR6,$
DJNZR4,DL1
MOVR7,#01H
LJMPWAIT
TF1:
;步进值为+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
TF2:
;步进值为-1Hz的调频程序
JNBP3.5,$
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:
;T0中断程序入口
SETBET1
CPLP0.0
MOVTH0,R0
MOVTL0,R1
RETI
BRK1:
;T1中断程序入口
CJNER7,#01H,XX
CALLCF;若R7为1,则调用调相程序
XX:
CPLP0.1
MOVTH1,R0
MOVTL1,R1
RETI
CF:
MOVR4,#16H
DL2:
MOVR6,#16H
DJNZR6,$
DJNZR4,DL2
CPLP0.1
DECR7;将R7位清零
RET;返回定时中断程序
5.系统硬件线路设计图
系统硬件线路设计图如图2所示:
图2系统硬件线路设计图
6.protuse软件仿真
在按键未做任何按动时,电路产生的初始方波的仿真波形如图3所示:
图3初始方波的仿真波形
在按一次按键K1使频率增大1Hz,即调频步进值+1的仿真波形如图4所示:
图4调频步进值+1的仿真波形
在按一次按键K2使频率减小1Hz,即调频步进值-1的仿真波形如图5所示:
图5调频步进值+1的仿真波形
在按一次按键K3使相位变化18度后的调相仿真波形如图6所示:
图6相位变化18度后的调相仿真波形
7.实物调试结果
在按键未做任何按动时,电路产生的在按了INT0键一下后,对波形进行调频,
初始方波的波形图如图7所示:
使频率减小1Hz的波形图如图8所示:
图7初始方波的波形图图8频率减小1Hz的波形图
在按了INT1键一下后,对波形进行调频,在按了USER1键五下后,对波形进行调相
使频率增大1Hz的波形图如图9所示:
使相位变化90度的波形图如图10所示
图9频率增大1Hz的波形图图10相位变化90度的波形图
8.性能分析
本次设计所实现的功能如下:
①通过定时/计数器的T0H和T1,产生双输出同步且占空比为1的两路方波。
②通过对定时/计数器的初值的更改来实现对频率的调节,从而实现题目中对频率可控的要求,且设置的频率的步进值在一定围大约为1HZ。
③通过对T1定时计数器的设置,对其进行相位延时,从而产生步进值为18°的相位差,实现相位差可控的要求。
综上可知,本次设计基本实现了两路相位可调方波信号发生器的功能,尚待完善的功能如下:
①对于频率并非始终按照严格的1Hz的大小步进,仅在7HZ和14HZ之间是按照1Hz步进的在这个围频率的变化是符合要求的。
但是在超出这个围后出现倍频的情况。
②对于相位差的步进,采用的是更改计数初值的办法来是第二个波形产生单独延时,在设计中理想的步进是18º。
但是对于时间的延时并不能恰好让其等于18º所对应的延迟时间,所以会存在误差,设计中取近似为18º,在小围的移动时误差并不明显,但是在相位变化较大时,由于误差的累积此时误差较明显。
9.总结与心得
通过此次的课程设计,我对单片机有了更进一步的理解,并且学到了很多关于单片机的知识,及其所涉及到的一些汇编语言的用法,还知道了单片机中的关于中断程序的设计步骤和它的相关的使用,以及定时/计数器的四个工作方式所具有的特点同时还掌握了在各种工作方式下其计数初值的算法。
当然,在进行编程的过程中,不可避免的遇到了很多问题,刚开始无从下手,因为课本上只是介绍了各个模块的编程,无法把所需要的模块整体联系起来,造成所学到的理论知识与实际无法结合,通过查阅资料与同学的讨论,逐步明确编程思路。
在程序编写完成后,在实物测试中,在实现频率步进值的时候,由于是采用计数初值的办法,所以不能完全按照标准的步进频率进行步进,会出现一定围的误差。
并不是绝对准确。
总而言之,这次单片机课程设计,我从找资源,到查阅书籍,到咨询同学,再到完成设计,大概用时一个星期左右。
通过这次课程设计,无论是对所学课本知识的运用还是对硬件系统的了解,我都有了很大程度的提高,提高了理论用于实践的能力,掌握了更多专业相关的使用知识与技能。
10.参考文献
义和王敏男许宏昌,《例说51单片机》,人民邮电,2008
群芳士军黄建,《单片微型计算机与接口技术》,电子工业,2008
王守中聂元铭,《51单片机开发入门与典型实例》,人民邮电,2009
周兴华,《手把手教你学单片机》,航空航天大学,2007