1、两路相位可调方波信号发生器武汉理工大学单片机课程设计说明书摘要本次课设完成了两路相位可调方波信号发生器。利用单片机最小系统及三个独立按键来实现这一题目。通过编程对三个独立按键分别赋予不同的功能,使三个按键分别实现频率的增大,减小,以及相位的变化。 关键词:两路,相位可调,方波,最小系统,独立按键.目录1.设计原理与方法1 1.1单片机系统概述 1 1.2 80C51内部结构 1 1.3设计原理说明 3 1.3.1设计方案 3 1.3.2参数计算 42.程序框图53.资源分配表64.源程序65.系统硬件线路设计图 106.仿真结果 107.实物调试结果 128.性能分析 139.总结与心得 14
2、10.参考文献1531.设计原理与方法1.1 单片机系统概述 单片机全称单片微型计算机,又称MCU,是将计算机的基本部分微型化,使之集成在一块芯片上的微机。片内含有CPU,ROM,RAM,并行I/O,串行I/O,定时/计数器,A/D,D/A,中断控制,系统时钟及系统总线等,它本身就是一个嵌入式系统,同时也是其他嵌入式系统的核心。它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机
3、和专用处理器的发展便不同步。 为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,只是存储器,接口的配置及封装不同,这样可以使单片机最大限度的与应用需求相匹配,功能不多不少,从而减少功耗和成本。单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,单片机的数量不仅远超过PC机和其他计算的总和。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格
4、便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。1.2 80C51内部结构8051的CPU包含以下功能部件: (1)8位CPU。(2)布尔代数处理器,具有位寻址能力。(3)128B内部RAM数据存储器,21个专用寄存器。(4)4KB内部掩膜ROM程序存储器。(5)2个16位可编程定时器/计数器。(6)32位(48位)双向可独立寻址的I/O口。(7)1个全双工UART(异步串行通信口)。(8)5个中断源、两级中断优先级的中断控制器。(9)时钟电路,外接晶振和电容可产生1.2MHz12 MHz的时钟频率。(10)外部程序/数据存储器寻址空间均为64KB
5、。(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,其它专用寄
6、存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,80C51的初始态。Pin30:ALE/ 当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。Pin29: 当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CP
7、U读入并执行。Pin31:EA/Vpp 程序存储器的内外部选通线.8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。单片机最小系统内部结构图如图1所示:图1 单片机最小系统内部结构图1.3设计原理说明1.3.1设计方案本次设计的目的是实现两路相位可调的方波信号发生器。包括两个方面,产生频率和相位可调的方波,相位差和频率变化步进值可以自定。通过对51单片机工作原理的学习,设计方案如
8、下:选用51单片机的最小系统将P3.2,P3.3口设为调频端口,将P3.4口设为调相端口,并且设置P0.0和P0.1两个端口分别输出两路方波,并且设定单片机中的T0和T1两个寄存器通过定时器的定时/计数功能,调整电平变化,产生方波。 在编写程序中采取改变两个定时/计数器的计数初值的方法来使产生的方波的频率发生变化(本次设计中方波占空比为1)。在编程中采用固定延时的方法来使两路方波中的一路信号产生相位变化(另一路信号作为参考波形)通过更改P0.1端口定时中断中加入输出方波前的独立延时时间,使两个波形之间产生固定的相位差。 本设计通过3个按键即P3.4,P3.5,P3.6分别用来控制输出信号的频率
9、和相位变化,其分别是频率增大,频率减小和相位变化。根据机器周期和频率的关系,可知机器周期T=12/(晶振频率),由于本系统用的是12MHZ的晶振,所以可以算的系统的一个机器周期是1us。1.3.2参数计算:依据设计的要求,本次设计输出频率为10HZ的方波,步进值为1HZ。两个方波输出端均采用定时方式1产生方波。在实现时,通过设置一个标志位,当信号开始变为高电平时,把相应的高电平计数初值赋给T0,当产生T0溢出中断时,把信号变为低电平,同时把低电平相应的计数初值赋给T0,通过标志位的0和1的循环,从而产生持续交替的高低电平,一个频率可调的方波就出来了。方波频率的设置过程如下所示:根据T=1/频率
10、F,可得周期为50ms则在定时/计数器工作方式1的初值C=10000t/MC其中MC为系统的机器周期为1us,带入数据得,计数初值 C=3CB0H频率步进值的设计:初始脉冲个数为C350H,则根据步进值为1HZ,可得若方波频率增加1Hz后方波频率则变为11HZ,根据计数初值C=10000t/MC,带入计算得,计数初值应该减少1388H,即对于初始脉冲,高8位减少13H,低8位减少88H。同理可得,若要使频率减少1Hz,则相应计数初值应该增加1388H即对于初始脉冲,高8位增加13H,低8位增加88H。相位步进值的设置: 两路方波产生相位差主要是通过更改P0.1端口定时中断中加入输出方波前的独立
11、延时时间。通过对延时电路的设计,以及机器周期的计算可知,延时的时长约为 2.5ms时此时两路方波就会产生18度的相位差。2.程序框图3.资源分配表以下是本设计单片机80C52的系统资源分配:名称功能P3.2调整频率步进值+1按键P3.3调整频率步进值-1按键P3.4调整相位按键P0.0第一路方波输出端(定时中断入口0BH)P0.1第二路方波输出端(定时中断入口1BHT0控制P0.0的方波输出T1控制P0.1的方波输出XTAL1,XTAL2接外部晶振,频率为12MHZ4.源程序 ORG 0000HAJMP STARTORG 000BHAJMP BRK0ORG 001BHAJMP BRK1ORG
12、0030HSTART:MOV R0,#3CH;设定定时器的初值MOV R1,#0B0HMOV R2,#0C3H;相应的脉冲个数MOV R3,#50HMAIN:SETB P0.0SETB P0.1MOV TMOD,#11H;设定T0、T1均工作于方式1MOV TH0,R0;设定T0初值MOV TL0,R1MOV TH1,R0;设定T1初值MOV TL1,R1 SETB TR1;启动T1工作SETB EASETB TR0;启动T0工作SETB ET0;允许T0中断WAIT: JNB P3.4,TF1;等待调频按键的操作JNB P3.5,TF2;等待调频按键的操作JNB P3.6,TP;等待调相按键
13、的操作 LJMP WAITTP: MOV R4,#16HDL1:MOV R6,#16H DJNZ R6,$ DJNZ R4,DL1MOV R7,#01HLJMP WAITTF1: ;步进值为+1Hz的调频程序 JNB P3.4,$MOV A,R3CLR CSUBB A,#88HMOV R3,ACPL AMOV R1,A ;调频后的计数器初值低八位MOV A,R2SUBB A,#13HMOV R2,ACLR CCPL AMOV R0,A;调频后的计数器初值高八位MOV TH1,R0;重新给计数器赋初值MOV TL1,R1MOV TH0,R0MOV TL0,R1 LJMP WAITTF2: ;步进
14、值为-1Hz的调频程序 JNB P3.5,$MOV A,R3CLR CADDC A,#88HMOV R3,A CPL AMOV R1,A ;调频后的计数器初值低八位MOV A,R2ADDC A,#13HMOV R2,ACLR C CPL AMOV R0,A;调频后的计数器初值高八位MOV TH1,R0;重新给计数器赋初值MOV TL1,R1MOV TH0,R0MOV TL0,R1 LJMP WAITBRK0:;T0中断程序入口SETB ET1 CPL P0.0MOV TH0,R0MOV TL0,R1 RETIBRK1:;T1中断程序入口CJNE R7,#01H ,XX CALL CF;若R7为
15、1,则调用调相程序XX:CPL P0.1MOV TH1,R0MOV TL1,R1 RETI CF: MOV R4,#16HDL2: MOV R6,#16H DJNZ R6,$ DJNZ R4,DL2 CPL P0.1DEC R7 ;将R7位清零RET;返回定时中断程序5. 系统硬件线路设计图系统硬件线路设计图如图2所示:图2 系统硬件线路设计图6.protuse软件仿真在按键未做任何按动时,电路产生的初始方波的仿真波形如图3所示:图3初始方波的仿真波形在按一次按键K1使频率增大1Hz,即调频步进值+1的仿真波形如图4所示:图4调频步进值+1的仿真波形在按一次按键K2使频率减小1Hz,即调频步进
16、值-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.性能分析本次设计
17、所实现的功能如下:通过定时/计数器的T0H和T1,产生双输出同步且占空比为1的两路方波。通过对定时/计数器的初值的更改来实现对频率的调节,从而实现题目中对频率可控的要求,且设置的频率的步进值在一定范围内大约为1HZ。通过对T1定时计数器的设置,对其进行相位延时,从而产生步进值为18的相位差,实现相位差可控的要求。综上可知,本次设计基本实现了两路相位可调方波信号发生器的功能,尚待完善的功能如下:对于频率并非始终按照严格的1Hz的大小步进,仅在7HZ和14HZ之间是按照1Hz步进的在这个范围内频率的变化是符合要求的。但是在超出这个范围后出现倍频的情况。对于相位差的步进,采用的是更改计数初值的办法来
18、是第二个波形产生单独延时,在设计中理想的步进是18。但是对于时间的延时并不能恰好让其等于18所对应的延迟时间,所以会存在误差,设计中取近似为18,在小范围的移动时误差并不明显,但是在相位变化较大时,由于误差的累积此时误差较明显。9.总结与心得通过此次的课程设计,我对单片机有了更进一步的理解,并且学到了很多关于单片机的知识,及其所涉及到的一些汇编语言的用法,还知道了单片机中的关于中断程序的设计步骤和它的相关的使用,以及定时/计数器的四个工作方式所具有的特点同时还掌握了在各种工作方式下其计数初值的算法。当然,在进行编程的过程中,不可避免的遇到了很多问题,刚开始无从下手,因为课本上只是介绍了各个模块
19、的编程,无法把所需要的模块整体联系起来,造成所学到的理论知识与实际无法结合,通过查阅资料与同学的讨论,逐步明确编程思路。在程序编写完成后,在实物测试中,在实现频率步进值的时候,由于是采用计数初值的办法,所以不能完全按照标准的步进频率进行步进,会出现一定范围内的误差。并不是绝对准确。 总而言之,这次单片机课程设计,我从找资源,到查阅书籍,到咨询同学,再到完成设计,大概用时一个星期左右。通过这次课程设计,无论是对所学课本知识的运用还是对硬件系统的了解,我都有了很大程度的提高,提高了理论用于实践的能力,掌握了更多专业相关的使用知识与技能。10.参考文献张义和 王敏男 许宏昌,例说51单片机,人民邮电出版社,2008李群芳 张士军 黄建,单片微型计算机与接口技术,电子工业出版社,2008王守中 聂元铭,51单片机开发入门与典型实例,人民邮电出版社,2009周兴华,手把手教你学单片机,北京航空航天大学出版社,200715
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100