基于51单片机函数信号发生器设计.

合集下载

51单片机延时函数

51单片机延时函数

51单片机延时函数在嵌入式系统开发中,51单片机因其易于学习和使用、成本低廉等优点被广泛使用。

在51单片机的程序设计中,延时函数是一个常见的需求。

通过延时函数,我们可以控制程序的执行速度,实现定时器功能,或者在需要的时候进行延时操作。

本文将介绍51单片机中常见的延时函数及其实现方法。

一、使用for循环延时这种方法不精确,但是对于要求不高的场合,可以用来估算延时。

cvoid delay(unsigned int time){unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<1275;j++);}这个延时函数的原理是:在第一个for循环中,我们循环了指定的时间次数(time次),然后在每一次循环中,我们又循环了1275次。

这样,整个函数的执行时间就是time乘以1275,大致上形成了一个延时效果。

但是需要注意的是,这种方法因为硬件和编译器的不同,延时时间会有很大差异,所以只适用于对延时时间要求不精确的场合。

二、使用while循环延时这种方法比使用for循环延时更精确一些,但是同样因为硬件和编译器的不同,延时时间会有差异。

cvoid delay(unsigned int time){unsigned int i;while(time--)for(i=0;i<1275;i++);}这个延时函数的原理是:我们先进入一个while循环,在这个循环中,我们循环指定的时间次数(time次)。

然后在每一次循环中,我们又循环了1275次。

这样,整个函数的执行时间就是time乘以1275,大致上形成了一个延时效果。

但是需要注意的是,这种方法因为硬件和编译器的不同,延时时间会有差异,所以只适用于对延时时间要求不精确的场合。

三、使用定时器0实现精确延时这种方法需要在单片机中开启定时器0,并设置定时器中断。

在中断服务程序中,我们进行相应的操作来实现精确的延时。

这种方法需要使用到单片机的定时器中断功能,相对复杂一些,但是可以实现精确的延时。

基于单片机的函数信号发生器设计设计

基于单片机的函数信号发生器设计设计

基于单片机的函数信号发生器设计设计基于单片机的函数信号发生器是一种能够产生各种波形信号的电子设备。

它利用单片机控制并产生不同频率、幅度和相位的信号,可以应用于实验室教学、科研实验、电子设备测试等领域。

本文将详细介绍基于单片机的函数信号发生器的设计原理、硬件实现、软件设计和功能实现等方面。

设计原理函数信号发生器的基本原理是使用振荡电路产生基准信号,再通过放大和滤波电路得到所需频率和幅度的信号。

传统的信号发生器采用模拟电路实现,如RC振荡器和多谐振荡器等。

而基于单片机的信号发生器则利用单片机高度集成的特点,通过软件控制实现信号的产生。

硬件实现振荡电路可以采用单片机内部的定时器/计数器模块来实现。

通过合理设置定时器的工作模式、时钟频率和计数值,可以产生所需的频率信号。

放大和滤波电路用于将振荡电路产生的小幅度信号放大到所需的幅度,并进行滤波处理,消除杂散和谐波。

AD转换电路用于将模拟信号转换为数字信号,以供单片机进行处理和输出。

可以采用单片机内部的ADC模块或外部的ADC芯片来实现。

软件设计单片机的驱动程序用于初始化相关外设,如定时器、IO口和ADC等,并提供相应的读写函数接口。

信号发生器的控制程序通过设置定时器的工作模式和时序控制,生成不同频率和波形的信号。

通过ADC转换获得外部设置的幅度参数,并通过PWM输出产生所需的幅度信号。

功能实现波形选择功能通过软件控制输出不同类型的波形信号,如正弦波、方波、三角波、锯齿波等。

频率调节功能通过改变定时器的工作模式和时钟频率,实现信号频率的调节。

可以设置不同的频率范围和分辨率,满足不同应用的需求。

幅度调节功能通过ADC转换获取外部设置的幅度参数,并通过PWM输出产生所需的幅度信号。

可以设置不同的幅度范围和分辨率,实现信号幅度的调节。

相位调节功能通过改变定时器的时序控制,实现信号相位的调节。

可以设置不同的相位范围和分辨率,满足不同实验或测试的需求。

总结基于单片机的函数信号发生器是一种功能强大、灵活性高的电子设备。

基于AT89C51单片机的多功能函数信号发生器设计毕业论文

