基于单片机四种波形发生器仿真设计-毕设课设

【资源下载】下载地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

电路的操作:

四个功能键:

1波形:依次在四种波形之间切换

2频率_幅值切换:在频率和幅值调节之间切换

3加:每按一次频率按10Hz的步长递增,或幅值按1V的步长递增

4减:每按一次频率按10Hz的步长递减,或幅值按1V的步长递减

电路设计原理:

利用两片DAC0832数模转换芯片,均工作在直通方式。

U1用来控制幅值,U2用来控制波形

U1的工作方式设置为直通,参考电压设置为-5V,则输出电压范围为0-----+5V

输入端接P0口,数字量与模拟量的关系为:

Vout1=-1*(VREF/256)*D

其中:VREF为参考电压等于-5V,D是P0口的数字量,取值为0---255

可以通过调节由P0口输入的数字量D来调节输出电压Vout1的数值。

如果要求输出电压Vout1为: 1,1.5,2,2.5,3,3.5,4,4.5,5

则由上述公式可以计算出与之相对应的数字量为:

amplitude[9]={51,77,102,128,154,179,205,230,255};

由P0口输入数字量D,就可以得到相应的电压值Vout1,从而实现了输出电压幅值的调节。

#include <reg52.h>
#include <stdio.h>		   //sprintf   
#include <intrins.h>       //nop
#include "lcd12864.h"

#define uchar unsigned char
#define uint  unsigned int

sbit  KEY1=P3^4;  //波形
sbit  KEY2=P3^5;  //频率_幅值
sbit  KEY3=P3^6;  //+
sbit  KEY4=P3^7;  //-

sbit  LE1=P3^0;   //LCD锁存控制

//按键标志位,如果有键按下,置1
bit K_WAVE=0;		  //波形
bit K_FREQ_AMP=0;	  //频率——幅值
bit K_ADD=0;		  //加
bit K_REDUCE=0;	      //减


//用于存储与 20Hz----80Hz 频率相对应的定时器预装入值
uint idata freq[7];

//用来存储幅值数字量      1 1.5	 2  2.5  3  3.5  4  4.5  5	  0.5V一个步长
//这是第一级输出,第二级输出*2
uchar xdata amplitude[9]={51,77,102,128,154,179,205,230,255};

//用来选择freq[index]数组的频段
//freq   20  30 40  50  60 70  80	Hz
//index  0   1   2   3   4  5  6  	freq[]数组下标
uchar data index_freq=0;   //频率数组下标
uchar data index_amp=0;    //幅值数组下标

uchar idata C_WAVE=0;      //波形切换
uchar idata C_FREQ_AMP=0;  //频率——幅值切换

//波形显示数据
uchar code disp_wave[4][9]={
 "1方波 ",
 "2锯齿波",
 "3三角波",
 "4正弦波"
};

/* uchar code wave_sin[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,

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值