设计并实现两路相位可调方波信号发生器究极版.docx
《设计并实现两路相位可调方波信号发生器究极版.docx》由会员分享,可在线阅读,更多相关《设计并实现两路相位可调方波信号发生器究极版.docx(14页珍藏版)》请在冰豆网上搜索。
设计并实现两路相位可调方波信号发生器究极版
摘要
随着科技的日益发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,本设计主要设计一个基于80C51单片机的输出两路方波信号,键盘控制频率和两信号的相位差的方波信号发生器。
关键词:
单片机;方波;调频调相
目录
1、设计原理与方法……………………………………………………………………2
1.1、单片机系统概述…………………………………………………………………2
1.2、80C51内部结构与引脚说明……………………………………………………2
1.3、设计原理…………………………………………………………………………5
2、系统硬件线路设计图…………………………………………………………………6
3、程序框图………………………………………………………………………………7
4、资源分配表……………………………………………………………………………8
5、源程序…………………………………………………………………………………8
6、仿真结果………………………………………………………………………………12
7、性能分析………………………………………………………………………………14
8、总结与心得……………………………………………………………………………15
9、参考文献………………………………………………………………………………16
1、设计原理与方法
1.1、单片机系统概述
单片机也被称为微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。
事实上单片机是世界上数量最多的计算机。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。
而个人电脑中也会有为数不少的单片机在工作。
汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!
单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
1.2、80C51内部结构与引脚说明
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封装。
图1单片机内部结构
MCS-51单片机中有两个16位的定时器/计数器T0和T1,它们由4个8位寄存器(TL0,TH0,TL1和TH1)组成,2个16位定时器/计数器是完全独立的。
可以单独对这4个寄存器进行寻址,但不能把T0和T1当做16位寄存器来使用。
具体结构框图如下:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
其引脚图如图所示。
下面,我们将对一些本次试验用到的引脚,加以说明
Pin9:
RESET/Vpd复位信号复用脚,当80C51通电,时钟电路开始工作,在RESET引
脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,80C51的初始态。
Pin31:
EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对内部无程序存储器的8031,EA端必须接地。
1.3、设计原理说明
本次设计的目的是实现两路相位可调的方波信号发生器。
通过对51单片机工作原理的学习,设计如下:
选用51单片机中的T0和T1两个定时器,对于两路输出信号P0.0和P0.1分别进行控制,通过定时器的定时计数功能,调整电平变化,产生方波
采取改变两个定时计数器计数初值的手段,改变方波电平产生的延时时间,从而改变方波频率(本次设计中方波占空比为0.5)
将P1.0设为调频端口,将P1.1设为调相端口。
通过更改P0.1端口定时中断中加入输出方波前的独立延时时间,使两个波形之间产生相位差,相位差的步进值为20°。
2、系统硬件线路设计图
图2电路原理图
3、程序框图
N
N
Y
N
Y
4、资源分配表
以下是本设计单片机80C51的系统资源分配:
P1.0调整频率步进值+1按键
P1.1调整频率步进值-1按键
P1.1调整相位按键
P0.0第一路方波输出端(定时中断入口0BH)
P0.1第二路方波输出端(定时中断入口1BH)
T0控制P0.0的方波输出
T1控制P0.1的方波输出
XTAL1与XTAL2接外部晶振,频率为12MHZ
5、源程序
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
SETBEA
SETBTR1;启动T1工作
SETBTR0;启动T0工作
SETBET0;允许T0中断
WAIT:
JNBP1.0,TF1;等待调频按键的操作
JNBP1.1,TF2;等待调频按键的操作
JNBP1.2,TP;等待调相按键的操作
LJMPWAIT
TP:
MOVR4,#16H
DL1:
MOVR6,#16H
DJNZR6,$
DJNZR4,DL1
MOVR7,#01H
LJMPWAIT
TF1:
;步进值为+1Hz的调频程序
JNBP1.0,$
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的调频程序
JNBP1.0,$
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;返回定时中断程序
6、proteus软件仿真
图3原始波形
图4增加频率之后的波形
图5减小频率之后的波形
图6调相之后的波形
7、性能分析
本次设计所实现的功能如下:
通过定时计数器,产生双输出同步,占空比为0.5的方波
通过更改计数器的初值,产生增加或者减小频率的效果,实现频率可控
通过对T1定时计数器的设置,对其进行相位延时,从而产生步进值为18°的相位差,实现相位差可控
但是在进行仿真的过程中发现本电路并不是十分稳定,在实现增加和减小频率的时候会出现连着增加或减小好几步的现象,分析后认为是由于单片机在判定按键按下的时候的问题。
8、总结与心得
这次单片机课程设计,在经过一周的时间学习与实践后,我进行并完成了对于用单片机设计两路相位可调信号发生器的电路设计以及仿真。
在设计电路的过程中,我先复习了单片机的各个引脚的功能以及一些基本指令的用法,然后进行了原理电路的设计,在设计原理电路的过程中,我查阅了资料,运用了经典的按键模块,在完成了单片机最小系统的构筑后,将模块进行拼接,组成最后的电路。
点对程序的编写过程中我使用了keil,在编写汇编程序的过程中我发现对于逻辑的架构掌握特别重要,要好好使用每一个寄存器的空间,在每个判定上也比C语言要更加要求精密,所以编程着实是一道难关。
在仿真阶段,我发现按键的判定有时会出现问题,导致增加或者减少频率并不是按照一步一步的进行的,有时候会连跳好几步。
我认为是按键判定的的时候出现多次判定的问题,这也是本次课程设计的一个不足之处。
总结本次的课程设计,我觉得最大的收货就是让我对单片机的系统结构以及汇编程序的各种编写做了一个很好的整理与温习,让我在课程设计中真正学到了一些实践知识,对我的知识补充弥足珍贵,是一次非常棒的课程设计。
9、参考文献
[1]张义和.《例说51单片机》[M].人民邮电出版社,2008.
[2]李群芳.《单片微型计算机与接口技术》[M].电子工业出版社,2008.
[3]王守中.《51单片机开发入门与典型实例》[M].人民邮电出版社,2009.
[4]周兴华.《手把手教你学单片机》[M].北京航空航天大学出版社,2007.
[5]杨欣.《实例解读51单片机完全学习与应用》[M].电子工业出版社,2011.