基于AT89C51单片机的多功能函数信号发生器设计毕业论文
1.2波形介绍
·正弦波
正弦信号可用如下形式表示
f(t)=Asin(ωt+θ)(1)
其中,A为振幅,ω是角频率,θ为初相位。正弦函数为一周期信号如下图1所示:
图1 正弦波
·方波
方波函数是我们常用且所熟知的简单波形函数,做脉冲等,其表示形式如下:
(2)
方波波形如下:
图2 图形
当方波下半段幅值为0时,就为矩形波,一个原理,所以不再赘述矩形波。
(2)片内数据存储器有128B,地址空间为00H—7FH,片外没数据存储器。
(3)片内有4KB的程序存储器,地址空间为0000H—0FFFH,没有偏外存储器, 应接高电平。
(4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源[1]。
·晶振电路工作原理及应用
单片机有18、19两引脚。分别为XTAL1和XTAL2。单片机采取内部振荡电路时,将这两引脚接石英晶体与微调电容。此设计采用的是12M晶振和两个30pF的电容。在芯片内部结构中,XTAL1和XTAL2引脚是一反相放大器的两个输入端,构成单片机内部振荡器。同样,根据需要的不同,也可采用外部时钟方式。本次设计采用内部时钟方式。如图所示。
It can control the type and the output frequency of the waveform when the microcontroller are equipped with the keyboard. Also when it coupled with the LED it can be displayed. It can be sure that it is digital signal that come from the microcontroller. So we should add the DAC0832 on the output side for D/A conversion. With the two levels of op-amp we can adjust waveform. Finally display on theoscilloscope.

基于51单片机的简易函数信号发生器资料

基于51单片机的简易函数信号发生器资料

创新性实验研究报告实验项目名称_简易函数信号发生器四、实验内容1、运用keil软件对程序进行编写,运行程序,并进行程序修改。

2、运用protues软件进行硬件电路仿真设计。

3、将程序下载到仿真单片机中,并观测输出波形。

4、对程序进行修改,再次运行仿真软件,直到输出理想的波形。

5、仿照仿真软件进行硬件电路的焊接。

6、将程序下载到单片机,并用示波器测试输出波形。

7、对程序进行修改,直到输出满意的波形为止。

3、实验步骤1、首先打开keil软件.2、运用keil软件对程序进行编写,程序见附件。

3、打开protues软件.4、运用protues软件对硬件电路进行设计。

9C51单片机是该信号发生器的核心,具有2个定时器,32个并行I/O口,1个串行I/O口,5个中断源。

由于本设计功能简单,数据处理容易,数据存储空间也足够,因为我们采用了片选法选择芯片,进行芯片的选择和地址的译码。

在单片机最小最小系统中,单片机从P1口接收来自键盘的信号,并通过P0口输出控制信号,通过DA转换芯片最终由示波器显示输出波形。

单片机引脚分配如下:�XTAL1,XTAL2:外接晶振,产生时钟信号。

�RST:复位电路;�P2口:8位数字信号输出输出,外接DAC0832;�P3.6口和P3.7口:DAC0832的时钟信号;单片机模块单片机输出的是数字信号,因为要得到模拟信号的波形就必须对其进行数模转换。

我们采用了DAC0832数模转换器,该芯片具由8位输入锁存器、8位DAC寄存器、8位D/A转换器及转换控制电路四部分构成。

由于其输出为电流输出,因为外加运算放大器LM324使之转换为电压输出。

最后通过示波器显示输出的波形。

数模转换模块运放模块整体硬件电路图五、实验结果与分析1、实验现象、数据记录仿真波形2、对实验现象、数据及观察结果的分析与讨论:经过观察调试,再观察,再调试,最终输出的波形较为理想。

此次试验经过一系列的调试,最终输出的波形为正弦波、方波、三角波。

--基于51单片机的简易函数信号发生器的设计与分析

--基于51单片机的简易函数信号发生器的设计与分析

基于51单片机的简易函数信号发生器的设计与分析郭 辉(阜阳师范学院信息工程学院,安徽阜阳,236037)摘要:函数信号发生器设计与分析是单片机实践中的一重要实验。

本文采用Proteus 对函数信号发生器的原理图进行设计,并通过Keil 软件编程验证该设计的可行性,通过调节按键,该简易函数信号发生器可以正确输出正弦波、锯齿波、梯形波、矩形波,并可以通过按键对相应波形的频率进行调节,最终通过Proteus 制作出该电路的PCB 原理图。

本设计对单片机项目设计与实现具有一定的指导意义。

关键词:信号发生器;AT89C51;Proteus ;Keil ;PCB 中图分类号:TP368.1 文献标识码:BDesign and analysis of a simple function signal generator based on 51 single chip microcomputerGuo Hui(College of Information Engineering,Fuyang Teachers' College,Fuyang Anhui,236037)Abstract :This paper uses the principle of figure Proteus function signal generator is designed,and the feasibility of the design is verified by Keil software programming,by adjusting the key,the simple function signal generator can output sine wave,Ju Chibo,trapezoidal wave,rectangular wave,and can be adjusted through the key corresponding to the frequency of the waveform, eventually produced by Proteus PCB principle diagram of the circuit.Keywords :signal generator;AT89C51;Proteus;Keil;PCB 0 引言Proteus 软件为英国Labcenter electronics 公司开发的EDA 工具软件。

基于单片机的函数信号发生器毕业设计完整版

基于单片机的函数信号发生器毕业设计完整版

源程序:ORG 0000HAJM MAINORG 000BHLJMP TC0ORG 0030HMAIN:MOV DPTR,#9FFFH 指向DAC0832(1)MOV A,70HMOVX @DPTR,A DAC0832(1)输出MOV DPTR,#7F00H 指向8155命令字端口地址MOV A,#06H 设置A口为输入,B口、C口为输出MOVX @DPTR,A 送命令字MOV DPTR,#7F01H 指向A口地址MOVX A,@DPTR 读入A口的开关数据JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP MAINLED1:MOV R3,#06H 设置6个LED显示MOV R2,#01H 选通第一位LED数据MOV R1,#30H 送显示缓冲区首址GN1:MOV DPTR,#7F03H 指向C口地址MOV A,R2 位选通数据送AMOVX @DPTR,A 位选通数据送C口RL A 选通下一位MOV R2,A 位选通数据送R2中保存MOV A,@R1 取键值MOV DPTR,#TAB 送LED显示软件译码表首址MOVC A,@A+DPTR 查表求出键值显示的段码MOV DPTR,#7F02H 指向B口地址MOV @DPTR,A 段码送显示LCALL LOOP1 调延时子程序INC R1 指向下一位显示缓冲区地址DJNZ R3,GN1 循环显示6个LEDRETLOOP1:MOV R4,#08H 延时子程序LOOP:MOV R5,#0A0HDJNZ R5,$DJNZ R4,LOOPRETK10H:MOV 30H,#00H 显示10HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#01HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#15HMOV TH0,#9EHAJMP PDK100H:MOV 30H,#00H 显示100HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#01HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#08HMOV TH0,#0F6HAJMP PDK500H:MOV 30H,#00H 显示500HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#05HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#01HMOV TH0,#0FEHAJMP PDK1K:MOV 30H,#00H 显示1KHzMOV 31H,#00HMOV 32H,#01HMOV 33H,#00HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#01HMOV TH0,#0FFHPD:JNB ACC.0,KE0 判断是否“0”号键按下,若是则转方波输出JNB ACC.1,KE1 判断是否“1”号键按下,若是则转正弦方波输出JNB ACC.2,KE2 判断是否“2”号键按下,若是则转三角波输出JNB ACC.3,KE3 判断是否“3”号键按下,若是则转锯齿波输出LJMP PDKE0:MOV R7,#00HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE1:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE2:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE3:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HGN:SETB TR0SETB ET0SETB EALOP1:JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP LOP1TC0:CJNE R7,#00H,TC1 发送方波程序MOV DPTR,#TAB1 送方波数据表首址MOV A,R6 发送数据寄存器MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC1:CJNE R7,#01H,TC2 发送正弦波程序MOV DPTR,#TAB2 送正弦波数据表首址MOV A,R6MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC2:CJNE R7,#02H,QL1 发送三角波程序MOV DPTR,#TAB3 送三角波数据表首址MOV A,R6MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC3::CJNE R7,#03H,QL1 发送锯齿波程序MOV DPTR,#TAB4 送锯齿波数据表首址MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HQL1:RETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H,82H,0F8H,80HTAB1:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HTAB2:DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAHDB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB 96H,93H,90H,8DH,89H,86H,83H,80HDB 80H,7CH,79H,78H,72H,6FH,6CH,69HDB 66H,63H,60H,5DH,5AH,57H,55H,51HDB 4EH,4CH,48H,45H,43H,40H,3DH,3AHDB 38H,35H,33H,30H,2EH,2BH,29H,27HDB 25H,22H,20H,1EH,1CH,1AH,18H,16HDB 15H,13H,11H,10H,0EH,0DH,0BH,0AHDB 09H,08H,07H,06H,05H,04H,03H,02HDB 02H,01H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,01H,02HDB 02H,03H,04H,05H,06H,07H,08H,09HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EHDB 51H,55H,57H,5AH,5DH,60H,63H,66HDB 69H,6CH,6FH,72H,76H,79H,7CH,80H TAB3:DB 00H,02H,04H,06H,08H,0AH,0CH,0EHDB 10H,12H,14H,16H,18H,1AH,1CH,1EHDB 20H,22H,24H,26H,28H,2AH,2CH,2EHDB 30H,32H,34H,36H,38H,3AH,3CH,3EHDB 40H,42H,44H,46H,48H,4AH,4CH,4EHDB 50H,52H,54H,56H,58H,5AH,5CH,5EHDB 60H,62H,64H,66H,68H,6AH,6CH,6EHDB 70H,72H,74H,76H,78H,7AH,7CH,7EHDB 80H,82H,84H,86H,88H,8AH,8CH,8EHDB 0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ACH,0AEHDB 0B0H,0B2H,0B4H,0B6H,0B8H,0BAH,0BCH,0BEHDB 0C0H,0C2H,0C4H,0C6H,0C8H,0CAH,0CCH,0CEHDB 0D0H,0D2H,0D4H,0D6H,0D8H,0DAH,0DCH,0DEHDB 0E0H,0E2H,0E4H,0E6H,0E8H,0EAH,0ECH,0EEHDB 0F0H,0F2H,0F4H,0F6H,0F8H,0FAH,0FCH,0FEHDB 0FFH,0FEH,0FCH,0FAH,0F8H,0F6H,0F4H,0F2HDB 0F0H,0EEH,0ECH,0EAH,0E8H,0E6H,0E4H,0E2HDB 0E0H,0DEH,0DCH,0DAH,0D8H,0D6H,0D4H,0D2HDB 0D0H,0CEH,0CCH,0CAH,0C8H,0C6H,0C4H,0C2HDB 0C0H,0BEH,0BCH,0BAH,0B8H,0B6H,0B4H,0B2HDB 0B0H,0AEH,0ACH,0AAH,0A8H,0A6H,0A4H,0A2HDB 0A0H,09EH,9CH,9AH,98H,96H,94H,92HDB 90H,8EH,8CH,8AH,88H,86H,84H,82HDB 80H,7EH,7CH,7AH,78H,76H,74H,72HDB 70H,6EH,6CH,6AH,68H,66H,64H,62HDB 60H,5EH,5CH,5AH,58H,56H,54H,52HDB 50H,4EH,4CH,4AH,48H,46H,44H,42HDB 40H,3EH,3CH,3AH,38H,36H,34H,32HDB 30H,2EH,2CH,2AH,28H,26H,24H,22HDB 20H,1EH,1CH,1AH,18H,16H,14H,12HDB 10H,0EH,0CH,0AH,08H,06H,04H,02HTAB4:DB 00H,01H,02H,03H,04H,05H,06H,07HDB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FHDB 10H,11H,12H,13H,14H,15H,16H,17HDB 18H,19H,1AH,1BH,1CH,1DH,1EH,1FHDB 20H,21H,22H,23H,24H,25H,26H,27HDB 28H,29H,2AH,2BH,2CH,2DH,2EH,2FHDB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FHDB 40H,41H,42H,43H,44H,45H,46H,47HDB 48H,49H,4AH,4BH,4CH,4DH,4EH,4FHDB 50H,51H,52H,53H,54H,55H,56H,57HDB 58H,59H,5AH,5BH,5CH,5DH,5EH,5FHDB 60H,61H,62H,63H,64H,65H,66H,67HDB 68H,69H,6AH,6BH,6CH,6DH,6EH,6FHDB 70H,71H,72H,73H,74H,75H,76H,77HDB 78H,79H,7AH,7BH,7CH,7DH,7EH,7FHDB 80H,81H,82H,83H,84H,85H,86H,87HDB 88H,89H,8AH,8BH,8CH,8DH,8EH,8FHDB 90H,91H,92H,93H,94H,95H,96H,97HDB 98H,99H,9AH,9BH,9CH,9DH,9EH,9FHDB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7HDB 0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFHDB 0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7HDB 0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFHDB 0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7HDB 0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFHDB 0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7HDB 0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFHDB 0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7HDB 0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFHDB 0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7HDB 0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH END。

基于单片机的函数信号发生器设计

基于单片机的函数信号发生器设计

基于单片机的函数信号发生器设计引言:函数信号发生器是一种能够产生各种不同波形的仪器,广泛应用于电子实验、仪器仪表测试等领域。

传统的函数信号发生器通常由模拟电路实现,但使用单片机来设计函数信号发生器具有灵活性高、可编程性强的优点。

本文将介绍一种基于单片机的函数信号发生器的设计。

一、设计原理单片机函数信号发生器的设计基于数字信号处理技术,通过使用单片机的计时器和IO口来产生各种不同形状和频率的波形。

其主要步骤如下:1.选择适当的单片机选择一款拥有足够IO口和计时器功能的单片机作为控制核心。

可以使用常见的单片机如ATmega16、STM32等。

2.设计时钟电路通过外部晶振或者内部时钟源,提供稳定的时钟信号。

3.波形生成算法选择合适的波形生成算法,根据算法设计相应的程序来生成正弦、方波、三角波等不同波形。

4.输出接口设计设计输出接口,可以使用模拟输出电路将数字信号转化为模拟信号输出到外部设备,也可以使用DAC芯片来实现模拟输出。

二、硬件设计1.单片机选型在选择单片机时,需要考虑到所需的IO口数量、计时器数量和存储器容量等因素。

对于初学者来说,可以选择ATmega16单片机,它拥有足够的IO口和计时器资源。

2.时钟电路设计为了使单片机能够稳定工作,需要提供合适的时钟信号。

可以使用外部晶振电路或者内部时钟源。

同时,还需要添加滤波电路来排除干扰。

3.输入电路设计如果需要通过键盘或者旋钮来调节频率和幅度等参数,可以设计相应的输入电路。

可以使用AD转换器来将模拟信号转化为数字信号输入到单片机。

4.输出电路设计为了将数字信号转化为模拟信号输出到外部设备,可以使用RC电路或者声音音箱等输出装置。

三、软件设计1.程序框架设计设计程序框架,包括初始化配置、波形生成循环、参数调整等部分。

2.波形生成算法编写根据所选的波形生成算法,编写相应的程序代码。

可以使用数学函数来生成正弦波、三角波等形状,也可以采用查表法。

3.输入参数处理根据设计要求,编写处理输入参数的程序代码,实现参数调整、频率设置等功能。

毕业设计--基于AT89S51单片机的数字信号发生器

毕业设计--基于AT89S51单片机的数字信号发生器

基于AT89S51单片机的数字信号发生器【摘要】智能仪器的出现,极大地扩充了传统仪器的应用范围。

智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。

本系统是基于AT89S51单片机设计的数字式波形发生器。

采用AT89S51作为系统的控制核心,外围电路采用数字/模拟转换电路(DAC0832),运放电路(MC1458),按键,ISP接口等。

通过按键控制切换产生正弦波,锯齿波,三角波,方波,各类型信号的频率统一为100HZ,而幅值在-5V~+5V范围内可调。

本设计电路原理简单,性能较好,具有一定的实用性和参考价值。

【关键词】单片机 ,波形发生器,D/A电路DIGITAL SIGNAL GENERATOR DESIGN BASED ON AT89S51【ABSTRACT】The emergence of intelligent machines, which greatly expanded the scope of application of traditional instruments. Intelligent instrument, with its small size, powerful, low-power advantages of home appliances quickly, research institutes and industrial enterprises has been widely used.The system is a digital waveform generator based on single chip computer. AT89S51 is used as a control core. The system is composed by digital/analog conversion (DAC0832),imply circuit (MC1458),button ISP inferface and LED lights. It can generate square triangle and sine wave,with LED display .The frequency of various types of signal unity of 100HZ, but the amplitude in the-5V ~ +5 V range adjustable. The circuit design is simple, better performance, has some practical and reference value.【KEY WORDS】the single chip computer , the signal generator , D/A conversion目录绪论 (9)1. 波形发生器现状 (9)2. 单片机在波形发生器中的运用 (9)第一章系统设计 (10)1. 系统要求 (11)2. 系统方案选择与论证 (11)3. 系统设计原理与思路 (11)第二章硬件电路的设计 (12)1. AT89S51的介绍 (12)2. 资源分配 (15)3. 最小单片机系统的设计 (15)4. 各模块电路的设计 (17)5. ISP接口 (23)第三章软件设计 (24)1. 主程序的设计 (25)2. 锯齿波程序的设计 (25)3. 三角波程序的设计 (26)4. 正弦波程序的设计 (27)5. 方波程序的设计 (28)第四章测试仿真 (29)1. 软件仿真 (29)2. 仿真结论分析 (30)3. 硬件测试结论分析 (31)绪论1.波形发生器现状波形发生器作为一种常用的应用电子仪器设备,传统的波形发生器可以完全用硬件电路搭建,如应用555振荡电路可以产生正弦波,三角波,方波等波形,传统的波形发生器多采用这种方式设计,这种方式不应用单片机,但是这种方式存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟震动等领域往往需要低频信号源,而由硬件搭建的波形发生器效果往往达不到好的效果,而且低频信号源所需要的RC很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要: 本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。

通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。

关键词:单片机AT89S52、DAC0832、液晶1602Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602. this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this design, the wave generator into wave form module and D/A conversion module are discussed in detail.key word: AT89S52, DAC0832, liquid crystal 1602.目录1. 系统设计1.1 设计要求1.2方案设计与论证1.2.1 信号发生电路方案论证1.2.2 单片机的选择论证1.2.3 显示方案论证1.2.4 键盘方案论证1.3 总体系统设计1.4 硬件实现及单元电路设计1.4.1 单片机最小系统的设计1.4.2 波形产生模块设计1.4.3 显示模块的设计1.4.4 键盘模块的设计1.5 软件设计流程1.6源程序2. 输出波形的种类与频率的测试2.1 测试仪器及测试说明2.2 测试结果3. 设计心的及体会4. 附录4.1 参考文献4.2 附图1、系统设计经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。

1.1、设计要求1、利用单片机采用软件设计方法产生三种波形2)、三种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其平率1.2方案设计与论证1.2.1 信号发生电路方案论证方案一:通过单片机控制D/A,输出三种波形。

此方案输出的波形不够稳定,抗干扰能力弱,不易调节。

但此方案电路简单、成本低。

方案二:使用传统的锁相频率合成方法。

通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。

此方案,电路复杂,干扰因素多,不易实现。

方案三:利用MAX038芯片组成的电路输出波形。

MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。

但此方案成本高,程序复杂度高。

以上三种方案综合考虑,选择方案一。

1.2.2 单片机的选择论证方案一:AT89S52单片机是一种高性能8位单片微型计算机。

它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。

方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。

除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。

但其价格较贵以上两种方案综合考虑,选择方案一1.2.3 显示方案论证方案一:采用LED数码管。

LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。

由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。

使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。

方案二:采用LCD液晶显示器1602。

其功率小,效果明显,显示编程容易控制,可以显示字母。

以上两种方案综合考虑,选择方案二。

1.2.4 键盘方案论证方案一:矩阵式键盘。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。

当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。

当某一个键闭合时,该键所对应的行线和列线被短路。

方案二:编码式键盘。

编码式键盘的按键触点接于74LS148芯片。

当键盘上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由74LS148输出。

以上两种方案综合考虑,选择方案一。

1.3总体系统设计该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。

将设计任务分解为按键电路、液晶显示电路等模块。

图(1)为系统的总体框图图(1)总体方框图1.4硬件实现及单元电路设计1.4.1单片机最小系统的设计89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。

用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图(2) 89C51单片机最小系统所示。

由于集成度的限制,最小应用系统只能用作一些小型的控制单元。

其应用特点:(1 有可供用户使用的大量I/O口线。

(2 内部存储器容量有限。

(3 应用系统开发具有特殊性。

图(2) 89C51单片机最小系统1.4.2 波形产生模块设计由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。

其电路图如下:图(3)波形产生电路如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。

DAC0832的为八位数据并行输入的,其结构图如下:图(4)DAC0832的内部结构1.4.3 显示模块的设计通过液晶1602显示输出的波形、频率,其电路图如下:图(5)液晶显示如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E 分别接单片机的P3.2—P3.4。

通过软件控制液晶屏可以显示波形的种类以及波形的频率。

1.4.4 键盘显示模块的设计本系统采用独立键盘,其连接电路图如下:图(6)键盘图中键盘独立键盘引出的八跟线分别接单片机的P2口,只用其第四列,因此在程序初始化时P2.7脚给低电平。

如图开关3用来切换输出波形、开关7和8用来调节频率的加减。

当按开关7时输出波形的频率增加,按开关8时输出波形的频率减小。

1.5 软件设计流程本系统采用AT89S52单片机,用编程的方法来产生三种波形,并通过编程来切换三种波形以及波形频率的改变。

具体功能有:(1)各个波形的切换;(2)各种参数的设定;(3)频率增减等。

软件调通后,通过编程器下载到AT89S52芯片中,然后插到系统中即可独立完成所有的控制。

软件的流程图如下:图(7)程序流程图1.6源程序#include#define uchar unsigned char#define uint unsigned intsbit lcdrw=P3^3;sbit lcdrs=P3^2;sbit lcde=P3^4;sbit d=P2^7;sbit s1=P2^0;sbit s2=P2^1;sbit s3=P2^2;sbit cs=P3^5;sbit wr=P3^6;uchar s1num,a,ys,j;uint fre;uchar code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2, 0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5, 0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1, 0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd, 0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1, 0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda, 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc, 0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99, 0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30, 0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16, 0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06, 0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15, 0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e, 0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e, 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72, 0x76,0x79,0x7c,0x80 };/*正弦波码 */void delay(uint z //延时子程序{uchar i,j;for(i=z;i>0;i--for(j=110;j>0;j--;}void delay1(uint y{uint i;for(i=y;i>0;i--;}void write_com(uchar com //1602写指令{lcdrs=0;P1=com;delay(5;lcde=1;delay(5;lcde=0;}void write_data(uchar date //1602数据{lcdrs=1;P1=date;delay(5;lcde=1;delay(5;lcde=0;}void init( //初始化{lcdrw=0;lcde=0;wr=0;cs=0;write_com(0x38;write_com(0x0c;write_com(0x06;write_com(0x01;write_com(0x80+0x00;write_data(0x77; //写wave: write_data(0x61;write_data(0x76;write_data(0x65;write_data(0x3a;write_com(0x80+0x40; //写 f:write_data(0x66;write_data(0x3a;}void write_f(uint date //写频率{uchar qian,bai,shi,ge;qian=date/1000;bai=date/100%10;shi=date/10%10;ge=date%10;write_com(0x80+0x42;write_data(0x30+qian;write_data(0x30+bai; write_data(0x30+shi; write_data(0x30+ge; write_data(0x48; write_data(0x5a;}void xsf( //显示频率{if(s1num==1{fre=(1000/(9+3*ys; write_f(fre;}if(s1num==2{fre=(100000/(3*ys; write_f(fre;}if(s1num==3{fre=(1000/(15+3*ys; write_f(fre;}void keyscanf({d=0;if(s1==0{delay(5;if(s1==0{while(!s1;s1num++;if(s1num==1{ys=0;write_com(0x80+0x05;write_data(0x73; //写sine: write_data(0x69;write_data(0x6e;write_data(0x65;write_data(0x20;write_data(0x20;}if(s1num==2ys=10;write_com(0x80+0x05;write_data(0x73; //写squrae write_data(0x71;write_data(0x75;write_data(0x61;write_data(0x72;write_data(0x65;}if(s1num==3{ys=0;write_com(0x80+0x05; //train write_data(0x74;write_data(0x72;write_data(0x61;write_data(0x69;write_data(0x6e;write_data(0x20;}if(s1num==4{s1num=0;P1=0;write_com(0x80+0x05; write_data(0x20; write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20; write_com(0x80+0x42; write_data(0x20; write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;}}}if(s2==0{delay(5;if(s2==0{while(!s2;ys++;}}if(s3==0{delay(5;if(s3==0{while(!s3;ys--;}}}void main({init(;while(1{keyscanf(;if(s1num==1 //正弦波// {for(j=0;j<255;j++{P0=tosin[j];delay1(ys;}}if(s1num==2 //方波// {P0=0xff;delay1(ys;P0=0;delay1(ys;}if(s1num==3 //三角波// {if(a<128{P0=a;delay1(ys;}else{P0=255-a;delay1(ys;}a++;}if(!(s1&s2&s3{xsf(;}}}2、输出波形的种类与频率的测试2.1、测量仪器及测试说明测量仪器:稳压电源、示波器、数字万用表。

相关文档
最新文档