基于单片机的函数发生器.docx

上传人:b****6 文档编号:6170057 上传时间:2023-01-04 格式:DOCX 页数:18 大小:120.33KB
下载 相关 举报
基于单片机的函数发生器.docx_第1页
第1页 / 共18页
基于单片机的函数发生器.docx_第2页
第2页 / 共18页
基于单片机的函数发生器.docx_第3页
第3页 / 共18页
基于单片机的函数发生器.docx_第4页
第4页 / 共18页
基于单片机的函数发生器.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于单片机的函数发生器.docx

《基于单片机的函数发生器.docx》由会员分享,可在线阅读,更多相关《基于单片机的函数发生器.docx(18页珍藏版)》请在冰豆网上搜索。

基于单片机的函数发生器.docx

基于单片机的函数发生器

中北大学信息商务学院

课程设计说明书

 

学生姓名:

王若妮学号:

10050644X11

学院:

信息商务学院

专业:

电子信息工程

题目:

专业综合实践之单片机部分:

基于单片机的函数发生器的设计

 

张权

指导教师:

职称:

副教授

 

 

2014年1月10日

中北大学信息商务学院

课程设计任务书

13/14学年第一学期

学院:

信息商务学院

专业:

电子信息工程

学生姓名:

王若妮学号:

10050644X11

课程设计题目:

专业综合实践之单片机部分:

基于单片机的函数发生器的设计

起迄日期:

2013年12月30日~2014年1月10日

课程设计地点:

201,503

指导教师:

张权

系主任:

王浩全

 

下达任务书日期:

2013年12月30日

课程设计任务书

1.设计目的:

利用单片机设计一个函数发生器对于提高学生的单片机应用能力,尤其是软件编程能力具有较强的意义。

通过该设计,可以巩固所学的单片机理论知识,培养学生硬件和软件的设计能力,从而促进学生所掌握的理论知识向实践应用的转变。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):

使用单片机设计一个函数发生器,包括硬件设计和软件设计。

同组成员可按硬件

设计和软件设计来分工,协作完成。

具体功能要求:

(1)通过编程产生正弦波;

(2)频率、幅值可调;

(3)D/A输出。

 

3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:

(1)查阅相关文献资料,了解函数发生器的相关知识;

(2)确定设计方案。

绘制电路原理图;

(3)编写软件程序并上机调试;

(4)撰写课程设计说明书。

 

课程设计任务书

4.主要参考文献:

1刘坤.51单片机C语言应用开发技术大全.北京:

人民邮电出版社,2008

2傅承义,陈运泰,祁贵中.地球物理学基础.北京:

科学出版社,1985

3韩全立,王建明.单片机控制技术及应用.北京:

电子工业出版社,2004

4杨素行,模拟电子技术基础简明教程.北京:

高等教育出版社,2007

5蒋辉平,单片机原理与应用设计.北京:

北京航空航天大学出版社,2007

 

5.设计成果形式及要求:

提供课程设计说明书一份;

设计原理图及软件源程序;

6.工作计划及进度:

2013年12月30日~2014年1月1日:

查阅资料;

2014年:

1月2日~1月7日:

方案设计、实验验证;

1月8日~1月9日:

完成课程设计说明书;

1月10日:

答辩。

系主任审查意见:

签字:

年月日

目录

1系统设计•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••1

1.1设计要求••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••1

1.2方案设计••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••1

1.3总体系统设计••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••1

1.4硬件实现及单元电路设计••••••••••••••••••••••••••••••••••••••••••••••••••••••2

1.5软件设计流程••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••5

1.6源程序•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••5

2输出波形的种类与频率•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••13

2.1测量仪器及测试说明••••••••••••••••••••••••••••••••••••••••••••••••••••••••••13

2.2测试过程•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••13

2.3测试结果•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••14

3设计心得及体会•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••14

4附录•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••15

4.1参考文献•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••15

4.2总体原理图••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••15

1系统设计

经过考虑,我们确定方案如下:

利用AT89S52单片机采用程序设计方法产生正弦波波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制波形的类型、频率变化,最终输出显示其各自的类型以及数值。

1.1设计要求

(1)通过编程产生正弦波;

(2)频率、幅值可调;

(3)D/A输出。

1.2方案设计

1.2.1信号发生电路方案

通过单片机控制D/A,输出波形。

此方案输出的波形不够稳定,抗干扰能力弱,不易调节。

但此方案电路简单、成本低。

1.2.2单片机的选择

AT89S52单片机是一种高性能8位单片微型计算机。

它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。

1.2.3显示方案

采用LCD液晶显示器1602。

其功率小,效果明显,显示编程容易控制,可以显示字母。

1.2.4键盘方案

矩阵式键盘。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。

当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。

当某一个键闭合时,该键所对应的行线和列线被短路。

1.3总体系统设计

该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。

将设计任务分解为按键电路、液晶显示电路等模块。

(1)为系统的总体框图

(1)总体方框图

1.4硬件实现及单元电路设计

1.4.1单片机最小系统的设计

89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。

用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图

(2)89C51单片机最小系统所示。

由于集成度的限制,最小应用系统只能用作一些小型的控制单元。

其应用特点:

(1)有可供用户使用的大量I/O口线。

(2)内部存储器容量有限。

(3)应用系统开发具有特殊性。

(2)89C51单片机最小系统

1.4.2波形产生模块设计

由单片机采用编程方法产生波形、通过DA转换模块DAC0832在经过滤波放大之后输出。

其电路图如下:

图(3)波形产生电路

如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。

1.4.3显示模块的设计

图(4)液晶显示

如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E分别接单片机的P3.2—P3.4。

通过软件控制液晶屏可以显示波形的种类以及波形的频率。

1.4.4键盘显示模块的设计

图(5)键盘

