信号发生器文档.docx
《信号发生器文档.docx》由会员分享,可在线阅读,更多相关《信号发生器文档.docx(16页珍藏版)》请在冰豆网上搜索。
信号发生器文档
长沙航空职业技术学院
电子技术应用专业
《微处理器应用与实践》
作业
组别第六组
姓名陈代超陈秀平周皓梁羽
学号30292863
班级电子1002
长沙航空职业技术学院
设计制作信号发生器
1、信号发生器的功能与任务
1、信号发生器的功能指标要求及任务
1、功能指标要求
1.项目名称
项目名称:
设计制作信号发生器
2.项目要求
1)用keilC51、Proteus、EASY下载软件作开发工具;
2)用AT89C51单片机作控制,DAC0832作D/A转换器。
3)三只按键操作按键,8位数码管作显示。
4)能键控输出方波、三角波、正弦波形信号。
5)输出信号幅度稳定、频率可调。
6)发挥扩充功能,如幅度可调、频率可调,幅度、频率范围及精度可控等。
3.设计制作任务
1)拟定总体设计制作方案;
2)拟定硬件电路;
3)编制软件流程图及设计相应源程序;
4)仿真调试;
5)安装元件,制作信号发生器,调试功能指标;
6)完成项目报告。
2、总体设计思路
实现思路与框图设计
1、总体设计思路
基本功能部分的实现思路是:
用AT89C51单片机作控制,DAC0832作D/A转换器,单片机输出产生信号的数据。
控制DAC0832输入数据的大小及组合关系,得到不同的波形,改变输出时间,得到不同的周期和频率,保持输入数据稳定,保持信号幅度不变。
经D/A转换、放大,输出模拟信号。
总体结构框图如图所示。
2、框图设计
数码管显示
AT89C51
电源电路
复位电路
DAC0832
D/A转换
运放
时钟电路
系统总框图
3、原理图设计
信号发生器原理图设计
4、程序设计
信号发生器的程序设计
1.主程序流程图
2、程序
#include
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint
#defineufloatunsignedfloat
#definedac0832XBYTE[0x7fff]//宏定义DAC0832端口地址
ucharduan[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40,0x7c,
0x39,0x5e,0x79,0x71};//数码管段码
ucharwei[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xbf,0xdf,0x7f};
ucharcodea[50]={128,//数码管位码
144,160,175,189,203,215,
226,235,243,249,253,255,
255,253,249,243,235,226,
215,203,189,175,160,144,
128,112,96,81,67,53,41,30,
21,13,7,3,1,1,3,7,13,21,
30,41,53,67,81,96,112};//正弦波数据表
uchartemp=0;//多功能按键变量
uchartable=0;//按键加减变量
sbitjia=P3^1;//定义数字加
sbitjian=P3^0;//定义数字减
//sbitk=P3^3;
/******************延时子函数**************************/
voiddelay(uintu)
{uinti;
for(i=u;i>0;i--);
}
/******************中断初始化函数***************************/
voidzhongduan()
{
IT0=0;//外部中断0为下降沿触发方式
EX0=1;//开外部中断
EA=1;//开总中断
}
/***************按键加减函数****************************/
voidanjian()
{uinti;
delay(i*10);
if(jia==0)
delay(200);//延时消抖
if(jia==0)
{i++;
}
if(jian==0)
delay(200);//延时消抖
if(jian==0)
{
i--;
}
}
/****************方波函数*******************************/
voidfangbo()
{
dac0832=0;
delay(500);
anjian();
dac0832=1;
}
/***************锯齿波函数******************************/
voidjuchibo()
{
uchari;
for(i=0;i<255;i++)
{
dac0832=i;
delay
(2);
anjian();
}
}
/****************正弦波*********************************/
voidsin()
{uchari;
for(i=0;i<50;i++)
{
dac0832=a[i];
delay(200);
anjian();
}
}
/*****************显示函数******************************/
voiddisplay_z()
{
P2=0xff;
P1=duan[temp+1];
P2=wei[0];
delay(20);
}
voiddisplay_j()
{
P2=0xff;
P1=duan[temp+1];
P2=wei[0];
delay(20);
}
voiddisplay_f()
{
P2=0xff;
P1=duan[temp+1];
P2=wei[0];
delay(20);
}
/******************按键函数*****************************/
voidkey()
{
if(temp==0)
{delay(200);//消抖动
if(temp==0)
{
sin();
display_z();
//delay(1000);
}
}
if(temp==1)
{delay(200);//消抖动
if(temp==1)
{
juchibo();
display_j();
}
}
if(temp==2)
{delay(200);//消抖动
if(temp==2)
{
fangbo();
display_f();
}
}
}
/********************主函数*****************************/
voidmain()
{
zhongduan();
jia=1;
jian=1;
while
(1)
{
key();
}
}
/*****************外部中断服务函数**************************/
voidkey_t0()interrupt0using0
{
EA=0;
delay(2000);//消抖动
temp++;
if(temp==3)
{
temp=0;
}
EA=1;
}
5、仿真
电压表仿真模型与结果
7、元器件的安装
安装效果图
8、信号发生器的调试
调试
指标
通过按键转换,不同的三个键,分别控制不同的三种波形。
调试方法步骤
程序的写法是按照模块分写的,在调试过程中如果有问题只需要,查找相应的模块
的,这样的写程序的方式思路很清晰。
调试
数据
记录
改变延时程序,可以改变相应的波形频率。
结果及分析
在本次的信号发生器的制作过程中,模块化的编写,最终取得了成功。
三种波形都能很好的产生输出。
评价表
时间:
2011/11/9班级:
电子1002组别:
第六组
任务
设计制作信号发生器
小
组
成
员
姓名
学号
成绩
陈代超
30
陈秀平
29
周皓
28
梁羽
63
任务完成情况
分值
得分
任务完成情况
分值
得分
完成时间
仿真
总体设计思路
安装
原理图设计
调试
程序流程图
检查评估
程序
文明(纪律)
总分
评价记录:
签字:
评价表
时间:
2011/11/9班级:
电子1002组别:
第六组
任务
设计制作信号发生器
小
组
成
员
姓名
学号
成绩
陈代超
30
陈秀平
29
周皓
28
梁羽
63
任务完成情况
分值
得分
任务完成情况
分值
得分
完成时间
仿真
总体设计思路
安装
原理图设计
调试
程序流程图
检查评估
程序
文明(纪律)
总分
评价记录:
签字: