基于单片机技术波形发生器.docx
- 文档编号:12537314
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:18
- 大小:860.52KB
基于单片机技术波形发生器.docx
《基于单片机技术波形发生器.docx》由会员分享,可在线阅读,更多相关《基于单片机技术波形发生器.docx(18页珍藏版)》请在冰豆网上搜索。
基于单片机技术波形发生器
北京联合大学信息学院
《电子系统设计》
——单片机波形发生器
姓 名:
李冬冬
学 号:
2010080303114
系别:
电子工程系
专业:
电子信息工程
组员:
王健民
2013年6月25日
目录
1设计任务2
1.1总体设计方案2
1.11硬件电路设计2
1.12数模转换电路:
3
1.13放大电路:
4
1.14单片机最小系统:
4
1.2软件设计5
1.21软件流程图:
5
1.3设计功能验证:
5
1.31仿真电路:
5
1.32矩形波:
6
1.33锯齿波:
6
1.34三角波:
7
1.35正弦波:
7
1.4硬件实物功能验证(下载):
8
1.41三角波:
8
1.42正弦波:
8
1.43方波:
9
1.44三角波:
9
1.45实物电路连接:
10
2设计总结11
3附录12
3.1硬件电路元器件清单:
12
3.2程序代码:
12
1设计任务
利用单片机设计一个波形发生器,基本要求:
(1)具有产生正弦波周期性波形的功能;
(2)具有产生方波周期性波形的功能;
(3)具有产生三角波或锯齿波周期性波形的功能;
(4)具有波形存储功能;
(5)输出波形频率范围100Hz~1kHz;
(6)输出波形幅度范围为﹣5V~5V。
(7)自拟。
1.1总体设计方案
图1.1总体设计图
方案设计说明:
按键控制部分共有三个按键,一个用于选择波形,一个用于选择频率,
一个用于调节步长。
1.11硬件电路设计
设计思路:
整体的硬件设计分为三个部分,依次为单片机最小系统、数模转换部分和放大电路。
总体设计电路原理图(以AT89C52设计为例)
图1.2总体设计电路原理图
1.12数模转换电路:
图1.3数模转换电路
功能分析:
DAC0832是常用的8位电流输出型并行低速数模转换芯片,通过下一级的运算放大电路,将输出的电流信号转换为最后输出的电压信号。
1.13放大电路:
图1.4放大电路
功能分析:
将上一级DAC0832的电流输出信号转化为电压输出信号,并通过放大器,将电压的工作范围从0—5V转化为-5—+5V。
1.14单片机最小系统:
图1.5单片机最小系统
功能分析:
执行载入的指令程序,使其能够实现生成正弦波、三角波、方波的功能,并且通过按键输入,可以调节波形频率和进行波形之间的切换。
1.2软件设计
1.21软件流程图:
图1.6软件流程图
1.3设计功能验证:
1.31仿真电路:
图1.7仿真电路
仿真结果:
1.32矩形波:
图1.8矩形波
1.33锯齿波:
图1.9锯齿波
1.34三角波:
图1.20三角波
1.35正弦波:
图1.21正弦波
1.4硬件实物功能验证(下载):
1.41三角波:
图1.22三角波
1.42正弦波:
图1.23正弦波
1.43方波:
图1.24方波
1.44三角波:
图1.25三角波
1.45实物电路连接:
图1.26实物连接图
2设计总结
这次的单片机波形发生器设计实验,也是在原来的FPGA设计波形发生器的基础上,不仅把将课堂上学到的理论知识与实际应用结了起来,而且使我对电子电路、电子元器件、印制电路板等方面的知识有了更进一步加深认识,同时在软件编程、排版调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高.
从这次的课程设计中,我真真正正的意识到,在以后的学习工作中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
此次的温度计设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。
李冬冬
3附录
3.1硬件电路元器件清单:
电路元器件清单
序号
元器件型号和规格
数量
1
DAC0832数模转换器
1
2
LM324运算放大器
2
3
ATMEL单片机AT89C52
1
4
独立电容30pF/50V
2
5
通用焊接板(单面,3连通孔)
1
6
IC插座DIP40
1
7
晶振12M
1
8
铝电解电容10μF/50V
2
9
1/8W碳膜电阻(5%)8.2kΩ
1
10
轻触按钮开关
1
11
1/8W碳膜电阻(5%)300Ω
1
12
5×2针接插座(CONNSCOKET5×2)
1
13
IC插座DIP20
1
14
IC插座DIP14
1
15
1/8W碳膜电阻(5%)7.5kΩ
1
16
1/8W碳膜电阻(5%)15kΩ
2
17
1/8W碳膜电阻(5%)100Ω
1
18
电容0.1μF/16V
1
19
8针单排插件
2
20
数据端口插接线
8(根)
21
电源端口插接线
4(根)
3.2程序代码:
#include
sbitkey2=P1^2;//步长设置按钮
sbitkey1=P1^1;//定时器控制频率按钮
sbitkey0=P1^0;//波形选择按钮
charflag;//波型输出标置变量
bittime;
unsignedchari;
intnum;
voiddelay(intz)//延时z毫秒
{
intx,y;
for(x=z;x>0;x--)
for(y=124;y>0;y--);
}
unsignedcharsin(unsignedcharx)//正弦波
{
unsignedcharcodesin_tab[]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,//上半周
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf4,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,
0x80,0x7d,0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,//下半周期
0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x01,0x01,0x00,0x00,0x00,
0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x0d,
0x0f,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x2a,0x2c,
0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x3e,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,
0x57,0x5a,0x5d,0x5f,0x60,0x63,0x66,0x69,0x6b,0x6d,0x6f,0x72,0x74,0x76,0x78,0x7a,0x7e,0x80};
returnsin_tab[x];
}
voidDAC0832(unsignedcharx)
{
P2=x;
}
voidtime0()interrupt1
{
TH0=256-num;
TL0=256-num;
time=1;
}
voidfrequency()
{
if(key0==0)////key0控制flag,波形选择
{
delay(5);
if(key0==0)//再次检测
{
while(!
key0);//等待按键释放
flag++;//按一下加1
if(flag==4)//大于2返回0
flag=0;
}
}
if(key1==0)//检测P21是否按下,定时器控制频率
{
delay(5);
if(key1==0)//再次检测
{
while(!
key1);
num=num+1;//按一下减10
if(num==25)//小于5,返回5
num=10;
}
}
}
voidmain()
{
chard;
d=1;
TMOD=0X02;
num=10;
TH0=256-num;//num用来控制采样一个点所用的时间
TL0=256-num;
ET0=1;//定时器0中断的相关设置
EA=1;
TR0=1;
flag=2;//开始时有输出
i=0;
while
(1)
{if(key2==0)//按一下key2,d自加1,用于设置步长,可改变频率
{
delay(5);
if(key2==0)
{
while(!
key2);
d++;
if(d==21)//当d=21,d变为1
{d=1;}
}
}
frequency();
if(time==1)
{
time=0;
if(i>255)
i=0;
else
i=i+d;//设置后的步长
switch(flag)
{
case0:
DAC0832(i);break;//当flag=0时,锯齿波
case1:
if(i>127)//当flag=1时,三角波
DAC0832(255-2*i);
else
DAC0832(2*i);
break;
case2:
DAC0832(sin(i));//当flag=2时,正弦波
break;
case3:
if(i>127)//当falg=3时,方波
DAC0832(0);
else
DAC0832(255);
break;
default:
break;
}
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 技术 波形 发生器