基于51单片机的三角波输出系统设计

上传人:工**** 文档编号:494457843 上传时间:2023-08-02 格式:DOC 页数:21 大小:402KB
返回 下载 相关 举报
基于51单片机的三角波输出系统设计_第1页
第1页 / 共21页
基于51单片机的三角波输出系统设计_第2页
第2页 / 共21页
基于51单片机的三角波输出系统设计_第3页
第3页 / 共21页
基于51单片机的三角波输出系统设计_第4页
第4页 / 共21页
基于51单片机的三角波输出系统设计_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于51单片机的三角波输出系统设计》由会员分享,可在线阅读,更多相关《基于51单片机的三角波输出系统设计(21页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上目 录1 前言单片机(SCM)是单片机微型计算机(Single Chip Microcomputer)的简称.它是把组成微型计算机的各个功能部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时/计数以及串行通信接口等部件集成在一块芯片中,构成一个完整的微型计算机。单片机具有体积小、可靠性高、功能强大、方便灵活等优点而得到广泛应用,主要涉及智能化仪器仪表、自动化装置、家用电器、医用设备、计算机网络和通信等领域。 在教学、实验和生产的许多实验场合,常常需要临时的频率可方便调节的信号发生器。但是市场上的函数发生器相对较贵,因为它们一般都是利用

2、专用数字合成DSS芯片,虽然能产生任意波形并达到很高的频率,但是成本较高。而如果用分立元件组成函数发生器,通常只能产生低频信号,而且工作不稳定,不易调试。利用51系列单片机制作一个简易的函数发生器,具有成本低、理论能产生任意波形,达到较高的频率,且易于设计和调试的优点。基于性价比的考虑,决定采用STC的89C51单片机来设计函数发生器,使它能够产生幅度,频率在一定范围内可调的三角波。2 三角波输出系统设计方案系统由89C51单片机通过扫描键盘,按照幅度键(S1S3)不同的键值来调用不同子程序实现多种幅度的产生,按照频率键(S5S7)的不同的键值来改变延时实现多种频率的产生。由单片机产生的10位

3、串行数字信号通过P0口输入到TLC5615进行D/A转换,输出的模拟波形输出到示波器显示。如图1所示。图1 三角波发生器原理框图波形的产生采用定点法,即将一个周期的三角波等间距的分为若干个点,计算出各点的对应的三角波函数值,并将其转化为10位串行输入D/A的数据格式,得到一个三角波函数表。通过程序将该表存于单片机的程序存储器中,可以制作多个表,从而产生多个幅度值,通过按键的控制,调用不同的子程序,也就调用了不同的函数表。当通过按键确定调用某个子程序时,利用延时程序来产生延时,延时时间到,查表得到该点对应的输出值,然后通过D/A转换得到该点的对应电压值。如此,周而复始的查表输出,就得到所要的三角

4、波。由于一个周期三角波的点数固定,改变延时程序的延时时间,就可以改变相邻两点的时间间隔,从而改变三角波的频率。3 三角波输出系统硬件电路设计3.1 三角波输出系统总电路设计 按照上述方案设计的硬件电路如图2所示,它主要包括单片机最小系统,一片D/A转换芯片和键盘扩展。图2 系统硬件电路图3.2 三角波输出系统单元电路设计3.2.1 单片机最小系统选用STC89C51单片机,它可以降低成本,提升性能,内部FLASH擦除次数为100,000次以上,STC89C51系列单片机出厂时就已完全加密,无法解密,程序可以通过专门的软件写入,一边校验一边写。时钟电路的晶振频率为11.0592MHz。3.2.2

5、 波形输出电路波形有一片D/A转换器TLC5615输出。TLC5615是8位封装的10位电压输出的D/A转换器,输出电压为基准电压的两倍,5V单电源工作,3线串行接口,建立时间为12.5微秒,器件具有上电复位功能,以确保可重复启动。TLC5615的内部结构主要由10位移位寄存器、10位D/A寄存器、D/A转换权电阻、基准缓冲器、控制逻辑和两倍程放大器等电路组成。TLC5615的引脚如图3所示。各引脚功能介绍如下:DIN:串行数据输入脚。 OUT:模拟信号输出脚。 SCLK:串行时钟输入脚。:片选端,低电平有效。DOUT:菊花链的串行数据输出端。 AGND:模拟地。 REFIN:基准输入端,一般

6、接2V到(Vcc)V。 图3 TLC5615的引脚图Vcc:电源端,一般接5V TLC5615与89C51的接口电路如图4所示。TLC5615通过固定增益为2的运放缓冲电阻网络,把10位数字数据转换为模拟电压。上电时,内部电路把D/A寄存器复位为0。其输出具有与基准输入相同的极性,表达式为图4 TLC5616与89C51的接口电路TLC5615的工作时序如图5所示。图5 TLC5615的典型工作时序TLC5615最大的串行时钟速率不超过14MHz,10位DAC的建立时间为12.5微秒,通常更新速率限制在80kHz,以内,TLC5615的16位移位寄存器在SCLK的上升沿从DIN引脚输入数据,高

7、位在前,低位在后。16位移位寄存器中的中间10位数据在上升沿的作用下打入10位D/A寄存器供给D/A转换,16位数据的高4位和低2位不会被转换,因此待转换的数据输入格式应为:表1 TLC5615数据输入格式输入序号12345678910111213141516输入数据XXXXXX由于SPI和89C51的接口传送的是字节形式的数据,需用两个字节传送待转换的数据,因此,要把数据输入到D/A转换器需要两个写周期。由公式可知,TLC5615的输出电压范围为02,见表2所示,为该片D/A转换器的参考电压。表2 输入数据量与输出电压的关系输 入 码模拟输出电压 11111111112(1023/1024)

8、 10000000002(512/1024) 0000000000203.2.3 键盘扩展电路输出波形幅度、频率的设定由键盘控制。利用单片机的P2口扩展一个44键盘。键盘的4根行线接到单片机的P2.0到P2.3口线,4根列线接P2.4到P2.7口线。其中,S1S3定义为幅度控制键,可以产生三种不同幅度的三角波。S5S7定义为频率控制键,可以产生三种不同频率的三角波。如图6所示。图6 键盘示意图键码表如表3所示。表3 键盘键码表77B7D77BBBDB4 三角波输出系统程序设计程序采用汇编语言书写,采用模块化结构,不仅使用方便,而且阅读、修改简单。程序包括初始化、波形产生、键盘管理三个模块。程序

9、运行时,通过调用键盘扫描程序,扫描到的键值赋到寄存器R4。输出不同幅度波形的判断程序TRANS通过判断当前的R4值来决定输出波形的幅度。频率的选择则是通过判断R4的值来调用不同的延时程序来决定的。4.1 初始化模块初始化模块主要用于I/O口的定义,便于程序的编写。这部分的程序如下:DIN BIT P0.7SCLK BIT P0.6CS5615 BIT P0.54.2 波形产生模块采用定点法产生波形,将所要输出的波形按一个周期分成64个点,因为D/A转换器的输入数据格式是16位的,所以一个点占2个字节,即高8位和低8位各一个字节。通过计算,做成一个表存于单片机存储器中。这个系统一共有三个表,第一

10、个表的Code的范围是01023,因此它的输出幅度为02,第二个表的Code的范围是0511,因此它的输出幅度为0,第三个表的Code的范围是0255,因此它的输出幅度为00.5。频率可以通过调用不同的延时程序来改变,三个不同的延时程序可以产生三种不同的频率,延时时间一到,查表输出下一个点的数据,如此循环即可。程序流程图如图7所示。图7 三角波产生程序流程图其程序清单如下:PR:MOV R7,#00H ;查表指针初始化SETB CS5615 CLR SCLK ;准备操作TLC5615CLR CS5615 ;选中TLC5615MOV R0,#00H ;数据指针初始化MOV A,R0 ;装入高8位

11、数据MOV R1,#08HMOV DPTR,#TRITABMOVC A,A+DPTRLOOPH:NOPNOPRLC A ;最高位移向TLC5615 MOV DIN,CSETB SCLK ;产生上升沿,移入一位数据NOPNOPCLR SCLKDJNZ R1,LOOPHINC R0MOV A,R0 ;装入低8位数据MOV R1,#08HMOVC A,A+DPTRLOOPL:NOP ;延时NOPRLC A ;最高位移向TLC5615MOV DIN,CSETB SCLK ;产生上升沿,移入一位数据NOPNOPCLR SCLKDJNZ R1,LOOPLSETB CS5615 ;结束移位操作,将转换数据中

12、间10位送入寄存器进行D/A转换INC R7 ;查表指针加一LCALL DELAY ;延时CLR CS5615INC R0 ;数据指针加一MOV A,R0 ;准备取下一个点MOV R1,#08HMOV DPTR,#TRITABMOVC A,A+DPTRCJNE R7,#64,LOOPH ;64个点取完?否则接着取下一个点AJMP PR4.3 键盘管理模块按照前面硬件电路设计,首先对键盘进行“全盘扫描”,判断是否有键按下。若有键按下则对键盘进行“逐行扫描”,进行键译码,并将该键的键码读出来,然后按各命令键转到相应的程序进行处理,可以将键盘管理分成三部分:键盘扫描部分键盘的全盘扫描部分主要是判断是

13、否有键按下。把每个键都分成水平和垂直的两端接入,扫描码从水平的输入,代表那一行所接收到的扫描码是同一个位,而读入扫描码的则是垂直,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。比如说扫描码送入,后面的1110是代表此时扫描P2.0行,而前面的1111是让读取的4行接脚先设为VDD,若此时P2.0行的第三列按键被按下,那读取的结果就会变成(注意1111变成1101),其中P2.5会由1变成0,这是因为这个按键被按下之后,会被水平的扫描码电位拉到0,此即为扫描原理。由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘到达稳定状态,再去

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号