1、设计并实现两路相位可调方波信号发生器1、设计原理与方法2 1.1、单片机概述2 1.2、80C51引脚说明 3 1.3、设计原理说明52、系统硬件线路设计图63、程序框图74、系统资源分配85、源程序96、仿真结果117、性能分析138、总结与心得149、参考文献15 1、设计原理与方法1.1、 单片机概述单片微型计算机(Single-Chip Microcomputer),简称单片机。就是将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上的微型计算机。本次课程设计选用的是MCS-51系列单片机中的
2、80C51。MCS-51单片机包含中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O接口、串行I/O接口和中断系统等几大单元。其内部结构框图如图1所示。 图1中央处理器由运算器、控制器组成。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)时
3、钟电路,外接晶振和电容可产生1.2MHz12 MHz的时钟频率。(10)外部程序/数据存储器寻址空间均为64KB。(11)111条指令,大部分为单字节指令。(12)单一+5V电源供电,双列直插40引脚DIP封装。内部结构如图2所示 图2MCS-51单片机中有两个16位的定时器/计数器T0和T1,它们由4个8位寄存器(TL0, TH0, TL1和TH1)组成,2个16位定时器/计数器是完全独立的。可以单独对这4个寄存器进行寻址,但不能把T0和T1当做16位寄存器来使用。1.2、80C51引脚说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是
4、它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明。MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明。如图5所示。 图5Pin9:RESET/Vpd复位信号复用脚,当80C51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序
5、计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,80C51的初始态。80C51的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。 Pin30:ALE/PROG当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信
6、号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,PROG将用于输入编程脉冲。Pin29:PSEN当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外
7、部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。1.3、设计原理说明 本设计通过单片机80C51的P1口的P1.0和P1.1两个引脚输出两路方波信号,通过P0口的P0.0和P0.4两个引脚接两个按键分别来控制输出方波的相位和频率变化。本设计的相位和频率的变化是通过调用延时子程序来控制的,通过按键是延时的时间发生改变从而输出不同相位和频率的方波信号,设计框图如下图6图62、系统硬件线路设计图图73、程序框图 本设计程序流程图如图8图84、系统资源分配 以下是本设计单片机80C51的系统资源分配: 单片机80C51的P0口的P0.0接按键KEY1,P0.4接按键KEY2;P1
8、口的P1.0和P1.1分别接示波器的A通道和B通道。5、源程序ORG 0000H AJMP START ORG 0100HSTART:MOV R1,#32 MOV R3,#32MAIN:SETB P1.0 CALL DE2 SETB P1.1 CALL DE1 CLR P1.0 CALL DE2 CLR P1.1 CALL DE1 JNB P0.0,CP JNB P0.4,CF JMP MAIN CP: JNB P0.0,$ MOV A,R1 ADD A,#32 MOV R1,A JMP MAIN CF: JNB P0.4,$ MOV A,R3 RLC A MOV R3,A JMP MAIN
9、DE1:MOV A,#20 MOV R6,A D1:MOV A,R3 MOV R5,A D2:MOV R4,#25 DJNZ R4,$ DJNZ R5,D2 DJNZ R6,D1 RET DE2: MOV A,R1 MOV R2,A D3:MOV R4,#25 DJNZ R4,$ DJNZ R2,D3 RETEND6、仿真结果 原始波形图: 按下KEY1后产生了相位差: 按下KEY2后频率成倍的变化: 上面3张波形分别是原始波形以及按下KEY1和KEY2后分别的波形,由于相位差设置比较小,第二张图是按下KEY13次后的图,而频率变化是成倍变化的从第三张仿真图中可以看出。7、性能分析 本设计延时
10、子程序的延时时间是0.05ms,所以产生的波形的初始周期为5*32*0.05=8ms。程序中通过右移指令周期每次减小一半。周期为8ms,所以频率为125Hz,每次按键周期减半,频率则翻倍。由仿真结果可以看出结果符合设计要求。 对于相位的变化设置的相位差比较小,但是仍然可以识别。对于硬件的测试首先是检查电路的逻辑线路是否正确,如果正确再检查原理图的线路连接是否正确,电路的布局安排是否合理等等。软件的测试主要是检查程序的语法是否正确,数据结构安排是否妥当,时序是否正确,整体流程安排是否合理。上面两部检查妥当后,就到了系统调试最关键的一步,软硬件的协同调试,问题往往在此才能被发现。8、总结与心得 本
11、次课程设计我的题目是设计并实现两路相位可调方波信号发生器。在学习微机原理和单片机以及智能仪器这些课程的时候我们就接触过很多可以产生方波的方法。因此这次课程设计对于产生方波的方式有了多中选择。 刚刚开始的时候我想起在以前的一些课程设计中曾经做过数模转换的实验,其中就要求产生方波,利用了DAC0832这个芯片产生方波,正弦波,三角波。于是刚刚开始我想过了利用DAC0832来完成这次课程设计。但是后来发现要同时产生两路方波信号有很大的困难。于是后来选择了最简单的方案利用单片机80C51的P1口的两个引脚输出高低电平。通过延时高低电平的时间来实现控制相位变化和频率变化。 方案虽然确定了,但是由于自己对
12、于汇编程序的编写掌握的不是很好,因此对于写程序是遇到了很大的困难。首先可以输出两路方波信号并且在示波器上显示,但是无法改变相位和频率。后来改变程序之后可以改变频率但是在改变相位的时候频率也变化了,也就是没有实现频率和相位独立变化的要求。后来在同学的帮助下,多次修改程序,最终完成了本次课程设计。 这次课程设计的时间还是比较充足的,而且最后还推后了两天,这让我的课程设计有了一点提升的空间。在做课程设计的过程中,我充分认识到了以前自己在课堂上学习的不足,很多知识在用的时候都记不起来了或者不会了。于是一边做一边重新温习以前学过的知识,这占了我很大一部分时间。但在自己慢慢摸索中,以前学过的东西慢慢的回忆
13、起来了,并且加上一些热心同学以及老师的帮助,最终我还是比较好的完成了这次课程设计。 本次单片机课程设计的完成,让我的汇编水平以及对单片机这门课的认识有了很大提高。最后,感谢帮助过我的同学和老师。 9、参考文献1、 张鑫,华臻,陈书谦.单片机原理及应用.北京:电子工业出版社.20082、 姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版社.20043、 李群芳,张士军,黄建.单片微型计算机与接口技术(第2版).北京:电子工业出版社.20054、 汪道辉.单片机系统设计与实践.北京:电子工业出版社.20065、 徐维祥,刘旭敏.单片微型计算机原理及应用.大连:大连理工大学出版社.2006
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2