图中键盘独立键盘引出的八跟线分别接单片机的P2口,只用其第四列,因此在程序初始化时P2.7脚给低电平。

如图开关3用来切换输出波形、开关7和8用来调节频率的加减。

当按开关7时输出波形的频率增加,按开关8时输出波形的频率减小。

1.5软件设计流程

本系统采用AT89S52单片机,用编程的方法来产生波形,并通过编程来切换波形以及波形频率的改变。

具体功能有:

(1)各个波形的切换;

(2)各种参数的设定;(3)频率增减等。

软件调通后,通过编程器下载到AT89S52芯片中,然后插到系统中即可独立完成所有的控制。

软件的流程图如下:

图(6)程序流程图

1.6源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitlcdrw=P3^3;

sbitlcdrs=P3^2;

sbitlcde=P3^4;

sbitd=P2^7;

sbits1=P2^0;

sbits2=P2^1;

sbits3=P2^2;

sbitcs=P3^5;

sbitwr=P3^6;

uchars1num,a,ys,j;

uintfre;

ucharcodetosin[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,0xda,0xdd,0xdf,0xe1,

0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,

0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,

0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,

0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,

0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,

0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,

0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,

0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,

0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,

0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,

0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,

0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,

0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,

0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,

0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,

0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,

0x76,0x79,0x7c,0x80};/*正弦波码*/

voiddelay(uintz)//延时子程序

{

uchari,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

voiddelay1(uinty)

{

uinti;

for(i=y;i>0;i--);

}

voidwrite_com(ucharcom)//1602写指令

{

lcdrs=0;

P1=com;

delay(5);

lcde=1;

delay(5);

lcde=0;

}

voidwrite_data(uchardate)//1602数据

{

lcdrs=1;

P1=date;

delay(5);

lcde=1;

delay(5);

lcde=0;

}

voidinit()//初始化

{

lcdrw=0;

lcde=0;

wr=0;

cs=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x00);

write_data(0x77);//写wave:

write_data(0x61);

write_data(0x76);

write_data(0x65);

write_data(0x3a);

write_com(0x80+0x40);//写f:

write_data(0x66);

write_data(0x3a);

}

voidwrite_f(uintdate)//写频率

{

ucharqian,bai,shi,ge;

qian=date/1000;

bai=date/100%10;

shi=date/10%10;

ge=date%10;

write_com(0x80+0x42);

write_data(0x30+qian);

write_data(0x30+bai);

write_data(0x30+shi);

write_data(0x30+ge);

write_data(0x48);

write_data(0x5a);

}

voidxsf()//显示频率

{

if(s1num==1)

{

fre=(1000/(9+3*ys));

write_f(fre);

}

if(s1num==2)

{

fre=(100000/(3*ys));

write_f(fre);

}

if(s1num==3)

{

fre=(1000/(15+3*ys));

write_f(fre);

}

}

voidkeyscanf()

{

d=0;

if(s1==0)

{

delay(5);

if(s1==0)

{

while(!

s1);

s1num++;

if(s1num==1)

{

ys=0;

write_com(0x80+0x05);

write_data(0x73);//写sine:

write_data(0x69);

write_data(0x6e);

write_data(0x65);

write_data(0x20);

write_data(0x20);

}

if(s1num==2)

{

ys=10;

write_com(0x80+0x05);

write_data(0x73);//写squrae

write_data(0x71);

write_data(0x75);

write_data(0x61);

write_data(0x72);

write_data(0x65);

}

if(s1num==3)

{

ys=0;

write_com(0x80+0x05);//train

write_data(0x74);

write_data(0x72);

write_data(0x61);

write_data(0x69);

write_data(0x6e);

write_data(0x20);

}

if(s1num==4)

{

s1num=0;

P1=0;

write_com(0x80+0x05);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_com(0x80+0x42);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

}

}

}

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!

s2);

ys++;

}

}

if(s3==0)

{

delay(5);

if(s3==0)

{

while(!

s3);

ys--;

}

}

}

voidmain()

{

init();

while

(1)

{

keyscanf();

if(s1num==1)//正弦波//

{

for(j=0;j<255;j++)

{

P0=tosin[j];

delay1(ys);

}

}

2输出波形的种类与频率

2.1测量仪器及测试说明

测量仪器:

稳压电源、示波器。

测量说明:

正弦波输出,通过对独立键盘来实现其的波形的输出以及其频率的改变。

2.2测试过程

当程序下进去时经过初始化,液晶屏的上只显示“wave:

”和“f:

“,当开关三按一下是此时输出波形为正弦波。

另外两个开关可以调节频率,正弦波形的频率可调范围:

正弦波:

1—180HZ

根据示波器的波形频率的显示计算出波形的频率计算公式如下:

正弦波:

f=(1000/(9+3*ys))

其中ys为延时的变量。

波形的仿真波形图如下:

图(7)正弦波图形

2.3测试结果

  各项指标均达到要求。

测试数据如下:

(1)产生正弦波基本实现

(2)波形的频率都可调

(3)显示部分基本实现

(4)键盘功能实现

3设计心得及体会

通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。

虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色。

但是我将在以后的工作和学习中继续努力、不断完善。

这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。

4附录

4.1参考文献

(1)刘坤.51单片机C语言应用开发技术大全.北京:

人民邮电出版社,2008

(2)傅承义,陈运泰,祁贵中.地球物理学基础.北京:

科学出版社,1985

(3)韩全立,王建明.单片机控制技术及应用.北京:

电子工业出版社,2004

(4)杨素行,模拟电子技术基础简明教程.北京:

高等教育出版社,2007

(5)蒋辉平,单片机原理与应用设计.北京:

北京航空航天大学出版社,2007

4.2总体原理图

图(8)总体原理设计图

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1