基于51单片机的三角波输出系统设计(共21页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于51单片机的三角波输出系统设计(共21页).doc》由会员分享,可在线阅读,更多相关《基于51单片机的三角波输出系统设计(共21页).doc(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误判为多次输
14、入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘到达稳定状态,再去判读所按下的键的值,就可以让键盘的输入稳定。程序流程图如图8所示。图8 键盘扫描程序流程图程序清单如下:TEST: MOV P2,#0F0H ;P2.0-P2.3输出0,P2.4-P2.7输出1,作为输入位 MOV A,P2 ;读键盘,检测有无键按下 ANL A,#0F0H ;屏蔽P2.0-P2.3,检测P2.4-P2.7是否全为1 CJNE A,#0F0H,HAVE ;P2.4-P2.7不全为1,有键按下 SJMP TEST ;P2.0-P2.3全为1,无键按下,重新检测键盘HAVE: MOV A,#0
15、FEH ;有键按下,逐行扫描键盘,置扫描处置NEXT: MOV B,A ;扫描码暂存于B MOV P2,A ;输出扫描码READ: MOV A,P2 ;读键盘 ANL A,#0F0H ;屏蔽P2.0-P2.3,检测P2.4-P2.7是否全为1 CJNE A,#0F0H,YES ;P2.4-P2.7不全为1,该行有键按下 MOV A,B ;被扫描行无键按下,准备查下一行 RL A ;置下一行扫描码 CJNE A,0EFH,NEXT ;未扫到最后一行循环 YES:MOV R7,#80 ;消除抖动(延时) D2:MOV R6,#248 ;延时时间(248*2112)*4020000*1us=20ms
16、 DJNZ R6,$ NOP DJNZ R7,D2 RERD:MOV A,P2 ;再读键盘 ANL A,#0F0H ;屏蔽P2.0-P2.3,保留P2.4-P2.7 MOV R2,A ;暂存列码 MOV A,B ANL A,#0FH ;取行扫描码 ORL A,R2 ;行码、列码合并为键编码 MOV R4,A ;键编码存于R4按键处理部分由上面键盘逐行扫描得到按键的键值后,要进行相应的处理:即通过判断R4的值转到不同的子程序,调用不同的延时程序,由于只选用了16个键盘中的6个,所以当按下其余的键时,程序会产生默认幅度值和频率值的波形。当按下S1键时,它的键值为77H,程序会跳转到PR0,PR0调
17、用的是第一个表,也就是产生第一种幅,。当按下S2键时,它的键值为B7H,程序会跳转到PR1,PR1调用的是第二个表,也就是产生第二种幅度,当按下S3键时,它的键值为D7H,程序会跳转到PR2,PR2调用的是第三个表,也就是产生第三种幅度,在这三种情况下,频率都是默认的。当按下S5键是,它的键值为7BH,DELAY会跳转执行第一个延时t0_50Hz,当按下S6键时,它的键值为BBH,DELAY会跳转执行第二个延时t0_10Hz,当按下S7键时,它的键值为DBH,DELAY会跳转执行第三个延时t0_1Hz,这样就可以改变三角波的频率了,而在这三种情况下,幅度是默认的。程序清单如下:TRANS:CJ
18、NE R4,#77H,S1 ;R4 是读入的键位值 AJMP PR0 ;转到子程序PR0,第一种幅度S1: CJNE R4,#0B7H,S2 AJMP PR1 ;转到子程序PR1,第二种幅度S2: CJNE R4,#0D7H,S3S3: AJMP PR2 ;转到子程序PR2,第三种幅度 DELAY: CJNE R4,#7BH,KEY1 ;R4 是读入的键位值 AJMP t0_50Hz ;跳转到t0_50Hz,第一种频率KEY1: CJNE R4,#0BBH,KEY2 AJMP t0_10Hz ;跳转到t0_10Hz,第二种频率KEY2: CJNE R4,#0DBH,KEY3KEY3: AJMP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 三角 输出 系统 设计 21
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内