电子技术课程设计报告111.docx

上传人:b****1 文档编号:906065 上传时间:2023-04-30 格式:DOCX 页数:18 大小:245.71KB
下载 相关 举报
电子技术课程设计报告111.docx_第1页
第1页 / 共18页
电子技术课程设计报告111.docx_第2页
第2页 / 共18页
电子技术课程设计报告111.docx_第3页
第3页 / 共18页
电子技术课程设计报告111.docx_第4页
第4页 / 共18页
电子技术课程设计报告111.docx_第5页
第5页 / 共18页
电子技术课程设计报告111.docx_第6页
第6页 / 共18页
电子技术课程设计报告111.docx_第7页
第7页 / 共18页
电子技术课程设计报告111.docx_第8页
第8页 / 共18页
电子技术课程设计报告111.docx_第9页
第9页 / 共18页
电子技术课程设计报告111.docx_第10页
第10页 / 共18页
电子技术课程设计报告111.docx_第11页
第11页 / 共18页
电子技术课程设计报告111.docx_第12页
第12页 / 共18页
电子技术课程设计报告111.docx_第13页
第13页 / 共18页
电子技术课程设计报告111.docx_第14页
第14页 / 共18页
电子技术课程设计报告111.docx_第15页
第15页 / 共18页
电子技术课程设计报告111.docx_第16页
第16页 / 共18页
电子技术课程设计报告111.docx_第17页
第17页 / 共18页
电子技术课程设计报告111.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子技术课程设计报告111.docx

《电子技术课程设计报告111.docx》由会员分享,可在线阅读,更多相关《电子技术课程设计报告111.docx(18页珍藏版)》请在冰点文库上搜索。

电子技术课程设计报告111.docx

电子技术课程设计报告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/////nop的头文件//////

//#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仿真电路图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2