电子技术课程设计报告111.docx
- 文档编号:906065
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:18
- 大小:245.71KB
电子技术课程设计报告111.docx
《电子技术课程设计报告111.docx》由会员分享,可在线阅读,更多相关《电子技术课程设计报告111.docx(18页珍藏版)》请在冰点文库上搜索。
电子技术课程设计报告111
电子技术课程设计报告
题目:
函数信号发生器
作者:
罗涌新黄漫辉
单位:
揭阳职业技术学院
专业:
机电系电子信息工程技术091班
指导老师:
钱德明
二○一一年六月八日
目录
一、摘要3
二、设计要求4
1.4
三、硬件设计4
3.1、电路设计4
四、软件设计5
4.1主程序流程图5
4.2电路原理图7
五、电路的调设
六、实验总结7
七、附录8
1、函数信号发生器的程序:
8
2、proteus仿真电路图15
一、摘要
函数信号发生器是一种在科研和生产中经常用到的基本波形发生器,随着大规模集成电路的迅速发展,很多功能信号发生器已被制作成专用集成电路,
如用AT89C51单片机还做波形发生器,可以产生精度较高的方波、正弦波、三角波、锯齿波等多种信号。
也可以采用其他的芯片如5G8038或者ICL8038单片机函数信号发生器。
我们采用的是AT89C51,电路也可以通过调节外接电阻和电容的参数值进行调节,为快速准确地实现函数信号发生器提供了极大方
二、设计要求
1.具有产生正弦波、方波、三角波及锯齿波四种周期性的波形。
用键盘输入编辑生成上述四种波形(同周期)的线性组合波形,以及由基波及其谐波(
5次以下)线性组合的波形。
2.具有波形存储功能。
输出波形的频率为100Hz~20KHz(非正弦波频率按10次谐波计算):
重复频率可调,频
率步进间隔≤100Hz。
输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整。
具有显示输出波形的类型、重复频率(周期)和幅度的功能
三、硬件设计
3.1、电路设计
低频信号发生器系统框图
低频信号发生器系统主要由CPU、D/A转换电路、基准电压电路、电流/电压转换电路、按键和波形指示电路、电源等电路组成。
其工作原理为当分别每按下按键一次就会分别出现方波、锯齿波、三角波、正弦波,并且有数码管会指示是那种波形序号,另外,发光二极管发光说明系统处于工作状态。
四、软件设计
软件设计上,根据功能分了几个模块编程。
模块主要有:
主程序模块、方波模块、三角波模块、锯齿波模块、正弦波模块、延时子程序模块等。
显示波形模块是利用DAC0832的8位特点,把波形的数据以8位数据的形势送进CPU中,只要一按键就能显示波形。
4.1主程序流程图
本软件设计过程中主要实现利用按键来控制不同波形的输出,当按键KEY1按下1次时,函数发生器就输出方波;当按键KEY1按下2次时,函数发生器就输出三角波;当按键KEY1按下3次时,函数发生器就输出锯齿波;当按键KEY1按下4次时,函数发生器就输出正弦波。
通过按键可以以任意循环方式输出不同波形,数码管上显示的数字分别对应相应的波形。
按键KEY2按下时复位。
4.2电路原理图
五、电路的调试
采用分别调试各个单元模块,调通后再进行各单元电路联机统调的方法,提高调试效
率。
(1)软件部分调试
本机的软件主要功能是完成人机接口,因此编程的时候把界面的友好性放在首位,
采用主从菜单式的操作方法。
由于对51系列单片机编程比较熟悉,在软件的仿真调试过
程中没有遇到太大的问题。
各软件功能均正常实现。
(2)硬件部分调试
整个硬件调试过程基本顺利,由于采用了工艺精良的双面孔化PCB板,各单元电路工作稳
定,给调试工作带来很大的方便。
六、实验总结
通过这次实验我们学会了很多东西,既巩固了现有的知识,自己对发生器的工作原理也有了进一步的了解。
通过本次波形发生器的设计,装配,调试;了解了它在实际生活中的运用和功能。
七、附录
1、函数信号发生器的程序:
/*************************************************************************
////程序名称:
波形发生器////
////设计时间:
2008.8.3////
////设计人:
祁瑞红////
**************************************************************************/
#include
//#include
//#include
////共阴数码管的表///
unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99};//0x00,0x12,0x4f,0x5b,0x72};
//1234
unsignedcharcodestable[]={
80,81,83,84,86,87,89,90,92,93,95,96,97,99,100,102,103,104,
106,107,108,110,111,112,113,115,116,117,118,119,120,121,123,124,125,126,
126,127,128,129,130,131,132,132,133,134,134,135,135,136,137,137,137,138,
138,139,139,139,139,140,140,140,140,140,140,140,140,140,140,140,139,139,
139,138,138,138,137,137,136,136,135,135,134,133,133,132,131,131,130,129,
128,127,126,125,124,123,122,121,120,119,118,117,115,114,113,112,111,109,
108,107,105,104,103,101,100,98,97,96,94,93,91,90,88,87,85,84,
83,81,80,78,77,75,74,72,71,69,68,66,65,64,62,61,59,58,
57,55,54,53,51,50,49,47,46,45,44,43,42,40,39,38,37,36,
35,34,33,32,31,31,30,29,28,28,27,26,26,25,24,24,23,23,
22,22,22,21,21,21,21,20,20,20,20,20,20,20,20,20,20,21,
21,21,21,22,22,22,23,23,24,24,25,25,26,27,27,28,29,30,
31,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,49,
50,51,52,54,55,56,58,59,61,62,63,65,66,68,69,71,72,73,
75,76,78,79
};
unsignedchartime1;//////延时函数参数///////
/////////////////////////////变量说明//////////////////////////////////////
unsignedchartime2;
unsignedchartime3;
unsignedcharcount;
////////////////////////////////////////函数说明////////////////////////////////
voidinitial(void);////初始化函数////
//voidinitial_time0(void);//////定时器0初始化///////
voidanjian(void);////////////按键函数////
voiddelay(unsignedchartime1,time2,time3);////延时函数////
voiddisp(unsignedcharcount);/////静态显示子函数/////
voidfangbo(void);//方波函数//
voidsanjiaobo(void);//三角波函数//
voidjuchibo(void);//锯齿波函数//
voidzhengxianbo(void);//正弦波函数//
voidmain(void)
{
initial();
while
(1)
{
anjian();
}
}
/*************************************************************************
//函数名称:
voidanjian(void)
//函数说明:
按键函数
//函数功能:
//注意:
*************************************************************************/
voidanjian(void)
{
if(P3_7==0)
{delay(1,50,248);
if(P3_7==0)
{count=1;
disp(count);
fangbo();
}
}
while(P3_7==0)
{count+=1;
if(count>4)
count=0;}
disp(count);
//anjian();
}
/*************************************************************************
//函数名称:
voidfangbo(void)
//函数说明:
方波函数
//函数功能:
//注意:
*************************************************************************/
voidfangbo(void)//while
(1)是个死循环看执行一次多长时间*128求算频率,一个周期大约3ms多,这个频率为300hz左右
{
while
(1)
{
unsignedcharfangbo_1;
fangbo_1++;
if(fangbo_1>128&fangbo_1<256){P2=0x00;}
if(fangbo_1<128){P2=0xff;}
if(P3_7==0)
{delay(1,50,248);
if(P3_7==0)
{count=2;
disp(count);
sanjiaobo();
}
}
while(P3_7==0);
}
}
/*************************************************************************
//函数名称:
voidsanjiaobo(void)
//函数说明:
三角波函数
//函数功能:
//注意:
*************************************************************************/
voidsanjiaobo(void)
{
while
(1)
{
unsignedcharsanjiaobo_2;
if(sanjiaobo_2<128){P2=sanjiaobo_2;}
else{P2=255-sanjiaobo_2;}
sanjiaobo_2++;
if(sanjiaobo_2>=255){sanjiaobo_2=0x00;}
if(P3_7==0)
{
delay(1,50,248);
if(P3_7==0)
{count=3;
disp(count);
juchibo();
}
}
while(P3_7==0);
}
}
/*************************************************************************
//函数名称:
voidjuchibo(void)
//函数说明:
锯齿波函数
//函数功能:
//注意:
*************************************************************************/
voidjuchibo(void)
{
while
(1)
{
unsignedcharjuchibo_3;
if(juchibo_3<180){P2=juchibo_3;}
juchibo_3++;
if(juchibo_3>=180){juchibo_3=0x00;}
if(P3_7==0)
{delay(1,50,248);
if(P3_7==0)
{count=4;
disp(count);
zhengxianbo();
}
}
while(P3_7==0);
}
}
/*************************************************************************
//函数名称:
voidzhengxianbo(void)
//函数说明:
正弦波函数
//函数功能:
//注意:
*************************************************************************/
voidzhengxianbo(void)
{
while
(1)
{
unsignedcharzhengxianbo_4;
P2=stable[zhengxianbo_4];
zhengxianbo_4++;
if(zhengxianbo_4>=255){zhengxianbo_4=0;}
if(P3_7==0)
{delay(1,50,248);
if(P3_7==0)
{count=0;
disp(count);
anjian();
}
}
while(P3_7==0);
}
}
/*************************************************************************
//函数名称:
voidinitial(void)
//函数说明:
初始化函数
//函数功能:
//注意:
*************************************************************************/
voidinitial(void)
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
}
/*************************************************************************
//函数名称:
delay(unsignedchartime1,time2,time3)
//函数说明:
延时函数
//函数功能:
//入口参数:
unsignedchartime1,time2,time3
//出口参数:
//注意:
延时时间的计算:
(time1*time2*time3*8us)us
time1,time2,time3可以不进行变量说明
*************************************************************************/
voiddelay(unsignedchartime1,time2,time3)
{
unsignedchari,j,k;
for(i=time1;i>0;i--)
{for(j=time2;j>0;j--)
{
for(k=time3;k>0;k--);
}
}
}
/*************************************************************************
//函数名称:
disp(unsignedcharcount)
//函数说明:
静态显示子函数
//函数功能:
//入口参数:
unsignedcharcount
//出口参数:
//注意:
*************************************************************************/
voiddisp(unsignedcharcount)
{
P0=table[count];
delay(1,5,248);
}
/*************************************************************************
//函数名称:
voidinitial_time(void)
//函数说明:
定时器初始化
//函数功能:
//注意:
*************************************************************************/
/*
voidinitial_time0(void)
{
unsiguedcharth,tl;
TMOD=0x01;//设置为定时器0方式1//
th=(65536-50000)/256;//给定时器0赋初值//
tl=(65536-50000)%256;
TH0=th;
TL0=tl;
TR0=1;//开启定时器0//
ET0=1;//开启定时器0溢出中断//
EA=1;//开启中断总开关//
}
*/
/*************************************************************************
//函数名称:
voidvoidT0(void)interrupt1using0(void)
//函数说明:
定时t0的中断函数
//函数功能:
//注意:
*************************************************************************/
/*
voidt0(void)interrupt1using1
{TR0=0;
TH0=th;
TL0=tl;
TR0=1;
}
*/
2、proteus仿真电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子技术 课程设计 报告 111